OSDN Git Service

* typeck2.c (check_for_new_type): Only depend on pedantic for
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 1998-10-26  Manfred Hollstein  <manfred@s-direktnet.de>
2
3         * cp-tree.h (FORMAT_VBASE_NAME): Make definition unconditional.
4
5 1998-10-26  Jason Merrill  <jason@yorick.cygnus.com>
6
7         * typeck.c (convert_arguments): Don't handle pmf references 
8         specially.
9
10         * init.c (build_member_call): Don't try to convert to the base type
11         if it's ambiguous.
12
13         * typeck2.c (check_for_new_type): Only depend on pedantic for
14         C-style casts.
15
16 1998-10-25  Mark Mitchell  <mark@markmitchell.com>
17
18         * decl.c (grokdeclarator): Set DECL_NONCONVERTING_P for all
19         non-converting constructors.
20         
21 1998-10-24  Martin von Löwis  <loewis@informatik.hu-berlin.de>
22
23         * gxxint.texi: Correct documentation for n, N, Q, and B.
24
25 1998-10-23  Martin von Löwis  <loewis@informatik.hu-berlin.de>
26
27         * parse.y (condition): Convert VAR_DECL from reference to indirect
28         reference.
29
30 1998-10-23  Andrew MacLeod  <amacleod@cygnus.com>
31
32         * exception.cc (__cp_pop_exception): Free the original exception
33         value, not the potentially coerced one.
34
35 1998-10-23  Mark Mitchell  <mark@markmitchell.com>
36
37         * Makefile.in (hash.h): Run gperf when necessary.
38
39         * cp-tree.h (CP_TYPE_READONLY): Remove.
40         (CP_TYPE_VOLATILE): Likewise.
41         (CP_TYPE_QUALS): New macro.
42         (CP_TYPE_CONST_P): Likewise.
43         (CP_TYPE_VOLATILE_P): Likewise.
44         (CP_TYPE_RESTRICT_P): Likewise.
45         (CP_TYPE_CONST_NON_VOLATILE_P): Likewise.
46         (cp_build_type_variant): Rename to ...
47         (cp_build_qualified_type): New function.
48         (c_apply_type_quals_to_decl): Declare.
49         (SIGNATURE_POINTER_NAME_FORMAT): Modify to allow `restrict'.
50         (SIGNATURE_REFERENCE_NAME_FORMAT): Likewise.
51         (cp_type_qual_from_rid): New function.
52         (compparms): Remove unused parameter.  All callers changed.
53         (cp_type_quals): New function.
54         (at_least_as_qualified_p): Likewise.
55         (more_qualified_p): Likewise.
56         
57         * call.c (standard_conversion): Replace calls to
58         cp_build_type_variant with cp_build_qualified_type.  Use
59         CP_TYPE_QUALS to get qualifiers and at_least_as_qualified_p to
60         compare them.  Use CP_TYPE_* macros to check qualifiers.
61         (reference_binding): Likewise.
62         (implicit_conversion): Likewise.
63         (add_builtin_candidates): Likewise.
64         (build_over_call): Likewise.
65         * class.c (overrides): Compare all qualifiers, not just `const',
66         on method declarations.
67         * cvt.c (convert_to_reference): More CP_TYPE_QUALS conversion, etc.
68         (convert_pointer_to_real): Likewise.
69         (type_promotes_to): Likewise.
70         * decl.c (check_for_uninitialized_const_var): New function.
71         (init_decl_processing): More CP_TYPE_QUALS conversion, etc.
72         (cp_finish_decl): Use check_for_uninitialized_const_var.
73         (grokdeclarator): More CP_TYPE_QUALS conversion, etc.  Update to
74         handle `restrict'.
75         (grok_ctor_properties): Likewise.
76         (grok_op_properties): Likewise.
77         (start_function): Likewise.
78         (rever_static_member_fn): Likewise.
79         * decl2.c (grok_method_quals): Likewise.
80         (grokfield): Likewise.
81         * error.c (dump_readonly_or_volatile): Rename to ...
82         (dump_qualifiers): New function.  Handle `restrict'.
83         (dump_type_real): Use it.
84         (dump_aggr_type): Likewise.
85         (dump_type_prefix): Likewise.
86         (dump_type_suffix): Likewise.
87         (dump_function_decl): Likewise.
88         (cv_as_string): Likewise.
89         * gxx.gperf: Add __restrict and __restrict__.
90         * gxxint.texi: Document `u' as used for `__restrict', and a few
91         other previously undocumented codes.
92         * hash.h: Regenerated.
93         * init.c (expand_aggr_init): More CP_TYPE_QUALS conversion, etc.
94         (build_member_call): Likewise.
95         (build_new_1): Likewise.
96         * lex.c (init_parse): Add entry for RID_RESTRICT.
97         (cons_up_default_function): More CP_TYPE_QUALS conversion, etc.
98         (cp_type_qual_from_rid): Define.
99         * lex.h (enum rid): Add RID_RESTRICT.
100         * method.c (process_modifiers): Deal with `restrict'.
101         * parse.y (primary): More CP_TYPE_QUALS conversion, etc.
102         * parse.c: Regenerated.
103         * pt.c (convert_nontype_argument): More CP_TYPE_QUALS conversion, etc.
104         (tsubst_aggr_type): Likewise.
105         (tsubst): Likewise.
106         (check_cv_quals_for_unify): Likewise.
107         (unify): Likewise.
108         * rtti.c (init_rtti_processing): Likewise.
109         (build_headof): Likewise.
110         (get_tinfo_var): Likewise.
111         (buidl_dynamic_cast_1): Likewise.  Fix `volatile' handling.
112         (expand_class_desc): Likewise.
113         (expand_attr_desc): Likewise.
114         (synthesize_tinfo_fn): Likewise.
115         * search.c (covariant_return_p): Likewise.  Fix `volatile' handling. 
116         (get_matching_virtual): Likewise.
117         (expand_upcast_fixups): Likewise.
118         * sig.c (build_signature_pointer_or_reference_name): Take
119         type_quals, not constp and volatilep.
120         (build_signature_pointer_or_reference_type): Likewise.
121         (match_method_types): More CP_TYPE_QUALS conversion, etc.
122         (build_signature_pointer_constructor): Likewise.
123         (build_signature_method_call): Likewise.
124         * tree.c (build_cplus_array_type): Likewise.
125         (cp_build_type_variant): Rename to ...
126         (cp_build_qualified_type): New function.  Deal with `__restrict'.
127         (canonical_type_variant): More CP_TYPE_QUALS conversion, etc.
128         (build_exception_variant): Likewise.
129         (mapcar): Likewise.
130         * typeck.c (qualif_type): Likewise.
131         (common_type): Likewise.
132         (comptypes): Likewise.
133         (comp_cv_target_types): Likewise.
134         (at_least_as_qualified_p): Define.
135         (more_qualified_p): Likewise.
136         (comp_cv_qualification): More CP_TYPE_QUALS conversion, etc.
137         (compparms): Likewise.
138         (inline_conversion): Likewise.
139         (string_conv_p): Likewise.
140         (build_component_ref): Likewise.
141         (build_indirect_ref): Likewise.
142         (build_array_ref): Likewise.
143         (build_unary_op): Likewise.
144         (build_conditional_expr): Likewise.
145         (build_static_cast): Likewise.
146         (build_c_cast): Likewise.
147         (build_modify_expr): Likewise.
148         (convert_For_assignment): Likewise.
149         (comp_ptr_ttypes_real): Likewise.
150         (cp_type_quals): New function.
151         
152 1998-10-23  Jason Merrill  <jason@yorick.cygnus.com>
153
154         * cp-tree.h (CP_TYPE_READONLY): New macro to handle arrays.
155         (CP_TYPE_VOLATILE): Likewise.
156         * decl.c (grokdeclarator): Use them.
157         * tree.c (canonical_type_variant): Likewise.
158
159 1998-10-22  Martin von Löwis  <loewis@informatik.hu-berlin.de>
160
161         * parse.y (named_class_head): Push into class while parsing the
162         base class list.
163         * decl2.c (push_scope, pop_scope): New functions.
164         * cp-tree.h: Declare them.
165         * init.c (build_new_1): Delay cleanup until end of full expression.
166
167 1998-10-21  Jason Merrill  <jason@yorick.cygnus.com>
168
169         * typeck.c (build_component_ref): Use of a type here is an error.
170
171 1998-10-19  Jason Merrill  <jason@yorick.cygnus.com>
172
173         Revamp references to member functions.
174         * method.c (hack_identifier): Call build_component_ref for a
175         reference to a member function.
176         * typeck.c (build_component_ref): Only return a single function 
177         if it's static.  Otherwise, return a COMPONENT_REF.
178         (build_x_function_call): Handle a COMPONENT_REF.
179         (build_unary_op): Handle all unknown-type things.
180         * decl2.c (arg_assoc): Handle COMPONENT_REF.
181         * class.c (instantiate_type): Complain if the function we get is a
182         nonstatic member function.  Remove code for finding "compatible"
183         functions.
184         * pt.c (tsubst_copy): Handle NOP_EXPR.
185         * tree.c (build_dummy_object): New fn.
186         (maybe_dummy_object): New fn.
187         (is_dummy_object): New fn.
188         * cp-tree.h: Declare them.
189         * cvt.c (cp_convert_to_pointer): Use maybe_dummy_object.
190         * error.c (dump_expr, case OFFSET_REF): Use is_dummy_object.
191         * init.c (build_member_call): Use maybe_dummy_object and
192         is_dummy_object.
193         (build_offset_ref): Use maybe_dummy_object.
194         (resolve_offset_ref): Use is_dummy_object.
195         * typeck.c (build_x_function_call): Call build_dummy_object.
196         (unary_complex_lvalue): Call is_dummy_object.
197
198         * typeck.c (build_component_addr): Make sure field is a field.
199
200         * call.c (build_new_op): Delete obsolete code.
201
202         * pt.c (tsubst, TEMPLATE*PARM*): Abort if we don't have any args.
203
204 1998-10-18  Martin von Löwis  <loewis@informatik.hu-berlin.de>
205
206         * decl2.c (validate_nonmember_using_decl): Fix using-directives of
207         std if std is ignored.
208
209 1998-10-18  Jason Merrill  <jason@yorick.cygnus.com>
210
211         * decl.c (grokvardecl): Fix thinko.
212
213         * decl.c (grokdeclarator): Embedded attrs bind to the right,
214         not the left.
215
216         * parse.y (fn.def2): Fix 'attrs' format.
217
218 1998-10-18  Alastair J. Houghton <ajh8@doc.ic.ac.uk>
219
220         * Makefile.in (CONFLICTS): Update.
221         * parse.y (expr_or_declarator_intern): New rule.
222         (expr_or_declarator, direct_notype_declarator, primary,
223         functional_cast): Use it.
224         (notype_declarator_intern): New rule.
225         (notype_declarator, complex_notype_declarator): Use it.
226
227 1998-10-17  Jason Merrill  <jason@yorick.cygnus.com>
228
229         * decl.c (grokfndecl): Set DECL_CONTEXT to namespace if appropriate.
230         (grokvardecl): Likewise.
231
232 Sat Oct 17 23:27:20 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
233
234         * class.c (make_method_vec): Cast 1st argument of `bzero' to (PTR).
235         (add_method): Likewise for arguments 1 & 2 of `bcopy'.
236         
237         * decl.c (signal_catch): Mark with ATTRIBUTE_NORETURN.
238
239         * pt.c (process_partial_specialization): Cast 1st argument of
240         `bzero' to (PTR).
241
242         * tree.c (build_base_fields): Cast `base_align' to (int) when
243         comparing against one.
244
245 1998-10-16  Mark Mitchell  <mark@markmitchell.com>
246
247         * decl.c (lookup_name_real): Handle template parameters for member
248         temlates where said parameters have the same name as the
249         surrounding class.
250         
251         * decl.c (expand_static_init): Build cleanups before entering the
252         anonymous function used to do them to avoid access-checking
253         confusion.
254
255         * decl.c (grokfndecl): Add back call to cplus_decl_attributes
256         accidentally removed by previous change, and make DECL_RTL here.
257         * class.c (add_method): Don't make DECL_RTL here.
258         
259         * pt.c (for_each_template_parm): Don't examine uninstantiated
260         default arguments.
261
262 1998-10-16  Dave Brolley  <brolley@cygnus.com>
263
264         * lex.c (real_yylex): Fix unaligned access of wchar_t.
265
266 1998-10-16  Mark Mitchell  <mark@markmitchell.com>
267
268         * class.c (add_method): Fix documentation to reflect previous
269         changes.  Check for duplicate method declarations here.
270         * decl.c (decls_match): Handle FUNCTION_DECL vs TEMPLATE_DECL
271         correctly; such things never match.
272         (grokfndecl): Don't look for duplicate methods here.
273         * decl2.c (check_classfn): Don't assume names are mangled.
274         Don't add bogus member function declarations to a class before the
275         class type is complete.
276         (grokfield): Reformat error message.
277         * method.c (set_mangled_name_for_decl): Don't mangle names while
278         procesing_template_decl.
279         
280 1998-10-16  Jason Merrill  <jason@yorick.cygnus.com>
281
282         * typeck.c (build_indirect_ref): Complain about a pointer to data
283         member, too.
284         * typeck2.c (build_m_component_ref): Don't indirect a pointer to
285         data member.
286         * init.c (resolve_offset_ref): Don't undo the above.
287
288         * cp-tree.h (DECL_C_BIT_FIELD, SET_DECL_C_BIT_FIELD): New macros.
289         (struct lang_decl_flags): Add `bitfield'.
290         * class.c (finish_struct_1): Use DECL_C_BIT_FIELD instead of
291         DECL_BIT_FIELD.
292         * decl2.c (grokbitfield, grok_alignof): Likewise.
293         * init.c (build_offset_ref): Likewise.
294         * typeck.c (build_component_addr, expr_sizeof): Likewise.
295         * cvt.c (build_up_reference): Don't crash if taking the address
296         returns error_mark_node.
297
298         * decl.c (grokfndecl): Also check ctype when checking for ::main().
299
300 1998-10-15  Jason Merrill  <jason@yorick.cygnus.com>
301
302         * decl.c (grokfndecl): ::main and __builtin_* get C linkage.
303         Do mangling here.
304         (grokdeclarator): Instead of here.
305         * friend.c (do_friend): Lose special handling of ::main and
306         __builtin_*.
307         * cp-tree.h (DECL_MAIN_P): Check for C linkage.
308
309         * spew.c (yylex): Clear looking_for_typename if we got
310         'enum { ... };'.
311
312 1998-10-15  Mark Mitchell  <mark@markmitchell.com>
313
314         * class.c (maybe_warn_about_overly_private_class): Improve error
315         messages for class with only private constructors.
316
317         * cp-tree.def (TYPENAME_TYPE): Add to documentation.
318         * cp-tree.h (TYPENAME_TYPE_FULLNAME): Document.
319         (build_typename_type): New function.
320         * decl.c (build_typename_type): Broken out from ...
321         (make_typename_type): Use it.
322         * search.c (lookup_field): Likewise.
323
324 1998-10-14 Benjamin Kosnik  <bkoz@rhino.cygnus.com>
325
326         * pt.c (convert_nontype_argument): Check against type_referred_to.
327         * decl.c (grokvardecl): Check for declarator name before building
328         DECL_ASSEMBLER_NAME.
329          
330 1998-10-14  Mark Mitchell  <mark@markmitchell.com>
331
332         * pt.c (lookup_template_class): Add comment.
333         (instantiate_class_template): Don't mark the _TYPE node for
334         member class templates as an instantiation.
335
336 1998-10-14  Jason Merrill  <jason@yorick.cygnus.com>
337
338         * decl.c (grokfndecl): Fix my thinko.
339
340 1998-10-13  Jason Merrill  <jason@yorick.cygnus.com>
341
342         * tinfo2.cc (fast_compare): Remove.
343         (before): Just use strcmp.
344         * tinfo.cc (operator==): Just use strcmp.
345
346 1998-10-13  Klaus-Georg Adams  <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>
347
348         * decl.c (grokfndecl): Don't check for linkage in `extern "C"'
349         declarations.
350
351 1998-10-13  Mark Mitchell  <mark@markmitchell.com>
352
353         * cp-tree.h (specializations_of_same_template_p): Remove.
354         * search.c (get_template_base): Don't use it.
355         (get_template_base_recursive): Likewise.
356         * pt.c (specializations_of_same_template_p): Remove.
357         (unify): Don't use it.
358         (lookup_template_class): Find the correct parent when setting
359         CLASSTYPE_TI_TEMPLATE.
360         
361 1998-10-12  Jason Merrill  <jason@yorick.cygnus.com>
362
363         * tinfo.cc (operator==): Always compare names.
364
365 1998-10-12  Herman ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
366
367         * decl.c (start_function): Fix cut-and-paste error.
368
369 1998-10-12  Jason Merrill  <jason@yorick.cygnus.com>
370
371         * inc/typeinfo: Add #pragma interface.
372         (operator!=): Just call operator==.
373         * tinfo.cc: Add #pragma implementation.
374         (operator==): Move from inc/typeinfo and tinfo2.cc.
375         Check __COMMON_UNRELIABLE instead of _WIN32.
376
377         * typeck2.c (my_friendly_abort): Add URL.
378
379 1998-10-12  Alastair J. Houghton <ajh8@doc.ic.ac.uk>
380
381         * decl.c (start_method): Added extra parameter for attributes.
382         * cp-tree.h (start_method): Update prototype.
383         * parse.y (fn.def2): Update start_method parameter list.
384
385 1998-10-11  Mark Mitchell  <mark@markmitchell.com>
386
387         * cp-tree.h (specializations_of_same_template_p): Declare.
388         * pt.c (specializations_of_same_template_p): New function.
389         (unify): Use it.
390         * search.c (get_template_base): Use it.
391         (get_template_base_recursive): Likewise.
392         
393 1998-10-10  Manfred Hollstein  <manfred@s-direktnet.de>
394
395         * decl2.c (start_objects): Add new variable `joiner' and
396         initialize it properly.
397
398 1998-10-09  Mark Mitchell  <mark@markmitchell.com>
399
400         * search.c (expand_upcast_fixups): Tweak to match 1998-10-07
401         change to vtable types.
402
403         * cvt.c (ocp_convert): Avoid infinite recursion caused by
404         1998-10-03 change.
405
406 1998-10-08  Jason Merrill  <jason@yorick.cygnus.com>
407
408         * pt.c (resolve_overloaded_unification): New fn.
409         (try_one_overload): Likewise.
410         (unify): Don't fail on unknown type.
411         (type_unification_real): Likewise.  Use resolve_overloaded_unification
412         to handle an overloaded argument.
413         (template_args_equal): Split out...
414         (comp_template_args): From here.
415         (determine_specialization): Also allow a template with more
416         parms than were explicitly specified.
417         * cp-tree.h: Add template_args_equal.
418         * call.c (resolve_args): Remove TEMPLATE_ID_EXPR code.
419
420 Thu Oct  8 15:58:30 1998  Anthony Green  <green@cygnus.com>
421
422         * semantics.c (finish_asm_stmt): Revert my 1998-09-28
423         change.
424
425 Thu Oct  8 06:00:19 1998  Jeffrey A Law  (law@cygnus.com)
426
427         * typeck.c (unsigned_type): Only return TItype nodes when
428         HOST_BITS_PER_WIDE_INT is >= 64 bits.
429         (signed_type): Similarly.
430         * decl.c (intTI_type_node, unsigned_intTI_type_node): Only declare
431         when HOST_BITS_PER_WIDE_INT is >= 64 bits.
432         (init_decl_processing): Only create TItype nodes when
433         HOST_BITS_PER_WIDE_INT is >= 64 bits.
434         * cp-tree.h (intTI_type_node, unsigned_intTI_type_node): Only declare
435         when HOST_BITS_PER_WIDE_INT is >= 64 bits.
436
437 Wed Oct  7 12:32:44 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
438
439         * Makefile.in (hash.h): Add -L KR-C -F ', 0, 0' flags to gperf.
440         (gxx.gperf): Update comments describing invocation flags.
441         (hash.h): Regenerate using gperf 2.7.1 (19981006 egcs).
442
443 1998-10-07  Mark Mitchell  <mark@markmitchell.com>
444
445         * class.c (finish_struct_1): Add commentary on prevous change.
446
447         * cp-tree.h (vtbl_ptr_type_node): New variable.
448         * class.c (build_vtbl_ref): Don't indirect through the vptr; it's
449         already of the right type.
450         (finish_struct_1): Make the vptr be of type vtbl_ptr_type_node.
451         Simplify code to grow vtable.
452         * decl.c (vtbl_ptr_type_node): Define.
453         (init_decl_processing): Initialize it.
454         
455 1998-10-06  Mark Mitchell  <mark@markmitchell.com>
456
457         * cp-tree.def (PTRMEM_CST): New tree node.
458         * cp-tree.h (ptrmem_cst): New type.
459         (lang_type): Remove local_typedecls.
460         (dummy): Increase to 12 bits from 11.
461         (CLASSTYPE_LOCAL_TYPEDECLS): Remove.
462         (PTRMEM_CST_CLASS): New macro.
463         (PTRMEM_CST_MEMBER): Likewise.
464         (current_access_specifier): New variable.
465         (current_class_type): Remove duplicate declaration.
466         (finish_struct): Change prototype.
467         (unreverse_member_declarations): New function.
468         (pushdecl_class_level): Change prototype.
469         (grok_enum_decls): Remove.
470         (fixup_anonymous_union): New function.
471         (grok_x_components): Change prototype.
472         (tsubst_chain): Remove.
473         (finish_member_template_decl): Likewise.
474         (check_explicit_specialization): Fix indentation.
475         (finish_class_definition): Change prototype.
476         (finish_member_class_template): Likewise.
477         (finish_member_declaration): New function.
478         (check_multiple_declarators): Likewise.
479         * class.c (class_stack_node_t): New type.
480         (current_class_base): Remove.
481         (current_class_stack): Change type.
482         (current_access_specifier): New variable.
483         (grow_method): Remove.
484         (check_member_decl_is_same_in_complete_scope): Break out from
485         finish_struct.
486         (make_method_vec): New function.
487         (free_method_vec): Likewise.
488         (add_implicitly_declared_members): Break out from finish_struct_1.
489         (free_method_vecs): New variable.
490         (add_method): Rework for direct use from parser.
491         (handle_using_decl): Watch for NULL_TREE while iterating through
492         CLASSTYPE_METHOD_VEC.
493         (finish_struct_methods): Don't build CLASSTYPE_METHOD_VEC here;
494         just do some error-checking.
495         (warn_hidden): Change iteration through CLASSTYPE_METHOD_VEC.
496         (finish_struct_1): Simplify.  Use add_implicitly_declared_members.
497         (finish_struct): Change prototype.  Simplify; fields and methods
498         are already set up at this point.
499         (init_class_processing): Set up current_class_stack.
500         (pushclass): Save current_access_specifier.
501         (popclass): Restore it.
502         (currently_open_class): Simplify.
503         (build_self_reference): Remove use of CLASSTYPE_LOCAL_TYPEDECLS.
504         * decl.c (saved_scope): Add access_specifier.
505         (maybe_push_to_top_level): Save it.
506         (pop_from_top_level): Restore it.
507         (maybe_process_template_type_declaration): Use
508         finish_member_declaration. 
509         (pushtag): Likewise.
510         (pushdecl_class_level): Don't return a value.
511         (fixup_anonymous_union): Break out from grok_x_components.
512         (shadow_tag): Use it.
513         (xref_tag): Complain about using an elaborated type specifier to
514         reference a template type parameter or typedef name.
515         (xref_basetypes): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
516         (current_local_enum): Remove.
517         (build_enumerator): Call finish_member_declaration.
518         (grok_enum_decls): Remove.
519         * decl2.c (grok_x_components): Simplify.
520         (check_classfn): Change iteration through CLASSTYPE_METHOD_VEC.
521         (grokfield): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
522         (merge_functions): Add to comment.
523         (arg_assoc_type): Prototype.
524         (arg_assoc): Pass as many arguments as there are parameters.
525         * error.c (dump_expr): Handle PTRMEM_CST.  Improve handling of
526         OFFSET_REF.
527         * expr.c (cpls_expand_expr): Remove dead code.  Handle
528         PTRMEM_CST.
529         * friend.c (do_friend): Lookup friends when in nested classes.
530         Change comments.
531         * init.c (build_offset_ref): Do lookup even for classes that are
532         only partially defined.
533         (decl_constant_value): Remove dead code.
534         * method.c (build_overload_value): Remove hack where by TYPE was
535         not a TYPE.  Handle PTRMEM_CST.
536         (build_template_parm_names): Don't pass a PARM_DECL where a TYPE
537         should go.
538         * parse.y (components, notype_components, component_decl,
539         component_decl_1, component_declarator, component_declarator0):
540         Now all are itype rather than ttype.  Rework to add members to
541         classes on the fly.
542         (typesqpecqual_reserved): Use check_multiple_declarators.
543         (structsp): Update class to finish_class_definition.
544         (do_xref_defn): Unsplit into named_class_head.
545         (access_specifier): Set current_access_specifier.
546         * pt.c (set_current_access_from_decl): New function.
547         (finish_member_template_decl): Don't take the parameters.
548         (comp_template_args): Make more robust.
549         (lookup_template_class): Don't use current_local_enum.
550         (for_each_template_parm): Handle PTRMEM_CST.
551         (instantiate_class_template): Use set_current_access_from_decl,
552         finish_member_declaration and unreverse_member_declarations.  Set
553         lineno/input_filename before generating implicit member functions.  
554         (type_unification_real): Don't assume back-unification happens
555         only for the last argument.
556         (regenerate_decl_from_template): Call pushclass a bit earlier.
557         (tsubst_chain): Remove.
558         (tsubst_enum): Use set_current_access_from_decl.
559         (set_mangled_name_for_template_decl): Fix indentation.
560         * search.c (lookup_fnfields_1): Change iteration through
561         CLASSTYPE_METHOD_VEC.
562         (dfs_pushdecls): Likewise.
563         (dfs_compress_decls): Likewise.
564         (add_conversions): Likewise.
565         * semantics.c (finish_class_definition): Don't take components.
566         Change call to finish_struct.
567         (finish_member_declaration): New function.
568         (finish_member_class_template): Don't take template parameters.
569         Change call to grok_x_components.  Call finish_member_template_decl.
570         (check_multiple_declarators): New function.
571         * sig.c (append_signature_fields): Work from the TYPE_METHODS, not
572         a passed in fieldlist.
573         * tree.c (search_tree): Handle PTRMEM_CST.
574         (mapcar): Likewise.
575         * typeck.c (unary_complex_lvalue): Build PTRMEM_CSTs, not
576         INTEGER_CSTs, for pointer-to-data members.
577         
578         * call.c (resolve_args): Resolve template specializations, if
579         possible.
580
581 Tue Oct  6 07:57:26 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
582
583         * Makefile.in (spew.o): Depend on toplev.h.
584
585         * call.c (compare_ics): Initialize variables `deref_from_type2',
586         `deref_to_type1' and `deref_to_type2'.
587
588         * except.c (get_eh_type): Hide prototype and definition.
589         (process_start_catch_block_old): Remove unused static prototype.
590
591         * pt.c (tsubst_decl): Initialize variable `argvec'.
592
593         * spew.c: Include toplev.h.
594
595 1998-10-05  Jason Merrill  <jason@yorick.cygnus.com>
596
597         * pt.c (instantiate_decl): Do save and restore file position.
598
599 1998-10-05  Martin von Löwis  <loewis@informatik.hu-berlin.de>
600
601         * method.c (build_decl_overload_real): Clear
602         numeric_output_need_bar after __.
603
604 1998-10-05  Nathan Sidwell  <nathan@acm.org>
605
606         * call.c (build_new_method_call): Issue 'incomplete type' error,
607         if class is not defined.
608
609 1998-10-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
610
611         * call.c (build_object_call): Move declaration of variable
612         `fn' into the scope where it is used.  Don't access variable
613         `fn' when it is uninitialized, instead use `fns'.
614
615 1998-10-04  Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
616
617         * errfn.c (cp_thing): Print buf as a string not as a printf format
618         to avoid problems with the operator%. Consequently, `%%' sequences
619         in format are copied as `%' in buf.
620
621 1998-10-04  Jason Merrill  <jason@yorick.cygnus.com>
622
623         * pt.c (pop_tinst_level): Call extract_interface_info.
624         (instantiate_decl): Don't save and restore file position.
625
626         * decl.c (cp_finish_decl): Make statics in extern inlines and
627         templates common, if possible and the target doesn't support weak
628         symbols.
629
630         * decl.c (grokdeclarator): Remove redundant calls to
631         build_type_variant and some duplicated code.
632         * sig.c (build_signature_reference_type): Only take the type parm.
633         (build_signature_pointer_type): Likewise.
634         * tree.c (build_cplus_method_type): Adjust.
635         * cp-tree.h: Update.
636
637 1998-10-04  Mark Mitchell  <mark@markmitchell.com>
638
639         * call.c (build_over_call): Make pedwarns about dropped qualifiers
640         into full-fledged errors.
641         * cvt.c (convert_to_reference): Likewise.
642         * typeck.c (convert_for_assignment): Likewise.
643
644         * search.c (expand_upcast_vtables): In addition to unsetting 
645         TREE_READONLY, remove top-level const type qualifier.
646
647 1998-10-03  Mark Mitchell  <mark@markmitchell.com>
648
649         * class.c (current_class_ptr, current_class_ref): Clarify
650         documentation.
651         * cvt.c (ocp_convert): Don't expect fold to remove all trivial
652         NOP type conversions.
653         * decl.c (decls_match): Use comptypes directly; ignore
654         qualifiers on the DECL.
655         (duplicate_decls): Remove qualifier checks on DECL.
656         (grokdeclarator): Make the type built up include top-level
657         qualifiers.
658         * decl2.c (do_dtors): Fix spelling error.
659         * error.c (dump_simple_decl): Don't look at qualifiers on the decl
660         when printing type information.
661         * init.c (build_new_1): Add documentation.  Deal with the fact
662         that type of allocated memory now contains qualifiers.
663         * lex.c (is_global): Improve error-recovery.
664         * sig.c (build_member_function_pointer): Don't cast away const
665         on fields of sigtable_entry_type.
666         * tree.c (lvalue_type): Don't look at top-level qualifiers on
667         expressions.
668         * typeck.c (decay_conversion): Likewise.
669         (build_component_ref): Make sure the type of the COMPONENT_REF
670         contains top-level qualifiers, as appropriate.  Improve
671         error-handling. 
672         (build_indirect_ref): Simplify.  Don't strip top-level qualifiers.
673         (build_array_ref): Likewise.
674         (build_unary_op): Improve error-recovery.
675         (unary_complex_lvalue): Make taking the address a bound member
676         function an error, not a sorry.
677         (build_conditional_expr): Look at the type qualifiers, not the
678         qualifiers on the expression itself.
679         
680 1998-10-03  Jason Merrill  <jason@yorick.cygnus.com>
681
682         * decl2.c (merge_functions): Remove duplicates.
683
684         * decl2.c: Add -f{no-,}implicit-inline-templates.
685         (lang_decode_option): Unset it if -frepo.
686         (import_export_decl): Check it.
687
688         * decl.c (lookup_name_real): Template parms also take precedence
689         over implicit typename.  Only warn if yylex.
690
691         * typeck.c (build_conditional_expr): Only fold if ifexp is an
692         INTEGER_CST.
693
694         * decl2.c (finish_vtable_vardecl): Check DECL_INTERFACE_KNOWN
695         instead of linkage.
696
697 1998-10-01  Jason Merrill  <jason@yorick.cygnus.com>
698
699         * cp-tree.h (FORMAT_VBASE_NAME): New macro.
700         * class.c (build_vbase_pointer): Use it.
701         * rtti.c (expand_class_desc): Likewise.
702         * tree.c (build_vbase_pointer_fields): Likewise.
703
704 Thu Oct  1 10:43:45 1998  Nick Clifton  <nickc@cygnus.com>
705
706         * decl.c (start_decl): Add invocation of
707         SET_DEFAULT_DECL_ATTRIBUTES, if defined.
708         (start_function): Add invocation of
709         SET_DEFAULT_DECL_ATTRIBUTES, if defined.
710
711         * lex.c: Replace occurances of HANDLE_SYSV_PRAGMA with
712         HANDLE_GENERIC_PRAGMAS.
713         
714 1998-09-28  Anthony Green  <green@cygnus.com>
715
716         * semantics.c (finish_asm_stmt): Always permit volatile asms.
717
718 1998-09-28  Mark Mitchell  <mark@markmitchell.com>
719
720         * decl.c (grokdeclarator): Tighten checks for invalid
721         destructors.  Improve error-messages and error-recovery.
722         * decl2.c (check_classfn): Don't assume that mangled destructor 
723         names contain type information.
724         
725 1998-09-25  Jason Merrill  <jason@yorick.cygnus.com>
726
727         * search.c (get_base_distance): Remove assert.
728
729         * decl2.c (build_anon_union_vars): Don't process a field with no
730         name.
731         (finish_anon_union): Also complain about local anon unions with no
732         members.
733
734 1998-09-25  Martin von Löwis  <loewis@informatik.hu-berlin.de>
735
736         * decl.c (lookup_namespace_name): If the name is a namespace,
737         return it immediately.
738
739 Fri Sep 25 11:45:38 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
740
741         * cp-tree.h (define_case_label): Remove unused parameter.
742         (check_java_method): Likewise.
743         (grokclassfn): Likewise.
744         (expand_aggr_init): Likewise.
745         (build_x_delete): Likewise.
746         (maybe_end_member_template_processing): Likewise.
747         (unshare_base_binfos): Add prototype.
748         (string_conv_p): Likewise.
749         (my_friendly_abort): Mark with ATTRIBUTE_NORETURN.
750
751         * cvt.c (build_up_reference): Remove unused parameter
752         `checkconst', all callers changed.
753         (build_type_conversion): Mark parameter `code' with
754         ATTRIBUTE_UNUSED.
755         (build_expr_type_conversion): Initialize variable `conv'.
756
757         * decl.c (push_namespace): Initialize variable `d'.
758         (define_case_label): Remove unused parameter `decl', all callers
759         changed.
760
761         * decl2.c (lang_decode_option): If !USE_CPPLIB, mark parameter
762         `argc' with ATTRIBUTE_UNUSED.
763         (grokclassfn): Remove unused parameter `cname', all callers
764         changed.
765         (check_java_method): Likewise for parameter `ctype'.
766         (copy_assignment_arg_p): Mark parameter `virtualp' with
767         ATTRIBUTE_UNUSED.
768         (finish_prevtable_vardecl): Likewise for parameter `prev'.
769
770         * expr.c (extract_init): Likewise for parameters `decl' and `init'.
771
772         * init.c (expand_aggr_init_1): Remove unused parameter
773         `alias_this', all callers changed.
774         (expand_aggr_init): Likewise.
775         (expand_default_init): Likewise.
776         (build_new_1): Initialize variable `susp'.
777         (build_x_delete): Remove unused parameter `type', all callers
778         changed.
779
780         * lex.c (set_typedecl_interface_info): Mark parameter `prev' with
781         ATTRIBUTE_UNUSED.
782         (readescape): Use (unsigned) value in shift.
783         (real_yylex): Likewise.  Likewise.  Also cast `sizeof' to int when
784         comparing to a signed quantity.
785
786         * pt.c (maybe_end_member_template_processing): Remove unused
787         parameter `decl', all callers changed.
788         (check_explicit_specialization): Add braces around empty body in
789         an else-statement.
790         (current_template_args): Initialize variable `args'.
791         (lookup_template_class): Likewise for variable `prev_local_enum'.
792         (tsubst_decl): Likewise for variable `r'.
793         (set_mangled_name_for_template_decl): Initialize variable
794         `context'.
795
796         * spew.c (scan_tokens): Change type of parameter `n' to unsigned.
797         Likewise for variable `i'.
798         (yylex): Initialize variable `trrr'.
799
800         * typeck.c (compparms): Mark variable `strict' with
801         ATTRIBUTE_UNUSED.
802
803         * xref.c (simplify_type): Cast argument of ctype function to
804         `unsigned char'.
805
806 1998-09-24  Mark Mitchell  <mark@markmitchell.com>
807
808         * cp-tree.h (language_lvalue_valid): Remove.
809         * decl.c (grokdeclarator): Don't disallow references to functions.
810         * tree.c (lvalue_p_1): New function, combining duplicated
811         code from ...
812         (lvalue_p): Use it.
813         (real_lvalue_p): Likewise.
814         * typeck.c (language_lvalue_valid): Remove.
815         (build_modify_expr): Treat FUNCTION_TYPEs as readonly, even though
816         they don't have TREE_READONLY set.
817         * typeck2.c (readonly_error): Add case for FUNCTION_DECLs.
818         
819 1998-09-24  Benjamin Kosnik  <bkoz@loony.cygnus.com>
820
821         * spew.c (yylex): Give diagnostic.
822         * hash.h (is_reserved_word): Add export.
823         * gxx.gperf: Ditto.
824         * lex.h (rid): Add RID_EXPORT.
825         * lex.c (init_parse): Ditto. 
826
827 Tue Sep 22 21:01:19 1998  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
828
829         * friend.c (do_friend): Make warning a full sentence.
830
831 1998-09-22  Mark Mitchell  <mark@markmitchell.com>
832
833         * parse.y (component_decl_list): Improve error-recovery.
834
835 1998-09-22  Benjamin Kosnik  <bkoz@loony.cygnus.com>
836
837         * decl.c (make_typename_type): Move error to point where name
838         variable can be used by dump_type.
839
840 1998-09-22  Mark Mitchell  <mark@markmitchell.com>
841
842         * decl.c (grokfndecl): Improve error-recovery.
843         * decl2.c (grokfield): Likewise.
844         * pt.c (finish_member_template_decl): Likewise.
845
846 1998-09-20  Martin von Löwis  <loewis@informatik.hu-berlin.de>
847
848         * method.c (hack_identifier): Finding multiple members is always
849         an error.
850
851 1998-09-21  Per Bothner  <bothner@cygnus.com>
852
853         * Make-lang.in (c++-filt):  Link libiberty.a after cxxmain.o.
854
855 Mon Sep 21 01:53:05 1998  Felix Lee  <flee@cygnus.com>
856
857         * lex.c (init_lex): Use getenv ("LANG"), not GET_ENVIRONMENT ().
858
859 1998-09-20  Mark Mitchell  <mark@markmitchell.com>
860
861         * class.c (maybe_warn_about_overly_private_class): Reformat.
862
863 1998-09-17  Andrew MacLeod  <amacleod@cygnus.com>
864
865         * exception.cc (__cplus_type_matcher): realign some code.
866
867 1998-09-16  Mark Mitchell  <mark@markmitchell.com>
868
869         * Make-lang.in (tinfo.o): Use CXXFLAGS when compiling.
870         (tinfo2.o): Likewise.
871         (exception.o): Likewise.
872         (new.o): Likewise.
873         (opnew.o): Likewise.
874         (opnewnt.o): Likewise.
875         (opvnew.o): Likewise.
876         (opvnewnt.o): Likewise.
877         (opdel.o): Likewise.
878         (opdelnt.o): Likewise.
879         (opvdel.o): Likewise.
880         (opvdelnt.o): Likewise.
881
882 1998-09-16  Richard Henderson  <rth@cygnus.com>
883
884         * decl.c (init_decl_processing): Kill __builtin_fp and __builtin_sp.
885
886 1998-09-15  Alexandre Oliva  <oliva@dcc.unicamp.br>
887
888         * call.c (build_field_call): handle static data members too
889
890         * typeck.c (comptypes): when comparing pointer types, check
891         whether referred types match even in strictest modes
892
893 1998-09-15  Mark Mitchell  <mark@markmitchell.com>
894
895         * cp-tree.h: Revert previous change.
896         (finish_struct_methods): Remove declaration.
897         * class.c: Revert previous change.
898         (maybe_warn_about_overly_private_class): New function.
899         (finish_struct_methods): Declare here, and make static.  Remove
900         unnecessary parameters.  Tidy slightly.  Use
901         maybe_warn_about_overly_private_class. 
902         (finish_struct_1): Adjust.  Remove check for private constructors,
903         now done elsewhere.
904         (finish_struct): Adjust.
905         
906 1998-09-15  Andrew MacLeod  <amacleod@cygnus.com>
907
908         * except.c (expand_start_catch_block): No need to check for new
909         exception model.
910         (process_start_catch_block_old): Deleted.
911         (process_start_catch_block): Add call to start_decl_1().
912         (expand_end_catch_block): Add call to end_catch_handler().
913         * exception.cc (__cplus_type_matcher): Only check the exception 
914         language if there is an exception table.
915
916 1998-09-15  Andrew MacLeod  <amacleod@cygnus.com>
917
918         * search.c (expand_indirect_vtbls_init): Mark temporary stack slots
919         as used to prevent conflicts with virtual function tables.
920
921 1998-09-14  Mark Mitchell  <mark@markmitchell.com>
922
923         * cp-tree.h (lang_type): Add has_non_private_static_mem_fn.
924         (CLASSTYPE_HAS_NON_PRIVATE_STATIC_MEM_FN): New macro, to access it.
925         * class.c (maybe_class_too_private_p): New function.
926         (finish_struct_methods): Use it.
927         (finish_struct_1): Likewise.
928         (finish_struct): Set CLASSTYPE_HAS_NON_PRIVATE_STATIC_MEM_FN if
929         appropriate.
930         
931         * pt.c (check_specialization_scope): Fix spelling error.
932         (check_explicit_specialization): Remove code to handle explicit
933         specializations in class scope; they are now correctly diagnosed
934         as errors.
935
936 1998-09-10  Mark Mitchell  <mark@markmitchell.com>
937
938         * decl.c (pushdecl): Don't copy types if the
939         DECL_ABSTRACT_ORIGIN of the new decl matches the TYPE_NAME of the
940         type. 
941
942 1998-09-09  Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
943
944         * class.c (get_enclosing_class): New function.
945         (is_base_of_enclosing_class): Likewise.
946         * cp-tree.h (get_enclosing_class): Declare.
947         (is_base_of_enclosing_class): Likewise.
948         * pt.c (coerce_template_parms): Use them.
949
950 1998-09-09  Jason Merrill  <jason@yorick.cygnus.com>
951
952         * g++spec.c (lang_specific_driver): Check whether MATH_LIBRARY is
953         null to decide whether to use it.
954
955         * error.c (dump_type_real): Handle NAMESPACE_DECL.
956         * parse.y (base_class.1): Avoid crash on error.
957
958 1998-09-08  Martin von Löwis  <loewis@informatik.hu-berlin.de>
959
960         * decl.c (make_typename_type): If context is a namespace, the code
961         is in error.
962
963 1998-09-08  Mumit Khan  <khan@xraylith.wisc.edu>
964
965         * parse.y (nomods_initdcl0): Set up the parser stack correctly.
966
967 1998-09-08  Mark Mitchell  <mark@markmitchell.com>
968
969         * cp-tree.h (anonymous_namespace_name): Declare.
970         * decl.c: Define it.
971         (push_namespace): Use anonymous_namespace_name, rather than local
972         static anon_name.
973         * error.c (dump_decl): If a namespace is named
974         anonymous_namespace_name, call it {anonymous}.
975
976         * decl.c (grokparms): Distinguish between references and pointers
977         in error message.
978
979 1998-09-08  Richard Henderson  <rth@cygnus.com>
980             Mark Mitchell  <mark@markmitchell.com>      
981         
982         * pt.c (process_partial_specialization): Consistantly allocate
983         and zero tpd.parms based on ntparms.  Use tpd2.parms, not
984         tpd.parms, where appropriate.
985
986 Sun Sep  6 00:00:51 1998  Jeffrey A Law  (law@cygnus.com)
987
988         * Makefile.in (INCLUDES): Update after recent toplevel gcc
989         reorganizations.
990
991 1998-09-05  Mark Mitchell  <mark@markmitchell.com>
992
993         * cp-tree.h (TI_PENDING_SPECIALIZATION_FLAG): Remove.
994         * class.c (finish_struct): Remove hackery to deal with explicit
995         specializations in class scope.
996         * decl.c (grokfndecl): Improve error-recovery.
997         * decl2.c (grokfield): Likewise.
998         * pt.c (check_specialization_scope): New function.
999         (begin_specialization): Call it.
1000         (process_partial_specialization): New function, split out from
1001         push_template_decl.  Check partial specializations more
1002         stringently.
1003         (push_template_decl): Call it.
1004         (check_explicit_specialization): Don't attempt to handle explicit
1005         specializations in class scope.
1006         (template_parm_data): Document.  Add current_arg and
1007         arg_uses_template_parms. 
1008         (mark_template_parm): Set it.
1009         (tsubst_arg_types): Remove unused variable.
1010         * semantics.c (begin_class_definition): Tweak.
1011         
1012 1998-09-04  Mark Mitchell  <mark@markmitchell.com>
1013
1014         * inc/typeinfo (type_info::type_info(const char*)): Make
1015         `explicit'.
1016
1017         * cp-tree.h (hash_tree_cons_simple): New macro.
1018         * pt.c (tsubst_arg_types): New function.  Use hash_tree_cons.
1019         (coerce_template_parms): Use make_temp_vec, instead of
1020         make_tree_vec.  Document this behavior.
1021         (lookup_template_class): Likewise.
1022         (tsubst, cases METHOD_TYPE, FUNCTION_TYPE): Use tsubst_arg_types.  
1023         Remove dead code (and add ssertion to check its deadness).  Fix
1024         bug w.r.t. exception specifications.
1025
1026 1998-09-03  Jason Merrill  <jason@yorick.cygnus.com>
1027
1028         * decl2.c (import_export_vtable): Always make artificials comdat.
1029         (import_export_decl): Likewise.
1030         * pt.c (mark_decl_instantiated): Likewise.
1031
1032 1998-09-03  Mark Mitchell  <mark@markmitchell.com>
1033
1034         * cp-tree.h (finish_globally_qualified_member_call_expr):
1035         Rename to ...
1036         (finish_qualified_call_expr).
1037         * semantics.c: Likewise.
1038         * parse.y (primary): Use it.
1039         * method.c (hack_identifier): Remove redundant code.
1040         
1041         * init.c (resolve_offset_ref): Call convert_from_reference to
1042         handle members of reference type.  Improve error recovery.
1043
1044 1998-09-03  Benjamin Kosnik  <bkoz@cygnus.com>
1045
1046         * cp-tree.h: Declare warn_nontemplate_friend.
1047         * decl2.c (lang_decode_option): Set.
1048         * lang-options.h: Add -Wnon-template-friend.
1049         * friend.c (do_friend): Use to toggle non-template function warning.
1050
1051 1998-09-03  Mark Mitchell  <mark@markmitchell.com>
1052
1053         * decl.c (finish_enum): Don't resolve CONST_DECLs to their
1054         corresponding INTEGER_CSTs when processing_template_decl.
1055         * pt.c (tsubst_enum): Tweak accordingly.
1056
1057 1998-09-03  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
1058
1059         * decl.c (pushdecl_class_level): Add warning here.
1060         (pushdecl): Tweak.
1061
1062 1998-09-02  Jason Merrill  <jason@yorick.cygnus.com>
1063
1064         * cvt.c (convert_pointer_to_real): Tidy.
1065         * search.c (get_base_distance_recursive): Simplify.
1066         (get_base_distance): Likewise.
1067
1068         * pt.c (unify): Only special-case INTEGER_TYPE if it uses template
1069         parms.
1070
1071 Wed Sep 02 09:25:29 1998  Nick Clifton  <nickc@cygnus.com>
1072
1073         * lex.c (check_newline):  Call HANDLE_PRAGMA before
1074         HANDLE_SYSV_PRAGMA if both are defined.  Generate warning messages
1075         if unknown pragmas are encountered.
1076         (handle_sysv_pragma): Interpret return code from
1077         handle_pragma_token ().  Return success/failure indication rather
1078         than next unprocessed character. 
1079         (pragma_getc): New function: retrieves characters from the
1080         input stream.  Defined when HANDLE_PRAGMA is defined.
1081         (pragma_ungetc): New function: replaces characters back into the
1082         input stream.  Defined when HANDLE_PRAGMA is defined.
1083
1084 1998-09-01  Jason Merrill  <jason@yorick.cygnus.com>
1085
1086         * decl2.c (output_vtable_inherit): Use %cDIGIT in the operands.
1087         * class.c (build_vtable_entry_ref): Likewise.
1088
1089 1998-09-01  Mark Mitchell  <mark@markmitchell.com>
1090
1091         * cp-tree.h (DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION): New macro.
1092         * decl2.c (import_export_decl): Likewise.
1093         * pt.c (instantiate_decl): Use it.
1094
1095 1998-09-01  Jason Merrill  <jason@yorick.cygnus.com>
1096
1097         * decl.c (lookup_name_real): Also do implicit typename thing for
1098         artificial TYPE_DECLs.
1099         * search.c (lookup_field): Likewise.
1100         (lookup_fnfields, lookup_field): Adjust for implicit typename kludge.
1101         * semantics.c (begin_constructor_declarator): Use enter_scope_of.
1102         (enter_scope_of): Extract type from implicit typename.
1103         (begin_class_definition): Likewise.
1104         * lex.c (identifier_type): Handle implicit typename when checking
1105         for SELFNAME.
1106
1107         * cp-tree.h: Declare flag_strict_prototype.
1108         * lex.c (do_scoped_id, do_identifier): Don't implicitly_declare if
1109         -fstrict-prototype.
1110         * decl.c (init_decl_processing): If -f{no,-}strict-prototype wasn't
1111         specified, set it to the value of pedantic.
1112
1113 1998-09-01  Mark Mitchell  <mark@markmitchell.com>
1114
1115         * decl2.c (arg_assoc): Handle template-id expressions as arguments.
1116
1117 1998-08-31  Mark Mitchell  <mark@markmitchell.com>
1118
1119         * decl.c (finish_enum): Handle member enums of classes declared in
1120         template functions.
1121         
1122         * decl2.c (grok_x_components): Strip attributres before calling
1123         groktypename. 
1124         
1125 1998-08-31  Jason Merrill  <jason@yorick.cygnus.com>
1126
1127         * cp-tree.h, decl2.c: Remove support for -fall-virtual,
1128         -fenum-int-equivalence and -fno-nonnull-objects.
1129         * class.c (check_for_override): Remove support for -fall-virtual.
1130         (finish_struct_1): Likewise.
1131         * call.c (build_new_op): Remove support for -fenum-int-equivalence.
1132         * typeck.c (build_binary_op_nodefault): Likewise.
1133         * cvt.c (ocp_convert): Likewise.
1134         * call.c (build_vfield_ref): Remove support for -fno-nonnull-objects.
1135         * class.c (build_vbase_path): Likewise.
1136
1137 Sun Aug 30 22:16:31 1998  H.J. Lu  (hjl@gnu.org)
1138
1139         * Makefile.in (INTERFACE): New, set to 1.
1140
1141 1998-08-30  Mark Mitchell  <mark@markmitchell.com>
1142
1143         * error.c (dump_decl): Use CP_DECL_CONTEXT, not DECL_CONTEXT, when
1144         comparing with global_namespace.
1145         (dump_aggr_type): Likewise.
1146
1147         * decl.c (grokfndecl): Issue error on declaration of friend
1148         templates with explicit template arguments.
1149
1150         * pt.c (convert_template_argument): New function, split out
1151         from...
1152         (coerce_template_parms): Here.
1153         (tsubst): Attempt better error-recovery.
1154
1155 1998-08-28  Benjamin Kosnik  <bkoz@loony.cygnus.com>
1156
1157         * pt.c (decl_template_parm_p): Add checks for
1158         TEMPLATE_TEMPLATE_PARM.
1159
1160 1998-08-28  Mark Mitchell  <mark@markmitchell.com>
1161
1162         * lex.c (do_identifier): Fix thinko in previous change.
1163
1164 1998-08-28  Jason Merrill  <jason@yorick.cygnus.com>
1165
1166         * search.c (dfs_search, binfo_for_vtable, dfs_bfv_helper): New fns.
1167         * decl2.c (output_vtable_inherit): Call binfo_for_vtable.
1168
1169 1998-08-28  Richard Henderson  <rth@cygnus.com>
1170
1171         Add support for discarding unused virtual functions.
1172         * lang-options.h: Add -fvtable-gc.
1173         * cp-tree.h: Add flag_vtable_gc.
1174         * decl2.c (output_vtable_inherit): New fn.
1175         (finish_vtable_vardecl): Call it.
1176         * class.c (build_vtable_entry_ref): New fn.
1177         (build_vtbl_ref): Call it.
1178
1179 1998-08-28  Mark Mitchell  <mark@markmitchell.com>
1180
1181         * cp-tree.h (build_enumerator): Take the enumeration type as a
1182         paramter. 
1183         * decl.c (finish_enum): Don't set the TREE_TYPE for the
1184         enumeration constant values if we're processing_template_decls.
1185         Don't set the type for the CONST_DECLs either; that's done in
1186         build_enumerator.
1187         (build_enumerator): Take the enumeration type as a
1188         parameter. 
1189         * lex.c (do_identifier): Don't resolve enumeration constants while
1190         processing template declarations, even if they happen to be
1191         TEMPLATE_PARM_INDEXs. 
1192
1193         * parse.y (current_enum_type): New variable.
1194         (primary): Don't allow statement-expression in local classes just
1195         as we don't in global classes.
1196         (structsp): Use current_enum_type.
1197         (enum_list): Likewise.
1198         * pt.c (tsubst_enum): Don't check for NOP_EXPRs introduced by
1199         finish_enum; they no longer occur.
1200         
1201         * cp-tree.h (finish_base_specifier): New function.
1202         * parse.y (base_class): Use it.
1203         * semantics.c (finish_base_specifier): Define it.
1204
1205         * parse.y (structsp): Warn on use of typename outside of template
1206         declarations. 
1207         
1208 1998-08-27  Jason Merrill  <jason@yorick.cygnus.com>
1209
1210         * lex.c (handle_cp_pragma): Remove #pragma vtable.
1211         * lang-options.h: Remove +e options.
1212         * decl2.c (lang_decode_option): Likewise.
1213         (import_export_vtable): Don't check write_virtuals.
1214         (finish_vtable_vardecl, finish_file): Likewise.
1215         * search.c (dfs_debug_mark): Likewise.
1216         * semantics.c (begin_class_definition): Likewise.
1217         * class.c (build_vtable, finish_vtbls, finish_struct_1): Likewise.
1218
1219         * call.c (build_over_call): Check flag_elide_constructors.
1220         * decl2.c: flag_elide_constructors defaults to 1.
1221         * typeck.c (convert_arguments): Remove return_loc parm.
1222         (build_function_call_real): Adjust.
1223
1224         * search.c: Tear out all mi_matrix and memoize code.
1225         (lookup_field, lookup_fnfields): Use scratch_tree_cons.
1226         * lang-options.h: Remove documentation for -fhandle-exceptions,
1227         -fmemoize-lookups and -fsave-memoized.
1228         * cp-tree.h: Lose mi_matrix and memoize support.
1229         * decl2.c: Ignore -fmemoize-lookups and -fsave-memoized.
1230         * class.c: Lose struct class_level.
1231         (pushclass, popclass): Lose memoize support.
1232         * init.c (build_offset_ref): Likewise.
1233
1234         Never change BINFO_INHERITANCE_CHAIN.
1235         * init.c (emit_base_init): Change modification of
1236         BINFO_INHERITANCE_CHAIN to an assert.
1237         * search.c (get_base_distance_recursive): Likewise.
1238         (get_base_distance): Likewise.
1239         (lookup_member): Likewise.
1240         (convert_pointer_to_single_level): Likewise.
1241         (lookup_field): Likewise.  Lose setting TREE_VIA_* on TREE_LISTs.
1242         (lookup_fnfields): Likewise.
1243         * tree.c (propagate_binfo_offsets): Don't call unshare_base_binfos.
1244         (unshare_base_binfos): Don't call propagate_binfo_offsets.
1245         (layout_basetypes): Call propagate_binfo_offsets instead of 
1246         unshare_base_binfos.
1247         * decl.c (xref_basetypes): Call unshare_base_binfos.
1248         * pt.c (instantiate_class_template): Likewise.
1249         * tree.c (reverse_path): Remove 'copy' parm; always make a
1250         temporary copy.
1251         * class.c (build_vbase_path): Just call it.
1252         * search.c (compute_access): Likewise.  Don't re-reverse.
1253
1254 1998-08-27  Mark Mitchell  <mark@markmitchell.com>
1255
1256         * class.c (build_vbase_path): Use reverse_path.
1257         (finish_base_struct): Move warnings for inaccessible bases to
1258         layout_basetypes.
1259         (modify_one_vtable): Remove check of TREE_USED (binfo).
1260         (fixup_vtable_deltas1): Likewise.
1261         * cp-tree.h (BINFO_INHERITANCE_CHAIN): Document here.
1262         (xref_tag): Remove binfos parameter.
1263         (make_binfo): Remove chain parameter.
1264         (reverse_path): Add copy parameter.
1265         * decl.c (init_decl_processing): Change calls to xref_tag.
1266         (xref_tag): Remove binfos parameter.
1267         (xref_basetypes): Change calls to make_binfo.
1268         * decl2.c (grok_x_components): Change calls to xref_tag.
1269         (handle_class_head): Likewise.
1270         * friend.c (do_friend): Likewise.
1271         * lex.c (make_lang_type): Change calls to make_binfo.
1272         * parse.y (structsp): Change calls to xref_tag.
1273         (named_complex_class_head_sans_basetype): Likewise.
1274         (named_class_head): Likewise.
1275         * rtti.c (init_rtti_processing): Likewise.
1276         * search.c (compute_access): Change calls to reverse_path.
1277         (dfs_get_vbase_types): Change calls to make_binfo.
1278         (get_vbase_types): Remove dead code.
1279         * tree.c (unshare_base_binfos): Change calls to make_binfo.
1280         (layout_basetypes): Warn here about inaccessible bases.
1281         (make_binfo): Remove chain parameter.
1282         (reverse_path): Add copy parameter.
1283         
1284 1998-08-27  Jason Merrill  <jason@yorick.cygnus.com>
1285
1286         * class.c: #if 0 complete_type_p.
1287         * init.c (build_java_class_ref, build_new_1): Remove unused locals.
1288         * method.c (process_overload_item): Likewise.
1289         * typeck.c (comp_target_types): Likewise.
1290
1291         Stop sharing binfos for indirect virtual bases.
1292         * tree.c (propagate_binfo_offsets): Unshare vbases, too.
1293         (layout_basetypes): Likewise.
1294         (unshare_base_binfos): Copy vbases, too.
1295         * cp-tree.h (BINFO_VIA_PUBLIC, BINFO_BASEINIT_MARKED,
1296         BINFO_VBASE_INIT_MARKED): Remove obsolete macros.
1297         (BINFO_PUSHDECLS_MARKED, SET_BINFO_PUSHDECLS_MARKED,
1298         CLEAR_BINFO_PUSHDECLS_MARKED): New macros.
1299         * search.c (lookup_field, lookup_fnfields, lookup_member): Remove
1300         reference to BINFO_VIA_PUBLIC.
1301         (marked_pushdecls_p, unmarked_pushdecls_p): New fns.
1302         (push_class_decls): Use them.
1303         (dfs_pushdecls): Use SET_BINFO_PUSHDECLS_MARKED.
1304         (dfs_compress_decls): Use CLEAR_BINFO_PUSHDECLS_MARKED.
1305
1306 1998-08-27  Mark Mitchell  <mark@markmitchell.com>
1307
1308         * decl.c (build_enumerator): Set DECL_CONTEXT for the
1309         CONST_DECLs. 
1310
1311 1998-08-26  Mark Mitchell  <mark@markmitchell.com>
1312
1313         * cp-tree.h (finish_enum): Change prototype.
1314         * decl.c (finish_enum): Use TYPE_VALUES, rather than taking a
1315         VALUES parameter.  Don't try to compute mins/maxs if
1316         processing_template_decl. 
1317         * parse.y (structsp): Use new calling sequence for finish_enum.
1318         * pt.c (tsubst_enum): Likewise.  Take the new type as input.  
1319         (lookup_template_class): Remove unused variables.  Tweak.
1320         Register enums on instantiation list before substituting
1321         enumeration constants.
1322         (tsubst_decl): Remove unused variables.
1323         (regenerate_decl_from_template): Likewise.
1324         
1325         * decl.c (duplicate_decls): Don't obliterate the
1326         DECL_TEMPLATE_INFO for a template if we're not replacing it with
1327         anything. 
1328
1329         * lex.c (do_identifier): Fix typo in comment.
1330
1331 Wed Aug 26 10:54:51 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1332
1333         * errfn.c: Remove stdarg.h/varargs.h.
1334         * tree.c: Likewise.
1335
1336 1998-08-25  Brendan Kehoe  <brendan@cygnus.com>
1337
1338         * pt.c (tsubst_copy): Only do typename overloading on an
1339         IDENTIFIER_NODE that happens to look like a typename if it actually
1340         has a type for us to use.
1341
1342 1998-08-25  Jason Merrill  <jason@yorick.cygnus.com>
1343
1344         * typeck.c (comp_cv_target_types): Split out...
1345         (comp_target_types): From here.  Don't allow cv-qual changes under
1346         a pointer if nptrs == 0.  Fix OFFSET_TYPE handling.
1347         (build_ptrmemfunc): Pass 1 to nptrs.
1348         * cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.
1349
1350 1998-08-25  Mark Mitchell  <mark@markmitchell.com>
1351
1352         * search.c (dependent_base_p): Don't compare a binfo to
1353         current_class_type; use the TREE_TYPE of the binfo instead.
1354
1355         * cp-tree.h (CLASS_TYPE_P): Revise definition.
1356
1357 1998-08-25  Jason Merrill  <jason@yorick.cygnus.com>
1358
1359         * decl.c (duplicate_decls): Don't complain about different
1360         exceptions from an internal decl even if pedantic.
1361
1362         * typeck.c (convert_for_assignment): Converting from pm of vbase
1363         to derived is an error, not a sorry.
1364
1365         * call.c (build_over_call): Use convert_pointer_to_real for 'this'.
1366         * class.c (fixed_type_or_null): Rename from
1367         resolves_to_fixed_type_p.  Return the dynamic type of the
1368         expression, if fixed, or null.
1369         (resolves_to_fixed_type_p): Use it.  Return 0 if the dynamic type
1370         does not match the static type.
1371         (build_vbase_path): Rename 'alias_this' to 'nonnull'.  Use
1372         resolves_to_fixed_type_p again.
1373
1374 1998-08-24  Mark Mitchell  <mark@markmitchell.com>
1375
1376         * pt.c (tsubst_decl): Move special case code for dealing with
1377         tricky friend templates here from ...
1378         (regenerate_decl_from_template): Here.
1379
1380 1998-08-24  Jason Merrill  <jason@yorick.cygnus.com>
1381
1382         * decl.c (start_decl): Remove redundant linkage check.
1383
1384 1998-08-24  Gavin Romig-Koch  <gavin@cygnus.com>
1385
1386         * typeck.c (c_expand_return): Handle the case that valtype
1387         is wider than the functions return type.
1388
1389 1998-08-24  Mark Mitchell  <mark@markmitchell.com>
1390
1391         * cp-tree.h (CLASS_TYPE_P): New macro.
1392         * decl.c (grokdeclarator): Use it instead of IS_AGGR_TYPE.
1393         * pt.c (process_template_parm): Undo previous change.
1394         
1395 1998-08-24  Benjamin Kosnik  <bkoz@cygnus.com>
1396
1397         * cp-tree.h: Declare.
1398         * pt.c (decl_template_parm_p): New function.
1399         * decl.c (pushdecl): Check decls for redeclaring template parms.
1400         (xref_tag): Make redeclaration an error, print decl.
1401         * decl2.c (grokfield): Check field_decls for redeclaration as well.
1402
1403 1998-08-24  Jason Merrill  <jason@yorick.cygnus.com>
1404
1405         * parse.y (primary): Fix up the type of string constants.
1406
1407 1998-08-24  Mark Mitchell  <mark@markmitchell.com>
1408
1409         * typeck.c (convert_for_initialization): Move check for odd uses
1410         of NULL to avoid duplicate warnings.
1411
1412 1998-08-24  Jason Merrill  <jason@yorick.cygnus.com>
1413
1414         * tree.c (lvalue_type): Fix for arrays.
1415         * typeck.c (string_conv_p): New fn.
1416         (convert_for_assignment): Use it.
1417         (build_unary_op): Use lvalue_type.
1418         * call.c (standard_conversion, convert_like): Use string_conv_p.
1419         (add_function_candidate): Use lvalue_type.
1420         * cvt.c (convert_to_reference): Likewise.
1421         * decl2.c (lang_decode_option): Ignore -traditional.
1422         * decl.c (init_decl_processing): flag_writable_strings inhibits
1423         flag_const_strings.
1424
1425 1998-08-24  Andrew MacLeod  <amacleod@cygnus.com>
1426
1427         * lang-options.h (lang_options): Add fconst-strings to the list
1428         of valid options.
1429         * decl2.c (lang_f_options, lang_decode_option): Likewise.
1430
1431 1998-08-24  Nathan Sidwell  <nathan@acm.org>
1432
1433         * lex.c (real_yylex): Don't warn about long long constants if
1434         we're allowing long long.
1435
1436 1998-08-24  Martin von Löwis  <loewis@informatik.hu-berlin.de>
1437
1438         * decl.c (pushdecl): Use IDENTIFIER_NAMESPACE_VALUE instead of
1439         accessing bindings directly.
1440
1441         * search.c (my_tree_cons): Reimplement.
1442
1443         * lang-specs.h: Remove __HONOR_STD.
1444         * inc/exception, inc/new, inc/new.h, inc/typeinfo: Likewise.
1445
1446 1998-08-23  Mark Mitchell  <mark@markmitchell.com>
1447
1448         * decl.c (grokdeclarator): Complain about in-class initialization
1449         of aggregates and/or references.
1450         * pt.c (process_template_parm): Clear IS_AGGR_TYPE for
1451         TEMPLATE_TYPE_PARMs. 
1452
1453         * decl2.c (grok_array_decl): Add comment.
1454         (mark_used): Don't instantiate an explicit instantiation.
1455         * friend.c (make_friend_class): Remove bogus comment.  Fix check
1456         for partial specializations.
1457         * pt.c (check_explicit_specialization): Don't
1458         SET_DECL_EXPLICIT_INSTANTIATION here.
1459         (mark_decl_instantiated): Or here.
1460         (do_decl_instantiation): Do it here, instead.  Add checks for
1461         duplicate explicit instantiations, etc.  Tidy.
1462         (do_type_instantiation): Likewise.
1463         (instantiate_decl): Improve comments.  Complain about explicit
1464         instantiations where no definition is available.
1465         
1466         * cp-tree.h (ansi_null_node): Remove.
1467         * call.c (build_over_call): Warn about converting NULL to an
1468         arithmetic type.
1469         * cvt.c (build_expr_type_conversion): Likewise.  Use
1470         null_ptr_cst_p instead of expanding it inline.
1471         * decl.c (ansi_null_node): Remove. 
1472         (init_decl_processing): Make null_node always have integral type.
1473         * except.c (build_throw): Warn about converting NULL to an
1474         arithmetic type.
1475         * lex.c (init_parse): Remove handling of ansi_null_node.
1476         * pt.c (type_unification_real): Don't convert NULL to void* type.
1477         * typeck.c (build_binary_op_nodefault): Fix NULL warnings.
1478         (convert_for_assignment): Warn about converting NULL to an
1479         arithmetic type.
1480         (convert_for_initialization): Likewise.
1481         
1482 1998-08-20  Jason Merrill  <jason@yorick.cygnus.com>
1483
1484         * tree.c (search_tree, no_linkage_helper, no_linkage_check): New fn.
1485         * pt.c (coerce_template_parms): Use no_linkage_check.
1486         * decl.c (grokvardecl): Likewise.
1487         (grokfndecl): Likewise.  Members of anonymous types have no linkage.
1488
1489         * method.c (process_overload_item): Remove useless code.
1490
1491 1998-08-20  Per Bothner  <bothner@cygnus.com>
1492
1493         Handle new'ing of Java classes.
1494         * init.c (build_class_classref):  New function.
1495         (build_new_1):  If type is TYPE_FOR_JAVA:  Call _Jv_AllocObject;
1496         constructor does not return this;  don't need to exception-protect.
1497
1498         * pt.c (lookup_template_class):  Copy TYPE_FOR_JAVA flag.
1499         * decl2.c (acceptable_java_type):  Handle template-derived types.
1500
1501 1998-08-20  Per Bothner  <bothner@cygnus.com>
1502
1503         * decl2.c (import_export_vtable):  Suppress vtables for Java classes.
1504
1505 1998-08-20  Mark Mitchell  <mark@markmitchell.com>
1506
1507         * decl.c (duplicate_decls): Always merge the old and new patterns
1508         for templates, regardless of whether or not the new one has
1509         DECL_INITIAL.  Don't throw away specializations.  Merge
1510         DECL_SAVED_TREE.
1511         * pt.c (tsubst_decl): Use the right pattern when calculating the
1512         complete args for a new template instance.
1513         (do_decl_instantiation): Fix typo in comment.
1514         (regenerate_decl_from_template): Deal with tricky friend template
1515         case.
1516         (instantiate_decl): Likewise.
1517         
1518 Thu Aug 20 09:09:45 1998  Jeffrey A Law  (law@cygnus.com)
1519
1520         * init.c (build_builtin_delete_call): Add missing assemble_external
1521         call.
1522
1523 1998-08-20  Jason Merrill  <jason@yorick.cygnus.com>
1524
1525         * parse.y (notype_unqualified_id): Also accept ~A<int>.
1526
1527 1998-08-19  Mark Mitchell  <mark@markmitchell.com>
1528
1529         * typeck.c (build_binary_op_nodefault): Warn on use of NULL in
1530         arithmetic.
1531         * except.c (build_throw): Warn when NULL is thrown, even with
1532         -ansi.  Use ansi_null_node, rather than integer_zero_node, in the
1533         thrown expression.
1534         
1535         * cp-tree.h (ansi_null_node): New variable.
1536         * decl.c (ansi_null_node): New variable.
1537         (init_decl_processing): Initialize its type.
1538         * lex.c (init_parse): Initialize its value.  Use ansi_null_node
1539         for null_node in non-ANSI mode.
1540         * typeck.c (build_binary_op_nodefault): Use ansi_null_node in
1541         place of null_node to avoid spurious errors.
1542
1543 1998-08-17  Mark Mitchell  <mark@markmitchell.com>
1544
1545         * cp-tree.h (enter_scope_of): New function.
1546         * parse.y (complex_direct_notype_declarator): Use it.
1547         * semantics.c (enter_scope_of): New function.
1548
1549 1998-08-17  Jason Merrill  <jason@yorick.cygnus.com>
1550
1551         * decl.c (grokparms): No, here.
1552
1553         * decl.c (grokdeclarator): Catch parm with pointer to array of
1554         unknown bound here...
1555         * method.c (process_overload_item): ...not here.
1556
1557         * gxxint.texi: Remove obsolete documentation of overloading code.
1558
1559         * decl.c (finish_enum): Also set TYPE_SIZE_UNIT.
1560         * class.c (finish_struct_bits): Likewise.
1561
1562         * tree.c (lvalue_type): Fix for arrays.
1563         * typeck.c (build_unary_op): Use lvalue_type.
1564         * call.c (add_function_candidate): Likewise.
1565         * cvt.c (convert_to_reference): Likewise.
1566
1567         * decl2.c (lang_decode_option): Ignore -traditional.
1568
1569         * init.c (build_offset_ref): Don't mess with error_mark_node.
1570         * lex.c (do_scoped_id): Use cp_error.
1571
1572         * rtti.c (get_tinfo_fn): Don't mess with the context for now.
1573
1574 1998-08-17  Benjamin Kosnik  <bkoz@loony.cygnus.com>
1575
1576         * decl.c (grokdeclarator): Allow anonymous types to be cv-qualified.
1577
1578 Mon Aug 17 10:40:18 1998  Jeffrey A Law  (law@cygnus.com)
1579
1580         * cp-tree.h (set_identifier_local_value): Provide prototype.
1581
1582         * decl2.c (do_namespace_alias): Remove unused variables `binding'
1583         and `old'.
1584
1585 Fri Aug 14 16:42:27 1998  Nick Clifton  <nickc@cygnus.com>
1586
1587         * Makefile.in: Rename BBISON to BISON so that it can be properly
1588         inherited from the parent makefile.
1589
1590 1998-08-13  Jason Merrill  <jason@yorick.cygnus.com>
1591
1592         * lang-options.h: Add -finit-priority.
1593         * decl2.c: Likewise.  Check flag_init_priority instead of
1594         USE_INIT_PRIORITY.
1595
1596         * decl2.c (setup_initp): New fn.
1597         (start_objects, finish_objects, do_ctors): Handle init_priority.
1598         (do_dtors, finish_file): Likewise.
1599
1600 1998-08-13  Jason Merrill  <jason@yorick.cygnus.com>
1601
1602         * pt.c (tsubst_copy): Hush warning.
1603
1604         * rtti.c (get_tinfo_fn): Also set DECL_IGNORED_P.
1605
1606 1998-08-12  Mark Mitchell  <mark@markmitchell.com>
1607
1608         * pt.c (print_template_context): Don't abort when instantiating a
1609         synthesized method.
1610
1611         * decl.c (grokdeclarator): Issue errors on namespace qualified
1612         declarators in parameter lists or in class scope.
1613
1614 1998-08-09  Mark Mitchell  <mark@markmitchell.com>
1615
1616         * pt.c (check_explicit_specialization): Don't abort on bogus
1617         explicit instantiations.
1618
1619 1998-08-07  Mark Mitchell  <mark@markmitchell.com>
1620
1621         * typeck.c (require_complete_type): Use complete_type_or_else.
1622         (complete_type_or_else): Always return NULL_TREE on failure, as
1623         documented.
1624
1625         * pt.c (tsubst_aggr_type): Prototype.
1626         (tsubst_decl): New function, split out from tsubst.  Set
1627         input_filename and lineno as appropriate.
1628         (pop_tinst_level): Restore the file and line number saved in
1629         push_tinst_level.
1630         (instantiate_class_template): Set input_filename and lineno as
1631         appropriate.
1632         (tsubst): Move _DECL processing to tsubst_decl.  Make sure the
1633         context for a TYPENAME_TYPE is complete.
1634
1635         * decl2.c (grokbitfield): Issue errors on bitfields declared with
1636         function type.
1637         (do_dtors): As in do_ctors, pretend to be a member of the same
1638         class as a static data member while generating a call to its
1639         destructor.
1640
1641         * cvt.c (cp_convert_to_pointer): Handle NULL pointer
1642         conversions, even in complex virtual base class hierarchies.
1643
1644 1998-08-06  Mark Mitchell  <mark@markmitchell.com>
1645
1646         * cp-tree.h (ENUM_TEMPLATE_INFO): New macro.
1647         (TYPE_TEMPLATE_INFO): Likewise.
1648         (SET_TYPE_TEMPLATE_INFO): Likewise.
1649         (ENUM_TI_TEMPLATE): Likewise.
1650         (ENUM_TI_ARGS): Likewise.
1651         (lookup_nested_type_by_name): Remove.
1652         * decl.c (maybe_process_template_type_declaration): Handle enums.
1653         (start_enum): Don't check for primary-template enum declarations
1654         here. 
1655         (finish_enum): Clean up, document.  Make sure template enum
1656         constants get the correct type.
1657         (build_enumerator): Copy initializers for template enumerations,
1658         too. 
1659         (grok_enum_decls): Document.
1660         * lex.c (do_identifier): Document use of LOOKUP_EXPR a bit
1661         better.  Build LOOKUP_EXPRs for local variables, even if they are
1662         TREE_PERMANENT.
1663         * pt.c (tsubst_enum): Remove field_chain parameter.
1664         (template_class_depth): Include the depth of surrounding function
1665         contexts.
1666         (push_template_decl): Check for primary-template enum declarations
1667         here.  Deal with enumeration templates.
1668         (lookup_template_class): Likewise.
1669         (for_each_template_parm): Likewise.
1670         (instantiate_class_template): Don't call tsubst_enum directly,
1671         call tsubst instead, to instantiate enums.  Deal with all
1672         field_chain issues here, not in tsubst_enum.
1673         (lookup_nested_type_by_name): Remove.
1674         (tsubst_aggr_type): Revise handling of enumeration types.
1675         (tsubst): Likewise.
1676         (tsubst_copy): Likewise.
1677         (tsubst_expr): Call tsubst, not tsubst_enum for TAG_DEFNs.
1678         
1679 1998-08-04  Mark Mitchell  <mark@markmitchell.com>
1680
1681         * decl.c (pushtag): Don't mangle the name of a TYPE_DECL if it
1682         uses template parameters.
1683         * method.c (build_template_parm_names): Use the full set of
1684         template arguments for tsubst'ing.
1685         (build_overload_identifier): Pass the full set of template
1686         arguments to build_template_parm_names, not just the
1687         innermost_args. 
1688         * pt.c (TMPL_ARGS_DEPTH): Define using
1689         TMPL_ARGS_HAVE_MULTIPLE_LEVELS, for clarity.
1690         (NUM_TMPL_ARGS): New macro.
1691         (add_outermost_template_args): Deal with the case where the outer
1692         args will be completely discarded.
1693         (coerce_template_parms): Use the full set of template arguments
1694         for tsubst'ing.  Simplify.  Add some asserts.  Improve
1695         error messages.
1696         (lookup_template_class): Pass the full set of template arguments
1697         to coerce_template_parms.
1698         (tsubst): Add assertion.
1699         (do_type_instantiation): Don't instantiate member template
1700         classes. 
1701         
1702         * init.c (build_offset_ref): Deal with a TEMPLATE_ID_EXPR whose
1703         name is a LOOKUP_EXPR, rather than an IDENTIFIER_NODE.
1704
1705 1998-08-03  Jason Merrill  <jason@yorick.cygnus.com>
1706
1707         * method.c (set_mangled_name_for_decl): Change return type to void.
1708
1709         * decl.c (lookup_name_real): A namespace-level decl takes priority
1710         over implicit typename.  Avoid doing the same lookup twice.
1711
1712         * search.c (dependent_base_p): New fn.
1713         (dfs_pushdecls, dfs_compress_decls): Use it.
1714
1715         * typeck.c (get_member_function_from_ptrfunc): Don't try to handle 
1716         virtual functions if the type doesn't have any.
1717
1718 1998-08-03  Mark Mitchell  <mark@markmitchell.com>
1719
1720         * decl2.c (grokfield): Don't mangle the name of a TYPE_DECL if it
1721         uses template parameters.
1722
1723 1998-08-02  Mark Mitchell  <mark@markmitchell.com>
1724
1725         * cp-tree.def (LOOKUP_EXPR): Document.  Remove second argument.
1726         * cp-tree.h (DECL_TI_TEMPLATE): Improve documentation.
1727         * lex.c (do_identifier): Don't use a second argument, or a type,
1728         when building LOOKUP_EXPRs.
1729         (do_identifier): Likewise.
1730         (do_scoped_id): Likewise.
1731         * method.c (hack_identifier): Improve error message.
1732         * pt.c (lookup_template_function): Don't needlessly call
1733         copy_to_permanent or build_min.
1734         (tsubst_copy): Remove #if 0'd code.  Tsubst into LOOKUP_EXPRs if
1735         necessary.
1736         (do_decl_instantiation): Improve error message.
1737         * tree.c (mapcar, case LOOKUP_EXPR): Don't be sorry; make a copy.
1738         (build_min): Copy the type to the permanent obstack, too.
1739         
1740 1998-08-01  Jason Merrill  <jason@yorick.cygnus.com>
1741
1742         * init.c (init_init_processing): Remove BI* handling.
1743         (build_builtin_call): Remove.
1744         (build_builtin_delete_call): New fn.
1745         (build_delete): Use it.
1746         
1747 1998-07-31  Mark Mitchell  <mark@markmitchell.com>
1748
1749         * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): New macro.
1750         (maybe_check_template_type): New function.
1751         * decl.c (maybe_process_template_type_declaration): New function,
1752         split out from pushtag  Call maybe_check_template_type.
1753         (pushtag): Use it.  Use PROCESSING_REAL_TEMPLATE_DECL_P.
1754         (xref_tag): Use PROCESSING_REAL_TEMPLATE_DECL_P.
1755         * friend.c (do_friend): Use PROCESSING_REAL_TEMPLATE_DECL_P.
1756         * pt.c (template_class_depth_real): Generalization of ...
1757         (template_class_depth): Use it.
1758         (register_specialization): Use duplicate_decls for duplicate
1759         declarations of specializations.
1760         (maybe_check_template_type): New function.
1761         (push_template_decl_real): Fix comment.
1762         (convert_nontype_argument): Likewise.
1763         (lookup_template_class): Likewise.  Avoid an infinite loop on
1764         erroneous code.
1765         (tsubst_friend_function): Fix comment.
1766         (tsubst, case FUNCTION_DECL): Deal with a DECL_TI_TEMPLATE that is
1767         an IDENTIFIER_NODE.
1768         * semantics.c (begin_function_definition): Use
1769         reset_specialization to note that template headers don't apply
1770         directly to declarations after the opening curly for a function.
1771
1772 1998-07-29  Jason Merrill  <jason@yorick.cygnus.com>
1773
1774         * decl.c (push_overloaded_decl): Use current_namespace instead of
1775         DECL_CONTEXT (decl) to determine where we go.
1776
1777         * decl.c (lookup_name_real): Fix typo.
1778
1779 1998-07-28  Mark Mitchell  <mark@markmitchell.com>
1780
1781         * friend.c (is_friend): Be lenient with member functions to deal
1782         with nested friends.
1783
1784 1998-07-28  Jason Merrill  <jason@yorick.cygnus.com>
1785
1786         * class.c (finish_struct_1): Convert integer_zero_node to
1787         ssizetype before passing it to set_rtti_entry.
1788         * typeck2.c (initializer_constant_valid_p): Allow conversion of 0
1789         of any size to a pointer.
1790
1791 1998-07-27  Mark Mitchell  <mark@markmitchell.com>
1792
1793         * cp-tree.h (TI_USES_TEMPLATE_PARMS): Remove.
1794         (build_template_decl_overload): Remove.
1795         (set_mangled_name_for_decl): New function.
1796         (innermost_args): Remove is_spec parameter.
1797         (most_specialized, most_specialized_class): Remove declarations.
1798         (lookup_template_class): Add entering_scope parameter.
1799         (maybe_process_partial_specialization): New function.
1800         (finish_template_decl): Likewise.
1801         (finish_template_type): Likewise.  
1802         * class.c (finish_struct): Clean up processing of member template
1803         specializations.
1804         * decl.c (pushtag): Fix formatting.
1805         (lookup_tag): Improve handling of pseudo-global levels.
1806         (make_typename_type): Adjust call to lookup_template_class.
1807         (shadow_tag): Use maybe_process_partial_specialization.
1808         (xref_tag): Improve handling of member friends.  
1809         (start_function): Call push_nested_class before
1810         push_template_decl.  Don't call push_template_decl for
1811         specializations.
1812         * decl2.c (grok_x_components): Don't call xref_tag for
1813         template instantiations.  Handle UNION_TYPEs like RECORD_TYPEs.
1814         (grokclassfn): Use set_mangled_name_for_decl.
1815         (arg_assoc_class): Adjust call to innermost_args.
1816         (mark_used): Don't call instantiate_decl for a TEMPLATE_DECL.
1817         * error.c (dump_function_name): Improve printing of template
1818         function names.
1819         * friend.c (is_friend): Don't compare types of decls to determine
1820         friendship, unless flag_guiding_decls.
1821         (make_friend_class): Partial specializations cannot be friends.  
1822         (do_friend): Use set_mangled_name_for_decl.  Call
1823         push_template_decl_real instead of push_template_decl.
1824         * method.c (build_decl_overload_real): Remove prototype.  Give it
1825         external linkage.
1826         (build_overload_identififer): Adjust call to innermost_args.
1827         (build_template_decl_overload): Remove.
1828         (set_mangled_name_for_decl): New function.
1829         * parse.y (.finish_template_type): New non-terminal.
1830         (template_def): Use finish_template_decl.  Use template_extdef
1831         instead of extdef.
1832         (template_extdef, template_datadef): New non-terminals, containing
1833         only those rules for things which can be templates.
1834         (datadef): Tidy.
1835         (template_type, self_template_type): Use .finish_template_type.
1836         (named_class_head): Use maybe_process_partial_specialization.
1837         * pt.c (mangle_class_name_for_template): Remove context parameter.
1838         (get_class_bindings): Remove outer_args parameter.
1839         (complete_template_args): Remove.
1840         (add_outermost_template_args): New function.
1841         (register_specialization): Return the specialization.
1842         (unregister_specialization): New function.
1843         (tsubst_template_parms): Likewise.
1844         (most_specialized, most_specialized_class): Prototype here as
1845         static. 
1846         (original_template): Rename to most_general_template.
1847         (tsubst_template_parms): New function.
1848         (set_mangled_name_for_template_decl): Likewise.
1849         (TMPL_ARGS_DEPTH): New macro.
1850         (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): Adjust.
1851         (TMPL_ARGS_LEVEL): New macro.
1852         (SET_TMPL_ARGS_LEVEL): Likewise.
1853         (TMPL_ARG): Likewise.
1854         (SET_TMPL_ARG): Likewise.
1855         (TMPL_ARGS_DEPTH): Likewise.
1856         (finish_member_template_decl): Use finish_template_decl.
1857         (maybe_process_partial_specialization): New function, split out
1858         from tsubst.
1859         (inline_needs_template_parms): Use TMPL_PARMS_DEPTH.
1860         (maybe_begin_member_template_processing): Use new macros.
1861         (is_member_template): Likewise.
1862         (is_member_template_class): Likewise.
1863         (add_to_template_args): Likewise.  Deal with multiple levels of
1864         args. 
1865         (maybe_process_partial_specialization): New function.
1866         (retrieve_specialization): Add consistency check.
1867         (determine_specialization): Return full argument list.
1868         (check_explicit_specialization): Tweak friend handling.  Use full
1869         argument lists.  Simplify.
1870         (current_template_args): Use new macros.
1871         (push_template_decl_real): Change ill-named mainargs to specargs.
1872         Check that a partial specialization actually specializes at least
1873         one parameter.   Improve friend handling.  Modify for full
1874         template arguments.
1875         (classtype_mangled_name): Don't mangle the names of
1876         specializations. 
1877         (lookup_template_class): Add entering_scope parameter.  Use it to
1878         avoid finding a template type when an instantiation is required.
1879         Simplify.  Use full template arguments.
1880         (tsubst_friend_function): Use unregister_specialization.  Use new
1881         macros.  Use full template arguments.
1882         (tsubst_friend_class): Substitute, using tsubst_template_parms,
1883         into the template parameters before passing them to
1884         redeclare_class_template.
1885         (instantiate_class_template): Simplify.  Use full template
1886         arguments.  Adjust calls to get_class_bindings.  Use
1887         SET_IDENTIFIER_TYPE_VALUE where needed.  Improve friend handling.
1888         (innermost_args): Use new macros.
1889         (tsubst_aggr_type): New function, split out from tsubst.
1890         (tsubst): Use tsubst_aggr_type, tsubst_template_parms, new calling
1891         conventions for lookup_tmeplate_class.  Refine handling of partial
1892         instantiations.   Remove calls to complete_template_args.
1893         Simplify.  Add consistency checks.  Use set_mangled_name_for_decl
1894         and set_mangled_name_for_template_decl.
1895         (tsubst_copy): Use tsubst_aggr_type.
1896         (instantiate_template): Use full template arguments.
1897         (more_specialized): Improve formatting.
1898         (more_specialized_class): Adjust calls to get_class_bindings.
1899         (get_bindings_real): Don't call complete_template_args.
1900         (most_specialized): Don't overwrite input; create a new list.
1901         (most_specialized_class): Use most_general_template.
1902         (regenerate_decl_from_template): Use unregister_specialization.
1903         Use full template arguments.  
1904         (instantiate_decl): Use full template arguments.
1905         (set_mangled_name_for_template_decl): New function.
1906         * semantics.c (begin_class_definition): Use
1907         maybe_process_partial_specialization.
1908         (finish_member_class_template): New function.
1909         (finish_template_decl): Likewise.
1910         (finish_template_type): Likewise.  
1911         (typeck.c): Don't crash after issuing a compiler_error.
1912         * Makefile.in (CONFLICTS): Adjust; we removed a s/r conflict.
1913         
1914 1998-07-27  Jason Merrill  <jason@yorick.cygnus.com>
1915
1916         * typeck2.c (build_functional_cast): Handle default-initialization.
1917
1918         * call.c (build_over_call): Pass 1 to popclass.
1919
1920         * parse.y (direct_notype_declarator): Add precedence declaration
1921         to notype_unqualified_id case.
1922         * Makefile.in (EXPECT): Adjust.
1923
1924         * tree.c (ovl_member): Fix for single function in OVL.
1925
1926 1998-07-27  Dave Brolley  <brolley@cygnus.com>
1927
1928         * c-lex.c (yylex): Fix boundary conditions in character literal and
1929         string literal loops.
1930
1931 1998-07-24  Jason Merrill  <jason@yorick.cygnus.com>
1932
1933         * decl.c (lookup_name_real): OK, do return the from_obj value
1934         unless got_object depends on template parms.
1935
1936         * parse.y (nested_name_specifier_1): Pull out the TYPE_MAIN_VARIANT.
1937
1938         * pt.c (coerce_template_parms): Also complain about local enums.
1939
1940         * cp-tree.h: Add prototype for set_identifier_local_value.
1941         * decl.c (set_identifier_local_value_with_scope): Make static,
1942         prototype.
1943         * search.c (covariant_return_p): Likewise.
1944         * except.c (build_terminate_handler, alloc_eh_object): Likewise.
1945
1946         * call.c (build_method_call): Only pull out the type of a destructor
1947         if it's a template type parm.
1948         * decl.c (lookup_name_real): Never return the from_obj value.
1949
1950 1998-07-23  Jason Merrill  <jason@yorick.cygnus.com>
1951
1952         * except.c (process_start_catch_block_old): Call start_decl_1 for
1953         catch parm.
1954         * decl.c (start_decl_1): Avoid duplicate error.
1955
1956         * init.c (expand_default_init): Only perform the initialization if
1957         it will do something.
1958
1959 1998-07-23  H.J. Lu  (hjl@gnu.org)
1960
1961         * parse.y (base_class): Check for invalid base class.
1962
1963 1998-07-23  Jason Merrill  <jason@yorick.cygnus.com>
1964
1965         * decl2.c (import_export_template): Fold in...
1966         (import_export_class): ...to here.  Handle dllimport/export.
1967
1968         * class.c (build_vtable): Pass at_eof to import_export_vtable.
1969         (prepare_fresh_vtable): Likewise.
1970         * decl2.c (import_export_class): Split out...
1971         (finish_prevtable_vardecl): From here.
1972         * class.c (finish_struct_1): Call import_export_class if at_eof.
1973
1974         * decl.c (start_function): #if 0 mysterious code I wrote and have 
1975         forgotten why.
1976         * rtti.c (get_tinfo_fn): If this is for a class type, set
1977         DECL_CONTEXT.
1978
1979 1998-07-22  Jason Merrill  <jason@yorick.cygnus.com>
1980
1981         * inc/exception: Change terminate and unexpected to ().
1982
1983         * parse.y (named_class_head_sans_basetype_defn): A
1984         named_class_head_sans_basetype followed by '{' or ':' is a defn.
1985
1986 1998-07-21  Jason Merrill  <jason@yorick.cygnus.com>
1987
1988         * tree.c (canonical_type_variant): New fn to handle arrays.
1989         * cp-tree.h (CANONICAL_TYPE_VARIANT): Remove.
1990         * pt.c (unify, default case): Also fold arg.  Fix array bounds case.
1991         * method.c (process_overload_item): Use build_overload_value for
1992         arrays.
1993
1994 1998-07-20  Dave Brolley  <brolley@cygnus.com>
1995
1996         * lex.c (mbchar.h): #include it.
1997         (GET_ENVIRONMENT): New macro.
1998         (init_parse): Set character set based on LANG environment variable.
1999         (real_yylex): Handle multibyte characters in character literals.
2000         (real_yylex): Handle multibyte characters in string literals.
2001
2002 1998-07-19  Jason Merrill  <jason@yorick.cygnus.com>
2003
2004         * lex.c (do_identifier): Look for class value even if we don't
2005         have a global value.  Do implicit declaration if parsing is 2.
2006         * semantics.c (finish_call_expr): Pass 2 if we're doing Koenig
2007         lookup.
2008
2009 1998-07-19  Mark Mitchell  <mark@markmitchell.com>
2010
2011         * decl.c (pushtag): Revert previous change.
2012         * pt.c (lookup_template_class): Don't put out debugging
2013         information for types that use template parameters.
2014
2015         * decl.c (pushtag): Don't put out debugging information for
2016         compiler-generated typedefs.
2017         
2018         * error.c (dump_type_real): Don't crash when presented with
2019         intQI_type_node or the like.
2020
2021         * semantics.c (finish_translation_unit): Fix spelling error in
2022         comment.
2023
2024 1998-07-17  Jason Merrill  <jason@yorick.cygnus.com>
2025
2026         * decl.c (lookup_name_real): Pull out single function here.
2027         (select_decl): Not here.
2028         (unqualified_namespace_lookup): Use CP_DECL_CONTEXT.
2029
2030         * decl.c (qualify_lookup): Tweak again.
2031
2032         * pt.c (lookup_template_class): Don't mess with the context of the
2033         instantiation.
2034         * decl2.c (current_decl_namespace): Remove special handling for
2035         templates.
2036
2037         * pt.c (tsubst, case FUNCTION_DECL): Fix getting complete args for
2038         a member template specialization.
2039
2040         * tree.c (ovl_member): Use decls_match to compare functions.
2041         * decl.c (decls_match): Check the context of a function.
2042
2043         * parse.y (primary): Use notype_unqualified_id instead of IDENTIFIER
2044         in Koenig lookup support rules.
2045         * semantics.c (finish_call_expr): Handle the new cases.
2046
2047         * typeck.c (build_x_function_call): Handle overloaded methods.
2048
2049         * decl.c (grokvardecl): Don't call build_static_name for extern "C".
2050
2051 1998-07-16  Mark Mitchell  <mark@markmitchell.com>
2052
2053         * semantics.c (finish_object_call_expr): Revert previous change.
2054         * call.c (build_new_method_call): Likewise.  Instead, convert
2055         TYPE_DECLs to IDENTIFIERs here, in the presence of templates.
2056
2057 1998-07-16  Jason Merrill  <jason@yorick.cygnus.com>
2058
2059         * decl.c (qualify_lookup): Handle templates.
2060
2061         * decl2.c (do_using_directive): Don't pass ancestor.
2062         * decl.c (push_using_directive): Calculate ancestor.
2063
2064         * decl2.c (do_nonmember_using_decl): Allow for type shadowing.
2065         * decl.c (pushdecl): Move type shadowing handling from here...
2066         (duplicate_decls): ...to here.
2067         * decl.c (set_identifier_local_value_with_scope): New fn.
2068         (pushdecl): Use it.
2069         (set_identifier_local_value, lookup_type_current_level): New fns.
2070         * decl2.c (do_local_using_decl): Handle types and binding level
2071         stuff properly.
2072
2073         * init.c (build_offset_ref): Don't call mark_used on an OVERLOAD.
2074         * decl.c (select_decl): Extract a lone function from an OVERLOAD.
2075         (lookup_namespace_name): Likewise.
2076         * typeck.c (build_unary_op): Not here anymore.
2077
2078         * decl2.c (do_class_using_decl): Make sure we get an identifier.
2079         * class.c (handle_using_decl): Ignore TYPE_DECLs.
2080
2081         * decl.c (qualify_lookup): New fn.
2082         (lookup_name_real): Use it.
2083
2084 1998-07-16  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
2085
2086         * decl2.c (add_using_namespace): When directly using a namespace
2087         that was indirect before, promote it.
2088
2089         * cp-tree.h (LOOKUP_PREFER_TYPES, LOOKUP_PREFER_NAMESPACES,
2090         LOOKUP_PREFER_BOTH, LOOKUP_NAMESPACES_ONLY, LOOKUP_TYPES_ONLY,
2091         LOOKUP_QUALIFIERS_ONLY, LOOKUP_TEMPLATES_EXPECTED): New macros.
2092         * decl.c (select_decl): Replace two flag parameters by one.
2093         (unqualified_namespace_lookup): Likewise, pass flag.
2094         (lookup_flags): New function.
2095         (lookup_name_real): Compute flags, pass them.
2096         (lookup_namespace_name): Call with zero-flag.
2097         * decl2.c (ambiguous_decl): Add flag parameter, complain only
2098         according to flags.
2099         (lookup_using_namespace, qualified_lookup_using_namespace):
2100         Add flag parameter, pass them through.
2101         * lex.c (do_scoped_id): Call with zero-flag.
2102
2103 1998-07-16  Jason Merrill  <jason@yorick.cygnus.com>
2104
2105         * typeck.c (convert_for_assignment): Use comptypes.
2106
2107 1998-07-16  Mark Mitchell  <mark@markmitchell.com>
2108
2109         * semantics.c (finish_object_call_expr): Move test for the
2110         function called being a TYPE_DECL to ...
2111         * call.c (build_new_method_call): Here.
2112
2113 1998-07-15  Jason Merrill  <jason@yorick.cygnus.com>
2114
2115         * decl2.c (arg_assoc_class): Also look at template arguments, if any.
2116         (arg_assoc): Handle error_mark_node and multiple levels of TREE_LIST.
2117
2118         * lex.c (looking_for_typename): Don't initialize.
2119
2120         * decl2.c (ambiguous_decl): Clarify error message.
2121
2122         * decl.c (push_using_directive): Iterate over namespaces used
2123         indirectly.
2124
2125 1998-07-15  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
2126
2127         * decl2.c (add_using_namespace): Iterate over namespaces used
2128         indirectly.
2129
2130         * decl.c (lookup_name_real): Accept namespace aliases as locals.
2131         (cat_namespace_levels): Ignore aliases.
2132         (duplicate_decls): Ignore duplicate aliases.
2133         * decl2.c (do_namespace_alias): Process block level namespace
2134         aliases. Store alias with pushdecl. Remove odr errors.
2135         * parse.y (namespace_alias): New non-terminal.
2136         (extdef): Use it.
2137
2138 1998-07-15  Jason Merrill  <jason@yorick.cygnus.com>
2139
2140         * decl2.c (arg_assoc_type): Handle METHOD_TYPE like FUNCTION_TYPE.
2141         Handle TEMPLATE_TYPE_PARM.
2142         (arg_assoc): Rewrite.
2143
2144         * pt.c (complete_template_args): Don't look at the context unless
2145         we have to.
2146
2147         * method.c (build_decl_overload_real): Fix namespace handling.
2148
2149         * typeck.c (build_unary_op): Extract a lone function from an
2150         OVERLOAD.
2151
2152         * call.c (build_scoped_method_call): Handle getting a namespace
2153         for basetype in a destructor call.
2154         (check_dtor_name): Handle enums.
2155
2156         * parse.y (using_directive): New nonterminal.
2157         (extdef, simple_stmt): Use it.
2158
2159 1998-07-14  Martin von Löwis  <loewis@informatik.hu-berlin.de>
2160
2161         * decl2.c (add_function): Move error message ...
2162         (arg_assoc_namespace): ... from here.
2163
2164 1998-07-14  Jason Merrill  <jason@yorick.cygnus.com>
2165
2166         * parse.y (namespace_qualifier): Fix multiple level handling.
2167         * decl2.c (namespace_ancestor): Use CP_DECL_CONTEXT.
2168         (arg_assoc): Don't skip the first argument of a function.
2169
2170 Tue Jul 14 20:09:22 1998  Jeffrey A Law  (law@cygnus.com)
2171
2172         * search.c (my_tree_cons): Clean up.
2173
2174 1998-07-14  Jason Merrill  <jason@yorick.cygnus.com>
2175
2176         * call.c (joust): Don't warn about "confusing" conversions to the
2177         same type.
2178
2179 1998-07-14  Martin von Löwis  <loewis@informatik.hu-berlin.de>
2180
2181         * class.c (push_nested_class): Complain about namespaces.
2182         * decl.c (start_decl): Enter the object's namespace.
2183         (cp_finish_decl): Leave it.
2184         (grokdeclarator): Likewise.
2185         * decl2.c (check_decl_namespace): New function.
2186         (finish_file): Call it.
2187         * parse.y (complex_direct_notype_declarator): Set complexity
2188         of namespace-qualified ids to -1, enter the namespace.
2189
2190         * method.c (build_template_decl_overload): Expect _DECL as first
2191         parameter. Put context temporarily into current_namespace.
2192         * pt.c (check_explicit_specialization): Change caller.
2193         (tsubst): Likewise.
2194
2195         * init.c (build_offset_ref): Call mark_used and
2196         convert_from_reference for namespace members.
2197
2198 Mon Jul 13 23:25:28 1998  Martin von Löwis  <loewis@informatik.hu-berlin.de>
2199
2200         * search.c (my_tree_cons): The bitfield is at index 2.
2201
2202 Mon Jul 13 17:21:01 1998  Nick Clifton  <nickc@cygnus.com>
2203
2204         * lang-options.h: Format changed to work with new --help support
2205         in gcc/toplev.c
2206         
2207 1998-07-12  Martin von Löwis  <loewis@informatik.hu-berlin.de>
2208
2209         * decl2.c (build_expr_from_tree): Change calls of do_identifier.
2210         Do Koenig lookup in CALL_EXPR.
2211         (arg_assoc): Handle error_mark.
2212         * lex.c (is_global): New function.
2213         (do_identifier): Expect arguments for Koenig lookup.
2214         * parse.y (primary): Add rules for calls of unqualified function calls.
2215         (do_id): Change call of do_identifier.
2216         * pt.c (finish_stmt_expr): Likewise.
2217         * semantics.c (finish_id_expr): Likewise.
2218         (finish_call_expr): Add integer parameter to indicate
2219         argument-dependent lookup.
2220
2221         * decl.c (struct binding_level): New field using_directives.
2222         (push_using_decl): Not sorry anymore.
2223         (push_using_directive): New function.
2224         (lookup_tag): Use CP_DECL_CONTEXT to iterate.
2225         (unqualified_namespace_lookup): New function, code from ...
2226         (lookup_name_real): ... here.
2227         * decl2.c (lookup_using_namespace): Pass using list instead of
2228         initial scope.
2229         (validate_nonmember_using_decl): New function.
2230         (do_nonmember_using_decl): New function.
2231         (do_toplevel_using_decl): Use them.
2232         (do_local_using_decl): New function.
2233         (do_using_directive): Support block-level directives.
2234         * parse.y (simple_stmt): Support using declarations and
2235         directives.
2236         (namespace_qualifier, namespace_using_decl): New non-terminals.
2237
2238         * xref.c (classname): New function.
2239         (GNU_xref_hier): Change class and base parameters to tree.
2240         * decl.c (xref_baseypes): Change caller.
2241         * friend.c (make_friend_class): Likewise.
2242
2243 1998-07-12  Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
2244
2245         * typeck.c (comptypes, case TEMPLATE_TEMPLATE_PARM): Add parameter 
2246         comparison.
2247
2248         * pt.c (for_each_template_parm, case TEMPLATE_DECL): If it is a 
2249         template template parameter, record its use.
2250         (for_each_template_parm, case TEMPLATE_TEMPLATE_PARM): Traverse 
2251         its template arguments if exists.
2252
2253         * pt.c (coerce_template_template_parms): New function equivalent
2254         to coerce_template_parms when IS_TMPL_PARM is true.
2255         (coerce_template_parms): Use it.  Remove the IS_TMPL_PARM parameter,
2256         all callers changed.
2257
2258         (coerce_template_parms): Access ARGLIST properly when creating a
2259         new vector.  Only accept implicit TYPE_DECL as valid argument for
2260         a template template parameter when it is a base class of
2261         current_class_type.  Don't display error message when COMPLAIN is
2262         false.
2263
2264 1998-07-12  Klaus Kaempf (kkaempf@progis.de)
2265
2266         * repo.c (get_base_filename): Use file_name_nondirectory.
2267         (open_repo_file): Ditto.
2268         * cp-tree.h (file_name_nondirectory): Add prototype.
2269
2270 1998-07-12  Jason Merrill  <jason@yorick.cygnus.com>
2271
2272         * friend.c (do_friend): Pull the identifier out of declarator.
2273         Use cp_error and friends.
2274         * decl2.c (qualified_lookup_using_namespace): Fix call to 
2275         purpose_member.
2276         * decl.c (lookup_name_real): Don't call complete_type on a namespace.
2277         (grokvardecl): Use DECL_CLASS_SCOPE_P.
2278         * cvt.c (convert_pointer_to_real): Check for error_mark_node sooner.
2279         * class.c (warn_hidden): Fix for OVERLOAD.
2280         From grahams@rcp.co.uk:
2281         * cp-tree.h (DEFARG_NODE_CHECK): New macro.
2282         (DEFARG_LENGTH, DEFARG_POINTER): Use it.
2283
2284 Sun Jul 12 01:20:57 1998  Jeffrey A Law  (law@cygnus.com)
2285
2286         * g++.1 (-traditional): Remove duplicated documentation.
2287
2288 1998-07-11  Mark Mitchell  <mark@markmitchell.com>
2289
2290         * method.c (flush_repeats): Add nrepeats parameter.
2291         (issue_nrepeats): Likewise.
2292         (is_back_referenceable_type): New function.  Don't back-reference
2293         TEMPLATE_TYPE_PARMs as well as simple types like integers.
2294         (build_mangled_name_for_type): Likewise.
2295         (build_mangled_name_for_type_with_Gcode): Likewise.
2296         (lasttype): Remove.
2297         (nrepeats): Likewise.
2298         (Nrepeats): Likewise.
2299         (start_squangling): Don't clear the variables removed above.
2300         (end_squangling): Likewise.
2301         (flush_repeats): Tidy.  Use nrepeats parameter rather than
2302         Nrepeats global.
2303         (issue_nrepeats): Likewise, but with nrepeats global.  Use
2304         is_backreferenceable_type.
2305         (build_overload_nested_name): Tidy.  Add comment.  Use
2306         build_mangled_name_for_type.
2307         (build_underscore_int): Comment.
2308         (build_overload_scope_ref): Use build_mangled_name_for_type.
2309         (build_overload_int): Likewise.
2310         (build_template_template_parm_names): Tidy.
2311         (build_template_parm_names): Use build_mangled_name_for_type.
2312         (build_overload_identifier): Add comments.
2313         (build_mangled_name_for_type_with_Gcode): Split out from
2314         build_mangled_name.
2315         (build_mangled_name_for_type): Use it.
2316         (build_mangled_name): Rework to use build_mangled_name_for_type
2317         and to not use global nrepeats/Nrepeats.  Tidy.
2318         (process_modifiers): Tidy.
2319         (check_btype): Use is_backreferenceable_type.  Add comment.
2320         Rename `node' to `type'.
2321         (process_overload_item): Set numeric_output_need_bar here.
2322         Use build_mangled_name_for_type.  Tidy.
2323         (build_decl_overload_real): Tidy.  Don't use Nrepeats.  Use
2324         build_mangled_name_for_type.
2325
2326         * pt.c (push_template_decl_real): Don't look at DECL_TEMPLATE_INFO
2327         for TYPE_DECLs.
2328
2329 1998-07-08  Vladimir N. Makarov  <vmakarov@cygnus.com>
2330
2331         * cp-tree.h (warn_long_long): Define.
2332         * decl.c (grokdeclarator): Add flag `warn_long_long' as guard for
2333         warning "ANSI C++ does not support `long long'".
2334         * decl2.c (warn_long_long): Define.
2335         (lang_decode_option): Parse -Wlong-long, -Wno-long-long options.
2336
2337 1998-07-07  Jason Merrill  <jason@yorick.cygnus.com>
2338
2339         * decl.c (xref_tag): Handle attributes between 'class' and name.
2340         * parse.y (aggr): Likewise.
2341         * semantics.c (finish_class_definition): Likewise.
2342         * Makefile.in (EXPECTED): Adjust.
2343
2344         * cp-tree.h: Declare flag_optional_diags and warn_multichar.
2345         * decl2.c: Define them.
2346         (lang_decode_option): Handle them.
2347         * lang-options.h: Add -foptional-diags.
2348         * class.c (finish_struct): Don't complain about multiple meanings of 
2349         name if -fno-optional-diags.
2350         * decl.c (pushdecl_class_level): Likewise.
2351         * lex.c (real_yylex): Check warn_multichar.
2352
2353 1998-07-06  Jason Merrill  <jason@yorick.cygnus.com>
2354
2355         * decl.c (lookup_tag): Use CP_DECL_CONTEXT.
2356
2357         * tree.c (make_binfo): Fix length.
2358
2359 1998-06-30  Benjamin Kosnik  <bkoz@bliss.nabi.net>
2360
2361         * decl2.c (lang_decode_option): Remove warn_template_debugging.
2362         * lang-options.h: Ditto.
2363
2364 Mon Jun 29 20:17:40 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2365
2366         * except.c (build_eh_type_type_ref): Remove unused variable `susp'.
2367         (process_start_catch_block): Likewise for variables
2368         `false_label_rtx', `call_rtx' and `return_value_rtx'.
2369
2370 1998-06-29  Brendan Kehoe  <brendan@cygnus.com>
2371
2372         * tree.c (build_srcloc): Make sure we allocate this node on the
2373         permanent obstack.
2374
2375 Sat Jun 27 23:34:18 1998  Fred Fish  <fnf@ninemoons.com>
2376
2377         * g++spec.c (NEED_MATH_LIBRARY): Define to 1 if not already defined.
2378         (lang_specific_driver): Initialize need_math with NEED_MATH_LIBRARY.
2379         (lang_specific_driver): Only add -lm automatically if need_math is
2380         nonzero.
2381
2382 Sat Jun 27 12:22:56 1998  Jeffrey A Law  (law@cygnus.com)
2383
2384         * Make-lang.in (g++): Depend on mkstemp.o.  Link in mkstemp.o
2385
2386 Sat Jun 27 07:36:09 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2387
2388         * Makefile.in (EXPR_H): New dependency variable.
2389         (decl2.o): Depend on $(EXPR_H).
2390         (typeck.o): Likewise.
2391         (init.o): Likewise.
2392         (expr.o): Likewise.
2393
2394 1998-06-25  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
2395
2396         * decl.c (start_enum): Put local enums on permanent_obstack.
2397
2398 1998-06-25  Mark Mitchell  <mark@markmitchell.com>
2399
2400         * cp-tree.h (c_get_alias_set): Declare.
2401         * decl.c (init_decl_processing): Set lang_get_alias_set.
2402
2403 1998-06-25  Andrew MacLeod  <amacleod@cygnus.com>
2404
2405         * cp-tree.h (mark_all_runtime_matches): Add function prototype.
2406         * except.c (mark_all_runtime_matches): Set TREE_SYMBOL_REFERENCED
2407         flag for all function decls which are in the exception table. 
2408         * exception.cc (__cplus_type_matcher): Check for CATCH_ALL_TYPE match.
2409         * decl2.c (finish_file): Call mark_all_runtime_matches to make sure
2410         code is emitted for any referenced rtti function.
2411
2412 1998-06-25  Dave Brolley  <brolley@cygnus.com>
2413
2414         * lang-specs.h: Use new | syntax to eliminate
2415         string concatenation.
2416
2417 1998-06-25  Jason Merrill  <jason@yorick.cygnus.com>
2418
2419         * cp-tree.h (CP_DECL_CONTEXT): New macro.
2420         * decl2.c (is_namespace_ancestor, lookup_using_namespace): Use it.
2421         * method.c (build_overload_nested_name): Likewise.
2422         * sig.c (build_signature_pointer_or_reference_type): Don't set
2423         DECL_CONTEXT.
2424
2425 1998-06-24  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
2426
2427         Set DECL_CONTEXT for globals to NULL_TREE instead of global_namespace.
2428         * cp-tree.h (FROB_CONTEXT): New macro.
2429         (DECL_MAIN_P): ::main should have a DECL_CONTEXT of NULL_TREE.
2430         * decl.c (namespace_binding): Replace NULL_TREE with
2431         global_namespace.
2432         (set_namespace_binding, pop_namespace, lookup_name_real): Likewise.
2433         * decl2.c (is_namespace_ancestor, lookup_using_namespace):
2434         Likewise.
2435         * decl.c (pushtag): Use FROB_CONTEXT.
2436         (pushdecl, make_typename_type, define_function, grokdeclarator):
2437         Likewise.
2438         * decl2.c (set_decl_namespace, do_namespace_alias): Likewise.
2439         * pt.c (push_template_decl_real, lookup_template_class, tsubst):
2440         Likewise.
2441         * decl2.c (decl_namespace): Return global_namespace if no context.
2442         * method.c (build_overload_nested_name): Expect null as context.
2443         * pt.c (mangle_class_name_for_template): Do nothing for null
2444         contexts.
2445         (lookup_template_class): Allow for null id_context.
2446
2447 1998-06-25  Richard Henderson  <rth@cygnus.com>
2448
2449         * method.c (emit_thunk): Set current_function_is_thunk for the
2450         ASM_OUTPUT_MI_THUNK case as well.
2451
2452 1998-06-23  Andrew MacLeod  <amacleod@cygnus.com>
2453
2454         * exception.cc (__cplus_type_matcher): Get a match_info pointer
2455         instead of an exception table entry as a parameter.
2456
2457 1998-06-23  Andrew MacLeod  <amacleod@cygnus.com>
2458
2459         * parse.y (function_try_block): Don't call start_catch_handler.
2460         * except.c (call_eh_info): Remove coerced field from declaration.
2461         (build_eh_type_type_ref): New function to create an address of a
2462         rtti function for the new style exception tables.
2463         (expand_start_catch_block): Split function, this contains the
2464         common part.
2465         (process_start_catch_block_old): New function to perform the rest
2466         of expand_start_catch_block under old style exceptions.
2467         (process_start_catch_block_old): New function to perform the rest
2468         of expand_start_catch_block under new style exceptions.
2469         (expand_end_catch_block): Only pop the false label off the stack under
2470         the old style of exceptions.
2471         * semantics.c (finish_try_block): Don't call start_catch_handler.
2472         * exception.cc (struct cp_eh_info): Add original_value field.
2473         (__cplus_type_matcher): Perform type matching on the original exception
2474         value, and if we have a match, set the current value.
2475         (__cp_push_exception): Set the original expcetion value.
2476
2477 1998-06-23  Jason Merrill  <jason@yorick.cygnus.com>
2478
2479         * call.c (joust): Fix confusing conversion warning.
2480
2481         * call.c (build_op_delete_call): Add placement parm.  Check
2482         LOOKUP_SPECULATIVELY.
2483         * cp-tree.h, decl2.c, init.c: Adjust.
2484         * decl.c (finish_function): Use it.
2485
2486         * pt.c (tsubst): Diagnose creating void fields or variables.
2487
2488 Mon Jun 22 08:50:26 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2489
2490         * call.c (build_scoped_method_call): Remove unused variable `tmp'.
2491
2492         * cp-tree.h (check_dtor_name): Add prototype.
2493
2494         * init.c (expand_member_init): Remove unused variables
2495         `ptr_type_node', `parm' and `rval'.
2496
2497         * ptree.c (print_lang_type): Use HOST_WIDE_INT_PRINT_DEC specifier
2498         in call to fprintf.
2499         (lang_print_xnode): Likewise.
2500
2501         * typeck2.c (enum_name_string): Cast argument to sprintf to long
2502         and use %ld specifier.
2503
2504         * xref.c (GNU_xref_end_scope): Use HOST_WIDE_INT_PRINT_DEC
2505         specifier in call to fprintf.
2506         (GNU_xref_member): Cast argument to sprintf to int.
2507
2508 Fri Jun 19 23:22:42 1998  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
2509
2510         * typeck2.c (pop_init_level): Warn about implicit zero initialization
2511         of struct members.
2512
2513 Thu Jun 18 09:32:32 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2514
2515         * cp-tree.h: Prototype function `check_java_method'.
2516
2517 1998-06-17  Jason Merrill  <jason@yorick.cygnus.com>
2518
2519         * class.c (finish_struct): Make conflicting use of id a pedwarn.
2520         * decl.c (pushdecl_class_level): Likewise.
2521
2522 1998-06-17  Mark Mitchell  <mark@markmitchell.com>
2523
2524         * pt.c (convert_nontype_argument): Issue an error when presented
2525         with an integer (real) constant that cannot be simplified to an
2526         INT_CST (REAL_CST).
2527
2528         * cp-tree.h (c_get_alias_set): Remove declaration added in
2529         1998-06-13 change that should never have been checked in.
2530
2531 1998-06-17  Jason Merrill  <jason@yorick.cygnus.com>
2532
2533         * typeck.c (build_binary_op_nodefault): Change % in format strings
2534         to %%.
2535
2536         * decl.c (grokvardecl): Don't build_static_name for decls that
2537         aren't at namespace scope.
2538
2539         * init.c (perform_member_init): Catch default-initialization of
2540         references.
2541
2542 1998-06-17  Mark Mitchell  <mark@markmitchell.com>
2543
2544         * errfn.c (cp_thing): Handle the `%%' formatting sequence.
2545
2546 1998-06-17  Jason Merrill  <jason@yorick.cygnus.com>
2547
2548         * method.c (hack_identifier): Complain about getting a namespace
2549         or class template.
2550         * typeck.c (decay_conversion): Remove check for namespaces.
2551         * typeck2.c (incomplete_type_error): Likewise.
2552         * parse.y (template_arg): Add PTYPENAME expansion.
2553
2554 1998-06-16  Andrew MacLeod  <amacleod@cygnus.com>
2555
2556         * decl.c (grokvardecl): Don't build external assembler names for 
2557         TYPENAMEs in other namespaces as there is no declarator.
2558         * error.c (cp_file_of, cp_line_of): Don't extract file or line number
2559         info from DECL_CONTEXT if it is NULL.
2560
2561 1998-06-16  Jason Merrill  <jason@yorick.cygnus.com>
2562
2563         * call.c (check_dtor_name): Split out.
2564         (build_scoped_method_call): Use it.
2565         (build_method_call): Use it.
2566         * init.c (build_offset_ref): Use it.
2567
2568         * typeck.c (build_static_cast): Fix handling of pointers to members.
2569
2570         * decl.c (finish_function): Just return nothing from a constructor.
2571         * typeck.c (c_expand_return): Complain about returning a void
2572         expression from a destructor.
2573
2574 1998-06-13  Mark Mitchell  <mark@markmitchell.com>
2575
2576         * class.c (alter_access): Accept a BINFO explaining how to get
2577         from the entity whose accessed is being altered to the type doing
2578         the altering.
2579         (handle_using_decl): New function containing code split out from ...
2580         (finish_struct_1): Here.
2581
2582         * cp-tree.h (complete_type_or_else): Declare.
2583         * init.c (build_new_1, build_delete): Use it.
2584         * typeck.c (require_complete_type): Use complete_type, rather than
2585         expanding it inline.
2586         (complete_type_or_else): New function.
2587         (build_component_ref): Use it.
2588         (pointer_int_sum): Make sure the type pointed to is complete.
2589         (pointer_diff): Likewise.
2590
2591         * pt.c (for_each_template_parm): Traverse the TYPE_CONTEXT for
2592         types. 
2593
2594         * search.c (get_matching_virtual): Note that member templates
2595         cannot override virtual functions.
2596
2597 1998-06-12  Brendan Kehoe  <brendan@cygnus.com>
2598
2599         * pt.c (check_explicit_specialization): If DECLARATOR turned into
2600         an error_mark_node from lookup_template_function, return the same.
2601         (determine_specialization): Also make sure TEMPLATE_ID isn't an
2602         error_mark_node, before we try to read its operands.
2603         * decl.c (grokdeclarator): If we got an error_mark_node from
2604         check_explicit_specialization, just return it right back.
2605
2606 1998-06-12  Mark Mitchell  <mark@markmitchell.com>
2607
2608         * class.c (instantiate_type): Don't treat template-ids that don't
2609         specify any template arguments as equivalent to ordinary
2610         identifiers.  Use OFFSET_REF instead of SCOPE_REF to refer to
2611         pointer-to-members for member templates.  Tidy slightly.
2612         * cp-tree.def (TEMPLATE_ID_EXPR): Revise documentation.
2613         * init.c (build_offset_ref): Handle template-ids like ordinary
2614         identifiers, for the most part, but store a TEMPLATE_ID_EXPR in the
2615         offset part of the OFFSET_REF.
2616         * typeck.c (build_unary_op): Change check for unknown types to
2617         look for OFFSET_REFs, not SCOPE_REFs.
2618
2619 1998-06-11  Mark Mitchell  <mark@markmitchell.com>
2620
2621         * pt.c (is_member_template_class): New function.
2622         (push_template_decl_real): Use it.
2623
2624 1998-06-11  Benjamin Kosnik  <bkoz@elmo.cygnus.com>
2625
2626         * friend.c (do_friend): Add support for nested classes using
2627         member functions of the enclosing class as friends.
2628
2629 1998-06-10  Mark Mitchell  <mark@markmitchell.com>
2630
2631         * call.c (convert_default_arg): Make global, not static.
2632         (convert_arg_for_ellipsis): Split out from ...
2633         (build_over_call): Here.
2634         * cp-tree.h (convert_default_arg); Declare.
2635         (convert_arg_to_ellipsis): Likewise.
2636         (do_member_init): Remove.
2637         * init.c (do_member_init): Remove; this code is dead.
2638         (expand_member_init): Remove much of this code; it is dead.
2639         * typeck.c (convert_arguments): Use convert_default_arg and
2640         convert_arg_for_ellipsis, rather than duplicating here.
2641         
2642         * call.c (convert_like): Don't fail silently if 
2643         build_user_type_conversion fails.  Always return error_mark_node 
2644         for failure.
2645
2646 1998-06-10  Jason Merrill  <jason@yorick.cygnus.com>
2647
2648         * search.c (covariant_return_p): Complain about ambiguous base.
2649
2650         * typeck.c (build_component_ref): Diagnose ref to nested type.
2651
2652 1998-06-10  Brendan Kehoe  <brendan@cygnus.com>
2653
2654         * decl.c (grokparms): Check that INIT isn't an error_mark_node
2655         before giving error about invalid type for default arg.
2656
2657 1998-06-10  Jason Merrill  <jason@yorick.cygnus.com>
2658
2659         * call.c (build_method_call): Fix thinko.
2660
2661 1998-06-10  Dave Brolley  <brolley@cygnus.com>
2662
2663         * decl2.c (lang_decode_option): New argc/argv interface.
2664         * cp-tree.h (lang_decode_option): New argc/argv interface.
2665         * lang-specs.h (default_compilers): Only call cpp if -E, -M or -MM is
2666         specified for cpplib-enabled compilers.
2667         * lex.c (lang_init): Don't check_newline for cpplib.
2668         (init_parse): Don't initialize cpplib here.
2669
2670 1998-06-10  Brendan Kehoe  <brendan@cygnus.com>
2671
2672         * typeck.c (build_component_ref): Make sure FIELD has a lang_specific
2673         piece before checking DECL_MUTABLE_P.
2674
2675 1998-06-10  John Carr  <jfc@mit.edu>
2676
2677         * tree.c (debug_binfo): Make printf format match arguments.
2678
2679         * error.c (OB_PUTI): Make printf format match arguments.
2680
2681 1998-06-10  Jason Merrill  <jason@yorick.cygnus.com>
2682
2683         * init.c (perform_member_init): Handle default-initialization.
2684
2685         * except.c (build_throw): Handle throwing NULL.
2686
2687         * typeck.c (build_x_function_call): Use resolve_offset_ref.
2688
2689         * search.c (compute_access): Only strip an anonymous union
2690         for a FIELD_DECL.
2691
2692         * call.c (add_builtin_candidates): Tweak.
2693
2694         * cvt.c (build_expr_type_conversion): Restore code for conversion
2695         from class types.
2696         * decl2.c (delete_sanity): Use it.  Clean up.
2697
2698         * typeck.c (comp_ptr_ttypes_real): Fix cv-qual comparisons.
2699
2700 1998-06-10  Branko Cibej  <branko.cibej@hermes.si>
2701
2702         * typeck.c (c_expand_return): Don't warn about void expressions on
2703         return statements in functions returning void.
2704
2705 1998-06-09  Mark Mitchell  <mark@markmitchell.com>
2706
2707         * pt.c (fn_type_unification): Revise documentation.  Tidy.
2708         (type_unification): Likewise.
2709
2710 1998-06-09  Andrew MacLeod  <amacleod@cygnus.com>
2711
2712         * semantics.c (finish_try_block): Rename expand_start_catch, and delete
2713         expand_end_catch.
2714         * parse.y (function_try_block): Rename expand_start_catch, and delete
2715         expand_end_catch.
2716         * except.c (expand_end_eh_spec): Rename expand_start_catch, and delete
2717         expand_end_catch.
2718
2719 1998-06-09  Jason Merrill  <jason@yorick.cygnus.com>
2720
2721         * search.c (lookup_member): New fn.
2722         * class.c (finish_struct_1): Use it.
2723         * decl.c (lookup_name_real): Use it.
2724
2725 Mon Jun  8 20:45:52 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2726
2727         * Makefile.in (decl2.o): Depend on dwarf2out.h and dwarfout.h.
2728
2729         * cp-tree.h: Add prototype for `maybe_print_template_context' and
2730         `maybe_make_one_only'.
2731
2732         * decl.c (auto_function): Remove unused variable `decl'.
2733
2734         * decl2.c: Include dwarf2out.h and dwarfout.h.
2735
2736         * lex.c: Remove redundant declarations of `set_float_handler' and
2737         `asm_out_file'.
2738
2739 1998-06-08  Andrew MacLeod  <amacleod@cygnus.com>
2740
2741         * except.c (init_exception_processing): Remove NEW_EH_MODEL compile 
2742         time flag.  Call __cp_eh_info instead of __cp_exception_info.
2743         * exception.cc (struct cp_eh_info): Remove NEW_EH_MODEL flag.
2744         (__cp_exception_info): Return offset into cp_eh_info structure to 
2745         match what use to be the start of this structure.
2746         (__cp_eh_info): New function to return a pointer to cp_eh_info struct.
2747         (__cplus_type_matcher, __cp_push_exception): Remove NEW_EH_MODEL
2748         compile time flag.
2749         (__uncatch_exception, __check_eh_spec, std::uncaught_exception): Call 
2750         __cp_eh_info instead of __cp_exception_info.
2751
2752 1998-06-08  Jason Merrill  <jason@yorick.cygnus.com>
2753
2754         * decl.c (cp_finish_decl): Disable inlining of extern inlines
2755         with static variables.
2756
2757 1998-06-08  Mark Mitchell  <mark@markmitchell.com>
2758
2759         * init.c (build_offset_ref): Correct previous change to use build,
2760         not build_min.
2761
2762 1998-06-07  Mark Mitchell  <mark@markmitchell.com>
2763
2764         * class.c (instantiate_type): Handle pointer-to-members where the
2765         member is a template.
2766         * init.c (build_offset_ref): Likewise.
2767         * typeck.c (build_unary_op): Likewise.
2768
2769 1998-06-07  Richard Henderson  <rth@cygnus.com>
2770
2771         * lex.c (lang_init_options): New function.
2772         (lang_init): Remove flag_exceptions == 2 hack.
2773         
2774 1998-06-05  Jason Merrill  <jason@yorick.cygnus.com>
2775
2776         * search.c (envelope_add_decl): Tweak for implicit typename.
2777
2778         * call.c (joust): Also warn about confusing conversion op/constructor
2779         overload resolution.
2780
2781         * spew.c (yylex): Also return the TYPE_DECL if got_object.
2782         Don't clear got_object after '~'.
2783         * call.c (build_scoped_method_call): Tweak destructor handling.
2784         (build_method_call): Likewise.
2785         * pt.c (tsubst_copy, case METHOD_CALL_EXPR): Don't mess with
2786         TYPE_MAIN_VARIANT for destructors.
2787         * semantics.c (finish_object_call_expr): Complain about calling a
2788         TYPE_DECL.
2789
2790 1998-06-05  Per Bothner  <bothner@cygnus.com>
2791
2792         * g++spec.c (lang_specific_pre_link, lang_specific_extra_ofiles):
2793         Define - update needed by gcc.c change.
2794
2795 1998-06-05  Jason Merrill  <jason@yorick.cygnus.com>
2796
2797         * error.c (cp_printers): Use 'o' instead of '_' for the null entry.
2798
2799 1998-06-05  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
2800
2801         * cp-tree.h (DECL_NAMESPACE_ALIAS, ORIGINAL_NAMESPACE): Declare.
2802         * decl.c (lookup_name_real): Add namespaces_only parameter.
2803         If set, return only NAMESPACE_DECLs.
2804         (select_decl): Likewise.
2805         (identifier_type_value): Give additional parameter.
2806         (lookup_name_nonclass): Likewise.
2807         (lookup_name): Likewise.
2808         (find_binding): Skip namespace aliases.
2809         (binding_for_name): Likewise.
2810         (push_namespace): Check for namespace aliases.
2811         (lookup_name_namespace_only): New function.
2812         (begin_only_namespace_names, end_only_namespace_names): New functions.
2813         * decl2.c (set_decl_namespace): Skip namespace aliases.
2814         (do_using_directive): Likewise.
2815         (do_namespace_alias): Produce namespace aliases, fix alias 
2816         redeclaration.
2817         * error.c (dump_decl): Support SCOPE_REF.
2818         * parse.y (extdef): Wrap lookup with namespace_only for namespace
2819         aliases and using declarations.
2820
2821 1998-06-04  Jason Merrill  <jason@yorick.cygnus.com>
2822
2823         * tree.c (really_overloaded_fn): Only see through one TREE_LIST.
2824
2825         * error.c (dump_expr): Clean up NEW_EXPR case.
2826
2827 1998-06-04  Martin von Löwis  <loewis@informatik.hu-berlin.de>
2828
2829         Suggested by Brendan Kehoe
2830         * decl2.c (do_toplevel_using_decl): When decl is a TYPE_DECL,
2831         treat it as using ::decl.
2832
2833         * decl2.c (arg_assoc_type): Process unknown_type_node and OFFSET_TYPE.
2834
2835         * tree.c (mapcar): Support NEW_EXPR.
2836
2837         * error.c (dump_expr): Support NEW_EXPR.
2838
2839 1998-06-03  Jason Merrill  <jason@yorick.cygnus.com>
2840
2841         * method.c (make_thunk): Use overload machinery to make name.
2842         * search.c (covariant_return_p): New fn.
2843         (get_matching_virtual): Use it.
2844
2845         * init.c (build_new_1): Fix check for void.
2846
2847 1998-06-01  Per Bothner  <bothner@cygnus.com>
2848
2849         * cp-tree.h (TYPE_FOR_JAVA):  New macro.
2850         * decl.c, cp-tree.h (java_byte_type_node, java_short_type_node,
2851         java_int_type_node, java_long_type_node, java_float_type_node,
2852         java_double_type_node, java_char_type_node, java_boolean_type_node):
2853         New "primitive" types, with predefined names __java_byte etc.
2854         (record_builtin_java_type):  New function.
2855         (init_decl_processing):  Make Java types with record_builtin_java_type.
2856         (pushtag, grokdeclarator):  Set TYPE_FOR_JAVA if in extern "JAVA".
2857         (xref_baseypes):  If base class was TYPE_FOR_JAVA, so is this class.
2858         (grokfndecl):  Call check_java_method for Java classes.
2859         * method.c (is_java_type):  Removed.  Replaced with TYPE_FOR_JAVA.
2860         (process_overload_item):  Match types against specific
2861         java_XX_type_node types, rather than using is_java_type.
2862         * class.c (finish_struct_1):  Don't add default copy constructor
2863         or operator= if TYPE_FOR_JAVA.
2864         (pop_lang_conext):  Restore strict_prototyp proper if Java.
2865         * decl2.c (acceptable_java_type, check_java_method):  New functions.
2866         * pt.c (instantiate_class_template):  Copy TYPE_FOR_JAVA from pattern.
2867         (tsubst):  Move common statement after if statement.
2868         * typeck.c (comptypes):  If strict, TYPE_FOR_JAVA must match.
2869
2870 1998-06-01  Jason Merrill  <jason@yorick.cygnus.com>
2871
2872         * pt.c (for_each_template_parm): Use first_rtl_op.
2873
2874         * tree.c (build_cplus_array_type_1): Also check index_type for
2875         template parms.
2876
2877 1998-05-31  Jason Merrill  <jason@yorick.cygnus.com>
2878
2879         * pt.c (tsubst): Always copy BINFO_BASETYPES.
2880
2881 1998-05-29  scott snyder  <snyder@d0sgif.fnal.gov>
2882
2883         * tree.c (layout_basetypes): If we change TYPE_SIZE, change
2884         TYPE_SIZE_UNIT too.
2885
2886 1998-05-29  Mark Mitchell  <mark@markmitchell.com>
2887
2888         * decl.c (grokdeclarator): Don't complain about in-class
2889         initialization of static consts if we don't really know the type
2890         of the variable.
2891
2892 1998-05-29  Jason Merrill  <jason@yorick.cygnus.com>
2893
2894         * cp-tree.h (DECL_DESTRUCTOR_P): New macro.
2895         * method.c (build_destructor_name): New fn.
2896         * decl2.c (maybe_retrofit_in_chrg): Split out...
2897         (grokclassfn): From here.  Reorganize.
2898         * decl.c (grok_ctor_properties): Make sure ctors for types with 
2899         vbases have the in_chrg parm.
2900         * pt.c (instantiate_class_template): Update 
2901         TYPE_USES_VIRTUAL_BASECLASSES from tsubsted bases.  Don't call
2902         grok_*_properties.
2903         (tsubst): Call grok_ctor_properties and maybe_retrofit_in_chrg.
2904
2905 1998-05-28  Mark Mitchell  <mark@markmitchell.com>
2906
2907         * pt.c (instantiate_decl): Make test for whether or not static
2908         variables should be instantiated early match its comment.
2909
2910 1998-05-28  Jason Merrill  <jason@yorick.cygnus.com>
2911
2912         * decl.c (start_decl): Always pedwarn about vacuously redeclaring 
2913         a member.
2914         (start_function): Call check_default_args.
2915         * decl2.c (grokfield): Don't call check_default_args.
2916         (check_default_args): Use cp_error_at.
2917         * lex.c (do_pending_defargs): Call check_default_args.
2918
2919 1998-05-27  Brendan Kehoe  <brendan@cygnus.com>
2920
2921         * call.c (build_method_call): Make sure get_type_value returns
2922         something before we try to use its TYPE_MAIN_VARIANT.
2923         (build_scoped_method_call): Likewise.
2924
2925 1998-05-27  Jason Merrill  <jason@yorick.cygnus.com>
2926
2927         * typeck2.c (digest_init): Complain about getting a TREE_LIST to
2928         initialize an array.
2929
2930         * search.c (expand_upcast_fixups): Don't set DECL_CONTEXT and
2931         DECL_VIRTUAL_P.
2932
2933         * friend.c (do_friend): Clarify template warning.
2934
2935 1998-05-27  Mark Mitchell  <mark@markmitchell.com>
2936
2937         * decl.c (shadow_label): Don't treat decls as identifiers.
2938         (maybe_push_to_top_level): Clear shadowed_labels.
2939
2940         * pt.c (instantiate_decl): Reset lineno and filename after calling
2941         regenerate_decl_from_template. 
2942
2943         * decl.c (grokdeclarator): Don't try to use TYPE_OBSTACK on an
2944         error_mark_node.
2945
2946 1998-05-27  Kevin Buhr  <buhr@stat.wisc.edu>
2947
2948         * parse.y (base_class): Use is_aggr_type, not IS_AGGR_TYPE.
2949
2950 1998-05-26  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
2951
2952         * pt.c (process_template_parm): Accept TYPENAME_TYPE nodes.
2953         (convert_nontype_argument): Handle cases when nontype template
2954         parameters become classes after substitution.
2955
2956 1998-05-26  Mark Mitchell  <mark@markmitchell.com>
2957
2958         * friend.c (is_friend): Use comptypes, rather than == to compare
2959         types.  Modify for new representation of template friends.
2960         (make_friend_class): Likewise.
2961         * pt.c (tsubst_friend_class): Undo 1998-05-21 change.  Tweak.
2962         (instantiate_class_template): Deal with template friends.
2963
2964         * decl.c (store_parm_decls): Remove redundant call to
2965         expand_main_function.
2966
2967 1998-05-26  Benjamin Kosnik  <bkoz@loony.cygnus.com>
2968
2969         * decl.c (start_decl): Check for DECL_LANG_SPECIFIC before
2970         DECL_USE_TEMPLATE.
2971
2972 1998-05-26  Per Bothner  <bothner@cygnus.com>
2973
2974         * language_as_string:  Handle lang_java.
2975
2976 1998-05-26  Jason Merrill  <jason@yorick.cygnus.com>
2977
2978         * decl.c (pushdecl): Don't copy the type_decl.
2979
2980 1998-05-26  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
2981
2982         * class.c (pushclass): Always store TYPE_MAIN_VARIANT in
2983         current_class_type.
2984         * decl.c (grokdeclarator): Put typedefs on the type's obstack.
2985
2986         * parse.y (complex_direct_notype_declarator): Use $1 to access
2987         scope of notype_qualified_id.
2988
2989 1998-05-26  Dave Brolley  <brolley@cygnus.com>
2990
2991         * lex.c (parse_options,yy_cur,yy_lim): Add for cpplib.
2992         (init_parse): Initialize cpplib interface.
2993
2994         * Makefile.in (CXX_OBJS): Make sure dependencies never end with an
2995         empty continuation.
2996
2997 1998-05-26  Mark Mitchell  <mark@markmitchell.com>
2998
2999         * decl.c (pushtag): Avoid crashing on erroneous input.
3000
3001 1998-05-25  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
3002
3003         * decl.c (push_namespace): Only produce one unique name for
3004         anonymous namespaces.
3005         (get_unique_name): Remove.
3006
3007 1998-05-25  Mark Mitchell  <mark@markmitchell.com>
3008
3009         * call.c (tourney): Don't do any extra comparisons.
3010
3011         * decl2.c (build_anon_union_vars): Don't crash on empty sub-unions.
3012
3013         * cp-tree.h (processing_template_parmlist): Declare.
3014         * decl.c (pushtag): Don't call push_template_decl when we
3015         shouldn't. 
3016         * pt.c (processing_template_parmlist): New variable.
3017         (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): New macro.
3018         (complete_template_args): Use it.
3019         (add_to_template_args): Likewise.
3020         (innermost_args): Likewise.
3021         (tsubst): Likewise.
3022         (begin_template_parm_list): Use processing_template_parmlist.
3023         (end_template_parm_list): Likewise.
3024
3025         * cp-tree.h (ANON_UNION_TYPE_P): New macro.
3026         * decl.c (grokdeclarator): Use it.
3027         * decl2.c (grok_x_components): Likewise.
3028         * init.c (initializing_context): Likewise.
3029         * method.c (do_build_copy_constructor): Likewise.
3030         (do_build_assign_ref): Likewise.
3031         * search.c (compute_access): Likewise.
3032         * typeck.c (build_component_ref): Likewise.
3033
3034         * decl.c (grokdeclarator): Don't give a cv-qualified version of an
3035         unnamed type a typedef name "for linkage purposes".
3036
3037         * pt.c (lookup_template_class): Don't look at
3038         IDENTIFIER_CLASS_VALUE when there's no current_class_type.
3039
3040         * method.c (build_overload_int): Handle error cases gracefully.
3041
3042         * pt.c (instantiate_decl): Handle static member variables
3043         correctly.
3044
3045         * pt.c (tsubst): Use the tsubst'd type when producing new
3046         TEMPLATE_PARM_INDEX nodes.
3047
3048 1998-05-24  Mark Mitchell  <mark@markmitchell.com>
3049
3050         * tree.c (cp_tree_equal): Handle pointers to member functions.
3051
3052         * call.c (maybe_handle_implicit_object): Handle QUAL_CONVs.  Make
3053         sure the type of the REF_BIND is a reference type.
3054         (maybe_handle_ref_bind, compare_ics): Rename reference_type to
3055         target_type for clarity.
3056
3057         * parse.y (xcond): Move call to condition_conversion ...
3058         * semantics.c (finish_for_cond): Here.
3059         * parse.c: Regenerated.
3060         
3061 1998-05-24  Jason Merrill  <jason@yorick.cygnus.com>
3062
3063         * decl.c (push_namespace): Namespaces have type void.
3064         * typeck2.c (incomplete_type_error): Complain about namespace
3065         used as expression.
3066         * typeck.c (decay_conversion): Likewise.
3067
3068 1998-05-24  Martin von Löwis  <loewis@informatik.hu-berlin.de>
3069
3070         * error.c (dump_expr): Support namespaces.
3071
3072 1998-05-23  Jason Merrill  <jason@yorick.cygnus.com>
3073
3074         * cp-tree.def: Add SRCLOC.
3075         * cp-tree.h: Add struct tree_srcloc and accessor macros.
3076         * tree.c (build_srcloc, build_srcloc_here): New fns.
3077         * pt.c (add_pending_template): Use build_srcloc_here.
3078         (push_tinst_level): Update last_template_error_tick before erroring.
3079         (instantiate_decl): Restore lineno and input_filename before 
3080         calling add_pending_template.
3081         * decl2.c (finish_file): Set up lineno and input_filename for
3082         pending templates.
3083
3084 1998-05-22  Jason Merrill  <jason@yorick.cygnus.com>
3085
3086         * decl.c (lang_print_error_function): New fn.  
3087         (init_decl_processing): Set print_error_function to use it.
3088         * errfn.c (cp_thing): Don't call maybe_print_template_context here.
3089
3090         * call.c (maybe_handle_ref_bind): Propagate ICS_USER_FLAG and
3091         ICS_BAD_FLAG.
3092
3093         * cvt.c (ocp_convert): Don't set LOOKUP_NO_CONVERSION for
3094         copy-initialization.
3095
3096         * class.c (build_vtable_entry): Use int_fits_type_p.
3097         (build_vtable): Pass a signed offset to build_vtable_entry.
3098         (prepare_fresh_vtable, modify_one_vtable, fixup_vtable_deltas1,
3099         set_rtti_entry): Likewise.
3100
3101 1998-05-22  Per Bothner  <bothner@cygnus.com>
3102
3103         * cp-tree.h:  Add comments documenting which LANG_FLAGS are used.
3104         (C_TYPE_VARIABLE_SIZE, C_DECL_VARIABLE_SIZE):  Removed, not used.
3105
3106 1998-05-22  Jason Merrill  <jason@yorick.cygnus.com>
3107
3108         * pt.c (print_template_context): Use fprintf instead of cp_error.
3109
3110         * pt.c (determine_specialization): Just return an error_mark_node.
3111         Also print the decl we want in error messages.  If we complain,
3112         return error_mark_node.
3113         (tsubst_friend_function): Set lineno and input_filename so 
3114         error messages will be useful.
3115         (instantiate_template): Just return an error_mark_node.
3116         (check_explicit_specialization): Don't mess with a returned
3117         error_mark_node.
3118
3119         * pt.c (print_template_context): Add new argument.
3120         (maybe_print_template_context): New fn.
3121         (push_tinst_level): Increment tinst_level_tick.
3122         (pop_tinst_level): Likewise.
3123         * errfn.c (cp_thing): Call maybe_print_template_context.  Use
3124         xrealloc instead of xmalloc.
3125
3126         * typeck.c (build_unary_op, CONVERT_EXPR): Propagate TREE_CONSTANT.
3127
3128 1998-05-21  Jason Merrill  <jason@yorick.cygnus.com>
3129
3130         * pt.c (tsubst_friend_class): Don't call redeclare_class_template
3131         if the template we looked up is the same as the one we already
3132         have.
3133
3134 Thu May 21 11:54:44 1998  Dave Brolley  <brolley@cygnus.com>
3135
3136         * lex.c: (handle_sysv_pragma): FILE* parameter not used.
3137         (cpp_reader,parse_in): Add for cpplib.
3138         (check_newline): Call handle_sysv_pragma with new interface.
3139         (check_newline): Call GET_DIRECTIVE_LINE, not get_directive_line.
3140
3141         * input.c: (yy_cur,yy_lim,yy_get_token,GETC): Add for cpplib.
3142         (sub_getch): Call GETC for cpplib.
3143
3144         * cp-tree.h: (get_directive_line): Different prototype for cpplib.
3145         (GET_DIRECTIVE_LINE): Macro wrapper for get_directive_line.
3146
3147         * Makefile.in (CXX_OBJS): add @extra_cxx_objs@ for cpplib.
3148
3149 1998-05-21  Jason Merrill  <jason@yorick.cygnus.com>
3150
3151         * decl2.c (maybe_make_one_only): New fn.
3152         (import_export_vtable): Use it.
3153         (import_export_decl): Likewise.
3154         * pt.c (mark_decl_instantiated): Likewise.
3155
3156 1998-05-21  Mark Mitchell  <mmitchell@usa.net>
3157
3158         * decl2.c (find_representative_member): Rename to ...
3159         (build_anon_union_vars): New function.
3160         (finish_anon_union): Fix stupidity of previous change.
3161
3162 1998-05-20  Jason Merrill  <jason@yorick.cygnus.com>
3163
3164         * decl.c (grokfndecl): Handle definition of specialization in
3165         friend declaration.
3166
3167         * error.c (dump_decl): Fix LOOKUP_EXPR handling.
3168
3169 1998-05-20  Mark Mitchell  <mmitchell@usa.net>
3170
3171         * class.c (delete_duplicate_fields_1): Use DECL_DECLARES_TYPE_P
3172         to look for type declarations.
3173         (finish_struct): Deal with templates on the CLASSTYPE_TAGS list.
3174         * cp-tree.h (DECL_DECLARES_TYPE_P): New macro.
3175         (finish_member_class_template): Declare.
3176         * decl.c (pushtag): Put member class templates on the
3177         CLASSTYPE_TAGS list, just as for ordinary member classes.
3178         (pushdecl_class_level): Use DECL_DECLARES_TYPE_P.
3179         (lookup_tag): Look for IDENTIFIER_CLASS_VALUEs, just as with
3180         IDENTIFIER_NAMESPACE_VALUEs. 
3181         * parse.y (component_decl): Move code to ...
3182         * semantics.c (finish_member_class_template): New function.  
3183         Don't put member class templates on the list of components for a
3184         class. 
3185         * parse.c: Regenerated.
3186         * pt.c (classtype_mangled_name): Don't try DECL_CONTEXT on types.
3187         In fact, don't use DECL_CONTEXT at all here.
3188
3189 1998-05-20  Martin von Loewis  <loewis@informatik.hu-berlin.de>
3190
3191         * decl.c (record_unknown_type): New function.
3192         (init_decl_processing): Call it for the unknown and global type
3193         nodes.
3194
3195 1998-05-20  Mark Mitchell  <mmitchell@usa.net>
3196
3197         * decl2.c (find_representative_member): New function.
3198         (finish_anon_union): Use it.
3199
3200         * cp-tree.h (MAIN_NAME_P): New macro.
3201         (DECL_MAIN_P): Likwise.
3202         * decl.c (pushdecl): Avoid crashing on redefinitions of `main'.
3203         (grokfndecl): Use the new macros.
3204         (grokdeclarator): Likewise.
3205         (start_function): Likewise.
3206         (store_parm_decls): Likewise.
3207         (finsh_function): Likewise.
3208         * friend.c (do_friend): Likewise.
3209         * typeck.c (build_function_call_real): Likewise.
3210         (build_unary_op): Likewise.
3211
3212 Wed May 20 02:16:01 1998  Jason Merrill  <jason@yorick.cygnus.com>
3213
3214         * decl2.c (start_objects, finish_objects, do_dtors,
3215         do_ctors): Split out from...
3216         (finish_file): ...here.
3217
3218 Tue May 19 20:36:23 1998  Jason Merrill  <jason@yorick.cygnus.com>
3219
3220         * tree.c (is_overloaded_fn): Don't abort on placeholders from
3221         push_class_decls.
3222
3223 Tue May 19 15:16:22 1998  Brendan Kehoe  <brendan@cygnus.com>
3224
3225         * class.c (is_empty_class): Return 0 if TYPE is an error_mark_node.
3226
3227         * error.c (dump_expr): Handle an ARROW_EXPR.
3228
3229 Tue May 19 15:13:39 1998  Mark Mitchell  <mmitchell@usa.net>
3230
3231         * decl.c (saveable_obstack): Declare.
3232         (pushdecl): Copy TYPE_DECLs to the same obstack as the type they
3233         declare, if necessary.
3234
3235 Tue May 19 14:50:27 1998  Mark Mitchell  <mmitchell@usa.net>
3236
3237         * call.c (compare_qual): Remove.
3238         (is_subseq): Tweak.
3239         (is_properly_derived_from): New function.
3240         (maybe_handle_ref_bind): Likewise.
3241         (maybe_handle_implicit_object): Likewise.
3242         (compare_ics): Modify substantially to bring into conformance with
3243         the standard.
3244         * cp-tree.h (TYPE_PTRMEMFUNC_OBJECT_TYPE): New macro.
3245         (comp_cv_qualification): Declare.
3246         (comp_cv_qual_signature): Likewise.
3247         * typeck.c (comp_cv_qualification): Likewise.
3248         (comp_cv_qual_signature): Likewise.
3249
3250 Tue May 19 10:05:02 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3251
3252         * Makefile.in (parse.o): Depend on toplev.h.
3253
3254         * class.c (typecode_p): Remove prototype and definition.
3255
3256         * cp-tree.h (currently_open_class, is_empty_class, member_p):
3257         Add prototype.
3258
3259         * decl.c (push_overloaded_decl_top_level): Remove prototype and
3260         definition.
3261
3262         * errfn.c (cp_error): Cast function pointer `error' to (errorfn *)
3263         in call to `cp_thing'.
3264         (cp_warning): Likewise for function pointer `warning'.
3265
3266         * except.c (do_function_call): Remove prototype and definition.
3267         (call_eh_info): Wrap variable `t1' in macro NEW_EH_MODEL.
3268
3269         * method.c (is_java_type): Add prototype and make it static.
3270
3271         * parse.y: Include toplev.h.
3272
3273         * pt.c (type_unification): Remove unused variable `arg'.
3274         (instantiate_decl): likewise for `save_ti'.
3275
3276         * tree.c (propagate_binfo_offsets): Likewise for `base_binfos'.
3277         
3278 Tue May 19 02:43:25 1998  Jason Merrill  <jason@yorick.cygnus.com>
3279
3280         * init.c (build_member_call): Handle template_ids.
3281         * parse.y (primary): Add global_scope template_id.
3282
3283 Mon May 18 23:22:52 1998  Jason Merrill  <jason@yorick.cygnus.com>
3284
3285         * decl2.c (get_sentry): Use end_temporary_allocation.
3286         Don't declare permanent_obstack.
3287
3288 Mon May 18 12:28:44 1998  Mark Mitchell  <mmitchell@usa.net>
3289
3290         * parse.y (.finish_new_placement): New non-terminal.
3291         (unary_expr, new_type_id): Use it.  
3292         * parse.c: Regenerated.
3293         
3294 Mon May 18 12:20:27 1998  Brendan Kehoe  <brendan@cygnus.com>
3295
3296         * pt.c (redeclare_class_template): Say where the original definition
3297         of the template-parameter's default argument appeared.
3298
3299 Mon May 18 03:00:57 1998  Jason Merrill  <jason@yorick.cygnus.com>
3300
3301         * call.c (build_over_call): Tweak empty class handling.
3302
3303         * decl.c (make_typename_type): Use currently_open_class.
3304
3305         * class.c (instantiate_type): Don't abort on TREE_NONLOCAL_FLAG.
3306
3307 Mon May 18 01:43:01 1998  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
3308
3309         * decl.c (lookup_name_real): Don't look at IDENTIFIER_LOCAL_VALUE 
3310         for a type unless it is one.
3311
3312         * class.c (finish_struct_1): Use OVL_CURRENT in error message.
3313
3314 Mon May 18 01:24:08 1998  Jeffrey A Law  (law@cygnus.com)
3315
3316         * Makefile.in (program_transform_name, objdir): Define.
3317
3318         * Makefile.in (BISON): Use bison from the build tree if it exists.
3319         (FLEX): Similarly.
3320
3321 Sun May 17 14:52:08 1998  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
3322
3323         * typeck.c (type_unknown_p): Return true for TREE_LIST also.
3324
3325         * call.c (build_method_call): Use TYPE_MAIN_VARIANT on typedefs.
3326
3327 Sun May 17 14:51:41 1998  Jason Merrill  <jason@yorick.cygnus.com>
3328
3329         * call.c (build_scoped_method_call): Likewise.
3330
3331 Sun May 17 13:53:48 1998  Mark Mitchell  <mmitchell@usa.net>
3332
3333         * init.c (build_new_1): Call suspend_momentary around the creation
3334         of values that must be saved for exception handling.
3335         * parse.y (.build_new_placement): New non-terminal.
3336         (unary_expr, new_placement): Use it.
3337         * parse.c: Regenerated.
3338         
3339 Sun May 17 12:32:08 1998  Jason Merrill  <jason@yorick.cygnus.com>
3340
3341         * decl.c (duplicate_decls): Use CANONICAL_TYPE_VARIANT to compare
3342         old and new types.
3343
3344         * pt.c (tsubst): Make sure that BINFO_TYPE of new binfos is the
3345         canonical type.
3346
3347         * call.c (build_over_call): Don't use IS_SIGNATURE on a namespace.
3348
3349 Fri May 15 20:28:00 1998  Jason Merrill  <jason@yorick.cygnus.com>
3350
3351         * decl.c (start_decl): Revert problem change.
3352
3353         * Makefile.in (CONFLICTS): Fix.
3354
3355 Fri May 15 15:34:02 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
3356
3357         * decl.c (duplicate_decls): Clean up, add DECL_DATA_AREA bits.
3358
3359 Fri May 15 00:46:05 1998  Jason Merrill  <jason@yorick.cygnus.com>
3360
3361         * class.c (finish_struct_1): Use BINFO_SIZE.
3362
3363         * decl.c (start_decl): Use 'tem'.
3364
3365 Thu May 14 16:30:47 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
3366
3367         * exception.cc: Include eh-common.h.
3368         (struct cp_eh_info): add eh_info struct with NEW_EH_MODEL.
3369         (__cplus_type_matcher): First stab at new C++ runtime type matcher.
3370         (__cp_push_exception): Initialize eh_info struct as well.
3371         * except.c: Remove local structs and include eh-common.h.
3372         (init_exception_processing): Set language and version codes.
3373         (call_eh_info): add presence of eh_info to runtime description of 
3374         struct cp_eh_info.
3375         (expand_end_eh_spec): call start_catch_block() and end_catch_block().
3376         * semantics.c (finish_try_block): call start_catch_block() and 
3377         end_catch_block().
3378         * parse.y (function_try_block): call start_catch_block() and 
3379         end_catch_block().
3380
3381 Thu May 14 12:27:34 1998  Brendan Kehoe  <brendan@cygnus.com>
3382
3383         * typeck.c (original_type): New function.
3384         (common_type): Use it to get the DECL_ORIGINAL_TYPE for T1 and T2,
3385         to see if they're actually the same.
3386         * cp-tree.h (original_type): Declare.
3387
3388 Wed May 13 12:54:30 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3389
3390         * Makefile.in (lex.o): Depend on output.h.
3391         
3392         * call.c (add_function_candidate): Remove unused variable `cand'.
3393         (add_conv_candidate): Likewise.
3394         (build_builtin_candidate): Likewise.
3395         
3396         * cp-tree.h: Add prototype for `types_overlap_p'.
3397
3398         * decl.c (signal_catch): Mark parameter `sig' with ATTRIBUTE_UNUSED.
3399
3400         * decl2.c (merge_functions): Remove unused variables `tmp' and
3401         `tempn'.
3402
3403         * error.c (expr_as_string): Mark parameter `v' with ATTRIBUTE_UNUSED.
3404         (code_as_string): Likewise.
3405         (language_as_string): Likewise.
3406         (parm_as_string): Likewise.
3407         (op_as_string): Likewise.
3408         (assop_as_string): Likewise.
3409         (cv_as_string): Likewise.
3410
3411         * lex.c: Include output.h.
3412
3413         * pt.c (type_unification): Cast first argument of `bzero' to a char*.
3414
3415         * search.c (dfs_no_overlap_yet): Mark parameter `t' with
3416         ATTRIBUTE_UNUSED.
3417
3418         * tinfo.cc (__class_type_info::dcast): Change the type of variable
3419         `i' from int to size_t.
3420
3421         * typeck.c (language_lvalue_valid): Mark parameter `exp' with
3422         ATTRIBUTE_UNUSED.
3423
3424 Tue May 12 21:37:49 1998  Jason Merrill  <jason@yorick.cygnus.com>
3425
3426         * error.c (dump_simple_decl): Use DECL_CLASS_SCOPE_P and/or
3427         DECL_NAMESPACE_SCOPE_P.
3428         (lang_decl_name): Likewise.
3429         * pt.c (tsubst_friend_function, tsubst): Likewise.
3430         * decl.c (pushdecl, redeclaration_error_message, start_decl, 
3431         cp_finish_decl, start_function): Likewise.
3432         * class.c (finish_struct_1): Likewise.
3433         * call.c (build_over_call): Likewise.
3434         (compare_ics): Use DERIVED_FROM_P.
3435
3436 Tue May 12 07:24:18 1998  Mark Mitchell  <mmitchell@usa.net>
3437
3438         * cp-tree.h (CANONICAL_TYPE_VARIANT): New macro.
3439         * method.c (build_mangled_name): Use it.
3440         (build_decl_overload_real): Likewise.
3441
3442         * error.c (dump_simple_decl): New function, broken out from ...
3443         (dump_decl): Use it.
3444
3445 Mon May 11 11:38:07 1998  Mark Mitchell  <mmitchell@usa.net>
3446
3447         * ptree.c (lang_print_xnode): Add missing `break'.
3448
3449         * pt.c (tsubst): Remove duplicate check for IDENTIFIER_NODE.
3450
3451         * call.c (add_template_candidate): Adjust for changes to
3452         fn_type_unification. 
3453         (add_template_candidate_real): Likewise.
3454         (add_template_conv_candidate): Likewise.
3455         (build_user_type_conversion_1): Likewise.
3456         (build_new_function_call): Likewise.
3457         (build_object_call): Likewise.
3458         (build_new_op): Likewise.
3459         (build_new_method_call): Likewise.
3460         * class.c (instantiate_type): Likewise.
3461         * cp-tree.h (unification_kind_t): New type.
3462         (fn_type_unification): Adjust prototype.
3463         (type_unificaiton): Likewise.
3464         * pt.c (UNIFY_ALLOW_NONE): New macro.
3465         (UNIFY_ALLOW_MORE_CV_QUAL): Likewise.
3466         (UNIFY_ALLOW_LESS_CV_QUAL): Likewise.
3467         (UNIFY_ALLOW_DERIVED): Likewise.
3468         (unify): Change prototype.
3469         (maybe_adjust_types_for_deduction): New function.
3470         (check_cv_quals_for_unify): Likewise.
3471         (determine_specialization): Adjust.
3472         (fn_type_unification): Likewise.
3473         (type_unification): Likewise.
3474         (type_unification_real): Likewise.  Use
3475         maybe_adjust_types_for_deduction.  Fix mishandling of
3476         back-unification of template functions passed as arguments.  Pass
3477         appropriate combination of UNIFY_ALLOW_* to unify.
3478         (unify): Remove unused NTPARMS parameter.  Use
3479         check_cv_quals_for_unify.  Remove bogus code that allowed
3480         too-generous unification in order to adhere more closely to standard.
3481         (get_bindings_real): Adjust.
3482         (get_class_bindings): Likewise.
3483
3484         * method.c (build_overload_identifier): Only use the innermost
3485         template arguments when mangling.
3486         * pt.c (tsubst_template_argument_vector): New function.
3487         (complete_template_args): Deal with the situation where the
3488         extra_args contain more than one level of arguments.
3489         (lookup_template_class): Deal with member template classes, which
3490         may have more than one level of arguments.
3491         (tsubst): Don't tsbust into the TREE_TYPE of an IDENTIFIER_NODE.
3492         Improve handling of member template classes.  Use
3493         DECL_PRIMARY_TEMPLATE instead of inline expansion.  Use
3494         tsubst_template_argument_vector where appropriate.
3495         (regenerate_decl_from_template): Break out from ...
3496         (instantiate_decl): Here.
3497         
3498         * lex.c (yyprint): Remove TYPENAME_ELLIPSIS.
3499         * parse.h: Regenerated.
3500         * parse.c: Really regenerated.
3501         
3502         * cp-tree.h (finish_unary_op_expr): New function.
3503         (finish_id_expr): Likewise.
3504         (begin_new_placement): Likewise.
3505         (finish_new_placement): Likewise.
3506         (finish_declarator): Likewise.
3507         (finish_translation_unit): Likewise.
3508         (finish_parmlist): Likewise.
3509         (begin_class_definition): Likewise.
3510         (finish_class_definition): Likewise.
3511         (finish_default_args): Likewise.
3512         (finish_inline_definitions): Likewise.
3513         * parse.y (GCC_ASM_KEYWORD): Remove.
3514         (TYPENAME_ELLIPSIS): Likewise.
3515         * parse.c: Regenerated.
3516         Use new functions in semantics.c in the actions for many rules.
3517         * gxx.gperf (GCC_ASM_KEYWORD): Just use ASM_KEYWORD.
3518         * hash.h: Regenerated.
3519         * semantics.c (finish_expr_stmt): Allow NULL expr.
3520         (finish_unary_op_expr): New function, containing
3521         code previously in parse.y.
3522         (finish_id_expr): Likewise.
3523         (begin_new_placement): Likewise.
3524         (finish_new_placement): Likewise.
3525         (finish_declarator): Likewise.
3526         (finish_translation_unit): Likewise.
3527         (finish_parmlist): Likewise.
3528         (begin_class_definition): Likewise.
3529         (finish_class_definition): Likewise.
3530         (finish_default_args): Likewise.
3531         (finish_inline_definitions): Likewise.
3532
3533 Sun May 10 23:43:13 1998  Mark Mitchell  <mmitchell@usa.net>
3534
3535         * typeck.c (build_c_cast): Don't decay arrays and functions to
3536         pointer type when converting to a class type.
3537
3538 Sun May 10 22:53:56 1998  Jason Merrill  <jason@yorick.cygnus.com>
3539
3540         * cp-tree.h (DECL_NAMESPACE_SCOPE_P): New macro.
3541         (DECL_CLASS_SCOPE_P): Likewise.
3542
3543 Sun May 10 22:48:22 1998  H.J. Lu  (hjl@gnu.org)
3544
3545         * class.c (finish_struct_1): Use OVL_CURRENT on TREE_VEC_ELT.
3546         * decl2.c (constructor_name_full): Likewise.
3547
3548 Sun May 10 22:48:12 1998  Mike Stump  <mrs@wrs.com>
3549
3550         * tree.c (mapcar): Add OVERLOAD support.
3551
3552         * init.c (resolve_offset_ref): We must use basetype_path before we
3553         destroy it with a call to convert_pointer_to.
3554
3555 Sat May  9 14:44:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
3556
3557         * class.c (currently_open_class): New fn.
3558         * decl.c (lookup_name_real): Use it.
3559         * search.c (lookup_field): Likewise.
3560
3561 Fri May  8 23:32:42 1998  Martin von Loewis  <loewis@informatik.hu-berlin.de>
3562
3563         * cp-tree.def (OVERLOAD): New node.  
3564         * cp-tree.h (BINDING_TYPE, SET_IDENTIFIER_GLOBAL_VALUE,
3565         SET_IDENTIFIER_NAMESPACE_VALUE): Define.
3566         (NAMESPACE_BINDING): Remove.
3567         (IDENTIFIER_GLOBAL_VALUE, IDENTIFIER_NAMESPACE_VALUE): Use
3568         namespace_binding.
3569         (OVL_FUNCTION, OVL_CHAIN, OVL_CURRENT, OVL_NEXT, OVL_USED):
3570         Define.
3571         (tree_overload): New struct.
3572         (IDENTIFIER_TYPE_VALUE): Use identifier_type_value.
3573         (REAL_IDENTIFIER_TYPE_VALUE): Define.
3574         (IDENTIFIER_HAS_TYPE_VALUE): Use IDENTIFIER_TYPE_VALUE.
3575         (lang_decl_flags): Remove in_namespace.
3576         (lang_decl): Remove chain.
3577         (DECL_CHAIN, DECL_NAMESPACE): Remove.
3578         (flag_honor_std): Declare extern.
3579         (identifier_type_value, pushdecl_namespace_level, push_using_decl,
3580         namespace_binding, set_namespace_binding,
3581         lookup_function_nonclass, cat_namespace_levels,
3582         set_decl_namespace, lookup_arg_dependent, binding_init, ovl_cons,
3583         scratch_ovl_cons, ovl_member, build_overload): Declare.
3584         (decl_list_length, get_namespace_id, current_namespace_id,
3585         overloaded_globals_p): Remove.
3586         (lookup_using_namespace, qualified_lookup_using_namespace): Change
3587         return type.
3588         (push_scratch_obstack): New macro.
3589         * call.c (add_function_candidate): Special-case type of OVERLOAD node.
3590         (build_user_conversions_1): Iterate using OVL_NEXT for ctors,
3591         convs, fns.
3592         (build_new_function_call): Iterate using OVL_CHAIN.  
3593         Print DECL_NAME in when reporting ambiguities.
3594         (build_object_call): Iterate using OVL_NEXT for fns, convs.
3595         (build_new_op): Call lookup_function_nonclass.  
3596         Iterate using OVL_NEXT.
3597         (build_op_delete_call): Change detection of members.
3598         Do not wrap TREE_LIST around fields and single global functions.
3599         (build_over_call): Don't push a class level if the context is a
3600         namespace.
3601         (build_new_method_call): Iterate using OVL_NEXT.
3602         * class.c (add_method): Chain overloaded members using
3603         build_overload.  Remove copying of method.
3604         (grow_method): When iterating through the obstack, expect OVERLOAD
3605         nodes.  Chain overload members.
3606         (finish_struct_methods): Chain overload members.  Unpack OVERLOAD
3607         nodes in call to get_baselinks.
3608         (duplicate_tag_error): Expect OVERLOAD nodes when unchaining.
3609         (finish_struct_1): Iterate over ctor using OVL_NEXT.  Handle
3610         fdecls that are OVERLOAD nodes.
3611         (validate_lhs): New function.
3612         (instantiate_type): Do not copy OVERLOAD nodes.  Remove dead
3613         code. Use DECL_NAME in error messages. Split code between global
3614         and member function processing.
3615         * decl.c (global_type_node): New static variable.
3616         (in_std): New global.
3617         (struct binding_level): New field usings.
3618         (resume_binding_level): Assert that we are not in a class.
3619         (toplevel_bindings_p): Just check for namespace_p or
3620         pseudo_global.
3621         (resume_level): Remove.
3622         (find_binding): New function.
3623         (binding_for_name): Call it.
3624         (namespace_binding, set_namespace_binding): New functions.
3625         (push_namespace): Associate binding level with new namespace,
3626         resume_binding_level for existing namespace.  Remove old code.
3627         Fake std by counting.
3628         (store_bindings): Use REAL_IDENTIFIER_TYPE_VALUE.
3629         (maybe_push_to_top_level): Save current namespace.
3630         (pop_from_top_level): Restore saved namespace.
3631         (pop_namespace): Call suspend_binding_level.  Remove old code.
3632         (cat_namespace_levels): New function.
3633         (set_identifier_type_value_with_scope): For namespace bindings,
3634         set BINDING_TYPE, and use global_type_node.
3635         Use REAL_IDENTIFIER_TYPE_VALUE otherwise.
3636         (identifier_type_value): New function.
3637         (pushtag): If no context, use current_namespace.
3638         (duplicate_decls): Don't process DECL_CHAIN.
3639         (pushdecl): Set DECL_CONTEXT to current_namespace, if it is not
3640         already set. Never reset it to NULL_TREE.  Lookup global variables
3641         in their namespace.  Push overloaded templates if they are on
3642         namespace level.
3643         (pushdecl_namespace_level): New function.
3644         (pushdecl_top_level): Implement using pushdecl_namespace_level.
3645         (pushdecl_using_decl): New function.
3646         (overloaded_globals_p): Remove.
3647         (push_overloaded_decl): Create OVERLOAD nodes, and iterate through
3648         them. Use namespace_binding and set_namespace_value.
3649         (redeclaration_error_message): Complain if the declarations come
3650         from different namespaces.
3651         (lookup_tag): On namespace level, look in the BINDING_TYPE.
3652         (lookup_namespace_name): Pass tree_bindings from stack.  Remove
3653         old code.
3654         (select_decl): New function.
3655         (lookup_name_real): Call it for qualified and unqualified lookup.
3656         Pass tree_bindings from the stack.
3657         If prefer_type is 1, also accept namespaces.
3658         (lookup_function_nonclass): New function.
3659         (init_decl_processing): Set the binding level of the global
3660         namespace to global_binding_level.
3661         Build a proper type list for __builtin_apply.
3662         Initialize std_node to "fake std" if flag_honor_std is set.
3663         Initialize global_type_node.
3664         Allocated bad_alloc in namespace std if flag_honor_std.
3665         (define_function): Set the DECL_CONTEXT to the current_namespace.
3666         (start_decl): A namespace is not considered as a context here.  If
3667         the DECL_CONTEXT is a namespace, push the decl.
3668         (cp_finish_decl): Check for namespaces used as initializers.
3669         (grokfndecl): Add namespace parameter.  Remove processing of
3670         DECL_CHAIN.
3671         (grokvardecl): Add namespace parameter.
3672         (grokdeclarator): Process SCOPEs that are namespaces.  For
3673         mangling, temporarily set the DECL_CONTEXT on anonymous structs.
3674         (start_function): Check for contexts that are namespaces.  
3675         Set context for declarations that have not been pushed.
3676         (store_parm_decls): Check for ::main only.
3677         (finish_function): Likewise.
3678         (start_method): Check for contexts that are namespaces.
3679         (start_method): Remove DECL_CHAIN processing.
3680         * decl2.c (flag_honor_std): Declare.
3681         (lang_decode_option): Set it if -fhonor-std or -fnew-abi is given.
3682         (decl_namespace_list): New static global.
3683         (grok_x_components): Ignore namespaces as type contexts.
3684         (check_classfn): Expect OVERLOAD nodes.
3685         (grokfield): Remove DECL_CHAIN processing.
3686         (finish_file): Call cat_namespace_levels.
3687         (merge_functions): New function.
3688         (ambiguous_decl): Rewrite.
3689         (lookup_using_namespace): Produce tree_bindings.
3690         (qualified_lookup_using_namespace): Likewise.
3691         (set_decl_namespace, decl_namespace, current_decl_namespace,
3692         push_decl_namespace, pop_decl_namespace): New functions.
3693         (arg_lookup): New struct.
3694         (add_function, arg_assoc_namespace, arg_assoc_class,
3695         arg_assoc_type, arg_assoc_args, arg_assoc, lookup_arg_dependent):
3696         New functions.
3697         (get_namespace_id, current_namespace_id): Remove.
3698         (do_toplevel_using_decl): Rewrite.
3699         (do_class_using_decl): Complain about namespace qualifiers.
3700         (do_using_directive): Sorry if not on namespace level.  Complain
3701         about unknown namespaces.
3702         * error.c (dump_aggr_type): Check for namespace contexts.
3703         * except.c (init_exception_processing): Push terminate into std.
3704         * friend.c (is_friend): A namespace is not a context, here.
3705         * init.c (expand_member_init): Remove DECL_CHAIN processing.
3706         (build_offset_ref): Process OVERLOAD nodes.
3707         * lang-specs.h (__HONOR_STD): Define if -fnew-abi or -fhonor-std.
3708         * lex.c (identifier_type): Loop using OVL_CHAIN.
3709         (see_typename): Set looking_for_typename to 2.
3710         (real_yylex): Likewise. 
3711         (do_identifier): Expect OVERLOAD nodes instead of TREE_LISTs.
3712         (do_scoped_id): Expect OVERLOAD nodes.
3713         Change calling convention for qualified_lookup_using_namespace.
3714         (build_lang_decl): Don't set in_namespace anymore.
3715         * method.c (typevec_size): New global.
3716         (build_overload_nested_name): Return if global_namespace.
3717         Otherwise, always expect a declaration context.
3718         (build_qualified_name): Likewise.
3719         Make sure we don't write beyond typevec_size.
3720         (build_decl_overload_real): Likewise.
3721         Allocate one extra slot for the namespace.
3722         (hack_identifier): Mark code dead.
3723         Process OVERLOAD and NAMESPACE_DECL nodes.
3724         * parse.y (program): Pop namespaces until in global namespace.
3725         (extdef): In a using-declaration, don't discard the identifier if
3726         there is no declaration.
3727         (left_curly): Ignore type contexts which are namespaces.
3728         (typename_sub2): Use IDENTIFIER_TYPE_VALUE to retrieve the type
3729         used as scope.
3730         * pt.c (template_class_depth): Expect types to be namespaces.
3731         (determine_specialization): Simplify by expecting OVERLOAD nodes.
3732         (push_template_decl): Push into namespace level.
3733         Reset ctx if it is a namespace.
3734         Set DECL_CONTEXT to current_namespace if not set already.
3735         Ignore real contexts that are namespaces.
3736         (mangle_class_name_for_template): Skip global_namespace.
3737         Mangle other namepaces as declarations.
3738         (lookup_template_function): Set type of OVERLOAD nodes to unknown.
3739         (lookup_template_class): Push into namespace of context.
3740         If the context is a namespace, set it to global_namespace.
3741         Use id_context for mangling.
3742         (for_each_template_parm): Handle OVERLOAD and NAMESPACE_DECL nodes.
3743         (tsubst_friend_function): Ignore namespace contexts.
3744         Push into namespace level.
3745         (tsubst): Handle NAMESPACE_DECL nodes.
3746         Remove DECL_CHAIN processing.
3747         (type_unification_real): Recognize OVERLOAD instead of TREE_LIST nodes.
3748         * ptree.c (print_lang_identifier): Print bindings.
3749         (lang_print_xnode): Print OVERLOAD nodes.
3750         * rtti.c (init_rtti_processing): Push type_info into std.
3751         * search.c (lookup_fnfields_here): Expect OVERLOAD nodes.
3752         (lookup_fnfields_1, get_virtuals_named_this, get_matching_virtual,
3753         dfs_debug_mark, dfs_pushdecls, dfs_compress_decls, add_conversions,
3754         lookup_fnfields_here): Likewise.
3755         Process all nodes, instead of going through TREE_CHAIN.
3756         * sig.c (build_signature_pointer_or_reference_type): Set context
3757         to global_namespace.
3758         (build_signature_table_constructor): Expect OVERLOAD nodes.
3759         * spew.c (yylex): Save old setting of looking_for_typename.
3760         * tree.c (decl_list_length): Remove.
3761         (binding_init): New function.
3762         (count_functions): Rewrite.
3763         (is_overloaded_fn): Expect OVERLOAD nodes.
3764         (really_overloaded_fn, get_first_fn, lvalue_type): Likewise.
3765         (ovl_cons, scratch_ovl_cons, build_overload, build_overload_after,
3766         ovl_member): New functions.
3767         * typeck.c (require_complete_type): Expect OVERLOAD nodes.
3768         (type_unknown_p): Likewise.
3769         (require_instantiated_type): Likewise.
3770         (build_component_ref): Declare code dead.
3771         (build_x_function_call): Create and expect OVERLOAD nodes.
3772         (build_function_call_real): Check for ::main only.
3773         (build_unary_op): Likewise.  Expect OVERLOAD nodes.
3774         (convert_for_assignment): Check for TREE_LIST before accessing
3775         TREE_VALUE.
3776         * decl.c (duplicate_decls): Check for namespace bindings instead
3777         of global bindings.
3778         (pushdecl, push_overloaded_decl, lookup_tag, lookup_name_real,
3779         lookup_name_current_level, start_decl, xref_tag, 
3780         finish_enum): Likewise.
3781         * init.c (build_offset_ref): Likewise.
3782         * search.c (lookup_field): Likewise.
3783         (lookup_fnfields): Likewise.
3784         (dfs_debug_mark): Likewise.
3785         * decl.c (poplevel): Use SET_IDENTIFIER_TYPE_VALUE.
3786         (poplevel_class, pop_from_top_level): Likewise.
3787         * decl2.c (finish_method): Likewise.
3788         * class.c (build_vtable): Use SET_IDENTIFIER_GLOBAL_VALUE.
3789         * decl.c (record_builtin_type): Likewise.
3790         (init_decl_processing, grokfndecl): Likewise.
3791         * lex.c (get_time_identifier, do_identifier, do_scoped_id): Likewise.
3792         (make_lang_type): Likewise.
3793         * parse.y (make_thunk): Likewise.
3794         * pt.c (tsubst): Likewise.
3795         * tree.c (debug_binfo): Likewise.
3796         * exception.cc, new.cc, new1.cc, new2.cc, tinfo.cc, tinfo.h, 
3797         tinfo2.cc, inc/new.h: Add std qualifications.
3798         * inc/new: Wrap with namespace std if __HONOR_STD.
3799         * inc/typeinfo: Likewise.
3800
3801 Fri May  8 00:43:50 1998  Jason Merrill  <jason@yorick.cygnus.com>
3802
3803         * call.c (build_user_type_conversion_1): Handle second_conv 
3804         properly for templates.
3805
3806 Thu May  7 17:09:25 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
3807
3808         * method.c (build_decl_overload_real): Set TREE_USED flag to
3809         zero for build_type_variants nodes as well.
3810
3811 Wed May  6 19:27:09 1998  Jason Merrill  <jason@yorick.cygnus.com>
3812
3813         * pt.c (tsubst): Don't tsubst the type of an IDENTIFIER_NODE.
3814
3815 Wed May  6 16:49:48 1998  Jim Wilson  <wilson@cygnus.com>
3816
3817         * Makefile.in (call.o, class.o, decl.o, decl2.o, errfn.o, error.o,
3818         except.o, expr.o, friend.o, init.o, lex.o, method.o, pt.o, repo.o,
3819         rtti.o, search.o, semantics.o, sig.o, tree.o, typeck.o, typeck2.o, 
3820         xref.o): Add toplev.h dependencies.
3821
3822 Wed May  6 16:44:58 1998  Jeffrey A Law  (law@cygnus.com)
3823
3824         * errfn.c (cp_error, cp_warning): Remove declarations for
3825         error and warning respectively.
3826
3827 Wed May  6 14:28:18 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3828
3829         * error.c: Convert to using ctype macros defined in system.h.
3830         * method.c: Likewise.
3831         * xref.c: Likewise.
3832         * lex.c: Likewise.  Also remove redundant system header stuff.
3833
3834 Wed May  6 06:36:41 1998  Robert Lipe  <robertl@dgii.com>
3835
3836         * call.c, class.c, decl.c, decl2.c, errfn.c, error.c, except.c, 
3837         expr.c, friend.c, init.c, lex.c, method.c, pt.c, repo.c, rtti.c, 
3838         search.c, semantics.c, sig.c, tree.c, typeck.c, typeck2.c, 
3839         xref.c: Add include of toplev.h.
3840
3841 Wed May  6 02:33:39 1998  Jason Merrill  <jason@yorick.cygnus.com>
3842
3843         * tree.c (perm_manip): Also regenerate the RTL of an extern.
3844         (copy_to_permanent): Use end_temporary_allocation.
3845
3846 Tue May  5 23:54:04 1998  Jason Merrill  <jason@yorick.cygnus.com>
3847
3848         * init.c (expand_vec_init): The initialization of each array
3849         element is a full-expression.
3850
3851 Tue May  5 18:24:13 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
3852
3853         * method.c (build_mangled_name): Add a call to build_type_variant 
3854         to get the right type.
3855
3856 Tue May  5 01:25:03 1998  Jason Merrill  <jason@yorick.cygnus.com>
3857
3858         * Makefile.in: Add .SUFFIXES.
3859
3860         * cp-tree.def: Remove NAMESPACE_DECL.
3861
3862 Sun May  3 01:32:14 1998  Jason Merrill  <jason@yorick.cygnus.com>
3863
3864         * call.c (build_over_call): Do evaluate arg even if it has empty 
3865         class type.
3866         * decl.c (start_function): Don't push a member function.
3867
3868 Thu Apr 30 18:59:23 1998  Jim Wilson  <wilson@cygnus.com>
3869
3870         * Makefile.in (g++FAQ.info): Put -o option before input file.
3871
3872 Thu Apr 30 13:05:33 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
3873
3874         * gxxint.texi: Add info for squangling codes K and B.
3875
3876 Tue Apr 28 13:22:01 1998  Mark Mitchell  <mmitchell@usa.net>
3877
3878         * semantics.c (begin_stmt_expr): Avoid duplicating the effect of
3879         the expression in templates.
3880         (finish_stmt_expr): Likewise.
3881
3882 1998-04-28  Brendan Kehoe  <brendan@cygnus.com>
3883
3884         * decl2.c (ambiguous_decl): Fix NAME parm to be a tree, not int.
3885
3886 Mon Apr 27 13:58:10 1998  Mark Mitchell  <mmitchell@usa.net>
3887
3888         * decl.c (maybe_push_to_top_level): Always clear
3889         current_template_parms and processing_template_decl.
3890         (pushtag): Remove check of current_class_type and some comments,
3891         since maybe_push_to_top_level no longer creates confusion.
3892
3893 Sun Apr 26 12:10:18 1998  Mark Mitchell  <mmitchell@usa.net>
3894
3895         * cp-tree.h (CLASSTYPE_IS_TEMPLATE): New macro.
3896         (DECL_CLASS_TEMPLATE_P): Likewise.
3897         (DECL_PRIMARY_TEMPLATE): Likewise.
3898         (PRIMARY_TEMPLATE_P): Use it.
3899         (push_template_decl_real): New function.
3900         (redeclare_class_template): Take new template parameters as
3901         input. 
3902         (is_specialization_of): New function.
3903         (comp_template_args): Declare.
3904         * decl.c (pushtag): Handle friend template classes.
3905         (xref_tag): Likewise.  Use new calling convention for
3906         redeclare_class_template.
3907         * decl2.c (grok_x_components): Handle friend templates.
3908         * friend.c (is_friend): Use is_specialization_of where
3909         appropriate.  Deal with friend class templates.
3910         (make_friend_class): Let a class template be friends with itself.
3911         * pt.c (comp_template_args): Remove declaration.
3912         (tsubst_friend_class): New function.
3913         (push_template_decl_real): New function.
3914         (push_template_decl): Use it.
3915         (redeclare_class_template): Adjust for new calling convention.
3916         (comp_template_args): Give it external linkage.
3917         (instantiate_class_type): Use tsubst_friend_class to deal
3918         with friend templates.
3919         * typeck.c (comptypes): Use comp_template_args, rather than
3920         expanding it inline.
3921         * parse.y (component_decl): Handle a nested template type 
3922         like other component type declarations.
3923
3924         * pt.c (check_explicit_specialization): Handle overloaded
3925         constructors correctly.
3926
3927         * pt.c (mabybe_get_template_decl_from_type_decl): New function.
3928         (lookup_template_class): Use it.
3929
3930 Thu Apr 23 21:19:06 1998  Jason Merrill  <jason@yorick.cygnus.com>
3931
3932         * cp-tree.def: Add WRAPPER.  USER_CONV now only has two ops.
3933         * cp-tree.h: Add WRAPPER support.
3934         * call.c (add_candidate): Split out from add_*_candidate fns.
3935         (build_over_call): Take the candidate instead of function and args.
3936         Enforce access control here.  Emit overload warnings here.
3937         (add_warning): New fn.
3938         (joust): Add WARN parm.  If not set, call add_warning instead of
3939         printing a warning.  Reenable some warnings.
3940         (tourney): Pass it.
3941         (convert_like): Adjust.
3942         (build_new_op): Adjust.
3943         (build_new_function_call): Adjust.
3944         (build_user_type_conversion_1): Adjust.
3945         (USER_CONV_FN): Adjust.
3946         * tree.c (build_expr_wrapper, build_expr_ptr_wrapper, 
3947         build_int_wrapper): New fns.
3948
3949 Thu Apr 23 18:27:53 1998  Mark P. Mitchell  <mmitchell@usa.net>
3950
3951         * pt.c (unify): Fix typo in previous change.
3952
3953 Thu Apr 23 09:32:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
3954
3955         * error.c (dump_type_real): Declare canonical_name.
3956
3957         * typeck.c (comp_target_types): Fix PMFs.
3958
3959 Wed Apr 22 13:24:48 1998  Mark Mitchell  <mmitchell@usa.net>
3960
3961         * class.c (finish_struct): Set TREE_PRIVATE and TREE_PROTECTED for
3962         the DECL_RESULTs of a member TEMPLATE_DECL, not just the
3963         TEMPLATE_DECL.
3964
3965          * pt.c (tsubst): Decrease the template-level of
3966          TEMPLATE_TEMPLATE_PARMS.  Likewise for the DECL_INITIAL of a
3967          TEMPLATE_PARM_INDEX.
3968          (template_decl_level): New function.
3969          (unify): Make sure to record unifications for template
3970          parameters, even when the parameters exactly match the arguments.
3971          Combine duplicated code for TEMPLATE_TEMPLATE_PARMs and
3972          TEMPLATE_TYPE_PARMS.  Don't try to unify template parameters that
3973          aren't from the level we're currently working on.
3974
3975 Tue Apr 21 22:00:04 1998  Mark Mitchell  <mmitchell@usa.net>
3976
3977         * errfn.c (cp_thing): Use xrealloc, not xmalloc, to copy memory.
3978
3979         * decl2.c (check_member_template): Set DECL_IGNORED for member
3980         class templates, too.
3981
3982         * decl2.c (grokfield): Remangle the name of a member TYPE_DECL.
3983
3984 Tue Apr 21 18:59:11 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
3985
3986         * decl.c (duplicate_decls): Only check DECL_FRIEND_P if function.
3987
3988 Tue Apr 21 14:22:00 1998  Jeffrey A Law  (law@cygnus.com)
3989
3990         * cp-tree.h (intTI_type_node, unsigned_intTI_type_node): Declare.
3991         * decl.c (intTI_type_node, unsigned_intTI_type_node): Define.
3992         (init_decl_processing): Handle TI types.
3993         * typeck.c (unsigned_type, signed_type): Handle TI types.
3994
3995 Sat Apr 18 15:25:21 1998  Jim Wilson  <wilson@cygnus.com>
3996
3997         * g++spec.c (lang_specific_driver): New argument in_added_libraries.
3998         New local added_libraries.  Increment count when add library to
3999         arglist.
4000
4001 Fri Apr 17 21:25:00 1998  Mark Mitchell  <mmitchell@usa.net>
4002
4003         * cp-tree.h (type_as_string_real): New function.
4004         * pt.c (mangle_class_name_for_template): Use it.
4005         * error.c (dump_aggr_type): Change prototype.
4006         (dump_type_prefix): Likewise.
4007         (dump_type_suffix): Likewise.
4008         (dump_type_real): Convert from dump_type.  If desired, the
4009         "canonica" name of a typedef, i.e., the name of the underlying
4010         type, can be printed.
4011         (dump_type): Call dump_type_real.
4012
4013 Fri Apr 17 14:30:45 1998  Jason Merrill  <jason@yorick.cygnus.com>
4014
4015         * decl2.c (lang_decode_option): -fnew-abi implies -fvtable-thunks.
4016
4017         * typeck.c (comp_target_types): Tweak pedantic case.
4018         (comp_target_parms): Tweak pedantic case.  Clean up somewhat.
4019         Return -1 or 1 instead of 1 or 2.
4020         (compparms): Remove STRICT handling.
4021         (convert_for_assignment): Fix handling of pmfs.
4022
4023 Fri Apr 17 14:04:16 1998  Mark Mitchell  <mmitchell@usa.net>
4024
4025         * typeck.c (comp_target_types): Handle references like pointers.
4026         (comp_target_parms): Note that return code from comp_target_types
4027         can be negative to indicate failure.
4028
4029 Fri Apr 17 09:10:52 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
4030
4031         * Make-lang.in (c++.all.build): Don't depend on $(DEMANGLER_PROG),
4032         which requires a working target compiler to build.
4033
4034 Fri Apr 17 08:57:35 1998  Jeffrey A Law  (law@cygnus.com)
4035
4036         * tree.c (avoid_overlap): Add prototype.
4037
4038         * spew.c (num_tokens): Add prototype.
4039         (nth_noken, add_token, consume_token, debug_yychar): Likewise.
4040
4041         * search.c (dfs_check_overlap): Add prototype.
4042         (dfs_no_overlap_yet): Likewise.
4043
4044         * pt.c (original_template): Add prototype.
4045         (inline_needs_template_parms): Likewise.
4046         (push_inline_template_parms_recursive): Likewise.
4047         (retrieve_specialization, register_specialization): Likewise.
4048         (print_candidates, reduce_template_parm_level): Likewise.
4049         (build_template_decl, mark_template_parm): Likewise.
4050         (tsubst_friend_function, get_bindings_real): Likewise.
4051
4052         * method.c (start_squangling): Add prototype.
4053         (end_squangling, check_ktype, issue_ktype): Likewise.
4054         (build_overloaded_scope_ref, check_btype): Likewise.
4055         (build_mangled_template_parm_index): Likewise.
4056
4057         * lex.c (init_cpp_parse): Add prototype.
4058         (handle_cp_pragma, handle_sysv_pragma): Likewise.
4059         (reduce_cmp, token_cmp): Likewise.
4060
4061         * except.c (call_eh_info): Add prototype.
4062         (push_eh_info, get_eh_info, get_eh_value, get_eh_type): Likewise.
4063         (get_eh_caught, get_eh_handlers, do_pop_exception): Likewise.
4064
4065         * decl2.c (is_namespace_ancestor): Add prototype.
4066         (namespace_ancestor, add_using_namespace): Likewise.
4067         (ambiguous_decl): Likewise.
4068
4069         * decl.c (indent): Add prototype.
4070
4071         * call.c (add_template_candidate_real): Add prototype.
4072
4073 Fri Apr 17 01:57:12 1998  Jason Merrill  <jason@yorick.cygnus.com>
4074
4075         * decl2.c (build_expr_from_tree): Just return a PMF.
4076
4077 Fri Apr 17 00:45:12 1998  Mark Mitchell  <mmitchell@usa.net>
4078
4079         * typeck2.c (process_init_constructor): Don't strip cv-qualifiers
4080         when doing initializations.
4081
4082         * pt.c (unify): Use comptypes to compare type args.
4083
4084 Fri Apr 17 00:24:22 1998  Jason Merrill  <jason@yorick.cygnus.com>
4085
4086         * decl.c (duplicate_decls): Fix check for when it's safe to free
4087         the new decl.
4088
4089         * pt.c (mangle_class_name_for_template): Don't pass a typedef type
4090         to type_as_string.
4091
4092 Thu Apr 16 17:47:30 1998  Jeffrey A Law  (law@cygnus.com)
4093
4094         * pt.c (build_template_parm_index): Add prototype.
4095
4096         * search.c (my_tree_cons): Don't clear words outside the
4097         newly allocated node.
4098
4099 Wed Apr 15 15:34:44 1998  Dave Brolley  <brolley@cygnus.com>
4100
4101         * lex.c (init_parse): Now returns char* containing the filename.
4102
4103 Wed Apr 15 13:20:06 1998  John Carr  <jfc@mit.edu>
4104                           Jeff Law   <law@cygnus.com>
4105
4106         * errfn.c: Rework to avoid problems when HOST_WIDE_INT is longer
4107         than a pointer.
4108
4109 Sun Apr 12 22:31:19 1998  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4110
4111         * cvt.c (cp_convert_to_pointer): Use TYPE_PRECISION.
4112
4113 Fri Apr 10 12:16:49 1998  Benjamin Kosnik  <bkoz@loony.cygnus.com>
4114
4115         * decl.c (duplicate_decls): Don't warn for redundant decls if
4116         friend: let add_friend take care of it.
4117
4118 Thu Apr  9 02:40:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
4119
4120         * sig.c (build_signature_pointer_constructor): Don't set
4121         TREE_HAS_CONSTRUCTOR for a signature pointer.
4122         * cvt.c (ocp_convert): Don't force a temporary for internal structs.
4123         * init.c (resolve_offset_ref): Warn about implicit & on pmfs 
4124         here, too.
4125         * typeck.c (build_unary_op): Only allow taking the address of a 
4126         real constructor.
4127         * typeck2.c (digest_init): Simplify.
4128         (store_init_value): Don't pedwarn about using { } for pmfs.
4129
4130 Thu Apr  9 22:16:57 1998  Per Bothner  <bothner@cygnus.com>
4131
4132         * cp-tree.h (start_decl):  Update prototype.
4133         * decl.c (start_decl):  Like the C version, new parameters
4134         for the attributes.  Call cplus_decl_attributes here,
4135         (pushdecl):  Like C version, do build_type_copy if TYPE_DECL,
4136         (grokdeclarator):  Pass NULL for new start_decl arguments.
4137         * pt.c (tsubst_expr):  Likewise.
4138         * parse.y:  Merge cplus_decl_attribute calls into start_decl calls.
4139         * typeck.c (common_type): Check TYPE_MAIN_VARIANT.
4140         * lex.c (build_lang_decl): Add lang_name_java.
4141         * class.c (push_lang_context): Add lang_name_java.
4142         * method.c (build_mangled_name): Check for is_java_type.
4143
4144 Thu Apr  9 22:16:57 1998  Benjamin Kosnik  <bkoz@loony.cygnus.com>
4145
4146         * decl.c (grokdeclarator): Check TYPE_MAIN_VARIANT.
4147         * call.c (build_scoped_method_call): Check for TREE_CODE for
4148         VOID_TYPE instead of type ==  void_type_node.
4149         (build_method_call): Ditto.
4150         * decl.c (lookup_name_real): Ditto.
4151         (grokdeclarator): Ditto.
4152         (start_decl): Ditto.
4153         (grokparms): Ditto.
4154         (start_function): Ditto.
4155         (finish_function): Ditto.
4156         (start_method): Ditto.
4157
4158 Thu Apr  9 00:18:44 1998  Dave Brolley  (brolley@cygnus.com)
4159
4160         * lex.c (finput): New variable.
4161         (init_cpp_parse):  Renamed from init_parse.
4162         (init_parse): Handle !USE_CPPLIB.  Call init_cpp_parse when finished.
4163         (finish_parse): New function.
4164         * cp-tree.h (init_lex, init_parse): Remove declarations.
4165
4166 Mon Apr  6 02:25:05 1998  Jason Merrill  <jason@yorick.cygnus.com>
4167
4168         * call.c (build_call): Still evaluate the actual argument.
4169         * class.c (is_empty_class): Update for -fnew-abi.
4170
4171         * decl2.c: -fnew-abi implies -fsquangle.
4172
4173         * method.c (do_build_assign_ref): Don't do anything to copy
4174         an empty class.
4175         (do_build_copy_constructor): Likewise.
4176         * call.c (build_over_call): Likewise.
4177
4178 Sat Apr  4 18:43:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
4179
4180         * tree.c (avoid_overlap): Return a value.
4181
4182 Sat Apr  4 12:52:35 1998  Jeffrey A Law  (law@cygnus.com)
4183
4184         * method.c (check_btype): Add missing argument to xrealloc.
4185         (check_ktype): Likewise.
4186
4187 Fri Apr  3 02:22:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
4188
4189         Implement empty base optimization.
4190         * class.c (finish_struct_1): Add vbase fields earlier.  Set 
4191         CLASSTYPE_SIZE of an empty base to 0.  Types with bases can be empty.
4192         * search.c (dfs_check_overlap, dfs_no_overlap_yet): New fns.
4193         (types_overlap_p): New fn.
4194         * tree.c (avoid_overlap): New fn.
4195         (build_base_fields): Use it to avoid overlapping empty bases.
4196         * cp-tree.h, decl2.c, lang-options.h: Add -fnew-abi.
4197
4198         * decl.c (cplus_expand_expr_stmt): Strip unused INDIRECT_REFs.
4199
4200         Re-implement allocation of base class subobjects.
4201         * tree.c (unshare_base_binfos): New fn.
4202         (layout_basetypes): Use it.  Now handles offsets of both virtual and
4203         non-virtual bases, after layout_type.
4204         (layout_vbasetypes): Remove.
4205         (build_base_fields): Generate FIELD_DECLs for each non-virtual base.
4206         (build_vbase_pointer_fields): Split out from old layout_basetypes.
4207         * class.c (finish_base_struct): Lose offset handling code.
4208         Move nonvdtor warning here.  Don't mess with t_binfo anymore.
4209         (finish_struct_1): Don't mess with t_binfo anymore.  Use fns above.
4210         * cp-tree.h: Adjust.
4211
4212 Thu Apr  2 14:25:13 1998  Jason Merrill  <jason@yorick.cygnus.com>
4213
4214         * cp-tree.h: Lose CLASSTYPE_VBASE_SIZE, some unused stuff.
4215         * decl.c, decl2.c, pt.c, ptree.c, lex.c: Likewise.
4216         * class.c (duplicate_tag_error): Likewise.
4217         (finish_struct_1): Set CLASSTYPE_SIZE, CLASSTYPE_MODE, CLASSTYPE_ALIGN.
4218         * tree.c (layout_vbasetypes): Update from layout_record, remove
4219         var_size support, use CLASSTYPE_SIZE instead of CLASSTYPE_VBASE_SIZE.
4220         (layout_basetypes): Likewise.
4221
4222 Wed Apr  1 18:22:25 1998  Jeffrey A Law  (law@cygnus.com)
4223
4224         * class.c, Make sure system.h is included just after config.h.
4225         Delete lingering stdio and errno references too.
4226         * decl.c, errfn.c, parse.y, ptree.c search.c, xref.c: Likewise.
4227         
4228 Wed Apr  1 15:38:36 1998  Jason Merrill  <jason@yorick.cygnus.com>
4229
4230         * friend.c (is_friend): Fix access control for local classes.
4231
4232         * class.c (is_empty_class): New fn.
4233         * call.c (build_call): Don't pass empty class objects to a function.
4234
4235 Wed Apr  1 14:58:35 1998  Mark Mitchell  <mmitchell@usa.net>
4236
4237         * call.c (build_over_call): Do name resolution for default
4238         arguments of function templates in the scope of the templates.
4239
4240 Tue Mar 31 13:43:57 1998  Jeffrey A Law  (law@cygnus.com)
4241
4242         * call.c: Include system.h.  Remove includes, declarations and
4243         defines provided by system.h.
4244         * class.c, cvt.c, decl.c, decl2.c, errfn.c error.c: Likewise.
4245         * except.c, expr.c friend.c, g++spec.c, init.c, input.c: Likewise.
4246         * lex.c, parse.y, pt.c, ptree.c repo.c rtti.c, search.c: Likewise.
4247         * semantics.c, sig.c, spew.c, tree.c, typeck.c: Likewise.
4248         * typeck2.c, xref.c: Likewise.
4249         * Makefile.in: Dependencies updated as appropriate.
4250         * Make-lang.in: Likewise.
4251
4252 Mon Mar 30 12:15:00 1998  Mark Mitchell  <mmitchell@usa.net>
4253
4254         * pt.c (fn_type_unification): Allow incomplete unification without 
4255         an immediate error message.
4256
4257 Mon Mar 30 08:55:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
4258
4259         * tree.c (member_p): New fn.
4260         * decl2.c (finish_file): Only set DECL_STATIC_FUNCTION_P for
4261         initializing class members.
4262
4263         * cp-tree.def (TEMPLATE_PARM_INDEX): Class 'x'.
4264         * ptree.c (lang_print_xnode): Handle TEMPLATE_PARM_INDEX.
4265
4266         * call.c (build_method_call): Handle non-scoped destructors, too.
4267         * pt.c (tsubst_copy): Likewise.
4268
4269         * pt.c (print_template_context): Split out...
4270         (push_tinst_level): ...from here.
4271
4272         * friend.c (is_friend): Don't pass a type to decl_function_context.
4273
4274         * typeck.c (convert_for_initialization): Always hand off
4275         conversions to class type.
4276
4277 Sun Mar 29 20:01:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
4278
4279         * friend.c (is_friend): Local classes have the same access as the
4280         enclosing function.
4281
4282 Sun Mar 29 00:47:32 1998  Jeffrey A Law  (law@cygnus.com)
4283
4284         * typeck.c (expand_target_expr): Delete dead function.
4285
4286         * search.c: Put various prototypes inside #ifdef MI_MATRIX.
4287
4288         * repo.c (save_string): Delete dead function.
4289
4290         * method.c (thunk_printable_name): Delete dead function.
4291
4292         * lex.c (yynextch): Delete dead function.
4293
4294         * expr.c (tree_extract_aggr_init): #if 0 out.
4295
4296         * except.c (do_unwind): Delete dead function.
4297         (easy_expand_asm): Likewise.
4298
4299         * cvt.c (build_conversion_type_1): Delete dead function.
4300
4301         * cp-tree.h (push_expression_obstack): Declare.
4302
4303         * call.c (source_type): #if 0 out.
4304
4305         * class.c (alter_access): Remove unused label.  Add braces
4306         around empty else clause.
4307
4308         * lex.c (yyprint): Fix argument to printf.
4309
4310 Sat Mar 28 17:43:52 1998  Mark Mitchell  <mmitchell@usa.net>
4311
4312         * pt.c (tsubst): Clear TREE_USED for new FUNCTION_DECLs.
4313
4314         * pt.c (instantiate_class_template): Make sure template
4315         arguments are permanent.
4316         * init.c (resolve_offset_ref): Don't go looking around in
4317         template types.
4318
4319         * semantics.c: Add routines to handle expressions, and some
4320         declaration processing.
4321         * parse.y: Use them.
4322         (current_class_depth): Move declaration to cp-tree.h.
4323         * parse.c: Regenerated.
4324         * cp-tree.h: Use them.
4325         (current_class_depth): Declare.
4326         * pt.c (tsubst_copy): Use begin_stmt_expr and finish_stmt_expr.
4327
4328 Fri Mar 27 20:23:18 1998  Mark Mitchell  <mmitchell@usa.net>
4329
4330         * error.c (dump_decl): Be a bit more explicit with template
4331         type arguments, when verbose.
4332         
4333 Fri Mar 27 18:16:40 1998  Jason Merrill  <jason@yorick.cygnus.com>
4334
4335         * inc/exception: Reorder closing braces.
4336
4337 Fri Mar 27 13:22:18 1998  Mark Mitchell  <mmitchell@usa.net>
4338
4339         * pt.c (redeclare_class_template): New function.
4340         * cp_tree.h (redeclare_class_template): Declare it.
4341         * decl.c (xref_tag): Use it.
4342
4343 Thu Mar 26 11:16:30 1998  Jason Merrill  <jason@yorick.cygnus.com>
4344
4345         * call.c (build_over_call): Check IS_AGGR_TYPE, not 
4346         TYPE_LANG_SPECIFIC.
4347         * typeck.c (convert_arguments): Likewise.
4348
4349         * decl.c (grokdeclarator): Remove const and volatile from type after
4350         setting constp and volatilep.
4351
4352         * class.c (finish_struct_1): Don't warn about bool bitfield larger
4353         than one bit.
4354
4355 Thu Mar 26 10:25:52 1998  Mark Mitchell  <mmitchell@usa.net>
4356
4357         * pt.c (convert_nontype_argument): STRIP_NOPS where appropriate.
4358
4359 Thu Mar 26 10:24:05 1998  Mark Mitchell  <mmitchell@usa.net>
4360
4361         * call.c (build_object_call): Complain about ambiguous operator(),
4362         rather that crashing.
4363         (build_new_op): Likewise.
4364         (build_op_delete_call): Likewise.
4365
4366 Thu Mar 26 10:23:24 1998  Mark Mitchell  <mmitchell@usa.net>
4367
4368         * cvt.c (perform_qualification_conversions): Use comp_target_types
4369         instead of comp_ptr_ttypes.
4370
4371 Wed Mar 25 16:10:50 1998  Mark Mitchell  <mmitchell@usa.net>
4372
4373         * cp-tree.h (enforce_access): Declare.
4374         * call.c (enforce_access): Make it extern, not static.
4375         * class.c (alter_access): Use enforce_access; modify code for ISO
4376         compliance, rather than ARM rules.
4377
4378 Wed Mar 25 12:10:45 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
4379
4380         * cp-tree.h: Fix typo.
4381
4382 Wed Mar 25 02:01:02 1998  Jason Merrill  <jason@yorick.cygnus.com>
4383
4384         * expr.c (cplus_expand_expr): Only do PCC_STATIC_STRUCT_RETURN thing
4385         if (aggregate_value_p (type)).
4386
4387         * decl2.c (constructor_name_full): Handle TYPENAME_TYPE.
4388
4389 Tue Mar 24 16:12:01 1998  Mark Mitchell  <mmitchell@usa.net>
4390
4391         * tree.c (mapcar): When dealing with a DECL, use it's constant
4392         value, if any.
4393         * pt.c (lookup_template_class): Don't mangle the names of template
4394         classes whose arguments are unknown.
4395
4396         * pt.c (tsubst_expr): Handle GOTO_STMT correctly.
4397
4398 Tue Mar 24 12:21:55 1998  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
4399
4400         * decl.c (init_decl_processing): Set TYPE_PRECISON for bools to 1.
4401
4402 Tue Mar 24 12:21:48 1998  Jim Wilson  <wilson@cygnus.com>
4403
4404         * decl.c (init_decl_processing): Initialize TYPE_MAX_VALUE for
4405         boolean_type_node to 1.
4406
4407 Tue Mar 24 10:23:47 1998  Mark Mitchell  <mmitchell@usa.net>
4408
4409         * error.c (dump_expr): Remove unused variable `l'.
4410
4411         * pt.c (for_each_template_parm): New function, created by
4412         converting uses_template_parms.
4413         (tree_fn_t): New typedef.
4414         (uses_template_parms): Use it.
4415         (mark_template_parm): New function.
4416         (push_template_decl): Check that the argument list of a partial
4417         specialization uses all the template parameters.
4418
4419         * Make-lang.in (c++filt): Don't delete cxxmain.c after we're done
4420         with it; we might want it for debugging.
4421         * cp-tree.h (type_unification): Change interface.
4422         * class.c (finish_struct_1): Skip nested template types, just like
4423         ordinary nested types.
4424         (instantiate_type): Use new interface to type_unification.
4425         * lex.c (init_lex): Add __sz as opname for sizeof.
4426         * method.c (build_overload_scope_ref): New function.
4427         (build_overload_int): Handle complex expressions.  Set
4428         numeric_output_need_bar if necessary.
4429         (build_overload_value): Handle non-PARM_DECL nodes; this
4430         routine is now used by build_overload_int.  Remove some
4431         assignments to numeric_output_need_bar.  Use
4432         build_overload_scope_ref.
4433         (build_qualified_name): Note that some template mangled names end
4434         with digits, and set numeric_output_need_bar appropriately.  Use
4435         build_underscore_int.
4436         * pt.c (unify): Change interface.
4437         (type_unification_real): Likewise.
4438         (determine_specialization): Use new interfaces.
4439         (tsubst): Deal gracefully with situations in which the argument
4440         vector is not fully filled.
4441         (fn_type_unification): Use new interfaces.
4442         (type_unification): Likewise.  Remove NOP_EXPR hack.
4443         (type_unification_real): Likewise.
4444         (unify): Likewise.  Deal with unification of complex expresions.
4445
4446 Mon Mar 23 12:24:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
4447
4448         * pt.c (complete_template_args): Initialize skip properly.
4449
4450         * decl.c (make_typename_type): Revert.
4451         (make_implicit_typename): Remove.
4452         (lookup_name_real): Don't call it.  Call lookup_field if we see a
4453         TYPE_DECL from a template base.
4454         * search.c (lookup_field): Do implicit typename stuff.
4455
4456 Sun Mar 22 00:50:42 1998  Nick Clifton  <nickc@cygnus.com>
4457                           Geoff Noer    <noer@cygnus.com>
4458
4459         * Makefile.in: Various fixes for building cygwin32 native toolchains.
4460         * Make-lang.in: Likewise.
4461
4462 Fri Mar 20 18:07:39 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
4463
4464         * pt.c (tsubst, TEMPLATE_TEMPLATE_PARM): Simplify.
4465
4466 Fri Mar 20 10:42:07 1998  Jason Merrill  <jason@yorick.cygnus.com>
4467
4468         * decl.c (make_implicit_typename): Rewrite removed code.
4469         (make_typename_type): Call it if the type we look up comes from
4470         a base that uses template parms.
4471
4472         * pt.c (complete_template_args): Rewrite.
4473         (tsubst, FUNCTION_DECL): Use it.
4474
4475 Fri Mar 20 08:12:43 1998  H.J. Lu  (hjl@gnu.org)
4476
4477         * semantics.c (finish_asm_stmt): Fix combine strings. Call
4478         c_expand_asm_operands () if output_operands, input_operands or
4479         clobbers is not NULL_TREE.
4480
4481 Fri Mar 20 00:10:19 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
4482
4483         * pt.c (complete_template_args): New function.
4484         (get_bindings): Deal with specializations of function templates
4485         with return type containing parameters from outer class 
4486         templates.
4487         (tsubst, TEMPLATE_TEMPLATE_PARM): When reducing parameter level,
4488         substitute arguments and compose a new type.
4489
4490 Thu Mar 19 19:01:48 1998  Mark Mitchell  <mmitchell@usa.net>
4491
4492         * pt.c (tsubst): Clear DECL_PENDING_INLINE_INFO for new
4493         FUNCTION_DECLs.
4494
4495 Thu Mar 19 11:51:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
4496
4497         * decl.c (make_implicit_typename): Lose useless code.
4498
4499         * call.c (standard_conversion): Handle A* -> const A* properly.
4500
4501         * pt.c (get_bindings_real): Rename from get_bindings.  Add 
4502         check_rettype parm.
4503         (get_bindings): Pass 1.
4504         (get_bindings_overload): Pass 0.
4505
4506 Wed Mar 19 09:08:12 1998  Mark Mitchell  <mmitchell@usa.net>
4507
4508         * pt.c (check_explicit_specialization): When reverting a static
4509         member function, also remove the `this' parameter from
4510         last_function_parms.
4511
4512 Thu Mar 19 02:27:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
4513
4514         * pt.c (tsubst_copy, CONST_DECL): Don't bother tsubsting
4515         a function context.
4516
4517         * decl.c (store_bindings): Use free_binding_vecs.
4518         (pop_from_top_level): Likewise.
4519
4520 Wed Mar 18 12:41:43 1998  Jason Merrill  <jason@yorick.cygnus.com>
4521
4522         * decl.c (make_implicit_typename): Only change the type of a 
4523         TYPENAME_TYPE.
4524
4525 Wed Mar 18 10:09:51 1998  Mark Mitchell  <mmitchell@usa.net>
4526
4527         * semantics.c: New file, containing routines to perform the
4528         semantic phase of parsing.
4529         * parse.y: Use it.
4530         * pt.c (tsubst_expr): Likewise.
4531         * cp-tree.h: Declare the various functions in semantics.c.
4532         Provide macros to access _STMT tree nodes.
4533         * cp-tree.def: Add ASM_STMT tree node.
4534         * Makefile.in, Make-lang.in: Add dependencies on and for
4535         semantics.c.
4536         
4537 Wed Mar 18 00:24:10 1998  Jason Merrill  <jason@yorick.cygnus.com>
4538
4539         * pt.c (push_template_decl): Only check primary templates.
4540
4541         * pt.c (check_explicit_specialization): Complain about default args
4542         in explicit specialization.
4543
4544         * parse.y (nomods_initdcl0): Also call cp_finish_decl for a 
4545         constructor_declarator.
4546
4547 Tue Mar 17 14:44:54 1998  Mark Mitchell  <mmitchell@usa.net>
4548
4549         * typeck2.c (build_x_arrow): Don't crash when an aggregate type
4550         has no overloaded operator ->.
4551
4552         * call.c (build_field_call): Don't crash when presented with a
4553         field that is actually a nested type.
4554
4555         * decl.c (pushtag): Deal with friend class injection in local
4556         classes.
4557
4558         * call.c (build_object_call): Don't crash if OBJ is a
4559         pointer-to-member-function.
4560
4561 Tue Mar 17 11:40:26 1998  Jason Merrill  <jason@yorick.cygnus.com>
4562
4563         * pt.c (push_template_decl): Complain about template with C linkage,
4564         anonymous template class.
4565
4566 Mon Mar 16 12:10:39 1998  Jason Merrill  <jason@yorick.cygnus.com>
4567
4568         * class.c (pushclass): Only use the mi_matrix stuff #ifdef MI_MATRIX.
4569         * search.c: Likewise.
4570
4571         * lex.c (do_pending_defargs): Only call 
4572         maybe_{begin,end}_member_template_processing for FUNCTION_DECLs.
4573
4574         * parse.y (initdcl0_innards): Move maybeasm back into initdcl0 et al.
4575
4576 Mon Mar 16 10:47:22 1998  Mark Mitchell  <mmitchell@usa.net>
4577
4578         * parse.y: Deal with CONSTRUCTORS in new_initializers.
4579
4580 Mon Mar 16 10:54:21 1998  Mark Mitchell  <mmitchell@usa.net>
4581
4582         * pt.c (tsubst_copy): Deal with BIND_EXPR in a way that more
4583         closely mimics the behavior in parse.y.
4584         (tsubst_expr): Return the resuting BLOCK when making a tsubst'ing
4585         into a compound statement.
4586         
4587 Sun Mar 15 02:07:26 1998  Jason Merrill  <jason@yorick.cygnus.com>
4588
4589         * cp-tree.h (TEMPLATE_PARMS_FOR_INLINE): New macro.
4590         * pt.c (inline_needs_template_parms): New fn.
4591         (original_template): New fn.
4592         (push_inline_template_parms_recursive): New fn.
4593         (maybe_begin_member_template_processing): Use them.
4594         (maybe_end_member_template_processing): Likewise.
4595         (is_member_or_friend_template): Rename to is_member_template.
4596         Member functions of local classes are never member templates.
4597
4598 Sun Mar 15 01:14:22 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
4599
4600         * lex.c (do_identifier): Handle TEMPLATE_DECL that was
4601         added in the class scope to catch redefinition error.
4602
4603         * pt.c (reduce_template_parm_level): Also copy 
4604         the DECL_TEMPLATE_PARMS field.
4605
4606 Sun Mar 15 10:54:08 1998  Mark Mitchell  <mmitchell@usa.net>
4607
4608         * pt.c (tsubst): Clear TYPE_REFERENCE_TO when creating a
4609         reduced-level template type parameter.
4610
4611 Sun Mar 15 12:26:02 1998  Manfred Hollstein  <manfred@s-direktnet.de>
4612
4613         * cp-tree.h (struct lang_decl_flags): Add needs_final_overrider.
4614         (DECL_NEEDS_FINAL_OVERRIDER_P): New macro.
4615         * class.c (override_one_vtable): Set DECL_NEEDS_FINAL_OVERRIDER_P.
4616         * decl.c (duplicate_decls): Propagate it.
4617         * typeck2.c (abstract_virtuals_error): Use two loops to emit
4618         abstract virtual functions and virtual functions which need a
4619         final overrider separately.
4620         
4621 Thu Mar 12 09:39:40 1998  Manfred Hollstein  <manfred@s-direktnet.de>
4622
4623         * lang-specs.h: Properly put brackets around array elements in 
4624         initializer.
4625
4626         * typeck.c (build_binary_op_nodefault): Correctly place parens around
4627         && and || in expression.
4628
4629 Thu Mar 12 09:26:04 1998  Manfred Hollstein  <manfred@s-direktnet.de>
4630
4631         * call.c (default_parm_conversions): Remove prototype definition.
4632         (build_method_call): Remove unused variable result.
4633
4634         * cvt.c (ocp_convert): Remove unused variable conversion.
4635
4636         * decl2.c (ambiguous_decl): Add explicit parameter definition for name.
4637
4638         * except.c (do_unwind): #if 0 definition of unused variables fcall
4639         and next_pc.
4640
4641         * expr.c (extract_scalar_init): #if 0 prototype and function 
4642         definition.
4643
4644         * init.c (expand_aggr_init_1): Remove unused variable init_type.
4645         (build_new_1): Remove unused variable t.
4646
4647         * pt.c (instantiate_class_template): Remove unused variable newtag;
4648         cast called function return value to void.
4649         (do_decl_instantiation): Remove unused variables name and fn.
4650
4651         * tree.c (get_type_decl): Add default return to shut up compiler from
4652         complaining control reaches end of non-void function.
4653
4654         * typeck.c (build_x_conditional_expr): Remove unused variable rval.
4655
4656 Thu Mar 12 09:12:15 1998  Manfred Hollstein  <manfred@s-direktnet.de>
4657
4658         * call.c (default_parm_conversions): Remove prototype definition.
4659         (build_method_call): Remove unused variable result.
4660         (build_over_call): Add default case in enumeration switch.
4661
4662 Thu Mar 12 08:39:13 1998  Manfred Hollstein  <manfred@s-direktnet.de>
4663
4664         * decl2.c (lang_decode_option): Change j's type to size_t.
4665
4666         * tree.c (layout_vbasetypes): record_align and desired_align are of
4667         type unsigned int; const_size and nonvirtual_const_size likewise.
4668
4669 Wed Mar 11 07:25:20 1998  Mark Mitchell  <mmitchell@usa.net>
4670
4671         * parse.y (new_initializer): Make sure all initializers are
4672         lists.
4673
4674 Tue Mar 10 07:32:36 1998  Mark Mitchell  <mmitchell@usa.net>
4675
4676         * decl2.c (import_export_decl): Mark tinfo functions for
4677         cv-qualified versions of class types as DECL_NOT_REALLY_EXTERN.
4678
4679 Fri Mar  6 23:27:35 1998  Jeffrey A Law  (law@cygnus.com)
4680
4681         * method.c: Fix typo.
4682
4683 Fri Mar  6 10:06:59 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4684
4685         * method.c: Include "system.h" to get stdlib.h, stdio.h,
4686         ctype.h, string.h, etc.
4687         (issue_nrepeats): Add default case in enumeration switch.
4688         (check_btype): Likewise.
4689         (process_overload_item): Likewise.
4690          
4691         * Makefile.in (method.o): Depend on system.h.
4692
4693 Wed Mar  4 22:26:53 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
4694
4695         * lex.c (do_scoped_id): Fix parenthesizing.
4696
4697 Wed Mar  4 12:11:53 1998  Michael Tiemann  <tiemann@axon.cygnus.com>
4698
4699         * rtti.c (get_tinfo_fn_dynamic): If this function is called an
4700         FLAG_RTTI is unset, initialize type info machinery and continue
4701         with FLAG_RTTI enabled.
4702         (get_typeid): Ditto.
4703
4704 Wed Mar  4 11:47:55 1998  Jason Merrill  <jason@yorick.cygnus.com>
4705
4706         * typeck.c (unary_complex_lvalue): &D::i has type B::* if i comes
4707         from B.
4708
4709 Wed Mar  4 11:28:08 1998  Mark Mitchell  <mmitchell@usa.net>
4710
4711         * pt.c (finish_member_template_decl): Deal more gracefully with
4712         invalid declarations.
4713
4714 Tue Mar  3 01:38:17 1998  Jason Merrill  <jason@yorick.cygnus.com>
4715
4716         * cvt.c, decl.c, decl2.c, init.c, rtti.c, typeck.c, typeck2.c,
4717         cp-tree.h: Clean up more old overloading code, old RTTI code, and
4718         some formatting quirks.
4719
4720         * call.c, class.c, cp-tree.h, cvt.c, decl.c, init.c, lex.c,
4721         method.c, pt.c, ptree.c, typeck.c: Remove support for 
4722         -fno-ansi-overloading and overloading METHOD_CALL_EXPR.
4723         * class.h: Remove.
4724         * Makefile.in: Adjust.
4725
4726         * pt.c (unify): Don't allow reduced cv-quals when strict.
4727
4728         * call.c, class.c, pt.c, cp-tree.h: Remove nsubsts parm from
4729         *type_unification* and unify.
4730
4731 Mon Mar  2 12:11:06 1998  Jason Merrill  <jason@yorick.cygnus.com>
4732
4733         * parse.y (explicit_template_type): Remove TEMPLATE keyword.
4734         (nested_name_specifier): And add it before this use.
4735         (typename_sub0): And this use.  Also add use without the keyword.
4736         (typename_sub1): Likewise.
4737         * pt.c (instantiate_class_template): Don't actually instantiate 
4738         anything if our type uses template parms.
4739
4740 Mon Mar  2 11:04:59 1998  Jim Wilson  <wilson@cygnus.com>
4741
4742         * decl.c (start_function): Don't call temporary_allocation for a
4743         nested function.
4744
4745 Sun Mar  1 21:06:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
4746
4747         * pt.c (instantiate_class_template): Don't mess with friends if
4748         our type uses template parms.
4749
4750 Sat Feb 28 12:06:44 1998  Jason Merrill  <jason@yorick.cygnus.com>
4751
4752         * parse.y (nested_name_specifier): Use explicit_template_type.
4753         (typename_sub): Allow a template_type, an explicit_template_type,
4754         or an implicit template type at the end.
4755         * lex.c (yyprint): Handle a PTYPENAME being a TEMPLATE_DECL.
4756         * decl.c (make_typename_type): Handle template-id where the name
4757         is a TEMPLATE_DECL.
4758         * call.c (build_scoped_method_call): Handle member template 
4759         destructor call.
4760         * pt.c (tsubst_copy, METHOD_CALL_EXPR): Don't assume a member 
4761         destructor is represented by the type.
4762
4763         * cp-tree.h (TYPENAME_TYPE_FULLNAME): New macro.
4764         * parse.y (nested_name_specifier): Add 'template' case.
4765         (explicit_template_type): New rule.
4766         (typename_sub): Use it.
4767         * decl.c (make_typename_type): Handle getting a template-id for NAME.
4768         * pt.c (tsubst): Likewise.
4769
4770 Fri Feb 27 11:17:50 1998  Jason Merrill  <jason@yorick.cygnus.com>
4771
4772         * pt.c (add_to_template_args): Fix thinko.
4773         (instantiate_class_template): Call it later.
4774
4775         * pt.c (get_class_bindings): Add outer_args parm.
4776         (most_specialized_class): Likewise.
4777         (instantiate_class_template): Pass it.
4778         (more_specialized_class): Likewise.
4779         (lookup_template_class): Get context from template if none
4780         was specified.
4781         (finish_member_template_decl): Don't do anything with a
4782         partial specialization.
4783         * decl2.c (check_member_template): Use IS_AGGR_TYPE instead of
4784         AGGREGATE_TYPE_P.
4785         * class.c (finish_struct): Member class templates have already been
4786         checked for name clashes.
4787         * decl.c (pushdecl_with_scope): Handle pushing at class level.
4788
4789 Fri Feb 27 02:25:16 1998  Jason Merrill  <jason@yorick.cygnus.com>
4790
4791         * pt.c (tsubst, TEMPLATE_DECL): Support member class templates.
4792         (tsubst, *_PARM): Support multiple levels of template classes.
4793         (instantiate_class_template): Look up the pattern from the
4794         original template.
4795         (lookup_template_class): Handle getting a template for d1.
4796         (push_template_decl): Correct setting of 'primary'.
4797         (reduce_template_parm_level): Add 'levels' parm.
4798         (finish_member_template_decl): Support member class templates.
4799         (template_class_depth): Handle multiple levels.
4800         * parse.y (component_decl_1, fn.def2): Remove member template case.
4801         (component_decl): Add member template cases.
4802         * decl2.c (check_member_template): We now handle member template
4803         classes.
4804         * decl.c (pushtag): Handle member templates.
4805         * method.c (do_inline_function_hair): Don't touch
4806         IDENTIFIER_GLOBAL_VALUE.
4807         * init.c (build_offset_ref): If name isn't an identifier, just 
4808         return it.
4809         * spew.c (yylex): Handle PTYPENAME like TYPENAME.
4810
4811         * typeck.c (get_delta_difference): Do adjust for conversions to
4812         and from virtual base.
4813
4814 Wed Feb 25 09:51:29 1998  Jason Merrill  <jason@yorick.cygnus.com>
4815
4816         * typeck.c (get_delta_difference): Give hard error for conversion
4817         from virtual base.
4818
4819         * cp-tree.h: Tweak formatting.
4820
4821 Wed Feb 25 00:35:33 1998  Jason Merrill  <jason@yorick.cygnus.com>
4822
4823         * decl.c (push_namespace): Handle redeclaration error.
4824
4825         * cp-tree.h (IDENTIFIER_NAMESPACE_VALUE): New macro.
4826         (IDENTIFIER_NAMESPACE_BINDINGS): New macro.
4827         (NAMESPACE_BINDING): New macro.
4828         (IDENTIFIER_GLOBAL_VALUE): Use NAMESPACE_BINDING.
4829         * *.c: Use them.
4830
4831         * pt.c (push_template_decl): Use innermost_args.
4832
4833         * decl.c (get_unique_name): Tweak from earlier in the name.
4834
4835 Tue Feb 24 22:15:04 1998  Martin von Loewis  <loewis@informatik.hu-berlin.de>
4836
4837         * cp-tree.def: Add CPLUS_BINDING node.
4838         * cp-tree.h (tree_binding): new struct
4839         (BINDING_SCOPE, BINDING_VALUE): new macros
4840         (current_namespace, global_namespace): declare extern
4841         (struct lang_decl_flags): new field in_namespace
4842         (DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): new macros
4843         (DECL_NAMESPACE, SET_DECL_NAMESPACE): new macros
4844         (TREE_INDIRECT_USING): new macro
4845         * decl2.c (current_namespace, global_namespace): Declare.  The
4846         value is a NAMESPACE_DECL now, not a TREE_LIST.
4847         (is_namespace_ancestor, namespace_ancestor):new static functions.
4848         (add_using_namespace, ambiguous_decl): likewise.
4849         (lookup_using_namespace): new support function for lookup_name.
4850         (qualified_lookup_using_namespace): new support function for
4851         do_scoped_id and lookup_namespace_name
4852         (get_namespace_id): mark as obsolete.
4853         (current_namespace_id): Likewise.
4854         (do_namespace_alias): Implement.
4855         (do_using_directive): Implement as call to add_using_namespace.
4856         * decl.c (binding_for_name): new function.
4857         (push_namespace, pop_namespace): implement.
4858         (push_decl): don't install a FUNCTION_DECL in the global branch.
4859         (lookup_namespace_name): implement using qualified lookup.
4860         (lookup_name_real): For global scoping, lookup in
4861         global_namespace. For namespace scoping, lookup in given
4862         namespace. For unscoped lookup, iterate over namespace,
4863         considering using directives.
4864         (init_decl_processing): initialize global_namespace.
4865         (grokvardecl): Build assembler name as static name for globals.
4866         (grokdeclarator): Remove old namespace mangling.
4867         (xref_tag): When installing a global binding for the
4868         tag, make sure we have an identifier.
4869         * method.c (build_overload_nested_name): mangle namespaces.
4870         (build_qualified_name): Likewise.
4871         (build_decl_overload_real): Likewise.
4872         * lex.c (build_lang_decl): set namespace for new declaration to
4873         current_namespace.
4874         (do_scoped_id): find global names in global or current
4875         namespace, or using qualified namespace lookup, depending on
4876         context.
4877         * init.c (build_member_call): When scope is namespace, use
4878         build_x_function_call instead.
4879         (build_offset_ref): When scope is namespace, collapse processing
4880         to lookup_namespace_name instead.
4881         * error.c (dump_decl): Support NAMESPACE_DECL.
4882         * decl.c (pushdecl): Bind globals to current namespace.
4883         (push_overloaded_decl): Likewise.
4884         (lookup_tag): Likewise.
4885         (lookup_name_current_level): Likewise.
4886         (xref_tag): Likewise.
4887         (start_function): Likewise.
4888         * lex.c (do_identifier): Likewise.
4889         (identifier_typedecl_value): Likewise.
4890         (real_yylex): Likewise.
4891         * method.c (do_inline_function_hair): Likewise.
4892         * parse.y (unscoped): Likewise.
4893         * pt.c (check_explicit_specialization): Likewise.
4894         (lookup_template_class): Likewise.
4895         * rtti.c (call_void_fn): Likewise.
4896         * sig.c (build_sigtable): Likewise.
4897         * ptree.c (lang_print_xnode): New function.
4898
4899 Tue Feb 24 01:40:24 1998  Jason Merrill  <jason@yorick.cygnus.com>
4900
4901         * pt.c (instantiate_class_template): Don't instantiate if pedantic
4902         and the args use template parms.
4903
4904         * pt.c (push_tinst_level): If the instantiaton uses template parms,
4905         fail silently.
4906         * decl.c (xref_basetypes): Do call complete_type for basetypes
4907         that involve template parameters.
4908
4909 Tue Feb 24 00:36:43 1998  Jason Merrill  <jason@yorick.cygnus.com>
4910
4911         * typeck2.c (process_init_constructor): Fix labeled init check.
4912
4913 Mon Feb 23 05:08:55 1998  Jason Merrill  <jason@yorick.cygnus.com>
4914
4915         * pt.c, call.c, decl.c, method.c, cp-tree.h: Remove unused NARGS
4916         argument to tsubst and friends.
4917
4918         * pt.c (tsubst, FUNCTION_DECL): Tidy.
4919
4920         * typeck.c (build_x_function_call): Handle static member function
4921         templates like non-templates.  Handle friend templates like normal
4922         function templates.
4923         * pt.c (tsubst, *_PARM): Don't use orig_level.
4924         (get_bindings): Don't call add_to_template_args.
4925         (instantiate_template): Likewise.
4926         (tsubst, FUNCTION_DECL): Call add_to_template_args as appropriate.
4927         * ptree.c (print_lang_type): Print index/level for template parms.
4928
4929 Mon Feb 23 02:52:29 1998  Mark Mitchell  <mmitchell@usa.net>
4930
4931         * Make-lang.in (cc1plus): Note that cc1plus depends on
4932         cp/cp-tree.h and cp/cp-tree.def.
4933         
4934         * cp-tree.def (TEMPLATE_CONST_PARM): Remove.
4935         (TEMPLATE_PARM_INDEX): New tree code, used to indicate a
4936         position in a template parameter list.
4937         * cp-tree.h (template_parm_index): New structure, used as the tree
4938         structure for a TEMPLATE_PARM_INDEX.
4939         (TEMPLATE_PARM_IDX): New macro.
4940         (TEMPLATE_PARM_LEVEL): Likewise.
4941         (TEMPLATE_PARM_DESCENDANTS): Likewise.
4942         (TEMPLATE_PARM_ORIG_LEVEL): Likewise.
4943         (TEMPLATE_PARM_DECL): Likewise.
4944         (TEMPLATE_TYPE_PARM_INDEX): Likewise.
4945         (TEMPLATE_TYPE_ORIG_LEVEL): Likewise.
4946         (TEMPLATE_TYPE_DECL): Likewise.
4947         (TEMPLATE_CONST_IDX): Remove.
4948         (TEMPLATE_CONST_LEVEL): Likewise.
4949         (TEMPLATE_CONST_SET_INFO): Likewise.
4950         (TEMPLATE_TYPE_SET_INFO): Likewise.
4951         (TEMPLATE_TYPE_IDX): Redefine in terms of TEMPLATE_PARM_INDEX
4952         node.
4953         (TEMPLATE_TYPE_LEVEL): Likewise.
4954         * decl.c (decls_match): Call comp_template_parms, rather than
4955         expanding it inline.
4956         (duplicate_decls): If two template declarations are being merged,
4957         then their TEMPLATE_INFOs should be merged as well.
4958         (grokfndecl): Save template-id information when declaring a friend
4959         with explicit template arguments.  Pass arguments to
4960         check_explicit_specialization via correct convention; at some
4961         point check_explicit_specialization changed, but these call-sites
4962         did not.
4963         (grokdeclarator): Tidy up slightly.
4964         * decl2.c (check_classfn): Tidy up slightly.  Don't assume that
4965         two template functions with the same DECL_ASSEMBLER_NAME the same,
4966         since the names are not yet mangled.
4967         * error.c (dump_decl): Use TEMPLATE_PARM_INDEX instead of
4968         TEMPLATE_CONST_PARM. 
4969         (dump_expr): Likewise.  Use the TEMPLATE_PARM_DECL to get at the
4970         decl for a non-type parameter, rather than printing `<tparm ...>'.
4971         * friend.c (is_friend): Handle TEMPLATE_DECL friends.
4972         (do_friend): Deal with template friends.
4973         * lex.c (do_pending_inlines): Call
4974         maybe_begin_member_template_processing, rather than
4975         conditionally calling begin_member_template_processing.
4976         (process_next_inline): Likewise.  Call
4977         maybe_end_member_template_processing, rather than
4978         conditionally calling end_member_template_processing.
4979         (do_pending_defargs): Likewise.
4980         (do_identifier): Use TEMPLATE_PARM_INDEX instead of
4981         TEMPLATE_CONST_PARM.  
4982         * method.c (build_mangled_template_parm_index): New function.
4983         (build_overload_value): Use it.
4984         (build_overload_name): Likewise.
4985         * pt.c (finish_member_template_decl): Allow friend declarations.
4986         (template_class_depth): New function.
4987         (is_member_template): Rename, and modify, to become...
4988         (is_member_or_friend_template): New function.
4989         (end_member_template_processing): Rename, and modify, to become...
4990         (maybe_end_member_template_processing).
4991         (build_template_parm_index): New function.
4992         (reduce_template_parm_level): New function.
4993         (process_template_parm): Modify to use build_template_parm_index.
4994         (push_template_decl): Deal with friend templates.
4995         (uses_template_parms): Use TEMPLATE_PARM_INDEX instead of
4996         TEMPLATE_CONST_PARM.
4997         (tsubst_friend_function): New function.
4998         (instantiate_class_template): Generate the DECL_FRIENDLIST
4999         for a new instantiation by using tsubst_friend_function rather
5000         than just tsubst.
5001         (tsubst): Don't tsubst into a type which is a TEMPLATE_DECL.
5002         Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM, and the
5003         appropriate new macros.  Use reduce_template_parm_level to
5004         generate lower-level template parameters.  Handle tsubst'ing into
5005         TEMPLATE_DECLS that declare TEMPLATE_TEMPLATE_PARMS.  Don't forget
5006         to tsubst the DECL_CONTEXT and DECL_CLASS_CONTEXT of newly created
5007         templates.  Similarly for the template parameters for a new
5008         template.
5009         (tsubst_copy): Tidy up slightly.  Use TEMPLATE_PARM_INDEX instead
5010         of TEMPLATE_CONST_PARM.  Handle TYPE_DECLs by tsubsting into them.
5011         (unify): Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM.  
5012         (get_bindings): Call add_to_template_args if necessary.
5013         (instantiate_decl): Handle instantiations of friend templates.
5014         * search.c (lookup_field_1): Don't treat the TYPE_FIELDS of a
5015         TEMPLATE_TYPE_PARM as a list of fields; it's not!
5016         * spew.c (yylex): Do a little manual constant propogation to
5017         clarify the code.
5018         
5019 Sun Feb 22 19:53:29 1998  Jeffrey A Law  (law@cygnus.com)
5020
5021         * error.c: Include sys/types.h.
5022
5023 Thu Feb 19 14:49:09 1998  Jeffrey A Law  (law@cygnus.com)
5024
5025         * method.c (build_mangled_name): Start CPP directives in column zero.
5026
5027 Thu Feb 19 10:36:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
5028
5029         * typeck2.c (process_init_constructor): Sorry about non-trivial
5030         labeled initializers.
5031         * parse.y (initlist): Reenable labeled initializers.
5032
5033 Thu Feb 19 10:15:55 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
5034
5035         * pt.c (coerce_template_parms) Add a new parameter, is_tmpl_parm,
5036         all callers changed.  Rely on the new parameter instead of arg 
5037         being a TREE_LIST when determine whether we are working inside
5038         template template parameter.  Clean up is_type test.
5039         
5040 Thu Feb 19 10:04:12 1998  Jason Merrill  <jason@yorick.cygnus.com>
5041
5042         * cvt.c (cp_convert_to_pointer): Preserve TREE_CONSTANT.
5043         * typeck2.c (initializer_constant_valid_p): Allow conversions
5044         between pointers and refrerences.
5045
5046 1998-02-19  Brendan Kehoe  <brendan@cygnus.com>
5047
5048         * typeck.c (build_unary_op): Only warn about incr/decr a pointer
5049         if pedantic || warn_pointer_arith.
5050
5051 Thu Feb 19 09:37:21 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
5052
5053         * pt.c (unify): Handle TEMPLATE_DECL.
5054
5055 1998-02-18  Brendan Kehoe  <brendan@cygnus.com>
5056
5057         * cp-tree.h (strip_attrs): Remove decl.
5058
5059 1998-02-18  Doug Evans  <devans@cygnus.com>
5060
5061         * decl.c (duplicate_decls): Call merge_machine_decl_attributes.
5062         Update olddecl's attributes too.
5063         (strip_attrs): Remove function.
5064         * typeck.c (common_type): Call merge_machine_type_attributes.
5065
5066 Tue Feb 17 14:07:52 1998  Mark Mitchell  <mmitchell@usa.net>
5067
5068         * parse.y (initdcl0_innards): New grammar symbol.
5069         (nomods_initdecls, nomods_initdcl0): Change type from itype to
5070         none, since the resulting value is never used.
5071         (parse_decl): New function.
5072         (datadef): Remove redundant actions.
5073         (initdcl0, notype_initdcl0, nomods_initdcl0): Use initdcl0_innards.
5074         * parse.c: Regenerated.
5075         
5076 Tue Feb 17 11:54:16 1998  Jason Merrill  <jason@yorick.cygnus.com>
5077
5078         * parse.y (simple_stmt): Use getdecls() to check for decl.
5079
5080 Sat Feb 14 11:50:51 1998  Manfred Hollstein  <manfred@s-direktnet.de>
5081
5082         * Make-lang.in (DEMANGLER_INSTALL_NAME, DEMANGLER_CROSS_NAME): New 
5083         macros.
5084         (c++.install-common): Install c++filt properly as native or as cross
5085         variant.
5086         (c++.uninstall): Add c++filt.
5087
5088 Fri Feb 13 14:55:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
5089
5090         * call.c (standard_conversion): Fix multi-level ptr conversions.
5091
5092 Fri Feb 13 14:06:22 1998  Mike Stump  <mrs@wrs.com>
5093
5094         * init.c (build_new): Propagate error_mark_node up.
5095
5096 Fri Feb 13 13:24:32 1998  Jason Merrill  <jason@yorick.cygnus.com>
5097
5098         * parse.y (simple_stmt): If the condition isn't a declaration, 
5099         start the controlled block after the test.
5100
5101 Fri Feb 13 02:26:10 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
5102
5103         * call.c (build_over_call): Convert builtin abs, labs and fabs to
5104         tree-codes.
5105         * decl.c (init_decl_processing): Reenable abs, labs and fabs as
5106         builtins.
5107
5108 Fri Feb 13 01:36:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
5109
5110         * call.c (standard_conversion): A BASE_CONV replaces an RVALUE_CONV.
5111
5112 Fri Feb 13 00:21:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
5113
5114         * cp-tree.h: Add access_protected_virtual_node.
5115         * class.c (init_class_processing): Initialize it.
5116         * decl.c (xref_basetypes): Use it.
5117         * parse.y (base_class_access_list): Likewise.
5118
5119         * Make-lang.in (DEMANGLER_PROG): Add $(exeext).
5120         (c++.install-common): Install c++filt.
5121
5122 Thu Feb 12 12:46:51 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
5123
5124         * decl.c (shadow_tag): Give error for typedef-ing built-in types.
5125
5126 Wed Feb 11 23:28:05 1998  Mark Mitchell  <mmitchell@usa.net>
5127
5128         * call.c (reference_binding): Use comptypes when comparing
5129         TYPE_MAIN_VARIANTS to handle non-canonical array/index types.
5130
5131 Wed Feb 11 16:42:04 1998  Mark Mitchell  <mmitchell@usa.net>
5132
5133         * tree.c (is_overloaded_fn): Use really_overloaded_fn.
5134         (really_overloaded_fn): Move check here from is_overloaded_fn. 
5135         (get_first_fn): Use really_overloaded_fn and is_overloaded_fn.
5136
5137 Wed Feb 11 15:54:18 1998  Mark Mitchell  <mmitchell@usa.net>
5138
5139         * typeck.c (build_ptrmemfunc): Type-check pointer-to-member
5140         conversions.
5141
5142 Mon Feb  9 22:23:31 1998  Mark Mitchell  <mmitchell@usa.net>
5143
5144         * cp-tree.h (push_template_decl): Return the decl passed in, or an
5145         equivalent duplicate.
5146         * decl.c (pushtag): Use the return value from push_template_decl.
5147         (duplicate_decls): When duplicating a template declaration, merge
5148         the DECL_TEMPLATE_RESULTs as well.
5149         (make_implicit_typename): Don't try to dive into typename types to
5150         find a context for making a new implicit typename.
5151         (start_decl): Use the return value from push_template_decl.
5152         (grokdeclarator): Complain about declarations list `const operator
5153         int'.  Since we don't correctly handle in-class initializations of
5154         non-static data members, complain about this (now illegal)
5155         practice.  Issue an error for initializations of non-const statics
5156         since that is illegal as well, and since we don't handle that case
5157         correctly either.
5158         (start_function): Use the return value from push_template_decl.
5159         (start_method): Likewise.
5160         * decl2.c (grokfield): Likewise.  Since the change to
5161         grokdeclarator ensures that all initialized fields are in fact
5162         static, remove a redundant test for TREE_PUBLIC.
5163         * parse.y (initlist): Disable labeled initializers since they do
5164         not work as per the documentation, and since they do not use the
5165         same syntax as the C front end.
5166         * pt.c (push_template_decl): Return the decl passed in, or an
5167         equivalent duplicate.
5168         (lookup_template_class): When searching in a nested context,
5169         use the right arguments.
5170         (uses_template_parms): Handle the DECL_INITIAL for a CONST_DECL.
5171         * typeck.c (build_component_ref): Assign the correct type to the
5172         result of build_vfn_ref.
5173         
5174 Tue Feb 10 23:56:46 1998  Jason Merrill  <jason@yorick.cygnus.com>
5175
5176         * pt.c (convert_nontype_argument): Fix typo.
5177         (check_explicit_specialization): Allow old-style specialization
5178         of class template members.
5179
5180 Tue Feb 10 20:36:52 1998  Jason Merrill  <jason@yorick.cygnus.com>
5181                           Manfred Hollstein  <manfred@s-direktnet.de>
5182
5183         * decl.c (grokdeclarator): Use DECL_USE_TEMPLATE instead
5184         when deciding to override DECL_ASSEMBLER_NAME.
5185
5186 Tue Feb 10 15:30:55 EST 1998 Andrew MacLeod <amacleod@torpedo.to.cygnus.com>
5187
5188         * decl2.c (lang_f_options): Add -fsquangle to option processing list.
5189         * cp-tree.h (flag_do_squangling): Add declaration.
5190         * lang-options.h: Add -fsquangle and -fno-squangle.
5191         * method.c: Add macros and static variables for squangling.
5192         (build_overload_name): Rename to build_mangled_name, add logic for B 
5193         compression, and split into process_modifiers and 
5194         process_overload_item.
5195         (process_modifiers): New function, to handle constant, reference, 
5196         and pointer types. 
5197         (process_overload_item): New function, handles issue of type codes.
5198         (build_overload_name): New function, start squangling and call 
5199         build_mangled_name.
5200         (ALLOCATE_TYPEVEC, DEALLOCATE_TYPEVEC): Remove macro and expand inline.
5201         (start_squangling): New function to initialize squangling structs.
5202         (end_squangling): New function to destroy squangling structs.
5203         (nrepeats): Rename variable to Nrepeats.
5204         (issue_nrepeats): New function for issuing 'n' type repeats.
5205         (check_ktype): New function to check for type K name compression.
5206         (build_overload_nested_name): Add a check for K name compression.
5207         (build_qualified_name): Add a check for K name compression and don't
5208         use DECL_ASSEMBLER_NAME when squangling is on.
5209         (check_btype): New function, checks for B type compression.
5210         (build_static_name, build_decl_overload_real): Initiate squangling.
5211         (build_typename_overload, build_overload_with_type): Initiate 
5212         squangling
5213
5214 Sun Feb  8 23:47:38 1998  scott snyder  <sss@d0linux01.fnal.gov>
5215
5216         * method.c (make_thunk): Avoid name buffer overflow.
5217
5218 Sat Feb  7 16:48:54 1998  Jason Merrill  <jason@yorick.cygnus.com>
5219
5220         * pt.c (instantiate_decl): Call cp_finish_decl for vars even if we
5221         don't define them yet.
5222
5223         * parse.y (nomods_initdcl0): Add constructor_declarator case.
5224
5225 Fri Feb  6 21:32:25 1998  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
5226
5227         * config-lang.in (diff_excludes): Use basename only.
5228
5229 Thu Feb  5 19:10:40 1998  Jason Merrill  <jason@yorick.cygnus.com>
5230
5231         * tinfo2.cc: Add tinfo for signed char.
5232
5233 Thu Feb  5 14:38:23 1998  Mike Stump  <mrs@wrs.com>
5234
5235         * search.c (compute_access): Handle protected constructors in derived
5236         classes as accessible.
5237
5238 Wed Feb  4 01:26:49 1998  Jason Merrill  <jason@yorick.cygnus.com>
5239
5240         * expr.c (cplus_expand_expr, PCC_STATIC_STRUCT_RETURN code):
5241         Call convert_from_reference sooner.
5242
5243 Tue Feb  3 23:50:52 1998  Mark Mitchell  <mmitchell@usa.net>
5244
5245         * cvt.c (ocp_convert): Obtain the constant values from constant
5246         decls even if the destination type is the same as the type of the
5247         decl. 
5248
5249         * decl2.c (finish_file): Make sure that static inlines with
5250         definitions are not marked DECL_EXTERNAL before returning.
5251
5252 Tue Feb  3 22:43:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
5253
5254         * decl.c: Lose arg_looking_for_template.
5255         (lookup_name_real): Likewise.
5256         * parse.y: Lose processing_template_arg, template_arg1
5257         (primary): Likewise.
5258         * spew.c (yylex): Set lastiddecl for PTYPENAMEs, too.
5259
5260 Tue Feb  3 22:04:01 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
5261
5262         * error.c (dump_decl): Fix type of default arguments for template
5263         template parameters and nontype template parameters.
5264         * parse.y (template_parm): Handle invalid default template 
5265         template arguments here.
5266
5267         * parse.y (template_parm): Use template_arg instead of PTYPENAME 
5268         for default template template argument.
5269         * pt.c (coerce_template_parms): Merge default template argument 
5270         codes.  Can treat RECORD_TYPE as template name if it is implicitly
5271         created.  Fix argument index in error message.
5272         * typeck.c (comptypes): Merge template argument comparison codes in 
5273         TEMPLATE_TEMPLATE_PARM and RECORD_TYPE.
5274
5275 Tue Jan  6 01:42:44 1998  Mumit Khan <khan@xraylith.wisc.edu>
5276
5277         * lex.c (file_name_nondirectory): Also check for '/'.
5278
5279 Mon Feb  2 11:24:22 1998  Mark Mitchell  <mmitchell@usa.net>
5280
5281         * parse.y (primary): Deal with statement-expressions in
5282         templates. 
5283         * pt.c (tsubst_copy): Handle BIND_EXPR.
5284         * tree.c (mapcar): Likewise.
5285
5286         * call.c (add_template_candidate_real): Pass extra parameter to
5287         fn_type_unification. 
5288         * cp-tree.h (fn_type_unification): Add parameter.
5289         * pt.c (fn_type_unification): Add additional parameter to deal with
5290         static member functions.
5291         (get_bindings): Deal with static member functions.
5292
5293         * cp-tree.h (DECL_NONSTATIC_MEMBER_FUNCTION_P): New macro.      
5294         (revert_static_member_fn): Declare.
5295         * decl.c (revert_static_member_fn): Remove declaration.  Change
5296         linkage from internal to external.
5297         (cp_finish_decl): Deal with virtual functions in classes local to
5298         template functions.
5299         * decl2.c (finish_file): Don't forget to emit increment/decrement
5300         expressions in initializers for file-scope variables.
5301         * parse.y (typename_sub2): If the typename doesn't names a
5302         template, rather than a type, issue an error message.
5303         * pt.c (check_explicit_specialization): Handle specializations of
5304         static member functions.
5305         (coerce_template_parms): Handle offset references to lists of
5306         member functions.
5307         * search.c (note_debug_info_needed): Don't crash when handed a
5308         type which is being defined.
5309         * typeck.c (complete_type): Don't crash when handed NULL_TREE;
5310         that can happen with some illegal code.
5311
5312 Mon Feb  2 00:57:38 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5313
5314         * call.c (user_harshness): Initialize `code' to 0.
5315         (build_method_call): Initialize `candidates', `cp' and `len' to 0.
5316         (null_ptr_cst_p): Add parentheses around && within ||.
5317         (standard_conversion): Likewise.
5318         (z_candidate): Likewise.
5319         (build_user_type_conversion_1): Initialize `args' to NULL_TREE.
5320         (build_object_call): Likewise for `mem_args'.
5321         (build_new_op): Likewise for `mem_arglist'.  Add `return' from
5322         default case in enumeration switch.
5323
5324         * class.c (build_vtable_entry): Add explicit braces to avoid
5325         ambiguous `else'.
5326         (build_class_init_list): Likewise.
5327         (finish_struct_1): Initialize `width' to 0.
5328         (instantiate_type): Initialize `name' to NULL_TREE.  Add
5329         explicit braces to avoid ambiguous `else'.
5330
5331         * cvt.c (convert_to_aggr): Add explicit braces to avoid ambiguous
5332         `else'.
5333
5334         * decl.c (grok_reference_init): Eliminate unused parameter, all
5335         callers changed.
5336         (record_builtin_type): Initialize `tdecl' to NULL_TREE.
5337         (init_decl_processing): Initialize `vb_off_identifier' to NULL_TREE.
5338         (cp_finish_decl): Initialize `ttype' to NULL_TREE.
5339         (grokdeclarator): Add parentheses around && within ||.  Add
5340         explicit braces to avoid ambiguous `else'.
5341         (grokparms): Initialize `type' to NULL_TREE.
5342         (xref_tag): Remove unused label `just_return'.
5343         (finish_enum): Initialize `minnode' and `maxnode' to NULL_TREE.
5344         (finish_function): Initialize `cond' and `thenclause' to NULL_TREE.
5345         (hack_incomplete_structures): Add parentheses around assignment
5346         used as truth value.
5347
5348         * decl2.c (coerce_delete_type): Hide definition of `e3'.
5349
5350         * error.c: Include <stdlib.h>.
5351         (dump_expr): Change the type of `i' to size_t.  Remove unused
5352         label `error'. 
5353
5354         * except.c (init_exception_processing): Remove unused variable `d'.
5355         (expand_throw): Likewise for `label'.
5356
5357         * friend.c (add_friends): Add explicit braces to avoid ambiguous
5358         `else'.
5359
5360         * init.c (sort_member_init): Initialize `last_field' to NULL_TREE.
5361         (sort_base_init): Likewise for `binfo'.
5362         (expand_member_init): Likewise for `rval'.
5363         (build_member_call): Add parentheses around assignment used as
5364         truth value.
5365         (build_offset_ref): Add explicit braces to avoid ambiguous `else'.
5366         (build_new): Initialize `nelts' to NULL_TREE.  Initialize
5367         `old_immediate_size_expand' to 0.
5368         (build_new_1): Initialize `nelts' and `alloc_node' to NULL_TREE.
5369         (build_vec_delete_1): Remove unused variable `block'.
5370         (expand_vec_init): Initialize `itype' to NULL_TREE.
5371
5372         * lex.c: Include <strings.h> if we don't have <string.h>.  Protect
5373         declaration of `index' and `rindex' with autoconf macros.
5374         (reinit_parse_for_expr): Remove unused variables
5375         `look_for_semicolon' and `look_for_lbrac'.
5376         (cons_up_default_function): Initialize `args' to NULL_TREE.
5377         (readescape): Initialize `firstdig' to 0.
5378         (real_yylex): Add parentheses around assignment used as truth value. 
5379
5380         * method.c: Include <strings.h> if we don't have <string.h>.
5381         Protect declaration of `index' with autoconf macro.
5382
5383         * parse.y (primary): Add explicit braces to avoid ambiguous `else'.
5384         Initialize `type' to NULL_TREE.
5385         (structsp): Remove unused variable `id'.
5386
5387         * pt.c (coerce_template_parms): Add explicit braces to avoid
5388         ambiguous `else'.
5389         (lookup_template_class): Initialize `template' to NULL_TREE.
5390         (instantiate_class_template): Remove unused variable `name' and `e'.
5391         (tsubst): Likewise for `i'.  Initialize `last' to NULL_TREE.
5392         (do_poplevel): Initialize `saved_warn_unused' to 0.
5393         (type_unification): Remove unused varable `parm'.
5394         (unify): Likewise for `j'.
5395
5396         * repo.c (init_repo): Add parentheses around assignment used as
5397         truth value.
5398         (finish_repo): Remove unused varable `p'.
5399         
5400         * search.c (get_binfo): Initiize `type' to NULL_TREE.
5401         (get_base_distance): Likewise.
5402         (lookup_field): Initialize `rval_binfo_h', `type', `basetype_path'
5403         and `new_v' to NULL_TREE.
5404         (lookup_fnfields): Likewise for `rval_binfo_h'.
5405         (breadth_first_search): Add parentheses around assignment used as
5406         truth value.
5407         (get_template_base): Initialize `type' to NULL_TREE.
5408
5409         * sig.c (append_signature_fields): Initialize `last_mfptr' to
5410         NULL_TREE.
5411         (build_signature_table_constructor): Likewise for
5412         `last_rhs_field', `pfn' and `vt_off'.
5413         (build_sigtable): Likewise for `init'.
5414
5415         * tree.c (break_out_calls): Initialize `t2' to NULL_TREE.
5416         (propagate_binfo_offsets): Likewise for `delta'.
5417         (hash_tree_cons): Initialize hashcode to 0.
5418         (can_free): Likewise for `size'.
5419         (cp_tree_equal): Add explicit braces to avoid ambiguous `else'.
5420         
5421         * typeck.c (convert_sequence): Hide prototype.
5422         (common_type): Add explicit braces to avoid ambiguous `else'.
5423         (comp_target_types): Likewise.
5424         (build_x_function_call): Initialize `ctypeptr' to NULL_TREE.
5425         (build_function_call_real): Add explicit braces to avoid ambiguous
5426         `else'.
5427         (convert_arguments): Initialize `called_thing' to 0.
5428         (convert_for_initialization): Initialize `savew' and `savee' to 0.
5429
5430         * typeck2.c (incomplete_type_error): Initialize `errmsg' to 0.
5431         (digest_init): Initialize `old_tail_contents' to NULL_TREE.
5432         (build_x_arrow): Likewise for `last_rval'.
5433
5434         * xref.c (GNU_xref_decl): Initialize `cls' to 0.
5435
5436 Sun Feb  1 12:45:34 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
5437
5438         * decl.c (init_decl_processing): Use set_sizetype.
5439         * decl2.c (sizetype): Don't declare.
5440         * typeck.c (c_sizeof): Convert result of *_DIV_EXPR to sizetype.
5441         (c_sizeof_nowarn, build_binary_op_nodefault): Likewise.
5442         (build_component_addr, unary_complex_lvalue): Likewise.
5443         * rtti.c (expand_class_desc): Likewise.
5444         * class.c (get_vfield_offset): Likewise.
5445
5446 Thu Jan 29 10:39:30 1998  Mark Mitchell  <mmitchell@usa.net>
5447
5448         * pt.c (convert_nontype_argument): Move check for is_overloaded_fn
5449         early to avoid bogus error.  Handle overloaded function
5450         names provided as template arguments correctly.
5451         (coerce_template_parms): Don't mishandle overloaded functions when
5452         dealing with template template parameters.
5453         (lookup_template_class): Issue an error message, rather than
5454         crashing, when the TYPE_DECL provided is not a template type.
5455
5456 Wed Jan 28 23:14:44 1998  Jason Merrill  <jason@yorick.cygnus.com>
5457
5458         * class.c (instantiate_type): Don't just return a known type if
5459         it's wrong.
5460
5461 Wed Jan 28 11:04:07 1998  Mark Mitchell  <mmitchell@usa.net>
5462
5463         * class.c (instantiate_type): Remove handling of FUNCTION_DECL
5464         since that code could never be reached.
5465         
5466         * error.c (dump_decl): Avoid aborting in the midst of printing an
5467         error message about an illegal template declaration.
5468
5469         * parse.y (structsp): Print an error message, rather than crashing,
5470         when a class-head does not name a class.
5471
5472         * pt.c (convert_nontype_argument):  Allow REAL_TYPE and COMPLEX_TYPE
5473         template arguments as a g++ extension.
5474         
5475         * cp-tree.def (ALIGNOF_EXPR): New tree code.
5476         * decl2.c (grok_alignof): If processing_template_decl, just store
5477         the expression.
5478         * typeck.c (c_alignof): Likewise.
5479         * decl2.c (build_expr_from_tree): Handle ALIGNOF_EXPR.
5480         * error.c (dump_expr): Likewise.
5481         * pt.c (tsubst_copy): Likewise.
5482         * tree.c (cp_tree_equal): Likewise.
5483         * pt.c (uses_template_parms): Correctly determine whether or not a
5484         SIZEOF_EXPR/ALIGNOF_EXPR uses template parameters so that constant
5485         folding can be done.
5486         
5487         * cp-tree.h (grok_enum_decls): Remove type parameter.
5488         * decl.c (grok_enum_decls): Likewise.
5489         * decl2.c (grok_x_components): Call grok_enum_decls
5490         unconditionally, since it will do nothing if there is no
5491         current_local_enum.  Use the new calling sequence.
5492         * pt.c (tsubst_enum): Use the new calling sequence for
5493         grok_enum_decls.
5494
5495         * decl.c (start_function): Make member functions of local classes
5496         in extern inline functions have comdat linkage here...
5497         (grokdeclarator): Rather than here.
5498         
5499 Wed Jan 28 10:55:47 1998  Jason Merrill  <jason@yorick.cygnus.com>
5500
5501         * pt.c (convert_nontype_argument): Use decl_constant_value.
5502
5503 Tue Jan 27 16:42:21 1998  Mark Mitchell  <mmitchell@usa.net>
5504
5505         * call.c (add_template_candidate_real): New function.
5506         (add_template_candidate): Use it.
5507         (add_template_conv_candidate): Likewise.
5508         (joust): Pass extra argument to more_specialized.
5509         * class.c (instantiate_type): Handle a single FUNCTION_DECL.
5510         (is_local_class): Remove.
5511         (finish_struct): Check TI_PENDING_SPECIALIZATION_FLAG.
5512         * cp-tree.h (is_local_class): Remove.
5513         (perform_array_to_pointer_conversion): Likewise.
5514         (finish_member_template_decl): Add.
5515         (check_explicit_specialization): Return a tree, not an int.
5516         (more_specialized): Take additional argument.
5517         (get_bindings): Likewise.
5518         (TI_PENDING_SPECIALIZATION_FLAG): New macro.
5519         * cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.
5520         (perform_array_to_pointer_conversion): Remove.
5521         * decl.c (saved_scope): Add processing_specialization,
5522         processing_explicit_instantiation fields.
5523         (maybe_push_to_top_level): Save them.
5524         (pop_from_top_level): Restore them.
5525         (grokfndecl): Use new return value from
5526         check_explicit_specialization. 
5527         (start_decl): Don't check flag_guiding_decls before pushing
5528         decls. 
5529         (cp_finish_decl): Remove previous (bogus) change.
5530         (grok_declarator): Use decl_function_context rather than
5531         is_local_class. 
5532         * decl2.c (finish_file): Pass extra argument to get_bindings.
5533         (build_expr_from_tree): Let build_x_component_ref check 
5534         validity of arguments rather than doing it here.
5535         * lex.c (cons_up_default_function): Remove code fooling with
5536         processing_specialization, processing_explicit_instantiation
5537         flags, as that is now done in {maybe_push_top,pop_from}_top_level. 
5538         * method.c (build_overload_identifier): Mangle local classes in
5539         template functions correctly.
5540         * parse.y (finish_member_template_decl): Move to pt.c.
5541         * pt.c (finish_member_template_decl): Moved here from parse.y.
5542         (print_candidates): New function.
5543         (determine_specialization): Change interface.  Properly look for
5544         most specialized versions of template candidates.
5545         (check_explicit_specialization): Fully process explicit
5546         instantiations. 
5547         (push_template_decl): Avoid looking at CLASSTYPE fields in
5548         FUNCTION_DECLS. 
5549         (determine_overloaded_function): Remove.
5550         (convert_nontype_argument): Change name from
5551         convert_nontype_parameter.  Use determine_overloaded_function
5552         instead of instantiate_type.
5553         (mangle_class_name_for_template): Handle type contexts as well as
5554         function contexts.
5555         (classtype_mangled_name): Likewise.
5556         (lookup_template_class): Likewise.
5557         (tsubst): Likewise.
5558         (more_specialized): Take explict template arguments as a
5559         parameter. 
5560         (most_specialized): Likewise.
5561         (get_bindings): Likewise.  Check that return types match before
5562         proclaiming a function a match.
5563         (do_decl_instantiation): Remove code searching for function to
5564         instantiate; that is now done in check_explicit_specialization.
5565         (add_maybe_template): Pass extra argument to get_bindings.
5566         * tree.c (really_overloaded_fn): Use is_overloaded_fn to simplify
5567         implementation.
5568         * typeck.c (build_component_ref): Check for invalid arguments.
5569
5570 Tue Jan 27 01:44:02 1998  Jason Merrill  <jason@yorick.cygnus.com>
5571
5572         * expr.c (cplus_expand_expr, AGGR_INIT_EXPR): Don't check that 
5573         return_target and call_target are equivalent.
5574
5575         * pt.c (type_unification_real): Just accept function parms that
5576         don't use any template parms.
5577
5578 Sun Jan 25 03:30:00 1998  Jason Merrill  <jason@yorick.cygnus.com>
5579
5580         * decl.c (cp_finish_decl): When bailing on a comdat variable, also
5581         unset DECL_NOT_REALLY_EXTERN.
5582
5583         * parse.y (typename_sub*): Fix std::.
5584
5585 Sat Jan 24 12:13:54 1998  Jason Merrill  <jason@yorick.cygnus.com>
5586
5587         * error.c (dump_decl): Fix type default template args.
5588         (dump_type): Hand TEMPLATE_DECL off to dump_decl.
5589
5590 Fri Jan 23 18:34:37 1998  Mumit Khan <khan@xraylith.wisc.edu>
5591
5592         * lex.c (DIR_SEPARATOR): Define to be '/' if not already defined.
5593         (file_name_nondirectory): Use.
5594
5595 Wed Jan 21 10:29:57 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
5596
5597         * pt.c (coerce_template_parms): Don't access elements of ARGLIST
5598         that are not really present.  Substitute default arguments in 
5599         template template arguments.  Correctly convert TEMPLATE_DECL to 
5600         TEMPLATE_TEMPLATE_PARM.
5601         (comp_template_args): TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM 
5602         are no longer treated specially here.
5603         * parse.y (template_template_parm): Fix copy error.
5604         * decl.c (grokdeclarator): Warn about missing `typename' for nested
5605         type created from template template parameters.
5606         * parse.y (bad_parm): Likewise
5607
5608         * class.c (finish_struct): Handle TEMPLATE_TEMPLATE_PARM.
5609         (push_nested_class): Likewise.
5610         * cp-tree.def (TEMPLATE_TEMPLATE_PARM): New tree code.
5611         * cp-tree.h (DECL_TEMPLATE_TEMPLATE_PARM_P): New macro.
5612         (copy_template_template_parm): Declare.
5613         * decl.c (arg_looking_for_template): New variable.
5614         (lookup_name_real): Handle TEMPLATE_TEMPLATE_PARM.
5615         Try to return TEMPLATE_DECL or TEMPLATE_TEMPLATE_PARM
5616         node if arg_looking_for_template is nonzero.
5617         (pushdecl): Handle TEMPLATE_TEMPLATE_PARM.
5618         (grok_op_properties, xref_tag, xref_basetypes): Likewise.
5619         (grokdeclarator): Handle TEMPLATE_DECL.
5620         * decl2.c (constructor_name_full): Handle TEMPLATE_TEMPLATE_PARM.
5621         * error.c (dump_type): Add TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM.
5622         (dump_type_prefix, dump_type_suffix) Handle TEMPLATE_TEMPLATE_PARM.
5623         (dump_decl): Handle unnamed template type parameters.
5624         Handle template template parameters.
5625         (dump_function_name): Handle template template parameters.
5626         * init.c (is_aggr_typedef, is_aggr_type, get_aggr_from_typedef): 
5627         Handle TEMPLATE_TEMPLATE_PARM.
5628         * method.c (build_template_template_parm_names): New function.
5629         (build_template_parm_names): Handle TEMPLATE_DECL.
5630         (build_overload_nested_name, build_overload_name): 
5631         Handle TEMPLATE_TEMPLATE_PARM.
5632         * parse.y (maybe_identifier): New nonterminal.
5633         (template_type_parm): Use it.
5634         (template_template_parm, template_arg1): New nonterminal.
5635         (template_parm): Add template_template_parm rules.
5636         (template_arg): Set processing_template_arg.
5637         (template_arg1): Rules moved from template_arg.
5638         (primary, nonnested_type): Set arg_looking_for_template if we are
5639         processing template arguments.
5640         * pt.c (begin_member_template_processing): Handle TEMPLATE_DECL.
5641         (process_template_parm): Handle template template parameters.
5642         (coerce_template_parms, comp_template_args): Likewise.
5643         (mangle_class_name_for_template, lookup_template_class): Likewise.
5644         (uses_template_parms): Handle TEMPLATE_DECL and 
5645         TEMPLATE_TEMPLATE_PARM.
5646         (current_template_args): Handle TEMPLATE_DECL.
5647         (tsubst, tsubst_copy, unify): Handle TEMPLATE_TEMPLATE_PARM.
5648         * search.c (dfs_walk, dfs_record_inheritance): 
5649         Handle TEMPLATE_TEMPLATE_PARM.
5650         * tree.c (copy_template_template_parm): New function.
5651         (mapcar): Handle TEMPLATE_TEMPLATE_PARM.
5652         * typeck.c (comptypes): Handle TEMPLATE_TEMPLATE_PARM.
5653
5654 Mon Jan 19 22:40:03 1998  Mark Mitchell  <mmitchell@usa.net>
5655
5656         * decl.c (start_decl): Don't allow duplicate definitions of static
5657         data members.
5658
5659         * call.c (build_user_type_conversion_1): Handle user-defined
5660         template conversion operators correctly.
5661
5662         * decl2.c (build_expr_from_tree): Issue an error message if the
5663         object in a COMPONENT_REF is a TEMPLATE_DECL.
5664         
5665         * typeck.c (incomplete_type_error): Handle TEMPLATE_TYPE_PARMs.
5666         
5667         * class.c (is_local_class): New function.
5668         * cp-tree.h (is_local_class): Declare it.
5669         (last_tree): Likewise.
5670         (begin_tree): Likewise.
5671         (end_tree): Likewise.
5672         (lookup_template_class): Change prototype.
5673         * decl.c (cp_finish_decl): Check for NULL where necesary.
5674         Consider FUNCTION_DECLS to declare objects with top-level binding,
5675         when calling make_decl_rtl.
5676         (grokdeclarator): Give members of local classes internal linkage.
5677         (start_function): Remove declaration of last_tree.
5678         (finish_function): Set flag_keep_inline_functions around call to
5679         rest_of_compilation if we are processing a member function in a
5680         local class.
5681         (start_method): Call push_template_decl for member functions of
5682         local classes in template functions.
5683         * decl2.c (import_export_decl): Don't give external linkage to
5684         instantiations of templates with internal linkage.
5685         * parse.y (last_tree): Remove declaration.
5686         (template_type): Pass extra parameter to lookup_template_class.
5687         (self_template_type): Likewise.
5688         (structsp): Move call to reset_specialization into left_curly.
5689         (left_curly): Call reset_specialization, and begin_tree.
5690         * pt.c (saved_trees): New variable.
5691         (mangle_class_name_for_template): Change prototype.  Use
5692         additional function context to name local classes in templates
5693         correctly. 
5694         (classtype_mangled_name): Pass the context.
5695         (push_template_decl): Handle local classes and templates, and
5696         member functions for such classes.
5697         (convert_nontype_parameter): Fix handling of pointer-to-member
5698         constants. 
5699         (lookup_template_class): Handle local classes in templates.
5700         (tsubst): Likewise.  Don't assume that template instantiations
5701         have external linkage; pay attention to the template declaration. 
5702         (mark_decl_instantiated): Likewise.
5703         (begin_tree): New function.
5704         (end_tree): Likewise.
5705         
5706         * decl.c (xref_basetypes): Don't call complete_type for basetypes
5707         that involve template parameters; that can lead to infinite
5708         recursion unnecessarily.
5709
5710         * pt.c (register_specialization): Do not register specializations
5711         that aren't ready to be registered yet.
5712         (check_explicit_specialization): Handle explicit specialization of
5713         constructors and destructors.
5714         (build_template_decl): New function.
5715         (push_template_delc): Handle out-of-class specializations of
5716         member templates.
5717         
5718         * pt.c (check_explicit_specialization): Set up the template
5719         information before registering the specialization.
5720         (coerce_template_parms): Fix thinko.
5721         (tsubst): Handle specializations of member templates correctly.
5722
5723         * class.c (finish_struct_methods): Remove calls to
5724         check_explicit_specialization from here.
5725         (finish_struct): And insert them here.
5726         * cp-tree.h (perform_qualification_conversions): New function.
5727         (perform_array_to_pointer_conversion): Likewise.
5728         (begin_explicit_instantiation): Likewise.
5729         (end_explicit_instantiation): Likewise.
5730         (determine_specialization): Renamed from
5731         determine_explicit_specialization. 
5732         (comp_template_parms): New function.
5733         (processing_explicit_instantiation): New variable.
5734         * cvt.c (perform_qualification_conversions): New function.
5735         (perform_array_to_pointer_conversion): Likewise.
5736         * decl.c (duplicate_decls): Don't consider template functions
5737         alike unless they have the same parameters.  Refine handling of
5738         instantiation/specialization mismatches.
5739         (start_decl): Don't call pushdecl for template specializations,
5740         since they don't affect overloading.
5741         (start_function): Likewise
5742         (grokfndecl): Call check_explicit_specialization a little later.
5743         Don't call duplicate_decls for memberm template specializations.
5744         (grokdeclarator): Don't update template_count for classes that are
5745         themselves specializations.  Remove use of `2' as parameter to
5746         grokfndecl since that value isn't used.
5747         * lex.c (cons_up_default_function): Save and restore
5748         processing_explicit_instantiation around calls to grokfield.
5749         * parse.y (finish_member_template_decl): New function.
5750         (component_decl_1): Use it.
5751         (fn.def2): Likewise.
5752         (template_arg_list_opt): New nonterminal.       
5753         (template_type): Use it.
5754         (self_template_type): Likewise.
5755         (template_id): Likewise.
5756         (object_template_id): Likewise.
5757         (notype_template_declarator): Likwise.
5758         (begin_explicit_instantiation): Likewise.
5759         (end_explicit_instantiation): Likewise.
5760         (explicit_instantiation): Use them.
5761         * pt.c (coerce_template_parms): Add parameters.
5762         (processing_explicit_instantiation): New variable.
5763         (convert_nontype_parameter): New function.
5764         (determine_overloaded_function): Likewise.
5765         (begin_explicit_instantiation): Likewise.
5766         (end_explicit_instantiation): Likewise.
5767         (retrieve_specialization): Likewise.
5768         (register_specialization): Likewise.
5769         (processing_explicit_specialization): Removed.
5770         (determine_specialization): Handle specializations of member
5771         functions of template class instantiations.
5772         (check_explicit_specialization): Refine to conform to standard.
5773         (comp_template_parms): New function.
5774         (coerce_template_parms): Call convert_nontype_parameter.
5775         (tsubst): Refine handling of member templates.  Use
5776         register_specialization. 
5777         (instantiate_template): Use retrieve_specialization.
5778         (do_decl_instantiation): Likewise.
5779         (instantiate_decl): Likewise.
5780         (type_unification): Improve handling of explict template
5781         arguments. 
5782         * tree.c (mapcar): Return error_mark_node, rather than aborting,
5783         on VAR_DECLS, FUNCTION_DECLS, and CONST_DECLS.
5784         * typeck.c (build_unary_op): Call determine_specialization, rather
5785         than determine_explicit_specialization.
5786
5787 Mon Jan 19 13:18:51 1998  Jason Merrill  <jason@yorick.cygnus.com>
5788
5789         * cvt.c (build_up_reference): A TARGET_EXPR has side effects.
5790
5791 Fri Jan 16 11:40:50 1998  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
5792
5793         * error.c (dump_decl): For enum tags, output the tag, not its value.
5794
5795 1998-01-13  Brendan Kehoe  <brendan@cygnus.com>
5796
5797         * decl.c (init_decl_processing): Only call init_rtti_processing
5798         FLAG_RTTI is set.
5799
5800 Mon Jan 12 01:35:18 1998  Jason Merrill  <jason@yorick.cygnus.com>
5801
5802         * init.c (build_new_1): Split out from build_new.
5803         (build_new): Just return a NEW_EXPR.
5804         * expr.c (cplus_expand_expr): Handle NEW_EXPR.
5805
5806         * decl2.c (get_temp_regvar): Tweak.
5807
5808         * cp-tree.h (TREE_CALLS_NEW): Comment out.
5809         * class.c (resolves_to_fixed_type_p): Remove use.
5810         * method.c (build_opfncall): Likewise.
5811         * call.c (build_new_op): Likewise.
5812
5813 Wed Jan  7 23:47:13 1998  Jason Merrill  <jason@yorick.cygnus.com>
5814
5815         * exception.cc (__eh_alloc, __eh_free): New fns.
5816         (__cp_push_exception, __cp_pop_exception): Use them.
5817         (__uncatch_exception): Call terminate here if no exception.
5818         * except.c (build_terminate_handler): New fn.
5819         (expand_start_catch_block): Use it.
5820         (expand_exception_blocks): Likewise.
5821         (alloc_eh_object): New fn.
5822         (expand_throw): Use it.  Protect exception init with terminate.
5823         * typeck.c (build_modify_expr): Remove code that ignores trivial 
5824         methods.
5825
5826 Mon Dec 22 11:36:27 1997  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5827  
5828         * call.c (add_builtin_candidate): Add default case in enumeration
5829         switch.
5830         (build_new_op): Likewise.
5831         (convert_like): Likewise.
5832         * cvt.c (build_expr_type_conversion): Likewise.
5833         * tree.c (real_lvalue_p): Likewise.
5834         (lvalue_p): Likewise.
5835         (cp_tree_equal): Likewise.
5836         * typeck.c (comptypes): Likewise.
5837         (build_component_ref): Likewise.
5838         (build_function_call_real): Likewise.
5839         (build_binary_op_nodefault): Likewise.
5840         (build_unary_op): Likewise.
5841         (build_modify_expr): Likewise.
5842         * typeck2.c (initializer_constant_valid_p): Likewise.
5843
5844 Sun Dec 21 15:59:00 1997  Nick Clifton  <nickc@cygnus.com>
5845
5846         * decl2.c (lang_decode_option): Add support for -Wunknown-pragmas.
5847
5848 Thu Dec 18 14:51:50 1997  Mark Mitchell  <mmitchell@usa.net>
5849
5850         * pt.c (coerce_template_parms): Make sure to digest_init if
5851         possible.
5852
5853         * decl.c (duplicate_decls): Make the newdecl virtual if the
5854         olddecl was, just as is done with other attributes of olddecl.
5855
5856 Thu Dec 18 14:43:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
5857
5858         * typeck.c (unary_complex_lvalue): Ignore op0 when taking the 
5859         address of an OFFSET_REF.
5860
5861         * cp-tree.def: Add AGGR_INIT_EXPR.
5862         * error.c, tree.c, typeck.c: Replace uses of NEW_EXPR with
5863         AGGR_INIT_EXPR where appropriate.
5864         * expr.c (cplus_expand_expr): Likewise.  Simplify.
5865
5866         * decl2.c (finish_file): Remove call to register_exception_table.
5867
5868 Wed Dec 17 17:08:52 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
5869
5870         * pt.c (instantiate_class_template): Don't do injection when
5871         processing_template_decl is true, as pollutes current_binding_level 
5872         for base classes.
5873
5874 Wed Dec 17 21:17:39 1997  Peter Schmid <schmid@ltoi.iap.physik.tu-darmstadt.de>
5875
5876         * pt.c (maybe_fold_nontype_arg): Add prototype.
5877
5878 Tue Dec 16 10:31:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
5879
5880         * tree.c (mapcar): Handle TRY_CATCH_EXPR et al.
5881         * error.c (dump_expr): Likewise.
5882
5883 Mon Dec 15 12:22:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
5884
5885         * typeck.c (build_function_call_real): Remove "inline called before
5886         definition" pedwarn.
5887
5888         * pt.c (coerce_template_parms): Use maybe_fold_nontype_arg.
5889
5890 Sun Dec 14 22:34:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
5891
5892         * cvt.c (cp_convert_to_pointer): Fix base conversion of pm's.
5893
5894         * pt.c (type_unification_real): Change __null to type void* with 
5895         a warning.
5896
5897 Sun Dec 14 20:38:35 1997  Mark Mitchell  <mmitchell@usa.net>
5898
5899         * call.c (implicit_conversion): Don't call
5900         build_user_type_conversion_1 with a NULL expr, since it will
5901         crash. 
5902
5903         * pt.c (unify): Don't try to unify array bounds if either array is
5904         unbounded.
5905
5906 Fri Dec 12 16:09:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
5907
5908         * errfn.c (cp_pedwarn, cp_pedwarn_at, cp_error_at, cp_warning_at): 
5909         Replace extern decls with casts.
5910
5911         * decl.c (expand_start_early_try_stmts): Don't mess with a sequence.
5912         Update last_parm_cleanup_insn.
5913         (store_after_parms): Remove.
5914         * cp-tree.h: Adjust.
5915
5916 Thu Dec 11 22:18:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
5917
5918         * decl2.c (comdat_linkage): Also set DECL_COMDAT.
5919         (finish_file): Check DECL_COMDAT instead of weak|one_only.
5920         (import_export_vtable): Use make_decl_one_only instead of
5921         comdat_linkage for win32 tweak.
5922         (import_export_decl): Likewise.
5923         * pt.c (mark_decl_instantiated): Likewise.
5924
5925         * decl2.c (finish_file): Lose handling of templates in pending_statics.
5926
5927 Thu Dec 11 21:12:09 1997  Jason Merrill  <jason@yorick.cygnus.com>
5928
5929         * decl2.c (finish_file): Lose call to expand_builtin_throw.
5930         * except.c (expand_builtin_throw): Remove.
5931         * cp-tree.h: Remove ptr_ptr_type_node.
5932         * decl.c: Likewise.
5933
5934 Thu Dec 11 20:43:33 1997  Teemu Torma  <tot@trema.com>
5935         
5936         * decl.c (ptr_ptr_type_node): Define.
5937         (init_decl_processing): Initialize it.
5938         * cp-tree.h: Declare it.
5939         * exception.cc (__cp_exception_info): Use __get_eh_info.
5940         (__cp_push_exception): Ditto.
5941         (__cp_pop_exception): Ditto.
5942
5943         From Scott Snyder <snyder@d0sgif.fnal.gov>:
5944         * except.c (expand_builtin_throw): Use get_saved_pc_ref instead of
5945         saved_pc.
5946         (init_exception_processing): Removed saved_pc initialization.
5947
5948 Wed Dec 10 11:04:45 1997  Jason Merrill  <jason@yorick.cygnus.com>
5949
5950         * pt.c (instantiate_decl): Defer all templates but inline functions.
5951
5952 Mon Dec  8 23:17:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
5953
5954         * init.c (expand_vec_init): Don't fold a list of parameters.
5955
5956         * decl.c (copy_args_p): Handle copy elision for types with virtual
5957         bases.
5958         * call.c (build_over_call): Likewise.
5959
5960 Sun Dec  7 22:38:12 1997  Mark Mitchell  <mmitchell@usa.net>
5961
5962         * pt.c (lookup_template_function): Copy the template arguments,
5963         not just the list containing them, to the permanent obstack.
5964
5965 Sun Dec  7 15:53:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
5966
5967         * except.c (expand_start_catch_block): suspend_momentary for the
5968         terminate handler.
5969
5970         * error.c (dump_decl): Handle LOOKUP_EXPR.
5971
5972 Sun Dec  7 15:45:07 1997  Mark Mitchell  <mmitchell@usa.net>
5973
5974         * rtti.c (build_dynamic_cast): Copy the cast-to type to the
5975         permanent obstack if we are processing a template decl.
5976         * typeck.c (build_static_cast): Likewise.
5977         (build_const_cast): Likewise.
5978         (build_reinterpret_cast): Likewise.
5979
5980         * pt.c (coerce_template_parms): Coerce some expressions, even
5981         when processing_template_decl.
5982
5983 Sun Dec  7 01:46:33 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
5984
5985         * typeck.c (build_binary_op_nodefault, pointer_diff): Symmetric
5986         handling of pointer difference expressions.
5987
5988         * typeck.c (comp_target_types): Comparison of function/method types
5989         is independent of nptrs.
5990
5991 Sun Dec  7 01:40:27 1997  Mark Mitchell  <mmitchell@usa.net>
5992
5993         * pt.c (tsubst): Avoid creating pointer to reference and
5994         reference to reference types.
5995
5996 Sat Dec  6 01:29:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
5997
5998         * parse.y (do_id): New nonterminal.
5999         (template_id): Use it.
6000
6001 Fri Dec  5 01:17:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
6002
6003         * parse.y (template_id): do_identifier for PFUNCNAMEs, too.
6004         * spew.c (yylex): Don't do_identifier here.
6005         * decl2.c (build_expr_from_tree): Revert last change.
6006
6007         * decl2.c (build_expr_from_tree): Expand the name for a method call.
6008         * parse.y (object_template_id): Don't try to take the DECL_NAME.
6009
6010 Wed Dec  3 20:02:39 1997  Jason Merrill  <jason@yorick.cygnus.com>
6011
6012         * init.c (build_new): Use a TARGET_EXPR instead of SAVE_EXPR for
6013         alloc_expr.
6014         * call.c (build_op_delete_call): Adjust.
6015
6016         * except.c (expand_end_catch_block): Lose rethrow region.
6017         (expand_start_catch_block): Likewise.
6018         (expand_end_catch_block): Don't expand_leftover_cleanups.
6019
6020 Wed Dec  3 13:24:04 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
6021
6022         * pt.c (tsubst): Remove tree_cons call (places redundant info into
6023         DECL_TEMPLATE_INSTANTIATION).   
6024
6025 Wed Dec  3 11:44:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
6026
6027         * tree.c (is_overloaded_fn): Handle getting a fn template.
6028         (really_overloaded_fn): Likewise.
6029         * error.c (dump_decl): Handle TEMPLATE_ID_EXPRs better.
6030         * pt.c (check_explicit_specialization): Tweak.
6031         (determine_explicit_specialization): Tweak.
6032
6033         * tree.c, cp-tree.h (get_target_expr): New fn.
6034
6035 Wed Dec  3 08:47:27 1997  Paul Eggert  <eggert@twinsun.com>
6036
6037         * pt.c (check_explicit_specialization): Fix misspelling in
6038         diagnostic: `preceeded'.
6039         * typeck.c (get_delta_difference): Fix misspelling in diagnostic:
6040         `conversiona'.
6041
6042 1997-12-02  Mark Mitchell  <mmitchell@usa.net>
6043
6044         * pt.c (determine_explicit_specialization): Avoid an internal
6045         error for bad specializations.
6046
6047         * method.c (build_overload_value): Handle SCOPE_REF.
6048
6049 Tue Dec  2 19:18:50 1997  Mike Stump  <mrs@wrs.com>
6050
6051         * class.c (prepare_fresh_vtable): Enable even more complex MI
6052         vtable names.
6053
6054 Tue Dec  2 01:37:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
6055
6056         * exception.cc (__check_eh_spec): Optimize a bit.
6057
6058         * exception.cc (__cp_pop_exception): Lose handler arg.
6059         * except.c (do_pop_exception): Likewise.
6060         (push_eh_cleanup): Let the cleanup mechanism supply the handler.
6061         (expand_end_catch_block): Likewise.
6062
6063 Fri Nov 28 01:58:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
6064
6065         * pt.c (check_explicit_specialization): Complain about using a 
6066         template-id for a non-specialization.
6067
6068 Fri Nov 28 12:35:19 1997  Scott Christley  <scottc@net-community.com>
6069
6070         * repo.c: Prototype rindex only if needed.
6071         * xref.c: Likewise.
6072
6073 Fri Nov 28 01:56:35 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
6074
6075         * error.c (dump_decl): Handle TEMPLATE_ID_EXPR.
6076
6077 Thu Nov 27 00:59:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
6078
6079         * typeck.c (build_const_cast): Handle references here instead of
6080         handing off to convert_to_reference.
6081
6082         * except.c: Lose Unexpected, SetTerminate, SetUnexpected,
6083         TerminateFunctionCall.
6084         (init_exception_processing): Likewise.  Terminate et al are now
6085         the fns, not ADDR_EXPRs.
6086         (various): Lose redundant assemble_external calls.
6087         (do_unwind): s/BuiltinReturnAddress/builtin_return_address_fndecl/.
6088
6089         * cp-tree.h (struct lang_decl_flags): Add comdat.
6090         (DECL_COMDAT): New macro.
6091         * decl.c (duplicate_decls): Propagate it.
6092         (cp_finish_decl): Handle it.
6093         * decl2.c (import_export_decl): Just set DECL_COMDAT on VAR_DECLs.
6094
6095         * class.c: Remove static pending_hard_virtuals.
6096         (add_virtual_function): Take pointers to pending_virtuals
6097         and pending_hard_virtuals.
6098         (finish_struct_1): Pass them.  Declare pending_hard_virtuals.
6099
6100 Wed Nov 26 20:28:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
6101
6102         * decl2.c (import_export_vtable): If we support one_only but not
6103         weak symbols, mark instantiated template vtables one_only.
6104         (import_export_decl): Likewise for tinfo functions.
6105         (finish_vtable_vardecl): Also write out vtables from explicitly 
6106         instantiated template classes.
6107         * pt.c (mark_class_instantiated): Revert last change.
6108
6109         * except.c (expand_throw): Call mark_used on the destructor.
6110
6111 Wed Nov 26 15:13:48 1997  Jeffrey A Law  (law@cygnus.com)
6112
6113         * lex.c (lang_init): Enable flag_exceptions by default if no
6114         command line switch was specified.
6115
6116 1997-11-26  Mark Mitchell  <mmitchell@usa.net>
6117
6118         * pt.c (unify): Handle `void' template parameters in
6119         specializations.
6120
6121 Wed Nov 26 01:11:24 1997  Jason Merrill  <jason@yorick.cygnus.com>
6122
6123         * rtti.c (build_dynamic_cast): Handle template case here.
6124         (build_dynamic_cast_1): Not here.
6125
6126         * typeck2.c (digest_init): Make copies where appropriate.
6127
6128         * decl2.c (delete_sanity): resolve_offset_ref.
6129
6130         * except.c: Call terminate without caching so many bits.
6131
6132         * except.c (expand_start_catch_block): Fix catching a reference
6133         to pointer.
6134
6135 Tue Nov 25 11:28:21 1997  Jason Merrill  <jason@yorick.cygnus.com>
6136
6137         * init.c (build_new): Copy size to the saveable obstack.
6138
6139         * init.c (build_new): Stick a CLEANUP_POINT_EXPR inside the
6140         TRY_CATCH_EXPR for now.
6141
6142 Mon Nov 24 12:15:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
6143
6144         * typeck.c (mark_addressable): Don't assume a FUNCTION_DECL
6145         has DECL_LANG_SPECIFIC.
6146
6147         * exception.cc (struct cp_eh_info): Add handlers field.
6148         (__cp_push_exception): Initialize it.
6149         (__cp_pop_exception): Decrement it.  Don't pop unless it's 0.
6150         (__throw_bad_exception): Remove.
6151         * except.c (call_eh_info): Add handlers field.
6152         (get_eh_handlers): New fn.
6153         (push_eh_cleanup): Increment handlers.
6154
6155 Fri Nov 21 12:22:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
6156
6157         * except.c (expand_start_eh_spec): Use the try/catch code.
6158         (expand_end_eh_spec): Likewise.  Call __check_eh_spec instead of
6159         doing everything inline.
6160         (init_exception_processing): throw_type_match now takes
6161         const void pointers.
6162         * exception.cc (__check_eh_spec): New fn.
6163         * inc/exception: Neither terminate nor unexpected return.
6164         * decl.c: Make const_ptr_type_node public.
6165         * tinfo2.cc (__throw_type_match_rtti): Take the typeinfos constly.
6166
6167         * except.c (expand_start_catch_block): We only need the rethrow
6168         region for non-sjlj exceptions.
6169         (expand_end_catch_block): Likewise.  Use outer_context_label_stack.
6170
6171 Thu Nov 20 14:40:17 1997  Jason Merrill  <jason@yorick.cygnus.com>
6172
6173         * Make-lang.in (CXX_LIB2FUNCS): Add new op new and op delete objs.
6174         (various.o): Likewise.
6175         * inc/new: Add placement deletes.  Add throw specs for default new.
6176         * new.cc (set_new_handler): Move here from libgcc2.
6177         * new1.cc (new (nothrow)): Catch a bad_alloc thrown from the handler.
6178         (new): Move from libgcc2.  Throw bad_alloc.
6179         * new2.cc: Move the rest of the op news and op deletes from libgcc2.
6180         * decl.c (init_decl_processing): Update exception specs on new and
6181         delete.
6182
6183         * method.c (build_decl_overload_real): Don't mess with global 
6184         placement delete.
6185
6186         * init.c (build_new): Check for null throw spec, not nothrow_t.
6187
6188         * decl.c (duplicate_decls): Don't complain about different exceptions
6189         from an internal declaration.
6190
6191         * call.c (build_op_delete_call): Fix check for member fns again.
6192
6193         * decl2.c (import_export_decl): Interface hackery affects
6194         virtual synthesized methods.
6195
6196 Wed Nov 19 18:24:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
6197
6198         * decl.c (start_decl): Don't just complain about a mismatched 
6199         scope, fix it.
6200
6201         * decl.c (make_implicit_typename): Handle case where t is not
6202         actually from context.
6203         * tree.c (get_type_decl): Lose identifier case.
6204         * spew.c (yylex): Lose useless call to identifer_typedecl_value.
6205         * parse.y (nonnested_type): Just use lookup_name.
6206         (complex_type_name): Just use IDENTIFIER_GLOBAL_VALUE.
6207
6208 Wed Nov 19 11:45:07 1997  Michael Tiemann  <tiemann@axon.cygnus.com>
6209
6210         * error.c (dump_function_name): Test DECL_LANG_SPECIFIC in case
6211         T was built in C language context (for example, by
6212         output_func_start_profiler).
6213
6214 Wed Nov 19 10:39:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
6215
6216         * decl.c (make_implicit_typename): New fn.
6217         (lookup_name_real): Use it.  Use current_class_type as the context.
6218
6219 Mon Nov 17 23:42:03 1997  Bruno Haible <haible@ilog.fr>
6220
6221         * pt.c (do_poplevel): Don't prohibit jumps into this contour.
6222
6223 Mon Nov 17 02:01:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
6224
6225         * friend.c (do_friend): Warn about non-template friends in templates.
6226
6227         * call.c (build_op_delete_call): Fix handling of inherited delete.
6228
6229         * search.c (dfs_record_inheritance): Ignore template type parms.
6230
6231 Sat Nov 15 00:30:51 1997  Jason Merrill  <jason@yorick.cygnus.com>
6232
6233         * call.c (build_new_op): Fix copy error.
6234         (build_op_new_call): New fn.
6235         (build_op_delete_call): New fn.
6236         * cp-tree.h: Declare them.
6237         * init.c (build_new): Use them.  Support placement delete.
6238         (build_x_delete): Use build_op_delete_call.
6239         (build_delete): Likewise.
6240         * decl2.c (delete_sanity): Likewise.
6241         (coerce_delete_type): Don't complain about placement delete.
6242
6243 Thu Nov 13 01:52:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
6244
6245         * call.c (build_new_function_call): Remove unused 'obj' parm.
6246         * cp-tree.h, typeck.c: Adjust.
6247
6248         * init.c (build_new): Make the cleanup last longer.
6249         (expand_vec_init): Call do_pending_stack_adjust.
6250
6251 Wed Nov 12 11:04:33 1997  Jason Merrill  <jason@yorick.cygnus.com>
6252
6253         * pt.c (do_type_instantiation): Fix typo.
6254         (mark_class_instantiated): If we support one_only but not weak 
6255         symbols, don't mark this as known.
6256
6257         * init.c (build_new): Handle vec delete in EH cleanup.
6258
6259 Wed Nov 12 08:11:55 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
6260
6261         * call.c (build_method_call): Call complete_type before checking
6262         for destructor.
6263
6264 Sun Nov  9 01:29:55 1997  Jim Wilson  (wilson@cygnus.com)
6265
6266         * decl.c (add_block_current_level): Delete.
6267         * init.c (build_vec_delete_1): Delete build_block and
6268         add_block_current_level calls.
6269
6270 Wed Nov 12 00:48:16 1997  Jason Merrill  <jason@yorick.cygnus.com>
6271
6272         * init.c (build_new): Handle freeing allocated memory when the
6273         constructor throws.
6274
6275         * call.c (build_new_method_call): Fix flags arg.
6276
6277         * pt.c (do_type_instantiation): Don't try to instantiate
6278         member templates.
6279         (mark_decl_instantiated): If we support one_only but not
6280         weak symbols, mark this one_only.
6281         * decl2.c (import_export_vtable): Don't defer handling of vtables
6282         if MULTIPLE_SYMBOL_SPACES.
6283
6284 Tue Nov 11 12:02:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
6285
6286         * except.c (expand_end_catch_block): Lose call to __sjpopnthrow.
6287
6288 Tue Nov 11 02:53:44 1997  Jason Merrill  <jason@lasher.cygnus.com>
6289
6290         * except.c (do_pop_exception): Return a value.
6291
6292 Mon Nov 10 20:25:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
6293
6294         * call.c (build_new_method_call): Handle getting a
6295         TEMPLATE_ID_EXPR around a TEMPLATE_DECL.  Don't look for a field
6296         if we got template parms.
6297         * typeck.c (build_x_function_call): Remember the TEMPLATE_ID_EXPR,
6298         not just the args.
6299         * decl2.c (build_expr_from_tree): Tweak last change.
6300         * pt.c (tsubst_copy): Use get_first_fn instead of TREE_VALUE.
6301         (maybe_fold_nontype_arg): Split out from tsubst_copy.
6302         * tree.c (get_first_fn): Just return a TEMPLATE_ID_EXPR.
6303
6304 Mon Nov 10 20:08:38 1997  Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
6305
6306         * pt.c (tsubst_copy): Handle explicit template arguments in 
6307         function calls.
6308         * typeck.c (build_x_function_call): Likewise.
6309         * decl2.c (build_expr_from_tree): Lookup function name if it 
6310         hasn't been done.
6311
6312         * pt.c (tsubst): Instantiate template functions properly when 
6313         template parameter does not appear in function arguments and return 
6314         type.
6315         (comp_template_args): Handle member templates required by tsubst.
6316
6317 Mon Nov 10 20:08:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
6318
6319         * decl.c (grokdeclarator): Tweak conditions for pedwarn in
6320         previous change.
6321
6322 Mon Nov 10 20:08:29 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
6323
6324         * pt.c (coerce_template_parms): Tweak error message.
6325
6326         * decl.c (grokdeclarator): If -Wreturn-type, warn everytime a
6327         return type defaults to `int', even if there are storage-class
6328         specifiers.
6329
6330 Mon Nov 10 03:04:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
6331
6332         Complete nested exception support.
6333         * except.c (do_pop_exception): Split out...
6334         (push_eh_cleanup): From here.  Handle the EH region by hand.
6335         (expand_start_catch_block): Add a new level for the catch parm.
6336         Move the rethrow region outside the two cleanup regions.
6337         Protect the initializer for the catch parm with terminate.
6338         (expand_end_catch_block): Likewise.  End the region for the eh_cleanup.
6339         * exception.cc (__cp_pop_exception): Now takes two parms.  Handle
6340         popping off the middle of the stack.
6341         * tree.c (lvalue_p, real_lvalue_p): Handle TRY_CATCH_EXPR, 
6342         WITH_CLEANUP_EXPR, and UNSAVE_EXPR.
6343         (build_cplus_new): Only wrap CALL_EXPRs.
6344         * init.c (expand_default_init): Handle a TRY_CATCH_EXPR around 
6345         the constructor call.
6346
6347 Sun Nov  9 18:00:26 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
6348
6349         * Make-lang.in (c++.distdir): Make inc subdirectory.
6350
6351 Fri Nov  7 11:57:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
6352
6353         * decl2.c (finish_file): Put back some code.
6354
6355 Thu Nov  6 11:28:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
6356
6357         * decl2.c (finish_file): Remove redundant code.
6358         * method.c (emit_thunk): Don't let the backend defer generic thunks.
6359
6360 Wed Nov  5 23:52:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
6361
6362         * except.c (call_eh_info): Split out...
6363         (push_eh_info): From here.
6364         (expand_builtin_throw): Use it.
6365         (expand_start_catch_block): Move region start back.
6366
6367 Tue Nov  4 13:45:10 1997  Doug Evans  <devans@canuck.cygnus.com>
6368
6369         * lex.c (MULTIBYTE_CHARS): #undef if cross compiling.
6370         (real_yylex): Record wide strings using target endianness, not host.
6371
6372 1997-11-03  Brendan Kehoe  <brendan@lisa.cygnus.com>
6373
6374         * repo.c (rindex): Add decl unconditionally.
6375         (get_base_filename, open_repo_file): Don't cast rindex.
6376         * xref.c (rindex): Add decl unconditionally.
6377         (index): Remove unused decl.
6378         (open_xref_file): Don't cast rindex.
6379
6380 Sun Nov  2 15:04:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
6381
6382         * class.c (build_vbase_path): Propagate the result type properly.
6383
6384 1997-11-01  Brendan Kehoe  <brendan@lisa.cygnus.com>
6385
6386         * except.c (expand_builtin_throw) [!DWARF2_UNWIND_INFO]: Replace
6387         remaining use of saved_throw_type with a call to get_eh_type.
6388
6389 1997-10-31  Brendan Kehoe  <brendan@lisa.cygnus.com>
6390
6391         * lex.c (FILE_NAME_NONDIRECTORY): Delete macro.
6392         (file_name_nondirectory): New function, doing the same as the macro.
6393         (set_typedecl_interface_info): Use it instead of the macro.
6394         (check_newline): Likewise.
6395         (handle_cp_pragma): Likewise.
6396
6397         * repo.c (get_base_filename): Cast result of rindex to char*.
6398         (open_repo_file): Likewise.
6399         * xref.c (open_xref_file): Likewise.
6400         * error.c (dump_char): Make its arg int, not char.
6401
6402         * except.c (push_eh_info): Pass the number of fields - 1 down, not
6403         the exact number of fields.
6404
6405 Fri Oct 31 01:47:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
6406
6407         Support for nested exceptions.
6408         * tinfo2.cc (__is_pointer): New fn.
6409         * exception.cc (struct cp_eh_info): Define.
6410         (__cp_exception_info, __uncatch_exception): New fns.
6411         (__cp_push_exception, __cp_pop_exception): New fns.
6412         * except.c: Lose saved_throw_{type,value,cleanup,in_catch}.
6413         Lose empty_fndecl.
6414         (init_exception_processing): Likewise.  __eh_pc is now external.
6415         (push_eh_info): New fn.
6416         (get_eh_{info,value,type,caught}): New fns.
6417         (push_eh_cleanup): Just call __cp_pop_exception.
6418         (expand_start_catch_block): Use push_eh_info.  Start the eh region
6419         sooner.
6420         (expand_end_eh_spec): Use push_eh_info.
6421         (expand_throw): Call __cp_push_exception to set up the exception info.
6422         Just pass the destructor or 0 as the cleanup.  Call __uncatch_exception
6423         when we rethrow.
6424         (expand_builtin_throw): Don't refer to empty_fndecl.
6425
6426 Thu Oct 23 02:01:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
6427
6428         * pt.c (instantiate_decl): SET_DECL_IMPLICIT_INSTANTIATION on new decl.
6429
6430 1997-10-22  Brendan Kehoe  <brendan@cygnus.com>
6431
6432         * method.c (build_template_parm_names, build_decl_overload_real):
6433         Add static to definitions.
6434         * pt.c (add_to_template_args, note_template_header,
6435         processing_explicit_specialization, type_unification_real): Likewise.
6436         ({determine,check}_explicit_specialization): Use a single string for
6437         error messages.
6438
6439 Mon Oct 20 12:06:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
6440
6441         * except.c (expand_exception_blocks): Call do_pending_stack_adust.
6442         (expand_end_catch_block): Likewise.
6443         (expand_end_eh_spec): Likewise.
6444
6445 Mon Oct 20 11:44:20 1997  Mark Mitchell  <mmitchell@usa.net>
6446
6447         * decl.c (duplicate_decls): Handle template specializations
6448         correctly. 
6449         * error.c (dump_function_name): Fix printing of specializations of
6450         member functions that are not member templates.
6451         * cp-tree.h (processing_specialization): Make global.
6452         * pt.c (processing_specialization): Likewise.
6453         * lex.c (cons_up_default_function): Save and restore
6454         processing_specialization to avoid confusion.
6455         
6456 Mon Oct 20 10:52:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
6457
6458         * decl.c (init_decl_processing): Give null_node unknown* type.
6459         * typeck.c (comp_target_types): Handle UNKNOWN_TYPE.
6460         (common_type): Likewise.
6461         * error.c (args_as_string): Recognize null_node.
6462
6463 Sun Oct 19 09:13:01 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
6464
6465         * typeck.c (rationalize_conditional_expr): Handle {MIN,MAX}_EXPR.
6466         (unary_complex_lvalue): Call it for {MIN,MAX}_EXPR.
6467
6468         * decl.c (init_decl_processing): Call using_eh_for_cleanups.
6469
6470         * Make-lang.in (g++): Include prefix.o.
6471
6472 Thu Oct 16 15:31:09 1997  Judy Goldberg <judygold@sanwafp.com>
6473
6474         * pt.c (determine_explicit_specialization): Initialize "dummy"
6475         to keep Purify quiet.
6476
6477 Thu Oct 16 00:14:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
6478
6479         * method.c (build_overload_value): Handle TEMPLATE_CONST_PARMs here.
6480         (build_overload_int): Not here.
6481
6482 Wed Oct 15 00:35:28 1997  Mike Stump  <mrs@wrs.com>
6483
6484         * class.c (build_type_pathname): Remove.
6485         (prepare_fresh_vtable): Fix problem with complex MI vtable names.
6486
6487 1997-10-14  Brendan Kehoe  <brendan@lisa.cygnus.com>
6488
6489         * parse.y (unary_expr): Give a pedwarn if someone tries to use the
6490         &&label GNU extension.
6491
6492 Tue Oct 14 12:01:00 1997  Mark Mitchell  <mmitchell@usa.net>
6493
6494         * decl.c (pushtag): Unset DECL_ASSEMBLER_NAME before setting it,
6495         so as to avoid incorrect manglings.
6496         * method.c (build_decl_overload_real): Don't mangle return types
6497         for constructors.
6498         
6499 Tue Oct 14 11:46:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
6500
6501         * cp-tree.h (scratchalloc, build_scratch_list, make_scratch_vec,
6502         scratch_tree_cons): Define as macros for now.
6503         * call.c, class.c, cvt.c, decl.c, decl2.c, except.c, expr.c, init.c, 
6504         lex.c, method.c, parse.y, pt.c, rtti.c, search.c, tree.c, typeck.c,
6505         typeck2.c: Use them and the expression_obstack variants.
6506
6507 Mon Oct 13 17:41:26 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
6508
6509         * decl.c (store_return_init): Allow classes with explicit ctors to
6510         be used with the named return values extension.
6511
6512 Fri Oct 10 12:21:11 1997  Jason Merrill  <jason@yorick.cygnus.com>
6513
6514         * pt.c (instantiate_decl): Fix previous change.
6515
6516 Thu Oct  9 12:08:21 1997  Jason Merrill  <jason@yorick.cygnus.com>
6517
6518         * pt.c (tsubst): Fix thinko.
6519         (instantiate_decl): Really use the original template.
6520
6521         * call.c (build_new_method_call): Use simple constructor_name for
6522         error messages.
6523
6524 Wed Oct  8 22:44:42 1997  Jeffrey A Law  (law@cygnus.com)
6525
6526         * method.c (build_underscore_int): Don't use ANSI specific
6527         features.
6528
6529 Wed Oct  8 00:18:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
6530
6531         * decl2.c (finish_prevtable_vardecl): Check DECL_REALLY_EXTERN
6532         for our key method; it might have been inlined by -O3.
6533
6534 Tue Oct  7 23:00:12 1997  Mark Mitchell  <mmitchell@usa.net>
6535
6536         * decl.c (make_typename_type): Do not try to call lookup_field for
6537         non-aggregate types.
6538
6539 Tue Oct  7 22:52:10 1997  Jason Merrill  <jason@yorick.cygnus.com>
6540
6541         * typeck.c (build_reinterpret_cast): Tweak.
6542
6543 Tue Oct  7 22:45:31 1997  Alexandre Oliva  <oliva@dcc.unicamp.br>
6544
6545         * typeck.c (build_reinterpret_cast): converting a void pointer
6546         to function pointer with a reinterpret_cast produces a warning
6547         if -pedantic is issued
6548
6549 Tue Oct  7 22:43:43 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
6550
6551         * typeck.c (c_expand_return): Don't warn about returning a
6552         reference-type variable as a reference.
6553
6554 Tue Oct  7 21:11:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
6555
6556         * method.c (build_static_name): Fix typo.
6557
6558 1997-10-07  Brendan Kehoe  <brendan@lisa.cygnus.com>
6559
6560         * decl.c (duplicate_decls): Make sure DECL_LANG_SPECIFIC is set on
6561         OLDDECL before we try to do DECL_USE_TEMPLATE.
6562
6563 Tue Oct  7 00:48:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
6564
6565         * decl.c (duplicate_decls): Don't warn about template instances.
6566
6567         * typeck.c (mark_addressable): Lose ancient code that unsets
6568         DECL_EXTERNAL.
6569
6570         * pt.c (do_decl_instantiation): Lose support for instantiating
6571         non-templates.
6572
6573         * call.c (build_new_function_call): Fix handling of null explicit
6574         template args.
6575         (build_new_method_call): Likewise.
6576
6577 Mon Oct  6 23:44:34 1997  Mark Mitchell  <mmitchell@usa.net>
6578
6579         * method.c (build_underscore_int): Fix typo.
6580
6581 1997-10-06  Brendan Kehoe  <brendan@lisa.cygnus.com>
6582
6583         * tree.c (print_lang_statistics): #if 0 call to
6584         print_inline_obstack_statistics until its definition is checked in.
6585
6586 Mon Oct  6 09:27:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
6587
6588         * decl2.c (finish_file): Move dump_tree_statistics to end.
6589
6590         * pt.c (instantiate_decl): Look for the original template.
6591         (tsubst): Set DECL_IMPLICIT_INSTANTIATION on partial instantiations
6592         of member templates.
6593
6594 Wed Oct  1 08:41:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
6595
6596         * Makefile.in (g++FAQ.*): New rules.
6597         (CONFLICTS): Update.
6598         * g++FAQ.texi: Moved from libg++.
6599
6600         * parse.y (PFUNCNAME): Only specify the type once.
6601
6602 1997-10-01  Brendan Kehoe  <brendan@lasher.cygnus.com>
6603
6604         * lex.c (real_yylex): Clean up the code to fully behave the way
6605         the c-lex.c parser does for complex and real numbers.
6606
6607 Tue Sep 30 08:51:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
6608
6609         * method.c (build_decl_overload_real): Reformat.
6610
6611 Tue Sep 30 00:18:26 1997  Jason Merrill  <jason@yorick.cygnus.com>
6612
6613         * method.c (synthesize_method): If at_eof, determine our linkage.
6614
6615 1997-09-29  Paul Eggert  <eggert@twinsun.com>
6616
6617         * lex.c (real_yylex): Treat `$' just like `_', except issue a
6618         diagnostic if !dollars_in_ident or if pedantic.
6619
6620         * lang-specs.h (@c++): -ansi no longer implies -$.
6621
6622         * decl2.c (lang_decode_option):
6623         -traditional and -ansi now do not mess with
6624         dollars_in_ident.
6625
6626 Mon Sep 29 19:57:51 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
6627
6628         * Makefile.in (parse.o, decl.o): Also depend on
6629         $(srcdir)/../except.h $(srcdir)/../output.h.
6630         (decl2.o): Also depend on $(srcdir)/../expr.h ../insn-codes.h
6631         $(srcdir)/../except.h $(srcdir)/../output.h.
6632         (typeck.o, init.o): Also depend on $(srcdir)/../expr.h
6633         ../insn-codes.h.
6634
6635         * call.c, cp-tree.h, decl.c, tree.c: Finish prototyping.
6636
6637         * expr.c (cplus_expand_expr): Make it static. 
6638
6639         * decl2.c, init.c, typeck.c: Include "expr.h".
6640         (expand_expr): Use proper values when calling the function.
6641
6642 Mon Sep 29 11:05:54 1997  Alexandre Oliva  <oliva@dcc.unicamp.br>
6643
6644         * lang-options.h: new -Wold-style-cast flag.
6645         * cp-tree.h (warn_old_style_cast): new variable.
6646         * decl2.c (warn_old_style_cast): ditto.
6647         (lang_decode_option): support -Wold-style-cast.
6648         (reparse_absdcl_as_casts): produce old-style-cast warning.
6649
6650 Mon Sep 29 09:20:53 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
6651
6652         * decl.c (cp_finish_decl): Allow expand_aggr_init to set
6653         TREE_USED, reset value based on already_used.
6654
6655         * init.c (expand_member_init): Revert change.
6656         
6657 Mon Sep 29 08:57:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
6658
6659         * cp-tree.h, decl.c, decl2.c, pt.c:
6660         Lose DECL_C_STATIC and DECL_PUBLIC.  Don't pretend statics are public.
6661
6662         * decl2.c (lang_decode_option): Add missing ;.
6663
6664 Sat Sep 27 16:22:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
6665
6666         * friend.c (do_friend): Disable injection for all template-derived
6667         decls.
6668         * decl2.c (lang_decode_option): Handle -fguiding-decls.
6669         * parse.y (notype_template_declarator): New nonterminal.
6670         (direct_notype_declarator): Use it.
6671         (complex_direct_notype_declarator): Likewise.
6672         (object_template_id): Accept any kind of identifier after TEMPLATE.
6673         (notype_qualified_id): Don't add template declarators here.
6674
6675 Sat Sep 27 16:21:58 1997  Mark Mitchell  <mmitchell@usa.net>
6676
6677         * call.c (add_template_candidate): Add explicit_targs parameter.
6678         (build_scoped_method_call): Use it.
6679         (build_overload_call_real): Likewise.
6680         (build_user_type_conversion_1): Likewise.
6681         (build_new_function_call): Likewise.
6682         (build_object_call): Likewise.
6683         (build_new_op): Likewise.
6684         (build_new_method_call): Likewise.
6685         (build_new_function_call): Handle TEMPLATE_ID_EXPR.
6686         (build_new_method_call): Likewise.
6687
6688         * class.c (finish_struct_methods): Add specialization pass to
6689         determine which methods were specializing which other methods.
6690         (instantiate_type): Handle TEMPLATE_ID_EXPR.
6691
6692         * cp-tree.def (TEMPLATE_ID_EXPR): New tree code.
6693
6694         * cp-tree.h (name_mangling_version): New variable.
6695         (flag_guiding_decls): Likewise.
6696         (build_template_decl_overload): New function.
6697         (begin_specialization): Likewise.
6698         (reset_specialization): Likewise.
6699         (end_specialization): Likewise.
6700         (determine_explicit_specialization): Likewise.
6701         (check_explicit_specialization): Likewise.
6702         (lookup_template_function): Likewise.
6703         (fn_type_unification): Add explicit_targs parameter.
6704         (type_unification): Likewise.
6705
6706         * decl.c (duplicate_decls): Add smarts for explicit
6707         specializations.
6708         (grokdeclarator): Handle TEMPLATE_ID_EXPR, and function
6709         specializations.
6710         (grokfndecl): Call check_explicit_specialization.
6711
6712         * decl2.c (lang_decode_option): Handle -fname-mangling-version.
6713         (build_expr_from_tree): Handle TEMPLATE_ID_EXPR.
6714         (check_classfn): Handle specializations.
6715
6716         * error.c (dump_function_name): Print specialization arguments.
6717
6718         * friend.c (do_friend): Don't call pushdecl for template 
6719         instantiations. 
6720
6721         * init.c (build_member_call): Handle TEMPLATE_ID_EXPR.
6722
6723         * lang-options.h: Add -fname-mangling-version, -fguiding-decls, 
6724         and -fno-guiding-decls.
6725
6726         * lex.c (identifier_type): Return PFUNCNAME for template function
6727         names.
6728
6729         * method.c (build_decl_overload_real): New function.
6730         (build_template_parm_names): New function.
6731         (build_overload_identifier): Use it.
6732         (build_underscore_int): New function.
6733         (build_overload_int): Use it.  Add levels for template
6734         parameters.
6735         (build_overload_name): Likewise.  Also, handle TYPENAME_TYPEs.
6736         (build_overload_nested_names): Handle template type parameters.
6737         (build_template_decl_overload): New function.
6738
6739         * parse.y (YYSTYPE): New ntype member.
6740         (nested_name_specifier): Use it.
6741         (nested_name_specifier_1): Likewise.
6742         (PFUNCNAME): New token.
6743         (template_id, object_template_id): New non-terminals.
6744         (template_parm_list): Note specializations.
6745         (template_def): Likewise.
6746         (structsp): Likewise.
6747         (fn.def2): Handle member template specializations.
6748         (component_decl_1): Likewise.
6749         (direct_notype_declarator): Handle template-ids.
6750         (component_decl_1): Likewise.
6751         (direct_notype_declarator): Handle template-ids.
6752         (primary): Handle TEMPLATE_ID_EXPR, and template-ids.
6753
6754         * pt.c (processing_specializations): New variable.
6755         (template_header_count): Likewise.
6756         (type_unification_real): New function.
6757         (processing_explicit_specialization): Likewise.
6758         (note_template_header): Likewise.
6759         (is_member_template): Handle specializations.
6760         (end_template_decl): Call reset_specialization.
6761         (push_template_decl): Handle member template specializations.
6762         (tsubst): Likewise.
6763         (tsubst_copy): Handle TEMPLATE_ID_EXPR.
6764         (instantiate_template): Handle specializations.
6765         (instantiate_decl): Likewise.
6766         (fn_type_unification): Handle explicit_targs.
6767         (type_unification): Likewise.  Allow incomplete unification
6768         without an error message, if allow_incomplete.
6769         (get_bindings): Use new calling sequence for fn_type_unification.
6770
6771         * spew.c (yylex): Handle PFUNCNAME.
6772
6773         * tree.c (is_overloaded_fn): Handle TEMPLATE_ID_EXPR.
6774         (really_overloaded_fn): Likewise.
6775         (get_first_fn): Handle function templates.
6776
6777         * typeck.c (build_x_function_call): Use really_overloaded_fn.
6778         Handle TEMPLATE_ID_EXPR.
6779         (build_x_unary_op): Likewise.
6780         (build_unary_op): Likewise.
6781         (mark_addressable): Templates whose address is taken are marked  
6782         as used. 
6783
6784 1997-09-25  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
6785
6786         * decl.c (init_decl_processing): Declare __builtin_constant_p as
6787         accepting any kind of type, not only int.
6788
6789 Fri Sep 26 00:22:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
6790
6791         * search.c (get_matching_virtual): Notice virtual bases when sorrying
6792         about covariant returns.
6793
6794         * parse.y (member_init): Also imply typename here.  Remove ancient
6795         extension for initializing base members.
6796
6797 Thu Sep 25 11:11:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
6798
6799         Handle multi-level typenames and implicit typename in base list.
6800         * parse.y (typename_sub{,[0-2]}): New rules.
6801         (structsp, rule TYPENAME_KEYWORD): Use typename_sub.
6802         (nonnested_type): New rule.
6803         (complete_type_name): Use it.
6804         (base_class.1): Use typename_sub and nonnested_type.
6805         (nested_name_specifier): Don't elide std:: here.
6806         * decl.c (make_typename_type): Handle getting a type for NAME.
6807         (lookup_name_real): Turn std:: into :: here.
6808
6809         Rvalue conversions were removed in London.
6810         * call.c (is_subseq): Don't consider lvalue transformations.
6811         (build_conv): LVALUE_CONV and RVALUE_CONV get IDENTITY_RANK.
6812         (joust): Reenable ?: kludge.
6813
6814 1997-09-22  Brendan Kehoe  <brendan@lisa.cygnus.com>
6815
6816         * decl.c (start_function): Up warning of no return type to be a
6817         pedwarn.
6818
6819 Mon Sep 22 14:15:34 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
6820
6821         * init.c (expand_member_init): Don't set TREE_USED.
6822         * decl.c (cp_finish_decl): Mark decls used if type has TREE_USED
6823         set,don't clear TREE_USED wholesale.
6824
6825 Sat Sep 20 15:31:00 1997  Jason Merrill  <jason@yorick.cygnus.com>
6826
6827         * call.c (build_over_call): Do require_complete_type before
6828         build_cplus_new.
6829
6830 Thu Sep 18 16:47:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
6831
6832         * search.c (lookup_field): Call complete_type in all cases.
6833
6834         * decl.c (finish_function): Just warn about flowing off the end.
6835
6836 Wed Sep 17 10:31:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
6837
6838         * decl.c (grokparms): Don't bash a permanent list node if we're
6839         in a function.
6840
6841 1997-09-17  Brendan Kehoe  <brendan@lisa.cygnus.com>
6842
6843         * Makefile.in (CONFLICTS): Fix s/r conflict count to 18.
6844
6845 Tue Sep 16 14:06:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
6846
6847         * call.c (build_new_op): Give better error for syntactically
6848         correct, but semantically invalid, use of undeclared template.
6849
6850         * call.c (compare_qual): Handle pmfs.
6851
6852         * decl.c (store_parm_decls): last_parm_cleanup_insn is the insn
6853         after the exception spec.
6854
6855 Mon Sep 15 11:52:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
6856
6857         * call.c (null_ptr_cst_p): Integer type, not integral type.
6858
6859         * call.c (joust): Disable warnings until they can be moved to the
6860         right place.
6861
6862 Fri Sep 12 16:11:13 1997  Per Bothner  <bothner@cygnus.com>
6863
6864         * Makefile.in, config-lang.in:  Convert to autoconf.
6865
6866 Thu Sep 11 17:14:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
6867
6868         * decl.c (lookup_name_real): Add implicit 'typename' to types from
6869         base classes.
6870
6871         * pt.c (most_specialized_class): Fix typo.
6872         (tsubst): Move constant folding to TREE_VEC case.
6873
6874 Thu Sep 11 10:08:45 1997  Mark Mitchell  <mmitchell@usa.net>
6875
6876         * pt.c (do_poplevel): Don't warn about unused local variables
6877         while processing_template_decl since we don't always know whether
6878         or not they will need constructing/destructing.
6879
6880         * pt.c (uses_template_parms): Check the values of an enumeration
6881         type to make sure they don't depend on template parms.
6882
6883         * decl.c (make_typename_type): Don't lookup the field if the
6884         context uses template parms, even if we're not
6885         processing_template_decl at the moment.
6886
6887         * pt.c (coerce_template_parms): Avoid looking at the
6888         TYPE_LANG_DECL portion of a typename type, since there won't be
6889         one. 
6890         (tsubst): Do constant folding as necessary to make sure that
6891         arguments passed to lookup_template_class really are constants. 
6892
6893 Wed Sep 10 11:21:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
6894
6895         * except.c (expand_builtin_throw): #ifndef DWARF2_UNWIND_INFO.
6896         * decl2.c (finish_file): Only register exception tables if we
6897         need to.
6898
6899         * decl.c (init_decl_processing): Add __builtin_[fs]p.
6900
6901 Tue Sep  9 19:49:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
6902
6903         * pt.c (unify): Just return 0 for a TYPENAME_TYPE.
6904
6905 Tue Sep  9 17:57:25 1997  Mark Mitchell  <mmitchell@usa.net>
6906
6907         * error.c (dump_decl): Avoid crashing when presented with a
6908         uninitialized constant, as can occur with a template parameter.
6909         (dump_expr): Make sure that there are enough levels of
6910         current_template_parms before we start diving through them.
6911
6912 1997-09-09  Brendan Kehoe  <brendan@lisa.cygnus.com>
6913
6914         * typeck.c (build_indirect_ref): Heed FLAG_VOLATILE similar to
6915         c-typeck.c.
6916
6917 Tue Sep  9 09:36:39 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
6918
6919         * except.c (expand_throw): Call build_delete for all 
6920         exception types, not just objects with destructors.
6921
6922 Mon Sep  8 02:33:20 1997  Jody Goldberg  <jodyg@idt.net>
6923
6924         * decl.c (current_local_enum): Remove static.
6925         * pt.c (tsubst_enum): Save and restore value of current_local_enum
6926         in case template is expanded in enum decl.
6927         (instantiate_class_template) : Use new tsubst_enum signature.
6928         (tsubst_expr): Likewise.
6929
6930 Mon Sep  8 01:21:43 1997  Mark Mitchell  <mmitchell@usa.net>
6931
6932         * pt.c (begin_member_template_processing): Take a function as
6933         argument, not a set of template arguments.  Use the template
6934         parameters, rather than the arguments.  Handle non-type parameters
6935         correctly.  Push a binding level for the parameters so that multiple
6936         member templates using the same parameter names can be declared.
6937         (end_member_template_processing): Pop the binding level.
6938         (push_template_decl): Mark member templates as static when
6939         appropriate. 
6940
6941         * lex.c (do_pending_inlines): Pass the function, not its template
6942         arguments, to begin_member_template_processing.
6943         (process_next_inline): Likewise.
6944         (do_pending_defargs): Likewise.
6945
6946         * error.c (dump_expr): Obtain the correct declaration for a
6947         TEMPLATE_CONST_PARM. 
6948
6949         * call.c (add_template_conv_candidate): New function.
6950         (build_object_call): Handle member templates, as done in the other
6951         build_ functions.
6952         
6953 Sat Sep  6 10:20:27 1997  Mark Mitchell  <mmitchell@usa.net>
6954
6955         * decl.c (replace_defag): Undo previous change.
6956         * lex.c (do_pending_defargs): Deal with member templates.
6957         
6958         * pt.c (is_member_template): Avoid crashing when passed a
6959         non-function argument.
6960
6961 Fri Sep  5 17:27:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
6962
6963         * class.c (grow_method): Remove check for redeclaration.
6964
6965 Fri Sep  5 01:37:17 1997  Mark Mitchell  <mmitchell@usa.net>
6966
6967         * cp-tree.h (INNERMOST_TEMPLATE_PARMS): New macro.
6968         (DECL_INNERMOST_TEMPLATE_PARMS): Likewise.
6969         (PRIMARY_TEMPLATE_P): Use it.
6970         * call.c (build_overload_call_real): Use it.
6971         * class.c (instantiate_type): Likewise.
6972         * decl.c (decls_match): Likewise.
6973         * method.c (build_overload_identifier): Likewise.
6974         * pt.c (push_template_decl): Likewise.
6975         (classtype_mangled_name): Likewise.
6976         (lookup_template_class): Likewise.
6977         
6978         * cp-tree.h (DECL_NTPARMS): Change name from DECL_NT_PARMS to
6979         DECL_NTPARMS to conform to usage elsewhere.
6980         * call.c (add_template_candidate): Likewise.
6981         * class.c (instantiate_type): Likewise.
6982         * pt.c (instantiate_template): Likewise.
6983         (get_bindings): Likewise.
6984         
6985         * class.c (grow_method): Use DECL_FUNCTION_TEMPLATE_P instead of
6986         is_member_template.
6987
6988         * pt.c (unify): Undo changes to allow multiple levels of template
6989         parameters. 
6990         (type_unification): Likewise.
6991         (fn_type_unification): Likewise.
6992         (get_class_bindings): Likewise.
6993         * cp-tree.h (Likewise).
6994         
6995         * decl.c (replace_defarg): Check that the type of the default
6996         parameter does not invlove a template type before complaining
6997         about the initialization.
6998
6999         * error.c (dump_expr): Deal with template constant parameters in
7000         member templates correctly.
7001
7002         * pt.c (is_member_template): Deal with class specializations
7003         correctly. 
7004         (tsubst): Handle "partial instantiation" of member templates
7005         correctly. 
7006
7007 Wed Sep  3 12:30:24 1997  Mark Mitchell  <mmitchell@usa.net>
7008
7009         * pt.c (type_unification): Change calling squence to allow for
7010         multiple levels of template parameters.
7011         (tsubst_expr): Likewise.
7012         (tsubst): Likewise.
7013         (tsubst_copy): Likewise.
7014         (instantiate_template): Likewise.
7015         (unify): Likewise.
7016         * call.c (build_overload_call_real): Use it.
7017         (add_builtin_candidate): Use it.
7018         (build_new_method_call): Use it.
7019         * class.c (instantiate_type): Use it.
7020         * decl.c (grokdeclarator): Use it.
7021         * decl2.c (finish_file): Use it.
7022         * method.c (build_overload_identifier): Use it.
7023         
7024         * call.c (add_template_candidate):  Add additional parameter for
7025         the function return type.  Call fn_type_unification istead of
7026         type_unification.
7027         (build_user_type_conversion_1): Handle member templates.
7028         (build_new_function_call): Likewise.
7029         (build_new_op): Likewise.
7030         (build_new_method_call): Likewise.
7031         
7032         * class.c (grow_method): Don't give an error message indicating
7033         that two member templates with the same name are ambiguous.
7034         (finish_struct): Treat member template functions just like member
7035         functions.
7036         
7037         * cp-tree.h (check_member_template): Add declaration.
7038         (begin_member_template_processing): Likewise.
7039         (end_member_template_processing): Likewise.
7040         (fn_type_unification): Likewise.
7041         (is_member_template): Likewise.
7042         (tsubst): Change prototype.
7043         (tsubst_expr): Likewise.
7044         (tsubst_copy): Likewise.
7045         (instantiate_template): Likewise.
7046         (get_bindings): Likewise.
7047
7048         * decl.c (decls_match): Handle multiple levels of template
7049         parameters. 
7050         (pushdecl): Handle template type params just like other type
7051         declarations. 
7052         (push_class_level_binding): Return immediately if the
7053         class_binding_level is NULL.
7054         (grokfndecl): If check_classfn() returns a member_template, use
7055         the result of the template, not the template itself.
7056         
7057         * decl2.c (check_member_template): New function.  Check to see
7058         that the entity declared to be a member template can be one.
7059         (check_classfn): Allow redeclaration of member template functions
7060         with different types; the new functions can be specializations or
7061         explicit instantiations.
7062         
7063         * error.c (dump_decl): Handle multiple levels of template
7064         parameters. 
7065         (dump_function_decl): Update to handle function templates.
7066
7067         * lex.c (do_pending_inlines): Set up template parameter context
7068         for member templates.
7069         (process_next_inline): Likewise.
7070
7071         * method. (build_overload_identifier): Adjust for multiple levels
7072         of template parameters.
7073         
7074         * parse.y (fn.def2): Add member templates.
7075         (component_decl_1): Likewise.
7076
7077         * pt.c (begin_member_template_processing): New function.
7078         (end_member_template_processing): Likewise.
7079         (is_member_template): Likewise.
7080         (fn_type_unification): Likewise.
7081         (current_template_parms): Return a vector of all the template
7082         parms, not just the innermost level of parms.
7083         (push_template_decl): Deal with the possibility of member
7084         templates. 
7085         (lookup_template_class): Likewise.
7086         (uses_template_parms): Likewise.
7087         (tsubst): Modify processing to TEMPLATE_TYPE_PARM and
7088         TEMPLATE_CONST_PARM to deal with multiple levels of template
7089         arguments.   Add processing of TEMPLATE_DECL to produce new
7090         TEMPLATE_DECLs from old ones.
7091         (do_decl_instantiation): Handle member templates.
7092
7093         * search.c (lookup_fnfields_1): Handle member template conversion
7094         operators. 
7095
7096         * tree.c (cp_tree_equal): Check the levels, as well as the
7097         indices, of TEMPLATE_CONST_PARMs.
7098
7099         * typeck.c (comptypes): Check the levels, as well as the indices,
7100         fo TEMPLATE_TYPE_PARMs.
7101         (build_x_function_call): Treat member templates like member
7102         functions. 
7103         
7104 Wed Sep  3 11:09:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
7105
7106         * typeck.c (c_expand_return): Always convert_for_initialization
7107         before checking for returning a pointer to local.
7108
7109         * pt.c (type_unification): If strict and the function parm doesn't
7110         use template parms, just compare types.
7111
7112 Wed Sep  3 10:35:49 1997  Klaus Espenlaub  <kespenla@student.informatik.uni-ulm.de>
7113
7114         * method.c (build_overloaded_value): Replace direct call
7115         to the floating point emulator with REAL_VALUE_TO_DECIMAL macro.
7116
7117 Wed Sep  3 00:02:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
7118
7119         * typeck.c (convert_arguments): Don't arbitrarily choose the first
7120         of a set of overloaded functions.
7121
7122 Tue Sep  2 12:09:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
7123
7124         * lex.c (real_yylex): Don't elide __FUNCTION__.
7125
7126         * method.c (build_overload_value): Add in_template parm.
7127         (build_overload_int): Likewise.
7128         (build_overload_identifier): Pass it.
7129
7130         * decl.c (duplicate_decls): Don't bash a previous template
7131         definition with a redeclaration.
7132
7133         * pt.c (unify): float doesn't match double.
7134
7135         * pt.c (do_type_instantiation): Handle getting a _TYPE or a
7136         TYPE_DECL.  Handle getting non-template types.
7137         * parse.y (explicit_instantiation): Use typespec instead of
7138         aggr template_type.
7139
7140 Tue Sep  2 10:27:08 1997  Richard Henderson  <rth@cygnus.com>
7141
7142         * typeck.c (build_ptrmemfunc1): Clean up ptr->int cast warnings.
7143
7144 Mon Sep  1 13:19:04 1997  Eugene Mamchits <eugin@ips.ras.ru>
7145
7146         * call.c (add_builtin_candidate): Add missing TREE_TYPE.
7147         (compare_ics): Likewise.
7148
7149 Mon Sep  1 13:19:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
7150
7151         * call.c (joust): Warn about choosing one conversion op over
7152         another because of 'this' argument when the other return type is
7153         better.
7154         (source_type): New fn.
7155
7156         * call.c (build_new_op): Strip leading REF_BIND from first operand
7157         to builtin operator.
7158
7159         * decl2.c (mark_vtable_entries): Mark abort_fndecl as used when we
7160         use its RTL.
7161
7162 Thu Aug 28 09:45:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
7163
7164         * call.c (null_ptr_cst_p): Remove support for (void*)0.
7165
7166 Wed Aug 27 02:03:34 1997  Jeffrey A Law  (law@cygnus.com)
7167
7168         * typeck.c (expand_target_expr): Make definition match declaration.
7169
7170         * class.c (get_basefndecls): Make definition match declaration.
7171
7172 Mon Aug 25 14:30:02 1997  Jason Merrill  <jason@yorick.cygnus.com>
7173
7174         * input.c (sub_getch): Eventually give up and release the input file.
7175
7176         * decl.c (cp_finish_decl): If #p i/i, put inline statics in the
7177         right place.
7178
7179         * call.c (joust): Tweak message.
7180
7181 Sat Aug 23 18:02:59 1997  Mark Mitchell  <mmitchell@usa.net>
7182
7183         * error.c (type_as_string): Put const/volatile on template type
7184         parameters where appropriate.
7185
7186 Sat Aug 23 17:47:22 1997  Jeffrey A Law  (law@cygnus.com)
7187
7188         * call.c (strictly_better): Make arguments unsigned ints.
7189
7190 Thu Aug 21 18:48:44 1997  Jason Merrill  <jason@yorick.cygnus.com>
7191
7192         * lex.c (real_yylex): Refer to __complex instead of complex.
7193
7194 Thu Aug 21 22:25:46 1997  J"orn Rennecke <amylaar@cygnus.co.uk>
7195
7196         * lex.c (real_yylex): Don't use getc directly.
7197
7198 Wed Aug 20 17:25:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
7199
7200         * call.c (is_subseq): Don't try to be clever.
7201
7202 Wed Aug 20 03:13:36 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
7203
7204         * parse.y, pt.c: Include "except.h".
7205         * call.c, class.c, class.h, cp-tree.h, cvt.c, decl.c, decl2.c,
7206         error.c, except.c, expr.c, friend.c, g++spec.c, init.c, input.c,
7207         lex.c, lex.h, method.c, parse.y, pt.c, repo.c, rtti.c, search.c,
7208         sig.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c: Finish
7209         prototyping.
7210
7211 Wed Aug 20 01:34:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
7212
7213         * decl2.c (mark_vtable_entries): Instead of replacing pure
7214         virtuals with a reference to __pure_virtual, copy the decl and
7215         change the RTL.
7216
7217 Tue Aug 19 02:26:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
7218
7219         * pt.c (lookup_nested_type_by_name): Handle typedef wierdness.
7220
7221         * typeck2.c (my_friendly_abort): Report bugs to egcs-bugs@cygnus.com.
7222
7223         * pt.c (instantiate_class_template): Call repo_template_used
7224         before finish_prevtable_vardecl.
7225
7226         * call.c (is_subseq): New fn.
7227         (compare_ics): Use it.
7228
7229         * repo.c (finish_repo): Don't crash on no args.
7230
7231         * parse.y (named_complex_class_head_sans_basetype): Handle
7232         explicit global scope.
7233         * decl2.c (handle_class_head): New fn.
7234
7235         * pt.c (unify): Add CONST_DECL case.
7236
7237 Thu Aug 14 10:05:13 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7238
7239         * rtti.c (permanent_obstack): Fix decl to not be a pointer.
7240
7241         * cp-tree.h (report_type_mismatch): Add prototype.
7242         * call.c (build_overload_call_real): Remove erroneous fourth
7243         argument to report_type_mismatch.
7244         (build_user_type_conversion_1): Remove erroneous second arg to
7245         tourney.
7246         (build_new_function_call): Likewise.
7247         (build_object_call): Likewise.
7248         (build_new_op): Likewise.
7249         (build_new_method_call): Likewise.
7250
7251 Wed Aug 13 19:19:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
7252
7253         * error.c (dump_decl): Don't bother processing a function with no
7254         DECL_LANG_SPECIFIC.
7255
7256         * method.c (emit_thunk): Call init_function_start in the macro case.
7257
7258 Wed Aug 13 10:46:19 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
7259
7260         * decl2.c (DEFAULT_VTABLE_THUNKS): Define to be 0 if not
7261         defined and used to set flag_vtable_thunks.
7262
7263 Tue Aug 12 20:13:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
7264
7265         * parse.y: Don't clear the inlines from their obstack until they've 
7266         all been processed.
7267
7268         * decl.c (duplicate_decls): Don't complain about exception
7269         specification mismatch if flag_exceptions is off.
7270
7271 Mon Aug 11 15:01:56  1997  Marc Lehmann <pcg@goof.com>
7272
7273         * Make-lang.in (c++.distclean): Remove g++.c on make distclean.
7274
7275 Sun Aug 10 12:06:09 1997  Paul Eggert  <eggert@twinsun.com>
7276
7277         * cp-tree.h: Replace STDIO_PROTO with PROTO in include files.
7278         * cvt.c, error.c, except.c, expr.c, friend.c, init.c, rtti.c:
7279         Include <stdio.h> before include files that formerly used STDIO_PROTO. 
7280
7281         * decl.c, g++spec.c, lex.c, method.c, repo.c:
7282         Include "config.h" first, as per autoconf manual.
7283
7284 Fri Aug  8 11:47:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
7285
7286         * decl.c (duplicate_decls): Tweak wording.
7287         * lex.c (do_pending_defargs): Don't die if we see a default arg
7288         that isn't a DEFAULT_ARG.
7289         * error.c (dump_expr): Handle DEFAULT_ARG.
7290
7291         * decl2.c (lang_decode_option): Handle -fhandle-exceptions.
7292         * lang-options.h: Add -fhandle-exceptions.
7293
7294         * class.c (build_vtable): vtables are artificial.
7295         (prepare_fresh_vtable): Likewise.
7296
7297 Wed Aug  6 11:02:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
7298
7299         * cvt.c (ocp_convert): After converting to the target type, set
7300         LOOKUP_NO_CONVERSION.
7301
7302         * call.c (joust): Warn about potentially confusing promotion rules
7303         with -Wsign-promo.
7304         * cp-tree.h, lang-options.h, decl2.c: Support -Wsign-promo.
7305
7306 Tue Aug  5 15:15:07 1997  Michael Meissner  <meissner@cygnus.com>
7307
7308         * exception.cc: Declare __terminate_func with noreturn attribute.
7309
7310 Fri Aug  1 03:18:15 1997  Jason Merrill  <jason@yorick.cygnus.com>
7311
7312         * parse.y: Break out eat_saved_input, handle errors.
7313         (function_try_block): Use compstmt instead of compstmt_or_error.
7314
7315 Thu Jul 31 17:14:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
7316
7317         * tree.c (build_cplus_new): Don't set TREE_ADDRESSABLE.
7318
7319 Fri Jul  4 01:45:16 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
7320
7321         * Make-lang.in (cplib2.txt, cplib2.ready): Instead of checking for
7322         existence of cc1plus check whether $(LANGUAGES) contains C++.
7323
7324 Wed Jul 30 13:04:21 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
7325
7326         * method.c (do_build_copy_constructor): When copying an anonymous
7327         union member loop around to handle nested anonymous unions.  Use
7328         the offset of the member relative to the outer structure, not the
7329         union.
7330
7331 Tue Jul 29 21:17:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
7332
7333         * call.c (resolve_args): New fn.
7334         (build_new_function_call): Use it.
7335         (build_object_call): Likewise.
7336         (build_new_method_call): Likewise.
7337
7338 Mon Jul 28 16:02:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
7339
7340         * call.c (build_over_call): tsubst all default parms from templates.
7341
7342 Wed Jul 23 13:36:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
7343
7344         * decl.c (struct cp_function): Add static_labelno.
7345         (push_cp_function_context): Save it.
7346         (pop_cp_function_context): Restore it.
7347
7348 Tue Jul 22 14:43:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
7349
7350         * typeck.c (build_component_ref_1): Convert from reference.
7351
7352 Tue Jul 22 11:06:23 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7353
7354         * parse.y (current_declspecs, prefix_attributes): Initialize to
7355         NULL_TREE.
7356
7357         * parse.y (initdcl0): Make sure CURRENT_DECLSPECS is non-nil
7358         before we try to force it to be a TREE_LIST.
7359         (decl): Make sure $1.t is non-nil.
7360
7361 Sun Jul 20 11:53:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
7362
7363         * pt.c (uses_template_parms): Handle template first-parse codes.
7364
7365         * decl.c (cp_finish_decl): Only warn about user-defined statics.
7366
7367 Fri Jul 18 17:56:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
7368
7369         * pt.c (unify): Handle BOOLEAN_TYPE.
7370
7371         * cp-tree.h: Lose PARM_DEFAULT_FROM_TEMPLATE.
7372         * pt.c (tsubst): Don't set it.
7373         * call.c (build_over_call): Use uses_template_parms.
7374
7375 Thu Jul 17 18:06:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
7376
7377         * method.c (build_overload_nested_name): Use static_labelno
7378         instead of var_labelno.
7379         (build_qualified_name): New fn.
7380         (build_overload_name): Split out from here.
7381         (build_static_name): Use build_qualified_name.
7382         * decl.c (cp_finish_decl): Statics in extern inline functions 
7383         have comdat linkage.
7384         (start_function): Initialize static_labelno.
7385
7386 Thu Jul 17 11:20:17 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
7387
7388         * class.c (finish_struct_methods): add check of warn_ctor_dtor_privacy
7389         before "all member functions in class [] are private"
7390
7391 Wed Jul 16 23:47:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
7392
7393         * lex.c (do_scoped_id): convert_from_reference.
7394         * init.c (build_offset_ref): Likewise.
7395
7396 Wed Jul 16 12:34:29 1997  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
7397
7398         * error.c (dump_expr): Check TREE_OPERAND before dump_expr_list.
7399
7400 Mon Jul 14 03:23:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
7401
7402         * typeck.c (get_member_function_from_ptrfunc): Promote index
7403         before saving it.
7404
7405 Sun Jul 13 00:11:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
7406
7407         * tree.c (layout_basetypes): Move non-virtual destructor warning.
7408         * decl.c (xref_basetypes): Remove non-virtual destructor warning.
7409
7410 Sat Jul 12 12:47:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
7411
7412         * decl.c (grokdeclarator): Call add_defarg_fn for the function
7413         type, too.
7414         * lex.c (add_defarg_fn): Adjust.
7415         (do_pending_defargs): Adjust.  Don't skip the first parm.
7416
7417 Fri Jul 11 01:39:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
7418
7419         * decl.c (build_enumerator): Global enumerators are also readonly.
7420
7421         * rtti.c (build_dynamic_cast_1): Renamed from build_dynamic_cast.
7422         (build_dynamic_cast): Call it and convert_from_reference.
7423
7424         * lex.c (add_defarg_fn): New fn.
7425         (snarf_defarg): Don't add to defarg_types.
7426         (do_pending_defargs): Lose defarg_types.  All fns we process now
7427         have defargs.
7428         * decl.c (grokfndecl): Call add_defarg_fn.
7429
7430         * Makefile.in (CONFLICTS): Expect 18 s/r conflicts.
7431         * cp-tree.def: Add DEFAULT_ARG.
7432         * spew.c (yylex): Call snarf_defarg as appropriate.
7433         * parse.y: New tokens DEFARG and DEFARG_MARKER.
7434         (defarg_again, pending_defargs, defarg, defarg1): New rules.
7435         (structsp): Use pending_defargs.
7436         (parms, full_parm): Use defarg.
7437         * lex.c (init_lex): Initialize inline_text_firstobj.
7438         (do_pending_inlines): Never pass the obstack to feed_input.
7439         (process_next_inline): Call end_input instead of restore_pending_input.
7440         (clear_inline_text_obstack, reinit_parse_for_expr, do_pending_defargs,
7441         finish_defarg, feed_defarg, snarf_defarg, maybe_snarf_defarg): New fns.
7442         * input.c (end_input): New fn.
7443         (sub_getch): At the end of some fed input, just keep returning EOF
7444         until someone calls end_input.
7445         Remove 'obstack' field from struct input_source.
7446         * decl.c (grokparms): Handle DEFAULT_ARG.
7447         (replace_defarg): New fn.
7448         * cp-tree.h (DEFARG_LENGTH, DEFARG_POINTER): New macros.
7449
7450 Wed Jul  9 13:44:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
7451
7452         * call.c (implicit_conversion): If nothing else works, try binding
7453         an rvalue to a reference.
7454
7455 Wed Jul  9 13:04:38 1997  Geoffrey Noer  <noer@cygnus.com>
7456
7457         * decl.c (init_decl_processing): fix Jun 30 patch -- move
7458         ifndef for Cygwin32 to include SIGSEGV.
7459
7460 Thu Jul  3 01:44:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
7461
7462         * class.c (finish_struct_1): Only complain about pointers without
7463         copy stuff if there are any constructors.
7464
7465         * rtti.c (build_dynamic_cast): Call complete_type on the types.
7466
7467         * decl.c (grokfndecl): If the function we chose doesn't actually
7468         match, die.
7469
7470         * decl2.c (grokclassfn): Don't specify 'const int' for the
7471         artificial destructor parm.
7472
7473         * pt.c (type_unification): If we are called recursively, nothing 
7474         decays.
7475
7476 Mon Jun 30 17:53:21 1997  Geoffrey Noer  <noer@cygnus.com>
7477
7478         * decl.c (init_decl_processing): Stop trying to catch signals
7479         other than SIGABRT since the Cygwin32 library doesn't support
7480         them correctly yet.  This fixes a situation in which g++ causes
7481         a hang on SIGSEGVs and other such signals in our Win32-hosted
7482         tools.
7483
7484 Mon Jun 30 14:50:01 1997  Jason Merrill  <jason@yorick.cygnus.com>
7485
7486         * tree.c (mapcar, case CALL_EXPR): Handle all the parse node data.
7487
7488 Fri Jun 27 15:18:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
7489
7490         * typeck2.c (store_init_value): Always return the value if our 
7491         type needs constructing.
7492
7493         * method.c (hack_identifier): Convert class statics from
7494         reference, too.
7495
7496 Thu Jun 26 11:44:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
7497
7498         * Make-lang.in (cplib2.ready): Add $(LANGUAGES) dependency.
7499
7500 Thu Jun 19 16:49:28 1997  Mike Stump  <mrs@cygnus.com>
7501
7502         * typeck.c (c_expand_return): Make sure we clean up temporaries at
7503         the end of return x;
7504
7505 Thu Jun 19 12:28:43 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7506
7507         * lex.c (check_for_missing_semicolon): Also check for CV_QUALIFIER.
7508
7509 Tue Jun 17 18:35:57 1997  Mike Stump  <mrs@cygnus.com>
7510
7511         * except.c (expand_builtin_throw): Add support
7512         -fno-sjlj-exceptions -fPIC exception handling on the SPARC.
7513
7514 Mon Jun 16 01:24:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
7515
7516         * repo.c (extract_string): Null-terminate.
7517
7518         * cp-tree.h (TI_SPEC_INFO): New macro.
7519         (CLASSTYPE_TI_SPEC_INFO): New macro.
7520         * pt.c (push_template_decl): Correctly determine # of template parms 
7521         for partial specs.
7522
7523         * call.c (compare_ics): Really fix 'this' conversions.
7524
7525         * pt.c (do_decl_instantiation): Don't crash on explicit inst of
7526         non-template fn.
7527
7528         * pt.c (push_template_decl): Complain about mismatch in # of
7529         template parms between a class template and a member template.
7530
7531 Sun Jun 15 02:38:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
7532
7533         * method.c (synthesize_method): You can't call
7534         function_cannot_inline_p after finish_function.
7535         * decl.c (finish_function): Turn on flag_inline_functions and turn
7536         off DECL_INLINE before handing a synthesized method to the
7537         backend.
7538
7539 Thu Jun 12 17:35:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
7540
7541         * method.c (synthesize_method): Remove July 30 change to never set
7542         DECL_INLINE if at_eof.
7543
7544 Thu Jun 12 15:25:08 1997  Mike Stump  <mrs@cygnus.com>
7545
7546         * xref.c (GNU_xref_member): Ensure that the node has a
7547         decl_lang_specific part before checking DECL_FRIEND_P.
7548
7549 Thu Jun 12 12:36:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
7550
7551         * pt.c (instantiate_class_template): Diagnose non-class types used
7552         as bases.
7553
7554 Wed Jun 11 17:33:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
7555
7556         * typeck.c (build_conditional_expr): Use convert_for_initialization
7557         instead of convert_and_check.
7558
7559 Wed Jun 11 12:31:33 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7560
7561         * parse.y (typespec): Don't pedwarn for typeof.
7562
7563 Tue Jun 10 00:22:09 1997  Jason Merrill  <jason@yorick.cygnus.com>
7564
7565         * repo.c (finish_repo): Only check changes if we would write a
7566         repo file.
7567
7568         * call.c (compare_ics): Fix handling of 'this' conversions.
7569
7570         * pt.c (do_decl_instantiation): Support static data too.  Rename
7571         from do_function_instantiation.
7572         * cp-tree.h: Adjust.
7573         * parse.y: Adjust.
7574
7575         * repo.c (extract_string): New fn.
7576         (get_base_filename): Use it.
7577         (init_repo): Compare old args with current args.
7578
7579 Mon Jun  9 14:25:30 1997  Mike Stump  <mrs@cygnus.com>
7580
7581         * Makefile.in, Make-lang.in: Protect C-ls with a comment
7582         character, idea from Paul Eggert <eggert@twinsun.com>.
7583
7584 Mon Jun  9 01:52:03 1997  Jason Merrill  <jason@yorick.cygnus.com>
7585
7586         * typeck.c (c_expand_return): Be more persistent in looking for
7587         returned temps.
7588
7589         * cvt.c (build_up_reference): Use NOP_EXPR for switching from
7590         pointer to reference.
7591
7592         * class.c (build_vbase_path): Don't do anything if PATH has no steps.
7593
7594 Sun Jun  8 03:07:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
7595
7596         * init.c (build_member_call, build_offset_ref):
7597         Use do_scoped_id instead of do_identifier.
7598
7599         * cvt.c (convert): Remove bogosity.
7600
7601 Sat Jun  7 20:50:17 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7602
7603         * cvt.c (build_up_reference): Do checks of ARGTYPE and
7604         TARGET_TYPE before trying to use get_binfo.
7605
7606 Fri Jun  6 17:36:39 1997  Jason Merrill  <jason@yorick.cygnus.com>
7607
7608         * cvt.c (build_up_reference): Call get_binfo to get access control.
7609
7610         * decl2.c (import_export_decl): If we don't support weaks, leave
7611         statics undefined.
7612
7613 Fri Jun  6 15:55:49 1997  Mike Stump  <mrs@cygnus.com>
7614
7615         * except.c (expand_builtin_throw): Add support for machines that
7616         cannot access globals after throw's epilogue when
7617         -fno-sjlj-exceptions is used.
7618
7619 Thu Jun  5 16:28:43 1997  Jason Merrill  <jason@yorick.cygnus.com>
7620
7621         * parse.y: 'std::' becomes '::'.
7622         * lex.c (real_yylex): Remove 'namespace' warning.
7623         * init.c (build_member_call): Ignore 'std::'.
7624         (build_offset_ref): Likewise.
7625         * decl2.c (do_using_directive): Ignore 'using namespace std;'.
7626         (do_toplevel_using_decl): Ignore 'using std::whatever'.
7627         * decl.c (push_namespace): Just sorry.
7628         (pop_namespace): Nop.
7629         (init_decl_processing): Declare std namespace.
7630
7631 Tue Jun  3 18:08:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
7632
7633         * search.c (push_class_decls): A name which ambiguously refers to
7634         several instantiations of the same template just refers to the
7635         template.
7636
7637 Tue Jun  3 12:30:40 1997  Benjamin Kosnik  <bkoz@cirdan.cygnus.com>
7638
7639         * decl.c (build_enumerator): fix problem with unsigned long
7640         enumerated values being smashed to ints, causing overflow
7641         when computing next enumerated value. (for enum values around
7642         MAX_VAL).
7643
7644 Mon Jun  2 17:40:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
7645
7646         * typeck.c (build_component_ref): Only call mark_used on a decl.
7647
7648 Thu May 29 15:54:17 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7649
7650         * typeck.c (build_c_cast): Make the check for a ptr to function
7651         more specific before possible default_conversion call.
7652
7653 Thu May 29 13:02:06 1997  Mike Stump  <mrs@cygnus.com>
7654
7655         * except.c (expand_exception_blocks): Simplify and fix and make
7656         sure we don't end a region in a sequence, as expand_end_bindings
7657         doesn't like it.
7658
7659 Wed May 28 17:08:03 1997  Mike Stump  <mrs@cygnus.com>
7660
7661         * except.c (init_exception_processing): Mark terminate as not
7662         returning so that the optimizer can optimize better.
7663
7664 Tue May 27 19:49:19 1997  Mike Stump  <mrs@cygnus.com>
7665
7666         * cvt.c (convert): Don't do any extra work, if we can avoid it
7667         easily.
7668
7669 Tue May 27 18:21:47 1997  Mike Stump  <mrs@cygnus.com>
7670
7671         * *.[chy]: Change cp_convert to ocp_convert, change convert to
7672         cp_convert.  convert is now reserved for the backend, and doesn't
7673         have the semantics a frontend person should ever want.
7674
7675 Fri May 23 10:58:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
7676
7677         * lang-specs.h: Define __EXCEPTIONS if exceptions are enabled.
7678         Lose -traditional support.
7679
7680 Thu May 22 15:41:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
7681
7682         * rtti.c (get_tinfo_var): Use TYPE_PRECISION (sizetype).
7683
7684         * parse.y (self_reference): Do it for templates, too.
7685         * class.c (pushclass): Don't overload_template_name; the alias
7686         generated by build_self_reference serves the same purpose.
7687
7688         * tree.c (list_hash): Make static, take more args.
7689         (list_hash_lookup): Likewise.
7690         (list_hash_add): Make static.
7691         (list_hash_canon): Lose.
7692         (hash_tree_cons): Only build a new node if one isn't already in the
7693         hashtable.
7694         (hash_tree_chain): Use hash_tree_cons.
7695         * cp-tree.h: Adjust.
7696         * decl.c (grokfndecl): Just check IDENTIFIER_GLOBAL_VALUE instead
7697         of calling lookup_name.
7698
7699 Wed May 21 18:24:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
7700
7701         * pt.c (instantiate_class_template): TYPE_VALUES for an enum
7702         doesn't refer to the CONST_DECLs.
7703
7704 Tue May 20 21:09:32 1997  Bob Manson  <manson@charmed.cygnus.com>
7705
7706         * rtti.c (get_tinfo_var): Either INT_TYPE_SIZE or 32, whichever
7707         is bigger.
7708         (expand_class_desc): Convert the last argument to a sizetype.
7709
7710 Tue May 20 13:55:57 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7711
7712         * gxx.gperf (__complex, __complex__, __imag, __imag__, __real,
7713         __real__): Add reswords.
7714         * hash.h: Regenerate.
7715         * lex.h (rid): Add RID_COMPLEX.
7716         (RID_LAST_MODIFIER): Set to RID_COMPLEX.
7717         * lex.c (init_lex): Add building of RID_COMPLEX.
7718         (real_yylex): General cleanup in line with what c-lex.c also has,
7719         sans the cruft for traditional; add handling of SPEC_IMAG, complex
7720         types, and imaginary numeric constants.
7721         * parse.y (REALPART, IMAGPART): Add tokens.
7722         (unary_expr): Add REALPART and IMAGPART rules.
7723         * cp-tree.h (complex_{integer,float,double,long}_type_node): Declare.
7724         * decl.c (complex_{integer,float,double,long}_type_node): Define
7725         types.
7726         (init_decl_processing): Set up the types.
7727         (grokdeclarator): Add handling of RID_COMPLEX.  Set and use
7728         DEFAULTED_INT instead of EXPLICIT_INT when we default to int type.
7729         * call.c (build_new_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
7730         * cvt.c (cp_convert): Handle COMPLEX_TYPE.
7731         * error.c (dump_type_prefix, dump_type, dump_type_suffix): Add
7732         COMPLEX_TYPE case.
7733         * method.c (build_overload_name): Add handling of the different
7734         COMPLEX_TYPEs, prefixing them with `J'.
7735         * pt.c (process_template_parm): Don't let them use a COMPLEX_TYPE
7736         as a template parm.
7737         (uses_template_parms, tsubst, unify): Add COMPLEX_TYPE case.
7738         * tree.c (lvalue_p): Add REALPART_EXPR and IMAGPART_EXPR cases.
7739         (mapcar): Handle COMPLEX_CST.
7740         * typeck.c (build_binary_op_nodefault): Handle COMPLEX_TYPE.
7741         (common_type): Add code for complex types.
7742         (build_unary_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
7743         (convert_for_assignment): Likewise.
7744         (mark_addressable): Add REALPART_EXPR and IMAGPART_EXPR cases.
7745
7746 Mon May 19 12:26:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
7747
7748         * pt.c (tsubst): Don't pass the MINUS_EXPR for an array domain to
7749         tsubst_expr, as it might try to do overload resolution.
7750
7751 Sat May 17 10:48:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
7752
7753         * pt.c (instantiate_class_template): Oops.
7754
7755 Fri May 16 14:23:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
7756
7757         * cp-tree.def: Add TAG_DEFN.
7758         * pt.c (tsubst_enum): New fn.
7759         (instantiate_class_template): Use it.
7760         (tsubst_expr): Support TAG_DEFN.
7761         (tsubst): Support local enums.
7762         (tsubst_copy): Likewise.
7763         * decl.c (finish_enum): Likewise.
7764         (start_enum): If this is a local enum, switch to permanent_obstack.
7765
7766 Wed May 14 19:08:28 1997  Mike Stump  <mrs@cygnus.com>
7767
7768         * decl.c (store_parm_decls): Set last_parm_cleanup_insn here.
7769         (finish_function): Put the base init code for constructors just
7770         after the parm cleanup insns.
7771         (struct cp_function): Add last_parm_cleanup_insn.
7772         (push_cp_function_context): Likewise.
7773         (pop_cp_function_context): Likewise.
7774         
7775 Tue May 13 15:51:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
7776
7777         * pt.c (tsubst_copy): Handle BIT_NOT_EXPR.
7778
7779 Wed May  7 11:17:59 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7780
7781         * method.c (emit_thunk) [ASM_OUTPUT_MI_THUNK]: Build up the RTL
7782         for THUNK_FNDECL before we switch to temporary allocation.
7783
7784 Mon May  5 14:46:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
7785
7786         * call.c (build_new_op): Handle null arg2 for ?:.
7787
7788 Thu May  1 18:26:37 1997  Mike Stump  <mrs@cygnus.com>
7789
7790         * except.c (expand_exception_blocks): Ensure that we flow through
7791         the end of the exception region for the exception specification.
7792         Move exception region for the exception specification in, so that
7793         it doesn't protect the parm cleanup.  Remove some obsolete code.
7794         * decl.c (store_parm_decls): Likewise.
7795         (finish_function): Likewise.
7796
7797 Tue Apr 29 15:38:54 1997  Jason Merrill  <jason@yorick.cygnus.com>
7798
7799         * init.c (build_new): Fix nothrow handling.
7800
7801 Tue Apr 29 14:29:50 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7802
7803         * init.c (emit_base_init): Don't warn about the initialization
7804         list for an artificial member.
7805
7806 Fri Apr 25 17:47:59 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7807
7808         * expr.c (do_case): Handle !START case for the error msg.
7809
7810 Fri Apr 25 11:55:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
7811
7812         * decl2.c, lang-options.h: New option -Weffc++.
7813         * class.c, decl.c, init.c, typeck.c: Move Effective C++ warnings
7814         to -Weffc++.
7815
7816         * decl2.c (finish_prevtable_vardecl): Change NO_LINKAGE_HEURISTICS
7817         to MULTIPLE_SYMBOL_SPACES.
7818
7819 Wed Apr 23 18:06:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
7820
7821         * method.c (emit_thunk, generic case): Set current_function_is_thunk.
7822
7823         * method.c (emit_thunk, macro case): Set up DECL_RESULT.
7824
7825         * typeck.c (c_expand_return): Don't complain about returning void
7826         to void in an artificial function.
7827         * method.c (make_thunk): Change settings of READONLY/VOLATILE, 
7828         don't set DECL_RESULT, set DECL_ARTIFICIAL.
7829         (emit_thunk, generic code): Also set up DECL_LANG_SPECIFIC. 
7830
7831 Wed Apr 23 14:43:06 1997  Mike Stump  <mrs@cygnus.com>
7832
7833         * init.c (init_decl_processing): Add supoprt for setjmp/longjmp based
7834         exception handling.
7835         * except.c (init_exception_processing): Likewise.
7836         (expand_end_catch_block): Likewise.
7837         (expand_exception_blocks): Likewise.
7838         (expand_throw): Likewise.
7839         * exception.cc (__default_terminate): Likewise.
7840
7841         * init.c (perform_member_init): Use new method of expr level
7842         cleanups, instead of cleanups_this_call and friends.
7843         (emit_base_init): Likewise.
7844         (expand_aggr_vbase_init_1): Likewise.
7845         (expand_vec_init): Likewise.
7846         * decl.c (cp_finish_decl): Likewise.
7847         (expand_static_init): Likewise.
7848         (store_parm_decls): Likewise.
7849         (cplus_expand_expr_stmt): Likewise.
7850         * decl2.c (finish_file): Likewise.
7851         
7852         * Make-lang.in (exception.o): Ok to compile with -O now.
7853
7854         * decl.c (maybe_build_cleanup_1): We no longer have to unsave, as
7855         we know it will be done later by the backend.
7856
7857         * decl2.c (lang_f_options): Remove support for short temps.
7858         * lang-options.h: Likewise.
7859         
7860 Wed Apr 23 04:12:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
7861
7862         * tree.c (varargs_function_p): New fn.
7863         * method.c (emit_thunk): Replace broken generic code with code to
7864         generate a heavyweight thunk function.
7865
7866 Tue Apr 22 02:45:18 1997  Jason Merrill  <jason@yorick.cygnus.com>
7867
7868         * pt.c (process_template_parm): pedwarn about floating-point parms.
7869
7870         * decl.c (grokdeclarator): inline no longer implies static.
7871
7872         * spew.c (yylex): Always return the TYPE_DECL if we got a scope.
7873
7874 Mon Apr 21 15:42:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
7875
7876         * class.c (check_for_override): The signature of an overriding
7877         function is not changed.
7878
7879         * call.c (build_over_call): Move setting of conv into the loop.
7880         Note: this change, along with the related changes of the 18th thru
7881         the 20th of April, fix an infinite loop problem in conversions.
7882
7883 Sun Apr 20 16:24:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
7884
7885         * call.c (build_user_type_conversion_1): Really ignore rvalue
7886         conversions when looking for a REFERENCE_TYPE.
7887
7888         * cvt.c (build_up_reference): Eviscerate, use build_unary_op.
7889         * cp-tree.h (TREE_REFERENCE_EXPR): #if 0.
7890         * typeck.c (decay_conversion): Don't set TREE_REFERENCE_EXPR.
7891         (build_unary_op): Likewise.
7892         * call.c (build_over_call): See through a CONVERT_EXPR around the
7893         ADDR_EXPR for on a temporary.
7894         * typeck.c (c_expand_return): See through a CONVERT_EXPR around
7895         the ADDR_EXPR for a local variable.
7896
7897 Fri Apr 18 12:11:33 1997  Jason Merrill  <jason@yorick.cygnus.com>
7898
7899         * call.c (build_user_type_conversion_1): If we're trying to
7900         convert to a REFERENCE_TYPE, only consider lvalue conversions.
7901         (build_new_function_call): Print candidates.
7902         (implicit_conversion): Try a temp binding if the lvalue conv is BAD.
7903         (reference_binding): Binding a temporary of a reference-related type
7904         is BAD.
7905
7906 Thu Apr 17 14:37:22 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7907
7908         * inc/typeinfo (type_info::before): Add cv-qualifier-seq.
7909         * tinfo2.cc (type_info::before): Likewise.
7910
7911 Mon Apr 14 12:38:17 1997  Jason Merrill  <jason@yorick.cygnus.com>
7912
7913         * call.c (implicit_conversion): Oops.
7914
7915 Fri Apr 11 02:18:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
7916
7917         * call.c (implicit_conversion): Try to find a reference conversion
7918         before binding a const reference to a temporary.
7919
7920 Wed Apr  2 12:51:36 1997  Mike Stump  <mrs@cygnus.com>
7921
7922         * exception.cc (__default_unexpected): Call terminate by default,
7923         so that if the user overrides terminate, the correct function will
7924         be called.
7925         
7926 Wed Mar 19 14:14:45 1997  Mike Stump  <mrs@cygnus.com>
7927
7928         * parse.y (left_curly): Avoid trying to use any fields of
7929         error_mark_node, as there aren't any.
7930
7931 Thu Mar 13 16:33:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
7932
7933         * lex.c (do_identifier): Avoid breaking on overloaded methods
7934         as default arguments.
7935
7936 Wed Mar 12 13:55:10 1997  Hans-Peter Nilsson  <Hans-Peter.Nilsson@axis.se>
7937
7938         * call.c (add_template_candidate): Initialize the variable "dummy".
7939
7940 Mon Mar 10 15:13:14 1997  Brendan Kehoe  <brendan@canuck.cygnus.com>
7941
7942         * decl.c (start_decl): Make sure TYPE isn't an error_mark_node
7943         before we try to use TYPE_SIZE and TREE_CONSTANT on it.
7944
7945 Fri Mar  7 13:19:36 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7946
7947         * cp-tree.h (comp_ptr_ttypes, more_specialized): Add decl.
7948         (debug_binfo): Delete decl, not needed.
7949
7950         * tree.c (fnaddr_from_vtable_entry, function_arg_chain,
7951         promotes_to_aggr_type): Delete fns.
7952         * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY,
7953         SET_FNADDR_FROM_VTABLE_ENTRY, FUNCTION_ARG_CHAIN,
7954         PROMOTES_TO_AGGR_TYPE): Delete alternates to #if 1.
7955
7956         * decl.c (pending_invalid_xref{,_file,_line}): Delete unused vars.
7957
7958         * friend.c (is_friend_type): Delete fn.
7959         * cp-tree.h (is_friend_type): Delete decl.
7960
7961         * decl.c (original_result_rtx, double_ftype_double,
7962         double_ftype_double_double, int_ftype_int, long_ftype_long,
7963         float_ftype_float, ldouble_ftype_ldouble, last_dtor_insn): Make static.
7964         * typeck.c (original_result_rtx, warn_synth): Delete extern decls.
7965
7966         * decl.c (push_overloaded_decl{,_top_level}): Make static, adding
7967         fwd decls.
7968         * cp-tree.h (push_overloaded_decl{,_top_level}): Delete decls.
7969
7970         * decl.c (pushdecl_nonclass_level): #if 0, unused.
7971         * cp-tree.h (pushdecl_nonclass_level): #if 0 decl.
7972
7973         * lex.c (reinit_lang_specific): #if 0, unused.
7974         * cp-tree.h (reinit_lang_specific): #if 0 decl.
7975
7976         * decl.c (revert_static_member_fn): Make static, adding fwd decl.
7977         * cp-tree.h (revert_static_member_fn): Delete decl.
7978
7979         * class.c (root_lang_context_p): Delete fn.
7980         * cp-tree.h (root_lang_context_p): Delete decl.
7981
7982         * decl.c (set_current_level_tags_transparency): #if 0, unused.
7983         * cp-tree.h (set_current_level_tags_transparency): #if 0 decl.
7984
7985         * lex.c (set_vardecl_interface_info): Make static.
7986         * cp-tree.h (set_vardecl_interface_info): Delete decl.
7987
7988         * call.c (find_scoped_type): Make static.
7989         * cp-tree.h (find_scoped_type): Delete decl.
7990
7991         * search.c (convert_pointer_to_vbase): Make static.
7992         * cp-tree.h (convert_pointer_to_vbase): Delete decl.
7993
7994         * decl.c (const_ptr_type_node): Likewise.
7995         * cp-tree.h (const_ptr_type_node): Delete decl.
7996
7997         * typeck.c (common_base_type): Make static.
7998         * cp-tree.h (common_base_types): Delete erroneous decl.
7999
8000         * pt.c (classtype_mangled_name): Make static.
8001         * cp-tree.h (classtype_mangled_name): Delete decl.
8002
8003         * lex.c (check_newline): Make static.
8004         * cp-tree.h (check_newline): Delete decl.
8005
8006         * typeck.c (build_x_array_ref): Delete fn, same idea as
8007         grok_array_decl.
8008         * cp-tree.h (build_x_array_ref): Delete decl.
8009
8010         * lex.c (copy_decl_lang_specific): Delete fn, same idea as
8011         copy_lang_decl.
8012         * cp-tree.h (copy_decl_lang_specific): #if 0 decl.
8013
8014         * class.c (build_vtable_entry): Make static.
8015         * cp-tree.h (build_vtable_entry): Delete decl.
8016
8017         * class.c (build_vbase_pointer): Make static.
8018         * cp-tree.h (build_vbase_pointer): Delete decl.
8019
8020         * sig.c (build_sptr_ref): Add forward decl and make static.
8021         * cp-tree.h (build_sptr_ref): Delete decl.
8022
8023         * call.c (build_new_method_call): Add forward decl and make static.
8024         * cp-tree.h (build_new_method_call): Delete decl.
8025
8026         * call.c (build_object_call): Make static.
8027         * class.c (check_for_override, complete_type_p, mark_overriders):
8028         Likewise.
8029         * decl.c (cp_function_chain): Likewise.
8030         * lex.c (set_typedecl_interface_info, reinit_parse_for_block):
8031         Likewise.
8032         * pt.c (comp_template_args, get_class_bindings, push_tinst_level):
8033         Likewise.
8034         * tree.c (build_cplus_array_type_1): Likewise.
8035         * typeck.c (comp_ptr_ttypes_{const,real,reinterpret}): Likewise.
8036         (comp_target_parms): Likewise.
8037
8038         * init.c (build_builtin_call): Make static.
8039         * cp-tree.h (build_builtin_call): Delete decl.
8040
8041         * typeck.c (binary_op_error): Delete decl.
8042         * cp-tree.h (binary_op_error): Likewise.
8043
8044 Thu Mar  6 16:13:52 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
8045
8046         * call.c (build_method_call): Compare against error_mark_node
8047         directly, rather than the ERROR_MARK tree code.
8048         * cvt.c (cp_convert): Likewise.
8049         * decl.c (print_binding_level): Likewise.
8050         (duplicate_decls): Likewise.
8051         (grokdeclarator): Likewise.
8052         (grokdeclarator): Likewise.
8053         * init.c (expand_aggr_init_1): Likewise.
8054         (decl_constant_value): Likewise.
8055         * method.c (build_opfncall): Likewise.
8056         (hack_identifier): Likewise.
8057         * typeck.c (build_modify_expr): Likewise.
8058
8059         * typeck.c (build_c_cast): Don't decl TYPE as register tree.
8060
8061 Sun Mar  2 02:54:36 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
8062
8063         * pt.c (unify): Strip NOP_EXPR wrappers before unifying integer values.
8064
8065         * pt.c (coerce_template_parms): Add new error message.
8066
8067         * method.c (build_overload_value): Implement name mangling for
8068         floating-point template arguments.
8069
8070         * method.c (build_overload_int, icat, dicat): Fix mangling of template
8071         arguments whose absolute value doesn't fit in a signed word.
8072
8073 Mon Mar  3 12:14:54 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
8074
8075         * friend.c: New file; put all of the friend stuff in here.
8076         * init.c: Instead of here.
8077         * Makefile.in (CXX_OBJS): Add friend.o.
8078         (friend.o): Add dependencies.
8079         * Make-lang.in (CXX_SRCS): Add $(srcdir)/cp/friend.c.
8080
8081 Sun Mar  2 11:04:43 1997  Jason Merrill  <jason@yorick.cygnus.com>
8082
8083         * call.c (build_scoped_method_call): Complain if the scope isn't a
8084         base.
8085
8086 Wed Feb 26 11:31:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
8087
8088         * parse.y (left_curly): Don't crash on erroneous type.
8089
8090         * init.c (build_delete): Fix type of ref.
8091
8092 Tue Feb 25 12:41:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
8093
8094         * search.c (get_vbase_1): Renamed from get_vbase.
8095         (get_vbase): Wrapper, now non-static.
8096         (convert_pointer_to_vbase): Now static.
8097
8098         * call.c (build_scoped_method_call): Accept a binfo for BASETYPE.
8099         * init.c (build_delete): Pass one.
8100         (build_partial_cleanup_for): Use build_scoped_method_call.
8101         * decl.c (finish_function): Pass a binfo.
8102
8103 Mon Feb 24 15:00:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
8104
8105         * call.c (build_over_call): Only synthesize non-trivial copy ctors.
8106
8107         * typeck.c (build_c_cast): Lose other reference to flag.
8108
8109         * call.c (build_field_call): Don't look for [cd]tor_identifier.
8110         * decl2.c (delete_sanity): Remove meaningless use of
8111         LOOKUP_HAS_IN_CHARGE.
8112         * decl.c (finish_function): Use build_scoped_method_call instead
8113         of build_delete for running vbase dtors.
8114         * init.c (build_delete): Call overload resolution code instead of
8115         duplicating it badly.
8116
8117 Thu Feb 20 15:12:15 1997  Jason Merrill  <jason@yorick.cygnus.com>
8118
8119         * call.c (build_over_call): Call mark_used before trying to elide
8120         the call.
8121
8122         * decl.c (implicitly_declare): Don't set DECL_ARTIFICIAL.
8123
8124 Wed Feb 19 11:18:53 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
8125
8126         * typeck.c (build_modify_expr): Always pedwarn for a cast to
8127         non-reference used as an lvalue.
8128
8129 Wed Feb 19 10:35:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
8130
8131         * cvt.c (cp_convert_to_pointer): Convert from 0 to a pmf properly.
8132
8133 Tue Feb 18 15:40:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
8134
8135         * parse.y (handler): Fix template typo.
8136
8137 Sun Feb 16 02:12:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
8138
8139         * error.c (lang_decl_name): New fn.
8140         * tree.c (lang_printable_name): Use it.
8141
8142 Fri Feb 14 16:57:05 1997  Mike Stump  <mrs@cygnus.com>
8143
8144         * g++spec.c: Include config.h so that we can catch bzero #defines
8145         from the config file.
8146
8147 Tue Feb 11 13:50:48 1997  Mike Stump  <mrs@cygnus.com>
8148
8149         * new1.cc: Include a declaration for malloc, to avoid warning, and
8150         avoid lossing on systems that require one (ones that define malloc
8151         in xm.h).
8152
8153 Mon Feb 10 22:51:13 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
8154
8155         * decl2.c (max_tinst_depth): New variable.
8156         (lang_decode_option): Parse "-ftemplate-depth-NN" command line
8157         option.
8158         * pt.c (max_tinst_depth): Variable moved.
8159         * lang-options.h: Declare "-ftemplate-depth-NN" command line option
8160         as legal.
8161
8162 Fri Feb  7 15:43:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
8163
8164         * decl.c (xref_basetypes): Allow a base class that depends on
8165         template parms to be incomplete.
8166
8167         * decl2.c (build_expr_from_tree): Support typeid(type).
8168         * rtti.c (get_typeid): Support templates.
8169         (expand_si_desc, expand_class_desc): Fix string length.
8170         (expand_ptr_desc, expand_attr_desc, expand_generic_desc): Likewise.
8171
8172 Tue Feb  4 11:28:24 1997  Jason Merrill  <jason@yorick.cygnus.com>
8173
8174         * pt.c (unify, case TEMPLATE_CONST_PARM): Use cp_tree_equal.
8175
8176         * pt.c (tsubst): Put it back for -fno-ansi-overloading.
8177
8178 Mon Feb  3 18:41:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
8179
8180         * pt.c (tsubst, case FUNCTION_DECL): Lose obsolete code that
8181         smashes together template and non-template decls of the same
8182         signature.
8183
8184 Thu Jan 30 19:18:00 1997  Jason Merrill  <jason@yorick.cygnus.com>
8185
8186         * pt.c (tsubst): Don't recurse for the type of a TYPENAME_TYPE.
8187
8188 Wed Jan 29 11:40:35 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
8189
8190         * decl.c (duplicate_decls): Next route, pedwarn about different
8191         exceptions if -pedantic *or* olddecl !DECL_IN_SYSTEM_HEADER.
8192
8193 Tue Jan 28 20:43:29 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
8194
8195         * cp-tree.h (HAS_DEFAULT_IMPLEMENTATION): Delete macro.
8196         (struct lang_type): Delete has_default_implementation member.
8197         Increase dummy to 21.
8198         * decl.c (start_method): Delete usage.
8199
8200         * cp-tree.h (build_call, null_ptr_cst_p, in_function_p,
8201         store_after_parms, start_decl_1, auto_function): Add decls.
8202         (get_arglist_len_in_bytes, declare_implicit_exception,
8203         have_exceptions_p, make_type_decl, typedecl_for_tag,
8204         store_in_parms, pop_implicit_try_blocks, push_exception_cleanup,
8205         build_component_type_expr, cplus_exception_name,
8206         {make,clear}_anon_parm_name, dont_see_typename): Removed decls.
8207         * call.c (build_this): Make static.
8208         (is_complete): Likewise.
8209         (implicit_conversion): Likewise.
8210         (reference_binding): Likewise.
8211         (standard_conversion): Likewise.
8212         (strip_top_quals): Likewise.
8213         (non_reference): Likewise.
8214         (build_conv): Likewise.
8215         (user_harshness): Likewise.
8216         (rank_for_ideal): Likewise.
8217         * decl.c (start_decl_1): Delete forward decl.
8218         (push_decl_level): Make static.
8219         (resume_binding_level): Make static.
8220         (namespace_bindings_p): Make static.
8221         (declare_namespace_level): Make static.
8222         (lookup_name_real): Make static.
8223         (duplicate_decls): Make static.  Take register off NEWDECL and
8224         OLDDECL parm decls.
8225         * decl2.c (get_sentry): Make static.
8226         (temp_name_p): Delete fn.
8227         * except.c (auto_function): Delete decl.
8228         * lex.c (handle_{cp,sysv}_pragma): Make static.
8229         (handle_sysv_pragma) [HANDLE_SYSV_PRAGMA]: Add forward decl.
8230         * method.c (do_build_{copy_constructor,assign_ref}): Make static.
8231         * pt.c (tsubst_expr_values): Make static.
8232         * rtti.c (combine_strings): Delete decl.
8233
8234 Tue Jan 28 16:40:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
8235
8236         * pt.c (push_template_decl): Handle getting a typedef.
8237
8238         * call.c (build_new_function_call): Complain about void arg.
8239
8240 Tue Jan 28 15:25:09 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
8241
8242         * decl.c (duplicate_decls): Give pedwarn of different exceptions
8243         if -pedantic, instead of olddecl !DECL_IN_SYSTEM_HEADER.
8244
8245 Mon Jan 27 19:21:29 1997  Mike Stump  <mrs@cygnus.com>
8246
8247         * except.c (expand_throw): Don't expand the cleanup tree here,
8248         since we are not going to write the rtl out.  Fixes problem with
8249         -g -O on SPARC.
8250
8251 Mon Jan 27 16:24:35 1997  Sean McNeil  <sean@mcneil.com>
8252
8253         * Make-lang.in: Add $(exeext) as necessary.
8254
8255 Mon Jan 27 13:20:39 1997  Mike Stump  <mrs@cygnus.com>
8256
8257         * parse.y (handler_seq): Must have at least one catch clause.
8258
8259 Sat Jan 25 12:00:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
8260
8261         * call.c (add_builtin_candidate): Restore ?: hack.
8262
8263         * decl.c (grok_op_properties): More warnings.
8264
8265 Sat Jan 25 08:50:03 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
8266
8267         * decl.c (duplicate_decls): On second thought, do it as a pedwarn
8268         still but only if !DECL_IN_SYSTEM_HEADER (olddecl).
8269
8270         * decl.c (duplicate_decls): Scale back to a warning, and only do
8271         'em if -pedantic.
8272
8273 Fri Jan 24 17:52:54 1997  Mike Stump  <mrs@cygnus.com>
8274
8275         * decl.c (duplicate_decls): pedwarn mismatched exception
8276         specifications.
8277
8278 Thu Jan 23 18:18:54 1997  Mike Stump  <mrs@cygnus.com>
8279
8280         * call.c (build_new_method_call): Don't display the invisible
8281         argument for controlling virtual bases.
8282
8283 Thu Jan 23 16:48:10 1997  Mike Stump  <mrs@cygnus.com>
8284
8285         * new: Add nothrow new and delete, bad_alloc and throw specifications
8286         for delete.
8287         * decl.c (init_decl_processing): Add throw specification for delete.
8288         * new.cc (nothrow): Define.
8289         * lex.c (real_yylex): Removing warning that throw and friends are
8290         keywords.
8291         * new1.cc (operator new (size_t sz, const nothrow_t&)): Define.
8292         * new2.cc (operator new[] (size_t sz, const nothrow_t&): Define.
8293         * Make-lang.in: Add new{1,2}.{cc,o}.
8294
8295 Thu Jan 23 16:39:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
8296
8297         * lex.c (cons_up_default_function): Fix return type of synth op=.
8298
8299         * init.c (emit_base_init): Add warnings for uninitialized members
8300         and bases.
8301
8302         * decl.c (xref_basetypes): Add warning for non-polymorphic type
8303         with destructor used as base type.
8304
8305         * decl.c (grok_op_properties): Add warning for op= returning void.
8306         * typeck.c (c_expand_return): Add warning for op= returning anything
8307         other than *this.
8308
8309         * class.c (finish_struct_1): Add warning for class with pointers
8310         but not copy ctor or copy op=.
8311
8312         * cp-tree.h (TI_PENDING_TEMPLATE_FLAG): New macro.
8313         * pt.c (add_pending_template): Use it instead of LANG_FLAG_0.
8314         (instantiate_template): If -fexternal-templates, add this
8315         instantiation to pending_templates.
8316
8317         * decl2.c (copy_assignment_arg_p): Disable old hack to support
8318         Booch components.
8319
8320 Tue Jan 21 18:32:04 1997  Mike Stump  <mrs@cygnus.com>
8321
8322         * cvt.c (cp_convert): Pedwarn enum to pointer conversions.
8323
8324 Mon Jan 20 17:59:51 1997  Jason Merrill  <jason@yorick.cygnus.com>
8325
8326         * call.c (standard_conversion): Handle getting references.  Tack
8327         on RVALUE_CONV here.  Do it for non-class types, too.
8328         (reference_binding): Pass references to standard_conversion.
8329         (implicit_conversion): Likewise.
8330         (add_builtin_candidate): Disable one ?: kludge.
8331         (convert_like): Handle RVALUE_CONVs for non-class types.
8332         (joust): Disable the other ?: kludge.
8333
8334 Mon Jan 20 14:53:13 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
8335
8336         * decl.c (init_decl_processing): Add code to build up common
8337         function types beforehand, to avoid creation then removal of
8338         things already in the hash table.
8339
8340 Mon Jan 20 14:43:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
8341
8342         * decl.c (finish_function): Also zero out DECL_INCOMING_RTL for
8343         the arguments.
8344
8345         * error.c (dump_expr, TEMPLATE_CONST_PARM): Don't require
8346         current_template_parms.
8347
8348 Fri Jan 17 10:25:42 1997  Jason Merrill  <jason@yorick.cygnus.com>
8349
8350         * search.c (lookup_field): Don't return a function, check want_type.
8351
8352 Thu Jan 16 18:14:35 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
8353
8354         * init.c (build_new): Make sure PLACEMENT has a type.
8355
8356 Thu Jan 16 17:40:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
8357
8358         * init.c (build_new): Support new (nothrow).
8359
8360 Wed Jan 15 12:38:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
8361
8362         * pt.c (instantiate_decl): Also do push_to_top_level before setting
8363         up DECL_INITIAL.
8364
8365         * cp-tree.h (PARM_DEFAULT_FROM_TEMPLATE): New macro.
8366         * pt.c (tsubst): Defer instantiation of default args.
8367         * call.c (build_over_call): Until here.
8368
8369 Wed Jan 15 10:08:10 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
8370
8371         * search.c (lookup_field): Make sure we have an
8372         IDENTIFIER_CLASS_VALUE before we try to return it.
8373
8374 Thu Jan  9 07:19:01 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
8375
8376         * call.c (build_method_call): Delete unused var PARM.
8377         (build_overload_call_real): Likewise.
8378         (build_object_call): Delete unused var P.
8379         (build_new_op): Likewise.
8380         * decl.c (builtin_type_tdescs_{arr, len, max}): #if 0 out static
8381         var definitions, which are never used.
8382         (shadow_tag): Delete unused var FN.
8383         * expr.c (cplus_expand_expr): Delete unused var ORIGINAL_TARGET.
8384         * init.c (build_new): Delete unused var ALLOC_TEMP.
8385         * method.c (hack_identifier): Delete unused var CONTEXT.
8386         (do_build_copy_constructor): Delete unused var NAME.
8387         (synthesize_method): Delete unused var BASE.
8388         * pt.c (lookup_template_class): Delete unused var CODE_TYPE_NODE.
8389         * rtti.c (build_headof): Delete unused var VPTR.
8390         (get_typeid): Delete unused var T.
8391         * typeck.c (build_conditional_expr): Delete unused vars ORIG_OP1
8392         and ORIG_OP2.
8393         (build_ptrmemfunc): Delete unused vars U and NINDEX.
8394         * typeck2.c (build_functional_cast): Delete unused var BINFO.
8395
8396 Wed Jan  8 13:09:54 1997  Jason Merrill  <jason@yorick.cygnus.com>
8397
8398         * search.c (lookup_field): Use IDENTIFIER_CLASS_VALUE to look up
8399         things in a type being defined.
8400         * decl.c (finish_enum): Reverse the values so that they are in
8401         the correct order.
8402
8403         * pt.c (instantiate_class_template): Don't initialize
8404         BINFO_BASETYPES until the vector is filled out.
8405         (unify): Don't abort on conflicting bindings, just fail.
8406         (instantiate_decl): Do push_tinst_level before any tsubsting.
8407
8408         * method.c (build_overload_value): Handle getting a
8409         TEMPLATE_CONST_PARM for a pointer.
8410
8411 Tue Jan  7 14:00:58 1997  Jason Merrill  <jason@yorick.cygnus.com>
8412
8413         * init.c (expand_member_init): Don't give 'not a base' error for
8414         templates.
8415
8416         * pt.c (instantiate_decl): Call import_export_decl later.
8417
8418         * pt.c (instantiate_class_template): Return a value.
8419
8420         * parse.y (extension): New rule for __extension__.
8421         (extdef, unary_expr, decl, component_decl): Use it.
8422
8423 Tue Jan  7 09:20:28 1997  Mike Stump  <mrs@cygnus.com>
8424
8425         * class.c (base_binfo): Remove unused base_has_virtual member.
8426         (finish_base_struct): Likewise.
8427         (finish_struct_1): Likewise.
8428
8429 Tue Dec 31 20:25:50 1996  Mike Stump  <mrs@cygnus.com>
8430
8431         * search.c (expand_upcast_fixups): Fix bogus code generation
8432         problem where the generated code uses the wrong index into the
8433         runtime built vtable on the stack.  Old code could clobber random
8434         stack values.
8435
8436 Tue Dec 31 15:16:56 1996  Mike Stump  <mrs@cygnus.com>
8437
8438         * init.c (perform_member_init): Make sure the partial EH cleanups
8439         live on the function_obstack.
8440
8441 Fri Dec 27 10:31:40 1996  Paul Eggert  <eggert@twinsun.com>
8442
8443         * Make-lang.in (g++spec.o): Don't use $< with an explicit target;
8444         this isn't portable to some versions of `make' (e.g. Solaris 2.5.1).
8445
8446 Tue Dec 24 10:24:03 1996  Jeffrey A Law  (law@cygnus.com)
8447
8448         * decl.c (grokvardecl): Avoid ANSI style initialization.
8449
8450 Sun Dec 22 04:22:06 1996  Jason Merrill  <jason@yorick.cygnus.com>
8451
8452         * pt.c (tsubst): Tweak arg types for a FUNCTION_TYPE.
8453
8454 Fri Dec 20 17:09:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
8455
8456         * pt.c (instantiate_class_template): Call grok_{ctor,op}_properties.
8457
8458 Fri Dec 20 12:17:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8459
8460         * g++spec.c (lang_specific_driver): Put missing hyphen in front of
8461         arguments we compare against.  Start the count of I at 1, not 0,
8462         since argv[0] is still the command.
8463
8464 Thu Dec 19 11:53:57 1996  Stan Shebs  <shebs@andros.cygnus.com>
8465
8466         * lang-specs.h: Accept .cp as an C++ extension.
8467
8468 Mon Dec 16 22:43:31 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8469
8470         * cp-tree.h (ptr_reasonably_similar): Add decl.
8471
8472 Thu Dec 12 15:00:35 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8473
8474         * decl.c (grokvardecl): Change SPECBITS parm to be the SPECBITS_IN
8475         pointer.  New local SPECBITS with the parm's value.
8476         (grokdeclarator): Pass &specbits down.
8477
8478         * parse.y (expr_no_commas): Make sure $$ is not an error_mark_node
8479         before we try to do C_SET_EXP_ORIGINAL_CODE on it.
8480
8481         * search.c (envelope_add_decl): Check that the CLASSTYPE_CID of
8482         CONTEXT is not 0 before we try to use TYPE_DERIVES_FROM.
8483
8484         * decl.c (cplus_expand_expr_stmt): Only expand the expr if EXP is
8485         not an error_mark_node.
8486
8487 Sat Dec  7 17:20:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
8488
8489         * cp-tree.h (TYPE_MAIN_DECL): Use TYPE_STUB_DECL.
8490         * *.c: Use TYPE_MAIN_DECL instead of TYPE_NAME where appropriate.
8491         
8492 Fri Dec  6 14:40:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
8493
8494         * decl.c (grokdeclarator): When giving an anonymous struct a name,
8495         replace TYPE_NAME instead of TYPE_IDENTIFIER (so TYPE_STUB_DECL is
8496         not affected).
8497
8498         * typeck2.c (build_m_component_ref): If component is a pointer
8499         to data member, resolve the OFFSET_REF now.
8500
8501         * call.c (convert_like): Don't go into infinite recursion.
8502
8503         * pt.c (coerce_template_parms): Use tsubst_expr for non-type args.
8504
8505         * class.c (finish_struct_1): Set DECL_ARTIFICIAL on the vptr.
8506         * tree.c (layout_basetypes): And on the vbase ptr.
8507
8508 Thu Dec  5 02:11:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
8509
8510         * decl.c (BOOL_TYPE_SIZE): Define in terms of POINTER_SIZE or
8511         CHAR_TYPE_SIZE so bool is always the same size as another type.
8512
8513         * decl.c (pushtag): Set DECL_IGNORED_P for DWARF, too.
8514
8515 Tue Dec  3 23:18:37 1996  Jason Merrill  <jason@yorick.cygnus.com>
8516
8517         * decl2.c (grok_x_components): Remove synthesized methods from
8518         TYPE_METHODS of an anonymous union, complain about member
8519         functions.
8520         * decl.c (shadow_tag): Wipe out memory of synthesized methods in
8521         anonymous unions.
8522         (finish_function): Just clear the DECL_RTL of our arguments.
8523
8524 Fri Nov 29 21:54:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
8525
8526         * decl2.c (finish_file): Emit DWARF debugging info for static data
8527         members.
8528
8529         * pt.c (tsubst): If t is a stub decl, return the stub decl for type.
8530
8531 Wed Nov 27 14:47:15 1996  Bob Manson  <manson@charmed.cygnus.com>
8532
8533         * typeck.c (build_component_ref): Don't die if COMPONENT isn't a
8534         IDENTIFIER_NODE.
8535
8536 Wed Nov 27 16:05:19 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
8537
8538         * Make-lang.in (g++-cross$(exeext)): Fix typo.
8539
8540 Wed Nov 27 08:14:00 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8541
8542         Make the g++ driver now be a standalone program, rather than one
8543         that tries to run the gcc driver after munging up the options.
8544         * Make-lang.in (g++.c, g++spec.o): New rules.
8545         (g++.o): New rule, based on gcc.o with -DLANG_SPECIFIC_DRIVER
8546         added.
8547         (g++$(exeext)): New rule, based on xgcc rule.
8548         (g++-cross$(exeext)): Now just copies g++$(exeext) over.
8549         * g++spec.c: New file.
8550         * g++.c: Removed file.
8551
8552 Tue Nov 26 19:01:09 1996  Mike Stump  <mrs@cygnus.com>
8553
8554         * cvt.c (build_up_reference): Arrange for any temporary values
8555         that have been keep in registers until now to be put into memory.
8556
8557 Mon Nov 25 15:16:41 1996  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8558
8559         * Make-lang.in (c++.stage[1234]): Depend upon stage[1-4]-start, so
8560         that make -j3 bootstrap works better.
8561
8562 Sun Nov 24 02:09:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
8563
8564         * decl.c (pushtag): Do pushdecl for anon tags.
8565
8566 Thu Nov 21 16:30:24 1996  Jason Merrill  <jason@yorick.cygnus.com>
8567
8568         * typeck.c (c_expand_return): Fix logic.
8569         (unary_complex_lvalue): Avoid unused warning on address of INIT_EXPR.
8570
8571 Wed Nov 20 18:47:31 1996  Bob Manson  <manson@charmed.cygnus.com>
8572
8573         * g++.c (main): Make sure arglist has a final NULL entry.  Add
8574         PEXECUTE_LAST to the flags passed to pexecute, as otherwise
8575         stdin/stdout of the invoked program are redirected to
8576         nowheresville.
8577
8578 Tue Nov 19 16:12:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
8579
8580         * decl.c (implicitly_declare): Set DECL_ARTIFICIAL.
8581
8582 Tue Nov 19 15:48:19 1996  Mike Stump  <mrs@cygnus.com>
8583
8584         * init.c (resolve_offset_ref): Handle obj.vfn better.
8585         * typeck.c (build_component_ref): Set TREE_TYPE on result from
8586         build_vfn_ref.
8587
8588 Tue Nov 19 13:14:33 1996  Mike Stump  <mrs@cygnus.com>
8589
8590         * typeck.c (convert_for_assignment): Also handle anachronistic
8591         implicit conversions from (::*)() to cv void*.
8592         * cvt.c (cp_convert_to_pointer): Likewise.
8593
8594 Mon Nov 18 17:05:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
8595
8596         * lex.c (handle_cp_pragma): Fix bogus warning.
8597
8598 Mon Nov 18 16:10:43 1996  Mike Stump  <mrs@cygnus.com>
8599
8600         * cvt.c (cp_convert_to_pointer): Avoid thinking a POINTER_TYPE
8601         (METHOD_TYPE) is a TYPE_PTRMEMFUNC_P.
8602
8603 Thu Nov 14 23:18:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
8604
8605         * class.c (finish_struct_1): Support DWARF2_DEBUG.
8606         * search.c (dfs_debug_mark): Likewise.
8607         * decl2.c (finish_vtable_vardecl): Likewise.
8608         * decl.c (pushtag, finish_enum): Likewise.
8609         * lex.c (check_newline): Use debug_* instead of calling *out
8610         functions directly.
8611
8612 Thu Nov 14 15:21:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8613
8614         * Make-lang.in (cplib2.ready): Add else clause to avoid problems
8615         on some picky hosts.
8616
8617 Wed Nov 13 12:32:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
8618
8619         * class.c (finish_struct_1): A class has a non-trivial copy
8620         constructor if it has virtual functions.
8621
8622         * cvt.c (cp_convert): Always call a constructor.
8623
8624         * call.c (reference_binding): Still tack on a REF_BIND
8625         for bad conversions.
8626         (build_user_type_conversion_1): Propagate ICS_BAD_FLAG.
8627
8628         * typeck.c (convert_arguments): Pass LOOKUP_ONLYCONVERTING.
8629         (c_expand_return): Likewise.
8630         * typeck2.c (digest_init): Likewise for { }.
8631         * init.c (expand_aggr_init_1): Keep the CONSTRUCTOR handling.
8632         * cvt.c (cp_convert): Handle failure better.
8633
8634 Wed Nov 13 11:51:20 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8635
8636         * g++.c (main): Also set PEXECUTE_SEARCH, to make the invocation
8637         of GCC be path-relative. 
8638
8639 Wed Nov 13 11:27:16 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
8640
8641         * Make-lang.in (g++-cross): G++-cross doesn't need version.o, but
8642         it does need choose-temp.o and pexecute.o.
8643
8644 Wed Nov 13 07:53:38 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8645
8646         * g++.c (error) [!HAVE_VPRINTF]: Put error back for the only time
8647         that we still use it.
8648         (P_tmpdir, R_OK, W_OK, X_OK) [__MSDOS__]: Delete unnecessary macros.
8649
8650 Wed Nov 13 02:00:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
8651
8652         * init.c (expand_default_init): Avoid calling constructors to 
8653         initialize reference temps.
8654
8655         * cvt.c (convert_to_reference): Fix.
8656
8657 Tue Nov 12 19:10:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
8658
8659         * cvt.c (cp_convert): Simplify for flag_ansi_overloading.
8660         (convert_to_reference): Likewise.
8661         * typeck.c (convert_for_initialization): Likewise.
8662         * init.c (expand_default_init): Likewise.
8663         (expand_aggr_init_1): Likewise.
8664         * cp-tree.h (CONV_NONCONVERTING): Lose.
8665         * typeck.c (build_c_cast): Lose allow_nonconverting parm.
8666         * *.c: Adjust.
8667         * call.c (build_user_type_conversion_1): Assume LOOKUP_ONLYCONVERTING.
8668
8669 Tue Nov 12 16:29:04 1996  Brendan Kehoe  <brendan@canuck.cygnus.com>
8670
8671         * pt.c (tsubst_expr): Reverse args to expand_start_catch_block.
8672
8673 Tue Nov 12 15:26:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
8674
8675         * init.c (expand_aggr_init_1): Don't crash on non-constructor
8676         TARGET_EXPR.
8677
8678 Tue Nov 12 14:00:50 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8679
8680         * g++.c: Include gansidecl.h.
8681         (VPROTO, PVPROTO, VA_START): Delete.
8682         (choose_temp_base_try, choose_temp_base, perror_exec,
8683         run_dos) [__MSDOS__]: Delete fns.
8684         (pfatal_with_name): Delete fn.
8685         (temp_filename): Declare like in gcc.c.
8686         (pexecute, pwait, choose_temp_base): Declare from gcc.c.
8687         (error_count, signal_count): Define.
8688         (error): Delete both definitions.
8689         (PEXECUTE_{FIRST,LAST,SEARCH,VERBOSE}): Define from gcc.c.
8690         (pfatal_pexecute): Add fn from gcc.c.
8691         (main): Rename local VERBOSE var to VERBOSE_FLAG.  Rewrite the
8692         code to use the pexecute stuff also used by gcc.c.
8693         (MIN_FATAL_STATUS): Define.
8694         * Make-lang.in (g++): Add dependency on and linking with
8695         choose-temp.o and pexecute.o.
8696
8697         * cp-tree.h: Include gansidecl.h.
8698         (STDIO_PROTO): Delete #undef/#define.
8699         * cvt.c (NULL): Delete #undef/#define.
8700         * expr.c (NULL): Likewise.
8701         * init.c (NULL): Likewise.
8702         * rtti.c (NULL): Likewise.
8703         * xref.c (NULL): Likewise.
8704
8705         * cp-tree.h (build_user_type_conversion): Add prototype.
8706         * call.c (build_user_type_conversion): Delete prototype.  Correct
8707         decl of FLAGS arg to be an int.
8708         * cvt.c (build_user_type_conversion): Likewise.
8709
8710 Tue Nov 12 12:16:20 1996  Jason Merrill  <jason@yorick.cygnus.com>
8711
8712         * cp-tree.def: Add TRY_BLOCK and HANDLER.
8713         * except.c (expand_start_catch_block): Support templates.
8714         * parse.y (try_block, handler_seq): Likewise.
8715         * pt.c (tsubst_expr): Support TRY_BLOCK and HANDLER.
8716
8717 Mon Nov 11 13:57:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
8718
8719         * pt.c (current_template_args): New fn.
8720         (push_template_decl): Use it.
8721         * decl.c (grokdeclarator): Use it.
8722
8723         * decl2.c (build_expr_from_tree): Dereference ref vars.
8724
8725         * decl.c (grokdeclarator): Generalize handling of TYPENAME_TYPEs in
8726         the decl-specifier-seq.
8727
8728         * decl.c (grok_op_properties): Don't force the type of a conversion
8729         op to be complete.  Don't warn about converting to the same type
8730         for template instantiations.
8731
8732         * decl2.c (finish_file): Don't call instantiate_decl on synthesized
8733         methods.
8734
8735 Mon Nov 11 13:20:34 1996  Bob Manson  <manson@charmed.cygnus.com>
8736
8737         * typeck.c (get_delta_difference): Remove previous bogusness.
8738         Don't give errors if force is set.
8739
8740 Fri Nov  8 17:38:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
8741
8742         * decl2.c (finish_file): Don't emit debug info.
8743         * decl.c (pushdecl): Lose obsolete code.
8744         (grokdeclarator): Still do the long long thing after complaining.
8745         * search.c (note_debug_info_needed): Don't do anything if we're in a 
8746         template.
8747         * method.c (synthesize_method): For non-local classes,
8748         push_to_top_level first.
8749
8750 Fri Nov  8 11:52:28 1996  Bob Manson  <manson@charmed.cygnus.com>
8751
8752         * typeck.c (get_delta_difference): Add no_error parameter.
8753         (build_ptrmemfunc): Call get_delta_difference with no_error set;
8754         we don't want error messages when converting unrelated
8755         pointer-to-member functions.
8756
8757 Thu Nov  7 11:16:24 1996  Mike Stump  <mrs@cygnus.com>
8758
8759         * error.c (dump_expr): Improve the wording on error messages that
8760         involve pointer to member functions.
8761
8762 Tue Nov  5 17:12:05 1996  Mike Stump  <mrs@cygnus.com>
8763
8764         * cvt.c (cp_convert_to_pointer): Move code for conversions from
8765         (::*)() to void* or (*)() up a bit, so that we can convert from
8766         METHOD_TYPEs as well.
8767
8768 Tue Nov  5 14:54:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
8769
8770         * rtti.c (get_tinfo_fn): Make sure 'type' is permanent.
8771         There are no 'member' types.
8772         (get_tinfo_fn_dynamic): Diagnose typeid of overloaded fn.
8773         (build_x_typeid): Handle errors.
8774
8775 Mon Nov  4 17:43:12 1996  Mike Stump  <mrs@cygnus.com>
8776
8777         * typeck.c (convert_for_assignment): Handle anachronistic implicit
8778         conversions from (::*)() to void* or (*)().
8779         * cvt.c (cp_convert_to_pointer): Likewise.
8780         (cp_convert_to_pointer_force): Remove cp_convert_to_pointer
8781         conversions from here.
8782         * decl2.c (lang_decode_option): Add -W{no-,}pmf-conversions.
8783         * lang-options.h: Likewise.
8784         * decl2.c (warn_pmf2ptr): Define.
8785         * cp-tree.h: Declare it.
8786         * typeck2.c (digest_init): Allow pmfs down into
8787         convert_for_initialization.
8788
8789 Sun Nov  3 09:43:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
8790
8791         * typeck.c (c_expand_return): Fix for returning overloaded fn.
8792
8793 Fri Nov  1 08:53:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
8794
8795         * cp-tree.h (DIRECT_BIND): Change from INDIRECT_BIND.
8796         * decl.c (grok_reference_init): Pass DIRECT_BIND.
8797         * cvt.c (build_up_reference): Don't mark 'this' addressable.  Use
8798         DIRECT_BIND.
8799         * call.c (convert_like): Don't pass INDIRECT_BIND.
8800         * typeck.c (convert_arguments): Likewise.
8801         * typeck.c (mark_addressable): Allow &this if flag_this_is_variable.
8802
8803 Thu Oct 31 17:08:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
8804
8805         * typeck.c (mark_addressable): Support TARGET_EXPR, unify with
8806         similar code in build_up_ref.
8807         * cvt.c (build_up_reference): Drastically simplify.
8808
8809 Mon Oct 28 12:45:05 1996  Jeffrey A Law  (law@cygnus.com)
8810
8811         * typeck.c (signed_or_unsigned_type): If the given type already
8812         as the correct signedness, then just return it.
8813
8814         * typeck.c ({un,}signed_type): If can't do anything, call
8815         signed_or_unsigned_type.
8816
8817 Thu Oct 24 14:21:59 1996  Bob Manson  <manson@charmed.cygnus.com>
8818
8819         * decl2.c (copy_assignment_arg_p): Don't buy the farm if
8820         current_class_type is NULL.
8821
8822 Wed Oct 23 00:43:10 1996  Jason Merrill  <jason@gerbil.cygnus.com>
8823
8824         * class.c (finish_struct_1): Avoid empty structs by adding a field
8825         so layout_type gets the mode right.
8826
8827         * typeck.c (c_expand_return): Drastically simplify.
8828
8829 Mon Oct 21 22:34:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
8830
8831         * typeck.c (decay_conversion): Handle overloaded methods.
8832
8833 Fri Oct 18 16:03:48 1996  Jason Merrill  <jason@yorick.cygnus.com>
8834
8835         * call.c (build_over_call): A TARGET_EXPR has side-effects.
8836
8837 Thu Oct 17 11:31:59 1996  Mike Stump  <mrs@cygnus.com>
8838
8839         * cvt.c (convert_to_pointer_force): Add code to support pointer to
8840         member function to pointer to function conversions.
8841         * init.c (resolve_offset_ref): Add code to allow faked up objects,
8842         ignoring them if they are not used, and giving an error, if they
8843         are needed.
8844         * typeck.c (get_member_function_from_ptrfunc): Fold e1 to improve
8845         code, and so that we can give an error, if we needed an object,
8846         and one was not provided.
8847         (build_c_cast): Don't call default_conversion when we want to
8848         convert to pointer to function from a METHOD_TYPE.
8849
8850 Mon Oct 14 00:28:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
8851
8852         * Make-lang.in (cplib2.ready): Fix logic.
8853
8854         * decl.c (shadow_tag): Only complain about non-artificial function
8855         members.
8856
8857         * class.c (finish_struct_1): Add synthesized methods to TYPE_METHODS.
8858
8859 Fri Oct 11 16:12:40 1996  Jason Merrill  <jason@yorick.cygnus.com>
8860
8861         * expr.c (cplus_expand_expr): Pre-tweak call_target like
8862         expand_inline_function would.
8863
8864         * pt.c (mark_decl_instantiated): If extern_p, call
8865         mark_inline_for_output.
8866
8867 Thu Oct 10 15:58:08 1996  Mike Stump  <mrs@cygnus.com>
8868
8869         * typeck.c (unary_complex_lvalue): Add code to handle intermediate
8870         pmd conversions.
8871
8872         * typeck.c (get_delta_difference): Fix wording, as we can be used
8873         for pointer to data members.
8874
8875 Tue Oct  8 12:43:51 1996  Bob Manson  <manson@charmed.cygnus.com>
8876
8877         * pt.c (tsubst): If the function decl isn't a member of this
8878         template, return a copy of the decl (including copying the
8879         lang-specific part) so we don't hose ourselves later.
8880
8881 Thu Oct  3 16:24:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
8882
8883         * class.c (finish_struct): Remove DWARF-specific tag handling.
8884         * decl.c (pushtag): Likewise.
8885         (finish_function): Always clear DECL_ARGUMENTS on function decls with
8886         no saved RTX.
8887         * decl2.c (finish_file): Emit DWARF debugging info for static data
8888         members.
8889
8890 Wed Oct  2 21:58:01 1996  Bob Manson  <manson@charmed.cygnus.com>
8891
8892         * decl.c (duplicate_decls): Make sure the old DECL_LANG_SPECIFIC
8893         isn't the same as the new one before we whack it.
8894
8895 Mon Sep 30 13:38:24 1996  Jason Merrill  <jason@yorick.cygnus.com>
8896
8897         * class.c, cp-tree.h, cvt.c, decl.c, decl2.c, gxx.gperf, hash.h,
8898         lex.c, method.c, parse.y, typeck.c, typeck2.c: Remove
8899         warn_traditional and warn_strict_prototypes; remove ancient
8900         'overload' code; remove references to flag_traditional.
8901
8902 Mon Sep 30 12:58:40 1996  Mike Stump  <mrs@cygnus.com>
8903
8904         * input.c (sub_getch): Handle 8-bit characters in string literals.
8905
8906 Sun Sep 29 03:12:01 1996  Jason Merrill  <jason@yorick.cygnus.com>
8907
8908         * tree.c (mapcar): Handle CONSTRUCTORs.
8909         (copy_to_permanent): Handle expression_obstack properly.
8910
8911         * Make-lang.in (cplib2.txt): Also depend on the headers.
8912
8913         * rtti.c (get_tinfo_var): Don't assume that POINTER_SIZE ==
8914         INT_TYPE_SIZE.
8915         (expand_class_desc): Use USItype for offset field.
8916         * tinfo.h (struct __class_type_info): Likewise.
8917
8918         * method.c (build_overload_int): TYPE_PRECISION should be applied
8919         to types.
8920
8921 Sat Sep 28 14:44:50 1996  Jason Merrill  <jason@yorick.cygnus.com>
8922
8923         * call.c (build_new_op): A COND_EXPR involving void must be a
8924         builtin.
8925
8926 Fri Sep 27 16:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
8927
8928         * typeck.c (build_x_component_ref): New fn.
8929         (build_object_ref): Use it.
8930         * parse.y (primary): Use it.
8931         * decl2.c (build_expr_from_tree): Use it.
8932         * cp-tree.h: Declare it.
8933
8934         * decl.c (start_decl): variable-sized arrays cannot be initialized.
8935         * error.c (dump_type_suffix): Handle variable arrays.
8936
8937 Fri Sep 27 13:14:05 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8938
8939         * Make-lang.in (exception.o): Put back compiling it with -fPIC.
8940
8941 Fri Sep 27 03:00:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
8942
8943         * decl.c (lookup_name_real): Don't try to look up anything in a
8944         TYPENAME_TYPE.
8945
8946         * tinfo2.cc (__throw_type_match_rtti): Oops.
8947
8948 Thu Sep 26 22:11:05 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8949
8950         * Make-lang.in (exception.o): Use -fno-PIC for now.
8951
8952 Thu Sep 26 10:59:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
8953
8954         * rtti.c (build_dynamic_cast): Pass tinfo fns rather than
8955         calling them.
8956         (get_tinfo_fn_dynamic): Extracted from build_typeid.
8957         * tinfo2.cc (__dynamic_cast): Adjust.
8958         
8959         * rtti.c (build_typeid): Use resolves_to_fixed_type_p.
8960         (build_x_typeid): Likewise.
8961
8962         * parse.y: Call build_x_typeid instead of build_typeid.
8963         * cp-tree.def: Add TYPEID_EXPR.
8964         * pt.c (tsubst_copy): Handle typeid.
8965         * decl2.c (build_expr_from_tree): Likewise.
8966         * rtti.c (build_x_typeid): Throw bad_typeid from here.
8967         (build_typeid): Not here.
8968         * cp-tree.h: Declare build_x_typeid.
8969
8970 Wed Sep 25 17:26:16 1996  Jason Merrill  <jason@yorick.cygnus.com>
8971
8972         * call.c (convert_like): Pull out constant values.
8973
8974         * tree.c (mapcar): Use build_cplus_array_type, not build_array_type.
8975
8976 Wed Sep 25 17:28:53 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
8977
8978         * decl.c (init_decl_processing): Create short int types before
8979         creating size_t in case a machine description needs to use
8980         unsigned short for size_t.
8981
8982 Tue Sep 24 18:18:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
8983
8984         * Make-lang.in (exception.o): Turn off pic.
8985
8986         * tinfo2.cc (__throw_type_match_rtti): Fix cv-variants of the same
8987         type, multi-level ptr conversions.
8988
8989         * rtti.c (call_void_fn): Renamed and genericized from throw_bad_cast.
8990         (throw_bad_cast): Use it.
8991         (throw_bad_typeid): New fn.
8992         (build_typeid): Throw bad_typeid as needed.
8993         Use build_call.
8994         (synthesize_tinfo_fn): Handle functions and arrays before checking
8995         for cv-quals.
8996
8997         * Remove .h from standard C++ headers, add new.h, move into inc
8998         subdirectory.
8999
9000         * exception*: Remove pointer from object, constructors.  Add
9001         default exception::what that uses type_info::name.  Add
9002         __throw_bad_typeid.
9003
9004         * init.c (build_new): Don't add a cookie to new (void *) T[2].
9005
9006 Mon Sep 23 15:21:53 1996  Jason Merrill  <jason@yorick.cygnus.com>
9007
9008         * Make-lang.in: Building C++ code depends on cc1plus.
9009
9010 Mon Sep 23 12:38:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9011
9012         * decl.c (struct saved_scope): Declare PROCESSING_TEMPLATE_DECL as
9013         a HOST_WIDE_INT, not a tree.
9014
9015 Mon Sep 23 12:36:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
9016
9017         * exception.cc: Don't include <stdlib.h>.
9018
9019         * Make-lang.in (c++.clean): Remove cplib2.*.
9020
9021 Mon Sep 23 09:42:19 1996  Doug Evans  <dje@canuck.cygnus.com>
9022
9023         * parse.y (component_decl_1, component_costructor_declarator case):
9024         Pass attributes/prefix_attributes in tree list.
9025
9026 Mon Sep 23 01:18:50 1996  Jason Merrill  <jason@yorick.cygnus.com>
9027
9028         * tinfo{,2}.cc: #include <stddef.h> instead of <stdlib.h>.
9029
9030 Sun Sep 22 05:31:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
9031
9032         * lex.c (do_identifier): Don't do deferred lookup in a template
9033         header.
9034
9035         * typeck2.c (store_init_value): Oops.
9036
9037         * new.{h,cc}, exception.{h,cc}, typeinfo.h, tinfo{2.cc,.cc,.h}: 
9038         New files for C++ lang-support library.
9039         * Make-lang.in (CXX_EXTRA_HEADERS): Define.
9040         (CXX_LIB2FUNCS): Define.
9041         And rules for building the C++ lang-support code.
9042         * config-lang.in (headers): Define.
9043         (lib2funcs): Define.
9044
9045 Sat Sep 21 19:17:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
9046
9047         * decl2.c (build_expr_from_tree): If CONSTRUCTOR has a type, call
9048         digest_init.
9049         * pt.c (tsubst_copy): Compute type for CONSTRUCTOR.
9050         * typeck2.c (store_init_value): Check for initializing pmf with { }
9051         here.
9052         (process_init_constructor): Not here.
9053
9054 Thu Sep 19 16:41:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
9055
9056         * pt.c (begin_template_parm_list): Increment
9057         processing_template_decl here.
9058         (end_template_parm_list): Not here.
9059         (process_template_parm): No need to add 1 to it now.
9060         * *.c: Use processing_template_decl instead of current_template_parms
9061         to check for being in a template.
9062
9063         * pt.c (uses_template_parms): Handle SCOPE_REF.  Fix CONSTRUCTOR.
9064         (tsubst_copy): Handle CONSTRUCTOR.
9065         (instantiate_decl): Set up context properly for variables.
9066         * decl2.c (build_expr_from_tree): Handle CONSTRUCTOR.
9067         * class.c (finish_struct): Reverse CLASSTYPE_TAGS.
9068
9069 Wed Sep 18 13:30:20 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9070
9071         * lex.c (enum tree_node_kind) [GATHER_STATISTICS]: Put the enum back.
9072
9073 Wed Sep 18 04:24:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
9074
9075         * method.c (make_thunk): Call comdat_linkage before setting the
9076         TREE_CODE.
9077
9078         * decl2.c (comdat_linkage): Use make_decl_one_only.
9079         (import_export_decl): Likewise.
9080         * decl.c (init_decl_processing): Check supports_one_only instead of
9081         SUPPORTS_WEAK.
9082
9083 Sat Sep 14 08:34:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
9084
9085         * decl2.c (grokfield): Tighten checking for access decls.
9086
9087         * decl.c (make_typename_type): Resolve references to
9088         current_class_type.  Set CLASSTYPE_GOT_SEMICOLON.
9089         (lookup_name_real): Types that depend on a template parameter get
9090         an implicit 'typename' unless they're in the current scope.
9091         (start_decl_1): We don't care about incomplete types that depend
9092         on a template parm.
9093         (grokdeclarator): Resolve 'typename's in the type specifier that
9094         refer to members of the current scope.
9095
9096         * call.c (build_over_call): Remove 'inline called before
9097         definition' diagnostic.
9098         (build_method_call): Likewise.
9099         * decl.c (duplicate_decls): Downgrade 'used before declared
9100         inline' to a warning, only with -Winline.
9101
9102 Fri Sep 13 17:31:40 1996  Stan Shebs  <shebs@andros.cygnus.com>
9103
9104         * mpw-make.sed: Fix include paths, add @DASH_C_FLAG@ to compile.
9105
9106 Wed Sep 11 22:38:13 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
9107
9108         * call.c (build_method_call): When calling a signature
9109         default implementation, as in other cases, let instance_ptr simply
9110         be instance.
9111
9112 Wed Sep 11 22:14:44 1996  Mike Stump  <mrs@cygnus.com>
9113
9114         * parse.y (simple_stmt): Cleanup and use do_poplevel ().
9115
9116 Wed Sep 11 22:10:48 1996  Mike Stump  <mrs@cygnus.com>
9117
9118         * except.c (expand_start_catch_block): Add a pushlevel so that -g
9119         works on hppa and SPARC.
9120
9121 Wed Sep 11 10:18:06 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9122
9123         * typeck.c (build_indirect_ref): Catch PTR being an error_mark_node.
9124
9125 Mon Sep  9 19:51:14 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
9126
9127         * call.c (build_over_call): Check first whether DECL_CONTEXT exists
9128         before testing whether it's a signature.
9129
9130 Sun Sep  8 16:06:57 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
9131
9132         * call.c (build_new_method_call): Don't complain about signature
9133         pointers and references not being an aggr type.
9134         (build_this): If a signature pointer or reference was passed in,
9135         just return it.
9136         (build_new_method_call): If instance is a signature pointer, set
9137         basetype to the signature type of instance.
9138         * sig.c (build_signature_method_call): Deleted basetype and
9139         instance parameters, they can be found as the DECL_CONTEXT of
9140         function and as the first argument passed in.
9141         * cp-tree.h: Changed declaration of build_signature_method_call.
9142         * call.c (build_method_call): Deleted first two arguments in call
9143         of build_signature_method_call.
9144         (build_over_call): Added call to build_signature_method_call.
9145
9146 Thu Sep  5 16:51:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
9147
9148         * typeck.c (build_c_cast): Don't tack a non_lvalue_expr onto a
9149         target_expr.
9150
9151 Thu Sep  5 10:05:38 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9152
9153         * cvt.c (convert_to_reference): Use %#T, not %#D, for error.
9154
9155 Wed Sep  4 17:16:09 1996  Bob Manson  <manson@charmed.cygnus.com>
9156
9157         * except.c (expand_start_try_stmts): Move to except.c in the backend.
9158         (expand_end_try_stmts): Remove.
9159
9160         * init.c (perform_member_init): Use add_partial_entry () instead
9161         of directly manipulating lists.
9162         (emit_base_init): Ditto.
9163
9164 Wed Sep  4 12:14:36 1996  Mike Stump  <mrs@cygnus.com>
9165
9166         * except.c (expand_exception_blocks): Always make sure USE and
9167         CLOBBER insns that came at the end still do, the backend relies
9168         upon this.
9169
9170 Wed Sep  4 07:44:48 1996  Jason Merrill  <jason@yorick.cygnus.com>
9171
9172         * call.c (build_over_call): We can only use a TARGET_EXPR of the
9173         right type.
9174
9175 Tue Sep  3 19:26:05 1996  Jason Merrill  <jason@yorick.cygnus.com>
9176
9177         * cvt.c (convert_to_reference): Revert last change, don't complain
9178         about temp without target decl.
9179
9180 Tue Sep  3 10:22:56 1996  Mike Stump  <mrs@cygnus.com>
9181
9182         * decl.c (grokdeclarator): Don't core dump when void() is given.
9183
9184 Tue Sep  3 02:38:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
9185
9186         * decl.c (copy_args_p): Don't crash.
9187
9188 Fri Aug 30 14:26:57 1996  Mike Stump  <mrs@cygnus.com>
9189
9190         * pt.c (tsubst): And support template args inside the exception
9191         specification.
9192
9193         * pt.c (tsubst): Add support for exception specifications in
9194         template functions.
9195
9196 Fri Aug 30 10:01:55 1996  Mike Stump  <mrs@cygnus.com>
9197
9198         * cp-tree.def (DECL_STMT): Eliminate the throw spec field, only 3
9199         fields now.
9200         * cp-tree.h (start_decl): Eliminate the throw spec parameter.
9201         (start_function): Likewise.
9202         (start_method): Likewise.
9203         (grokfield): Likewise.
9204         (make_call_declarator): Add throw spec parameter.
9205         (set_quals_and_spec): Add routine.
9206         * lex.c (set_quals_and_spec): Likewise.
9207         * decl.h (grokdeclarator): Eliminate the throw spec parameter.
9208         * decl.c (shadow_tag): Eliminate the throw spec parameter to
9209         grokdeclarator.
9210         (groktypename): Likewise.
9211         (start_decl): Eliminate the throw spec parameter.  Eliminate the
9212         throw spec parameter to grokdeclarator.  Eliminate the throw spec
9213         field in DECL_STMT.
9214         (cp_finish_decl): Eliminate the throw spec field in DECL_STMT.
9215         (grokfndecl): Remove useless set of raises.
9216         (grokdeclarator): Eliminate the throw spec parameter.  Eliminate
9217         the throw spec parameter to start_decl.  Pull the throw spec out
9218         of the call declarator.
9219         (grokparms): Eliminate the throw spec parameter to grokdeclarator.
9220         (start_function): Eliminate the throw spec parameter.  Eliminate
9221         the throw spec parameter to grokdeclarator.
9222         (start_method): Likewise.
9223         * decl2.c (grokfield): Likewise.
9224         (grokbitfield): Eliminate the throw spec parameter to grokdeclarator.
9225         (grokoptypename): Likewise.
9226         (finish_file): Eliminate the throw spec parameter to
9227         start_function.  Add throw spec to make_call_declarator.
9228         * except.c (init_exception_processing): Add throw spec to
9229         make_call_declarator.  Eliminate the throw spec parameter to
9230         start_decl.
9231         (expand_start_catch_block): Eliminate the throw spec parameter to
9232         grokdeclarator.
9233         (expand_builtin_throw): Add throw spec to make_call_declarator.
9234         Eliminate the throw spec parameter to start_function.
9235         (start_anon_func): Likewise.
9236         * lex.c (make_call_declarator): Add throw spec parameter.
9237         (set_quals_and_spec): New routine.
9238         (cons_up_default_function): Add throw spec to make_call_declarator.
9239         Eliminate the throw spec parameter to grokfield.
9240         * method.c (synthesize_method): Eliminate the throw spec parameter
9241         to start_function.
9242         * pt.c (process_template_parm): Eliminate the throw spec parameter
9243         to grokdeclarator.
9244         (tsubst): Add throw spec to make_call_declarator.
9245         (tsubst_expr): Eliminate the throw spec parameter to start_decl.
9246         (do_function_instantiation): Eliminate the throw spec parameter to
9247         grokdeclarator.  Eliminate the throw spec parameter to
9248         start_function.
9249         * rtti.c (synthesize_tinfo_fn): Eliminate the throw spec parameter
9250         to start_function.
9251         * parse.y (datadef): Remove non-winning optimization.
9252         (decl): Likewise.
9253         (fndef): Remove ambiguous error productions uncovered by grammer
9254         fixing.
9255         (constructor_declarator): Add exception_specification_opt here.
9256         (component_constructor_declarator): Likewise.
9257         (direct_after_type_declarator): Likewise.
9258         (complex_direct_notype_declarator): Likewise.
9259         (direct_abstract_declarator): Likewise.
9260         (fn.def1): Remove exception_specification_opt.
9261         (fn.def2): Likewise.
9262         (condition): Likewise.
9263         (initdcl0): Likewise.
9264         (initdcl): Likewise.
9265         (notype_initdcl0): Likewise.
9266         (nomods_initdcl0): Likewise.
9267         (component_decl_1): Likewise.
9268         (component_declarator): Likewise.
9269         (after_type_component_declarator0): Likewise.
9270         (after_type_component_declarator): Likewise.
9271         (notype_component_declarator): Likewise.
9272
9273 Wed Aug 28 01:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
9274
9275         * call.c (build_over_call): Also use an INIT_EXPR when
9276         initializing anything from an rvalue.
9277
9278         * call.c (build_over_call): Call stabilize_reference when building
9279         an INIT_EXPR instead of calling the copy ctor.
9280
9281         * call.c (joust): Extend the previous change to all comparisons.
9282
9283         * decl2.c, method.c, lex.c: Use MAKE_DECL_ONE_ONLY and 
9284         NO_LINKAGE_HEURISTICS.
9285
9286         * decl2.c (finish_file): Emit any statics that weren't already.
9287
9288         * typeck.c (build_static_cast): Implement.
9289         * tree.c (build_cplus_new): Handle getting a TARGET_EXPR.
9290         * decl.c (grokparms): Use can_convert_arg instead of
9291         implicit_conversion directly.
9292         (copy_args_p): New fn.
9293         * cvt.c (convert_to_reference): Don't complain about temp with
9294         static_cast.
9295         (build_up_reference): Handle TARGET_EXPRs.
9296         * call.c (build_over_call): Elide unnecessary temps.
9297         (can_convert*): Use new overloading code.
9298
9299 Tue Aug 27 13:12:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
9300
9301         * call.c: Move TYPE_PTR*_MACROS ...
9302         * cp-tree.h: To here.
9303         * typeck.c (build_reinterpret_cast): Implement.
9304
9305         * call.c (add_builtin_candidate): Use TYPE_PTROB_P instead of
9306         ptr_complete_ob.
9307         (joust): If we're comparing a function to a builtin and the worst
9308         conversion for the builtin is worse than the worst conversion for the
9309         function, take the function.
9310
9311         * typeck.c (build_const_cast): Implement.
9312         (comp_ptr_ttypes_const): Like comp_ptr_ttypes, for const_cast.
9313         (comp_ptr_ttypes_reinterpret): Like cpt, for reinterpret_cast.
9314
9315 Tue Aug 27 13:14:58 1996  Bob Manson  <manson@charmed.cygnus.com>
9316
9317         * rtti.c (build_dynamic_cast): Don't try to dereference exprtype
9318         too early. Make sure we explode if exprtype turns out to be a
9319         NULL_TREE when it shouldn't be.
9320
9321 Tue Aug 27 10:56:21 1996  Mike Stump  <mrs@cygnus.com>
9322
9323         * cp-tree.h: New routine make_call_declarator.
9324         * lex.c (make_call_declarator): Define it.
9325         * except.c (init_exception_processing): Use it.
9326         (expand_builtin_throw): Likewise.
9327         (start_anon_func): Likewise.
9328         * decl2.c (finish_file): Likewise.
9329         * lex.c (cons_up_default_function): Likewise.
9330         * parse.y: Likewise.
9331         * pt.c (tsubst): Likewise.
9332         
9333 Mon Aug 26 17:40:03 1996  Mike Stump  <mrs@cygnus.com>
9334
9335         * decl2.c (groktypefield): Remove unused code.
9336
9337 Mon Aug 26 17:00:33 1996  Mike Stump  <mrs@cygnus.com>
9338
9339         * gxx.gperf: Change TYPE_QUAL into CV_QUALIFIER.
9340         * parse.y: Likewise.  Change maybe_type_qual into maybe_cv_qualifier.
9341         Change type_quals into cv_qualifiers.  Change nonempty_type_quals into
9342         nonempty_cv_qualifiers.
9343         * hash.h: Rebuild.
9344         
9345         * lex.c (make_pointer_declarator): Change type_quals into
9346         cv_qualifiers.
9347         (make_reference_declarator): Likewise.
9348         
9349 Thu Aug 22 01:09:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
9350
9351         * decl.c (start_function): Only check interface_* for templates
9352         with flag_alt_external_templates.
9353
9354         * call.c (build_new_op): Check for comparison of different enum types.
9355         (build_over_call): Fix arg # output.
9356
9357         * typeck.c (build_component_ref): Handle pre-found TYPE_DECL.
9358
9359 Wed Aug 21 00:13:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
9360
9361         * call.c (build_new_op): Check for erroneous args.
9362
9363         * call.c (build_new_method_call): Add missing args to cp_error.
9364
9365         * tree.c (error_type): Dont print reference-to-array.
9366
9367         * typeck.c (convert_for_assignment): Don't say contravariance for
9368         removing const.
9369
9370 Tue Aug 20 13:23:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
9371
9372         * call.c (build_over_call): Diagnose bad convs for `this'.
9373
9374         * lex.c (cons_up_default_function): Set DECL_ARTIFICIAL
9375         on _ctor_arg.
9376
9377         * call.c (convert_like): Handle bad convs.
9378         (build_over_call): Handle bad convs better.
9379
9380         * decl2.c: -fansi-overloading is now the default.
9381
9382         * call.c (build_new_method_call): Check for erroneous args.
9383
9384         * pt.c (instantiate_class_template): Propagate
9385         TYPE_USES_MULTIPLE_INHERITANCE.
9386
9387 Tue Aug 20 13:09:57 1996  Mike Stump  <mrs@cygnus.com>
9388
9389         * call.c (enforce_access): Add static to routine.
9390
9391 Sun Aug 18 14:35:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
9392
9393         * call.c (build_user_type_conversion_1): Fix bad handling.
9394         (compare_ics): Likewise.
9395
9396 Sat Aug 17 21:54:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
9397
9398         * call.c (standard_conversion): Oops.
9399
9400 Sat Aug 17 16:28:11 1996  Geoffrey Noer  <noer@cygnus.com>
9401
9402         * g++.c: Update test for win32 (&& ! cygwin32).
9403
9404 Sat Aug 17 03:45:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
9405
9406         * typeck.c (comp_ptr_ttypes_real): Handle OFFSET_TYPEs properly.
9407         (ptr_reasonably_similar): New fn.
9408         * call.c (BAD_RANK): New rank.
9409         (ICS_BAD_FLAG): New macro.
9410         (standard_conversion): Handle almost-right pointer conversions.
9411         (reference_binding): Handle bad rvalue bindings.
9412         (add_*_candidate): Stuff.
9413         (build_over_call): Pass bad conversions to convert_for_initialization.
9414         (compare_ics): Handle bad convs.
9415         (joust): Likewise.
9416
9417 Fri Aug 16 15:02:19 1996  Bob Manson  <manson@charmed.cygnus.com>
9418
9419         * init.c (expand_vec_init): Use ptrdiff_type_node instead of
9420         integer_type_node when computing pointer offsets.
9421
9422 Fri Aug 16 01:28:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
9423
9424         * tree.c (lvalue_type): New fn.
9425         (error_type): New fn.
9426         * call.c (op_error): Use error_type.
9427         (add_conv_candidate): Use lvalue_type.
9428         (add_builtin_candidates): Likewise.
9429         * error.c (args_as_string): Use error_type.
9430
9431 Thu Aug 15 17:27:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
9432
9433         * pt.c (instantiate_decl): Evaluate DECL_INITIAL of a VAR_DECL here.
9434         (tsubst): Not here.
9435
9436         * decl.c (init_decl_processing): With -ansi, __null's type is the
9437         signed integral type with the same number of bits as a pointer.
9438         Introduce a new variable null_node for it.
9439         * cp-tree.h: Adjust.
9440         * call.c (null_ptr_cst_p): Adjust.
9441
9442 Thu Aug 15 17:09:54 1996  Mike Stump  <mrs@cygnus.com>
9443
9444         * except.c (do_unwind): Mark %i7 as used on the SPARC so we can
9445         optimize.
9446
9447 Thu Aug 15 01:36:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
9448
9449         * decl2.c (import_export_decl): Ignore #pragma interface for tinfo
9450         fns of classes without virtual functions.
9451
9452         * call.c (add_function_candidate): Handle `this' specially.
9453         (compare_ics): Likewise.
9454
9455 Tue Aug 13 12:16:10 1996  Jason Merrill  <jason@yorick.cygnus.com>
9456
9457         * typeck.c (build_conditional_expr): Fix handling of __null.
9458
9459         * decl2.c (comdat_linkage): New fn.
9460         (import_export_vtable): Use it.
9461         (import_export_decl): Use it.
9462         * method.c (make_thunk): Use it.
9463
9464 Mon Aug 12 00:09:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
9465
9466         * pt.c (end_template_decl): If we don't actually have parms, return.
9467         * parse.y (template_header): Accept 'template <>'.
9468
9469         * errfn.c: Allow 5 args.
9470
9471 Sun Aug 11 15:20:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
9472
9473         * tree.c (make_temp_vec): New fn.
9474         * pt.c (push_template_decl): Handle partial specs.
9475         (instantiate_class_template): Likewise.
9476         (more_specialized): Use get_bindings.
9477         (more_specialized_class): New fn.
9478         (get_class_bindings): New fn.
9479         (most_specialized_class): New fn.
9480         (do_function_instantiation): List candidates for ambiguous case.
9481         * decl.c (duplicate_decls): Lose reference to DECL_TEMPLATE_MEMBERS.
9482         (shadow_tag): Call push_template_decl for partial specializations.
9483         * parse.y: Likewise.
9484         * cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Replaces
9485         DECL_TEMPLATE_MEMBERS.
9486         * call.c (print_z_candidates): Reduce duplication.
9487
9488 Fri Aug  9 14:36:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
9489
9490         * decl2.c (lang_decode_option): Allow -fansi-overloading.
9491
9492 Thu Aug  8 17:04:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
9493
9494         * pt.c (get_bindings): New fn.
9495         (most_specialized): Likewise.
9496         (do_function_instantiation): Use them.
9497         (add_maybe_template): New fn.
9498         * cp-tree.h (DECL_MAYBE_TEMPLATE): New macro.
9499         * call.c (build_new_op): Handle guiding decls.
9500         (build_new_function_call): Likewise.
9501         * decl2.c (finish_file): Likewise.
9502
9503         * decl2.c (mark_used): Do synthesis here.
9504         * call.c (build_method_call): Not here.
9505         (build_over_call): Or here.
9506         * typeck.c (build_function_call_real): Or here.
9507         * tree.c (bot_manip): Call mark_used on functions used in default
9508         args.
9509
9510 Thu Aug  8 17:48:16 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
9511
9512         * decl2.c (import_export_vtable): Delete code that disabled vtable
9513         heuristic on systems with ASM_OUTPUT_EXTERNAL.
9514
9515 Wed Aug  7 12:44:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
9516
9517         * typeck.c (build_x_function_call): Handle static call context
9518         better.
9519
9520         * decl.c (finish_function): Set the DECL_CONTEXT of the result to
9521         the function, not its outer block.
9522
9523         * call.c (build_field_call): Pass fields on to build_opfncall
9524         regardless of TYPE_OVERLOADS_CALL_EXPR.
9525         (build_method_call): Pass on to build_new_method_call sooner.
9526
9527         * typeck.c (build_ptrmemfunc): Just return what instantiate_type
9528         gives us.
9529         * class.c (instantiate_type): Don't put a POINTER_TYPE to
9530         METHOD_TYPE on an expression.  Also make a copy of rhs instead of
9531         modifying it.
9532
9533 Tue Aug  6 12:58:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
9534
9535         * call.c (compare_ics): Handle qual_conv after lvalue_conv.
9536         (add_builtin_candidate): Don't take enums for ++.
9537         (build_new_method_call): Handle non-aggregates and field calls.
9538         Move new overloading code from...
9539         * cvt.c: Here.
9540
9541         * decl.c (grokparms): Don't check default args in templates.
9542
9543 Mon Aug  5 17:17:06 1996  Jason Merrill  <jason@yorick.cygnus.com>
9544
9545         * cvt.c (build_new_op): Fix args to build_unary_op.
9546         (add_builtin_candidates): Don't call type_promotes_to on float.
9547
9548         * decl.c (grokparms): Check the type of the default arg.
9549
9550         * cvt.c (build_new_op): Pass non-overloaded cases on rather than
9551         returning NULL_TREE.
9552
9553         * typeck.c (build_x_binary_op): Avoid doing extra work.
9554         (build_x_unary_op): Likewise.
9555         (build_x_conditional_expr): Likewise.
9556         * cvt.c (build_over_call): Return.
9557         (add_builtin_candidate): Fix MEMBER_REF.
9558         (build_new_op): Likewise.
9559
9560 Mon Aug  5 17:07:47 1996  Mike Stump  <mrs@cygnus.com>
9561
9562         * method.c (build_overload_name): Put bug fix into code but leave
9563         disabled for now so we can be bug compatible with older releases
9564         that do repeats incorrectly.  In the future, we can enable it.
9565
9566 Mon Aug  5 13:46:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
9567
9568         * cvt.c (convert_like): Don't call build_cplus_new twice.
9569
9570         * call.c, cp-tree.h, cvt.c, decl2.c, init.c, method.c, pt.c, typeck.c:
9571         Control new overloading code with -fansi-overloading.
9572
9573 Sun Aug  4 15:29:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
9574
9575         * cvt.c (build_over_call): Call build_cplus_new.
9576         * call.c (build_method_call): Likewise.
9577         * typeck.c (build_function_call_real): Likewise.
9578         (build_conditional_expr): If both operands are TARGET_EXPRs, wrap
9579         the COND_EXPR in a TARGET_EXPR so they use the same slot.
9580
9581         * cvt.c (build_up_reference): Propagate INDIRECT_BIND to 
9582         recursive calls.
9583         * typeck.c (complete_type): Propagate
9584         TYPE_NEEDS_{CONSTRUCTING,DESTRUCTOR}.
9585
9586 Sat Aug  3 14:05:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
9587
9588         * cvt.c (joust): More ?: kludging.  Sigh.
9589         (build_over_call): Don't try to synthesize global fns.
9590
9591         * search.c (lookup_conversions): Use binfo marking.
9592
9593 Sat Aug  3 12:33:42 1996  Bob Manson  <manson@charmed.cygnus.com>
9594
9595         * search.c (build_mi_matrix): Use the correct value of cid
9596         when determining the new mi_size.
9597
9598 Sat Aug  3 01:27:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
9599
9600         * cvt.c (add_builtin_candidates): Do consider type conversion ops
9601         for the first parms of += et al.
9602         (strip_top_quals): New fn.
9603         (reference_binding): Use it instead of TYPE_MAIN_VARIANT.
9604         (implicit_conversion): Likewise.
9605         (add_builtin_candidates): Be careful about arrays.
9606         (build_new_method_call): Handle vtable optimization.
9607
9608 Fri Aug  2 01:26:59 1996  Jason Merrill  <jason@yorick.cygnus.com>
9609
9610         * cp-tree.h (LOOKUP_NO_TEMP_BIND): New flag.
9611         * cvt.c (reference_binding): Use it.
9612         (implicit_conversion): Use it.
9613         (add_builtin_candidate, COND_EXPR): Use it.
9614
9615         * cvt.c (build_new_function_call): Check for error args.
9616
9617         * typeck.c (comptypes): Just check DERIVED_FROM_P, not UNIQUELY.
9618
9619         * gxx.gperf: Add __null.
9620         * hash.h: Regenerate.
9621         * lex.h: Add RID_NULL.
9622         * lex.c (init_lex): Create null_pointer_node here, stick it in
9623         RID_NULL.
9624         * decl.c (init_decl_processing): Still set its type here.
9625         * cvt.c (cp_convert_to_pointer): Don't produce null_pointer_node.
9626         (convert_to_pointer_force): Likewise.
9627         (null_ptr_cst_p): Check for null_pointer_node; only accept (void*)0
9628         if (! pedantic).
9629         * call.c (convert_harshness): Use null_ptr_cst_p.
9630         * typeck.c (convert_for_assignment): Likewise.  Don't produce
9631         null_pointer_node.
9632
9633         * error.c (args_as_string): Handle lists of actual args, too.
9634         * cvt.c (null_ptr_cst): Support (void*)0 for now.
9635         (build_user_type_conversion_1): Improve diagnostics.
9636         (build_new_function_call): Likewise.
9637         (build_object_call): Likewise.
9638         (build_new_method_call): Likewise.  Move call before def diagnostic...
9639         (build_over_call): Here.
9640
9641         * cvt.c (build_new_method_call): Don't complain about no match if
9642         LOOKUP_SPECULATIVELY.
9643         (build_over_call): Fix 'this' for virtual fn.
9644         (build_new_method_call): Add diagnostic.
9645
9646 Thu Aug  1 16:45:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
9647
9648         * cvt.c (add_function_candidate): Expect 'this' and 'in_chrg' for
9649         constructors to be passed in.
9650         (build_over_call): Likewise.
9651         (build_user_type_conversion_1): Pass them in.
9652         (convert_like): Likewise.
9653         (build_object_call): Handle overloaded conversions.
9654         (build_over_call): Pass the right args to build_vfn_ref.
9655         (standard_conversion): Fix pmf convs.
9656         (joust): Handle comparing statics and non-statics.
9657         (build_new_method_call): New fn.
9658         * call.c (build_method_call): Call it if NEW_OVER.
9659
9660 Thu Aug  1 16:06:14 1996  Mike Stump  <mrs@cygnus.com>
9661
9662         * lex.c (do_identifier): Don't use %O on IDENTIFIER_OPNAME_Ps, use
9663         %D instead.
9664
9665 Thu Aug  1 15:24:02 1996  Mike Stump  <mrs@cygnus.com>
9666
9667         * except.c (expand_throw): Use maybe_build_cleanup_and_delete
9668         instead of just maybe_build_cleanup so that we deallocate the
9669         thrown object.
9670
9671 Thu Aug  1 15:18:00 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9672
9673         * decl2.c (finish_prevtable_vardecl): Make non-static for pt.c's use.
9674         * cp-tree.h (finish_prevtable_vardecl): Add decl.
9675
9676 Thu Aug  1 11:53:51 1996  Bob Manson  <manson@charmed.cygnus.com>
9677
9678         * pt.c (instantiate_class_template): Call complete_type. Also, if
9679         we're at the end of the file and we just instantiated a template
9680         class with a vtable, call finish_prevtable_vardecl.
9681
9682         * error.c (dump_decl): Don't explode (or explode more gracefully
9683         as appropriate) if the object being dumped has a null type.
9684         (dump_expr): Likewise.
9685
9686         * search.c (build_mi_matrix): Ensure that mi_size is large enough,
9687         by counting the number of nodes that we'll need before allocating
9688         the array.
9689         (lookup_fnfields): Fix comment.
9690         (breadth_first_search): Fix comment.
9691
9692 Wed Jul 31 09:57:05 1996  Jason Merrill  <jason@yorick.cygnus.com>
9693
9694         * pt.c (instantiate_class_template): Propagate TYPE_PACKED and
9695         TYPE_ALIGN.
9696         * class.c (finish_struct): Call cplus_decl_attributes here.
9697         (finish_struct_1): Not here.
9698         * cp-tree.h: Adjust.
9699
9700         * pt.c (type_unification): New parameter STRICT.
9701         (unify): If STRICT, don't allow cv addition or base deduction.
9702         * call.c, class.c, cvt.c, cp-tree.h: Adjust.
9703
9704 Tue Jul 30 13:06:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
9705
9706         * search.c (get_template_base{_recursive}): New fns.
9707         * pt.c (more_specialized): New fn.
9708         (do_function_instantiation): Use it.
9709         (unify): Handle base deduction.
9710         * cvt.c (joust): Use more_specialized.
9711         Don't arbitrarily choose between non-builtin candidates.
9712         (build_over_call): Call require_complete_type.
9713
9714         * decl.c (start_function): Statics are static even in a #pragma
9715         interface file.
9716
9717         * decl2.c (import_export_vtable): Disable vtable heuristic on
9718         systems with ASM_OUTPUT_EXTERNAL.
9719
9720         * cvt.c (compare_ics): Fix comparison of PMEM_CONV and BASE_CONV.
9721         (standard_conversion): No std conv to enum type.
9722
9723         * cvt.c (standard_conversion): Fix order of args to DERIVED_FROM_P
9724         for ptm's.
9725
9726         * cvt.c (reference_binding): Bind directly to a base subobject of
9727         a class rvalue.
9728
9729         * cvt.c (build_new_op): Enforce access control.
9730
9731 Tue Jul 30 09:22:53 1996  Bob Manson  <manson@charmed.cygnus.com>
9732
9733         * typeck2.c (process_init_constructor): When scanning the
9734         union for a named field, skip things that aren't FIELD_DECLs.
9735
9736         * method.c (synthesize_method): Don't scan fndecl's rtl if
9737         we're at the end of the file; just assume the function can't
9738         be inlined.
9739
9740 Mon Jul 29 15:48:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
9741
9742         * cvt.c (build_builtin_candidate): Stick a dummy conversion in if
9743         it failed.
9744
9745         * cvt.c (build_user_type_conversion_1): Handle overloaded
9746         conversion ops.
9747
9748         * cvt.c (add_builtin_candidates): Don't consider type conversion
9749         operators for the first parameter of operator=.
9750
9751 Mon Jul 29 15:33:55 1996  Bob Manson  <manson@charmed.cygnus.com>
9752
9753         * typeck.c (complete_type): Only call layout_type if we're not
9754         expanding a template.
9755
9756 Mon Jul 29 14:40:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
9757
9758         * cvt.c (compare_ics): Oops.
9759
9760         * cvt.c (op_error): Oops.
9761
9762         * cp-tree.def: Add RVALUE_CONV, rename EXACT_CONV to IDENTITY_CONV.
9763         * cvt.c: Add IDENTITY_RANK before others.  Use real_lvalue_p.
9764         (build_conv): Use them.
9765         (implicit_conversion): Use them.
9766         (convert_like): Handle them.
9767         (build_new_op): Handle builtin COND_EXPR again.
9768         (add_builtin_candidates): Strip cv-quals.  Fix oops.  Include enums
9769         in lists of types for COND_EXPR.
9770         (add_builtin_candidate): Add enum candidates for COND_EXPR.
9771
9772 Mon Jul 29 12:05:40 1996  Bob Manson  <manson@charmed.cygnus.com>
9773
9774         * typeck.c (build_modify_expr): Always attempt to build a call to
9775         the assignment operator, even if we're using a default one.
9776         (convert_for_initialization): Call complete_type.
9777
9778 Mon Jul 29 11:25:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
9779
9780         * cvt.c (reference_binding): A REF_BIND gets the reference type.
9781         (implicit_conversion): Likewise.
9782         (convert_like): Likewise.
9783         (compare_ics): Likewise.
9784         (compare_qual): Likewise.
9785         (print_z_candidates): Handle no candidates.
9786         (build_new_op): Don't handle builtin COND_EXPR for now.
9787
9788 Sat Jul 27 11:27:47 1996  Stan Shebs  <shebs@andros.cygnus.com>
9789
9790         * cvt.c (build_builtin_candidate): Init local var in an ANSI way.
9791
9792 Fri Jul 26 01:07:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
9793
9794         * cvt.c (joust): If the candidates are the same, arbitrarily pick one.
9795
9796         * cvt.c (build_builtin_candidate): Oops.
9797         (build_new_op): Oops.
9798
9799         * method.c (build_opfncall): Pass COND_EXPR on.
9800         * cvt.c (build_builtin_candidate): Reorganize, support COND_EXPR.
9801         (add_builtin_candidate{,s}): Likewise.
9802         (add_builtin_candidates): Likewise.
9803         (print_z_candidates, op_error, build_new_op): Likewise.
9804         (type_decays_to): New fn.
9805         * lex.c (init_lex): Just say ?: for COND_EXPR.
9806
9807 Thu Jul 25 09:33:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
9808
9809         * typeck.c (complete_type): Call layout_type rather than building
9810         a new array type.
9811
9812         * cvt.c (add_builtin_candidate): Pointer arithmetic candidates
9813         only use ptrdiff_t.
9814
9815 Wed Jul 24 12:45:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
9816
9817         * cvt.c: Always compile the new overloading code (but don't use it).
9818         (implicit_conversion): Add a BASE_CONV when converting to
9819         the same class type.
9820         (convert_like): Handle BASE_CONV.
9821
9822 Tue Jul 23 12:46:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
9823
9824         * cvt.c (build_new_op): Support {MAX,MIN}_EXPR.
9825         (add_builtin_candidate): Likewise.
9826
9827         NEW_OVER changes:
9828         * typeck.c (build_x_function_call): Try an operator function
9829         whenever we call an object of class type.
9830         * method.c (build_opfncall): Pass CALL_EXPRs through.
9831         * cvt.c (implicit_conversion): Do const-ref case first.
9832         (add_conv_candidate, build_object_call, op_error): New fns.
9833         (ptr_complete_ob, TYPE_PTROB_P): void is not an object type.
9834         ({add,build}_builtin_candidate{,s}, print_z_candidates): Display 
9835         builtin candidates.
9836         (build_new_op): Handle CALL_EXPR.  Don't try to decay void.
9837         Fall back on preincrement handling.  Use op_error.  
9838         Handle warn_synth.
9839         (convert_like): Pass INDIRECT_BIND.  Don't try to do anything with 
9840         an error_mark_node.
9841         (build_over_call): Handle PROMOTE_PROTOTYPES and ellipsis promotions
9842         properly.
9843
9844 Mon Jul 22 16:21:55 1996  Bob Manson  <manson@charmed.cygnus.com>
9845
9846         * pt.c (tsubst_expr): Handle CONTINUE_STMT.
9847
9848 Mon Jul 22 15:38:58 1996  Mike Stump  <mrs@cygnus.com>
9849
9850         * typeck.c (build_component_ref_1): Use build_component_ref
9851         instead of open coding it here.
9852
9853 Mon Jul 22 12:18:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
9854
9855         * g++.c (main): Don't link with -lg++.
9856
9857         NEW_OVER changes:
9858         * cvt.c (convert_to_reference): Don't use convert_from_refeence on
9859         result of build_type_conversion.
9860         (cp_convert): Only call build_method_call for ctors if
9861         build_type_conversion failed.
9862         (ptr_complete_ob): New function.
9863         (TYPE_PTR{,OB,MEM}_P): New macros.
9864         ({add,build}_builtin_candidate{,s}): New functions.
9865         (print_z_candidates): Handle builtins.
9866         (build_user_type_conversion_1): Don't use conversion fns for 
9867         converting to a base type.
9868         (build_user_type_conversion_1): Set ICS_USER_FLAG on AMBIG_CONVs.
9869         (build_user_type_conversion): Use convert_from_reference.
9870         (build_new_op): New function.
9871         (build_over_call): Fix handling of methods.
9872         (compare_ics): Handle AMBIG_CONV properly.
9873         * typeck2.c: Increment abort count.
9874         * method.c (build_opfncall): Forward most requests to build_new_op.
9875         * cp-tree.h (IS_OVERLOAD_TYPE): Tweak.
9876
9877 Fri Jul 19 17:59:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9878
9879         * error.c (dump_expr, case CONSTRUCTOR, case CAST_EXPR): Take out
9880         invalid second argument to dump_expr_list.
9881
9882 Fri Jul 19 14:04:05 1996  Mike Stump  <mrs@cygnus.com>
9883
9884         * decl.c (lookup_name_real): Make sure we do obj->X::i correctly.
9885
9886 Thu Jul 18 14:48:23 1996  Bob Manson  <manson@charmed.cygnus.com>
9887
9888         * decl2.c (import_export_vtable): ASM_OUTPUT_EXTERNAL, not
9889         ASSEMBLE_EXTERNAL.
9890
9891 Mon Jul 15 17:48:43 1996  Mike Stump  <mrs@cygnus.com>
9892
9893         * typeck2.c (process_init_constructor): New pedwarn for using { }
9894         to initialize a pointer to member function.
9895         * typeck.c (build_ptrmemfunc1): Avoid use of digest_init so that
9896         we can avoid the new error.
9897
9898 Mon Jul 15 15:42:03 1996  Mike Stump  <mrs@cygnus.com>
9899
9900         * typeck.c (build_ptrmemfunc1): New function to hide details of
9901         pointer to member functions better.
9902
9903 Mon Jul 15 14:23:02 1996  Mike Stump  <mrs@cygnus.com>
9904
9905         * init.c (resolve_offset_ref): Resolve OFFSET_REFs that are
9906         methods into the actual method, as we know the implied object is
9907         not used.
9908
9909 Mon Jul 15 13:08:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9910
9911         * parse.y (maybecomma_warn): Only emit the pedwarn if we're not
9912         inside a system header.
9913
9914 Fri Jul 12 16:30:05 1996  Bob Manson  <manson@charmed.cygnus.com>
9915
9916         * call.c (build_method_call): Call complete_type on the
9917         instance type.
9918
9919 Thu Jul 11 17:16:40 1996  Mike Stump  <mrs@cygnus.com>
9920
9921         * typeck.c (build_component_ref): Always build up an OFFSET_REF
9922         for obj_ptr->func so that we can know which object to use in a
9923         method call.
9924
9925 Wed Jul 10 19:36:37 1996  Mike Stump  <mrs@cygnus.com>
9926
9927         * typeck.c (build_ptrmemfunc): Remove sorry, now we can cast
9928         around things.  Also improve maintainability.
9929
9930 Wed Jul 10 18:20:11 1996  Bob Manson  <manson@charmed.cygnus.com>
9931
9932         * decl.c (grokdeclarator): Check for overflow when evaluating an
9933         array dimension.
9934
9935 Wed Jul 10 17:26:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
9936
9937         * cvt.c (cp_convert): Don't check for ambiguity with constructor
9938         if NEW_OVER.
9939
9940         * typeck.c (build_x_function_call): Pass function overload
9941         questions to new overloading code if NEW_OVER.
9942         * init.c (expand_aggr_init_1): Only check for type conversion ops
9943         if we're doing copy-initialization (i.e. LOOKUP_ONLYCONVERTING).
9944         Don't check for ambiguity with constructor if NEW_OVER.
9945         * cvt.c (convert_to_reference): Dereference the result of a type
9946         conversion operator.
9947         (build_conv): Propagate ICS_USER_FLAG.
9948         (implicit_conversion): Call instantiate_type.
9949         Pass LOOKUP_ONLYCONVERTING instead of LOOKUP_NORMAL.
9950         (add_function_candidate): Fix cv-quals on argtype.
9951         (print_z_candidates): New function.
9952         (build_new_function_call): Call it.
9953         (build_user_type_conversion_1): If LOOKUP_ONLYCONVERTING, don't
9954         consider non-converting constructors.
9955         Call print_z_candidates.
9956         Return an AMBIG_CONV for an ambiguous conversion.
9957         (build_user_type_conversion): Handle AMBIG_CONV.
9958         (convert_like): Fix test for building TARGET_EXPR.
9959         Call instantiate_type.
9960         Handle AMBIG_CONV and LVALUE_CONV.
9961         (build_over_call): Handle 0 args and ellipsis.
9962         * cp-tree.def: Add AMBIG_CONV.
9963
9964 Tue Jul  9 17:48:48 1996  Mike Stump  <mrs@cygnus.com>
9965
9966         * decl.c (lookup_name_real): If we find mem in obj when parsing
9967         `obj->mem', make sure we return the right value.
9968
9969 Tue Jul  9 16:11:28 1996  Bob Manson  <manson@charmed.cygnus.com>
9970
9971         * search.c (get_base_distance): Call complete_type.
9972
9973 Tue Jul  9 12:46:34 1996  Mike Stump  <mrs@cygnus.com>
9974
9975         * decl.c (store_bindings): Make static.
9976
9977 Mon Jul  8 16:42:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
9978
9979         * init.c (expand_aggr_init_1): Don't check type conversions if
9980         NEW_OVER.
9981
9982         * cvt.c (z_candidate): Put back template field.
9983         (add_function_candidate): Set it.
9984         (add_template_candidate): Likewise.
9985         (joust): Use it.
9986         (compare_qual): Handle references and pointers to members.
9987         (compare_ics): Handle reference bindings.
9988
9989         * decl.c (duplicate_decls): Propagate DECL_ONE_ONLY.
9990
9991 Mon Jul  8 16:18:56 1996  Bob Manson  <manson@charmed.cygnus.com>
9992
9993         * call.c (compute_conversion_costs): Call complete_type.
9994
9995         * tree.c (vec_binfo_member): Use comptypes instead of comparing
9996         pointers, so we can handle template parameters.
9997
9998 Fri Jul  5 16:51:53 1996  Bob Manson  <manson@charmed.cygnus.com>
9999
10000         * cvt.c (cp_convert_to_pointer): We have to call complete_type
10001         here; let's make it explicit instead of a side effect of an
10002         error check.
10003
10004 Wed Jul  3 16:29:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
10005
10006         * cvt.c (z_candidate): Remove template field.
10007         (reference_binding): Handle binding to temporary.
10008         (implicit_conversion): Likewise.
10009         (add_function_candidate): Handle artificial constructor parms.
10010         Handle functions with too few parms.
10011         (add_template_candidate): New function.
10012         (build_user_type_conversion_1): Handle constructors.
10013         (convert_like): Likewise.
10014         (build_over_call): Likewise.
10015         (build_new_function_call): Support templates.
10016         (compare_ics): Fix reference, inheritance handling.
10017
10018 Mon Jul  1 22:58:18 1996  Bob Manson  <manson@charmed.cygnus.com>
10019
10020         * decl.c: Add signed_size_zero_node.
10021         (init_decl_processing): Build it.
10022         * class.c (prepare_fresh_vtable): Use it instead of size_zero_node
10023         when we're trying to make a negative delta.
10024
10025 Mon Jul  1 17:56:19 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10026
10027         Stop doing this damn index==strchr variable name confusion.
10028         * class.c (add_virtual_function): Change local var INDEX to be
10029         named IDX.
10030         (add_method): Likewise.
10031         * lex.c (print_parse_statistics): Likewise.
10032         * search.c (make_memoized_table_entry): Likewise.
10033         (lookup_fnfields_here): Likewise.
10034         (lookup_field): Likewise.
10035         (lookup_fnfields): Likewise.
10036         (get_baselinks): Likewise.
10037         * sig.c (build_signature_table_constructor): Likewise.
10038         (build_signature_method_call): Likewise.
10039         * typeck.c (build_x_array_ref): Change INDEX parm to be named IDX.
10040         (get_member_function_from_ptrfunc): Likewise.
10041         (build_ptrmemfunc): Change local var INDEX to be IDX.
10042         (c_expand_start_case): Likewise.
10043
10044 Sat Jun 29 14:05:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
10045
10046         * cvt.c (cp_convert_to_pointer): Move user-defined type conversion
10047         handling to before extraction of TYPE_PTRMEMFUNC_FN_TYPE.
10048         (convert_to_reference): Use build_type_conversion to convert to
10049         the reference type directly.
10050         (standard_conversion): Fix void* case, non-conversions.
10051         (reference_binding): Fix expr == 0 case, non-conversions.
10052         (convert_like): Support REF_BIND.
10053         (compare_qual): Split out from compare_ics.
10054         (compare_ics): Use it, handle icses with only a qual_conv.
10055
10056         * init.c (expand_vec_init): Don't crash if decl is NULL.
10057
10058 Fri Jun 28 11:52:51 1996  Stan Shebs  <shebs@andros.cygnus.com>
10059
10060         * mpw-config.in: New file, configury for Mac MPW.
10061         * mpw-make.sed: New file, makefile editing for MPW.
10062
10063 Thu Jun 27 15:18:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
10064
10065         * pt.c (instantiate_class_template): Call repo_template_used.
10066
10067         * search.c (lookup_conversions): Only lookup conversions in
10068         complete types.
10069
10070 Thu Jun 27 12:59:53 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10071
10072         * cp-tree.def: Renamed from tree.def, to avoid confusion with
10073         gcc's tree.def.
10074         * cp-tree.h, lex.c: Include cp-tree.def.
10075         * Makefile.in (CXX_TREE_H): Reference cp-tree.def.
10076
10077 Wed Jun 26 18:29:47 1996  Bob Manson  <manson@charmed.cygnus.com>
10078
10079         * init.c (build_vec_delete_1): Call complete_type.
10080
10081 Mon Jun 24 17:17:32 1996  Mike Stump  <mrs@cygnus.com>
10082
10083         * except.c (start_anon_func): Make sure anonymous functions are
10084         never external.
10085
10086 Fri Jun 21 15:10:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
10087
10088         * decl.c (finish_function): If function_depth > 1, set nested.
10089
10090         * decl2.c (grokbitfield): Revert Bob's change.
10091         * class.c (finish_struct_1): Fix handling of named bitfield widths.
10092
10093 Thu Jun 20 23:35:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
10094
10095         * pt.c (add_pending_template): Handle types.
10096         (lookup_template_class): With -fexternal-templates, just add the class
10097         to pending_templates instead of instantiating it now.
10098         * decl2.c (finish_file): Handle types in pending_templates.
10099
10100 Thu Jun 20 14:08:40 1996  Bob Manson  <manson@charmed.cygnus.com>
10101
10102         * decl2.c (grokbitfield): Handle constant decls appropriately.
10103         Give an appropriate error message now instead of spewing core
10104         later.
10105
10106 Thu Jun 20 13:01:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
10107
10108         * decl2.c: Don't turn on thunks by default for now.
10109
10110 Wed Jun 19 11:37:04 1996  Jason Merrill  <jason@yorick.cygnus.com>
10111
10112         * typeck.c (complete_type): Handle error_mark_node.
10113         (common_type, OFFSET_TYPE): Handle template_type_parms.
10114
10115 Tue Jun 18 10:02:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
10116
10117         * pt.c (instantiate_decl): If at_eof, call import_export_decl
10118         regardless of DECL_INLINE.
10119
10120         * typeck.c (mark_addressable): Set TREE_ADDRESSABLE on CONSTRUCTORs.
10121
10122         * class.c (finish_struct_bits): Copy TYPE_SIZE.
10123
10124         * rtti.c (build_dynamic_cast): Support templates.
10125         * tree.def: Support DYNAMIC_CAST_EXPR.
10126         * pt.c (tsubst_copy): Likewise.
10127         * decl2.c (build_expr_from_tree): Likewise.
10128
10129 Mon Jun 17 15:23:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
10130
10131         * typeck.c (build_static_cast): Support templates.
10132         (build_const_cast): Likewise.
10133         * tree.def: Support CONST/STATIC_CAST_EXPR.
10134         * pt.c (tsubst_copy): Likewise.
10135         * decl2.c (build_expr_from_tree): Likewise.
10136
10137 Sun Jun 16 12:33:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
10138
10139         * decl2.c (finish_vtable_vardecl): Don't trust
10140         TREE_SYMBOL_REFERENCED for vtables of local classes.
10141
10142 Fri Jun 14 18:13:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
10143
10144         * pt.c (tsubst_copy): Handle operator T.
10145
10146 Wed Jun 12 17:52:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10147
10148         * init.c (build_delete): Move creation of PARMS inside test of
10149         TYPE_HAS_DESTRUCTOR, since it's never used outside of that block.
10150
10151 Tue Jun 11 15:09:18 1996  Bob Manson  <manson@charmed.cygnus.com>
10152
10153         * typeck.c (build_conditional_expr): Don't assume that
10154         the arguments to ?: are always pointers or records.
10155
10156 Tue Jun 11 13:56:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
10157
10158         * decl2.c (import_export_decl): Still emit static/weak/comdat
10159         copies of inline template functions with -fno-implicit-templates.
10160
10161 Tue Jun 11 11:42:13 1996  Bob Manson  <manson@charmed.cygnus.com>
10162
10163         * init.c (build_delete): Determine the complete basetype
10164         path to the destructor we're calling.
10165
10166 Fri Jun  7 15:30:10 1996  Bob Manson  <manson@charmed.cygnus.com>
10167
10168         * decl.c (build_enumerator): Always copy the INTEGER_CST used to
10169         initialize the enum, because we really and truly don't know where
10170         it came from.
10171         (start_enum): Don't copy integer_zero_node because
10172         build_enumerator will do it.
10173
10174 Fri Jun  7 11:11:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
10175
10176         * decl.c (finish_function): Do access control on base destructors.
10177
10178         * pt.c (tsubst, case FUNCTION_DECL): Set up
10179         IDENTIFIER_GLOBAL_VALUE for member functions so pushdecl doesn't
10180         hose us.
10181
10182 Fri Jun  7 10:37:33 1996  Mike Stump  <mrs@cygnus.com>
10183
10184         * cvt.c (build_up_reference): If we have already extended the
10185         lifetime of the temporary, don't try it again.
10186         * typeck.c (c_expand_return): Don't try and convert the return
10187         value twice when we want a reference, once is enough.
10188         
10189 Tue Jun  4 15:41:45 1996  Jason Merrill  <jason@yorick.cygnus.com>
10190
10191         * pt.c (tsubst_expr, case DECL_STMT): Don't pass
10192         LOOKUP_ONLYCONVERTING at all for now.
10193
10194         * search.c (add_conversions): Put the conversion function in
10195         TREE_VALUE, the basetype in TREE_PURPOSE.
10196         * cvt.c (build_type_conversion): Adjust.
10197         * cvt.c (build_expr_type_conversion): Adjust.
10198         * call.c (user_harshness): Adjust.
10199
10200 Mon Jun  3 15:30:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
10201
10202         * method.c (emit_thunk): Pretend this is a FUNCTION_DECL for the
10203         backend's benefit.
10204
10205 Mon Jun 10 18:58:19 1996  Mike Stump  <mrs@cygnus.com>
10206
10207         * except.c (expand_start_catch_block): Add a dummy region, if we
10208         get an error, so that we can avoid core dumping later.
10209
10210 Fri May 31 14:56:13 1996  Mike Stump  <mrs@cygnus.com>
10211
10212         * cp-tree.h (OFFSET_REF): Remove.
10213         * tree.def (CP_OFFSET_REF): Rename to OFFSET_REF.
10214         * expr.c (cplus_expand_expr): Cleanup callers of expand_expr.
10215         * init.c (expand_aggr_init_1): Likewise.
10216         (build_new): Likewise.
10217         * typeck.c (expand_target_expr): Likewise.
10218
10219 Fri May 31 14:22:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
10220
10221         * typeck.c (build_modify_expr): Don't use TREE_VALUE on a
10222         TARGET_EXPR.
10223
10224 Wed May 29 17:04:33 1996  Mike Stump  <mrs@cygnus.com>
10225
10226         * cvt.c (build_up_reference): Redo how and when temporaries are
10227         created.
10228         * decl.c (grok_reference_init): Don't try and be smart about
10229         running cleanups.
10230
10231 Wed May 29 16:02:08 1996  Mike Stump  <mrs@cygnus.com>
10232
10233         * cvt.c (build_up_reference): Add NULL_TREE to all calls to build
10234         (TARGET_EXPR...), now that it has 4 arguments.
10235         * tree.c (build_cplus_new): Likewise.
10236
10237 Thu May 23 16:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
10238
10239         * error.c (dump_expr, case CAST_EXPR): Handle T() properly.
10240
10241         * pt.c (instantiate_decl): Don't call push/pop_cp_function_context.
10242         * decl.c (struct saved_scope): Remove named_labels,
10243         {base,member}_init_list.
10244         (maybe_push_to_top_level): Don't set them.  Call
10245         push_cp_function_context if appropriate.
10246         (pop_from_top_level): Likewise.
10247
10248         * method.c (do_build_assign_ref): Remove obsolete check of
10249         TYPE_HAS_ASSIGN_REF (basetype).
10250
10251         * decl.c (grokfndecl): Diagnose user definition of
10252         implicitly-declared methods.
10253
10254 Thu May 23 12:13:08 1996  Bob Manson  <manson@charmed.cygnus.com>
10255
10256         * method.c (do_build_copy_constructor): Add code to give
10257         meaningful error messages instead of crashing.
10258         (do_build_assign_ref): Don't synthesize assignment operators for
10259         classes containing reference or const members.
10260
10261         * class.c (struct base_info): Remove cant_synth_copy_ctor
10262         and cant_synth_asn_ref.
10263         (finish_base_struct): Remove the code that tries to conditionalize
10264         synthesis of copy constructors & assignment operators based on
10265         access permissions. Instead, let it fail when it tries to
10266         synthesize the copy constructor. This will give meaningful error
10267         messages instead of silently generating code to perform a bitcopy.
10268
10269 Wed May 22 11:45:19 1996  Bob Manson  <manson@charmed.cygnus.com>
10270
10271         * lex.c (real_yylex): Remove old-n-crufty #if 0 code for
10272         determining types for constant values.
10273
10274         * decl.c (struct named_label_list): Use instead of stuffing
10275         random items into a TREE_LIST node.
10276         (named_label_uses): Use the new struct.
10277         (poplevel): Likewise.
10278         (lookup_label): Likewise.
10279         (define_label): Add an error message to tell the user the line
10280         where the goto is located in addition to the destination of the
10281         goto.
10282         (init_decl_processing): Use NULL instead of NULL_TREE to initialize
10283         named_label_uses.
10284         (finish_function): Likewise.
10285         
10286         (start_decl): Complain about defining a static data member
10287         in a different type from which it was declared.
10288
10289 Wed May 22 09:33:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
10290
10291         * cvt.c (build_expr_type_conversion): Adjust.
10292
10293 Tue May 21 11:21:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
10294
10295         * call.c (build_method_call): Always convert 'this' to the
10296         appropriate type.
10297
10298         * search.c (add_conversions): Put the conversion function in
10299         TREE_VALUE, the type in TREE_PURPOSE.
10300         * cvt.c (build_type_conversion): Adjust.
10301         * call.c (user_harshness): Adjust.
10302
10303         * method.c (emit_thunk): Call temporary_allocation and
10304         permanent_allocation around the ASM_OUTPUT_MI_THUNK case, too.
10305
10306         * tree.c (build_cplus_array_type): Handle tweaking of
10307         TYPE_MAIN_VARIANT here.
10308         * typeck.c (common_type): Not here.
10309
10310         * typeck.c (complete_type): Only try to complete an array type if
10311         it has a domain.
10312
10313 Mon May 20 14:55:59 1996  Jason Merrill  <jason@yorick.cygnus.com>
10314
10315         * decl.c (grokvardecl): Call complete_type.
10316         (grokdeclarator): Call complete_type for PARM_DECLs.
10317
10318 Fri May 17 16:41:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
10319
10320         * pt.c (instantiate_class_template): Re-set
10321         CLASSTYPE_GOT_SEMICOLON after calling finish_struct_1.
10322
10323 Fri May 17 14:56:55 1996  Mike Stump  <mrs@cygnus.com>
10324
10325         * cp-tree.h (cp_expand_decl_cleanup): Remove, the backend is now
10326         smart enough to do it right.
10327         * tree.c (cp_expand_decl_cleanup): Likewise.
10328         * decl.c (cp_finish_decl): Use expand_decl_cleanup instead of
10329         cp_expand_decl_cleanup.
10330         (store_parm_decls): Likewise.
10331         (hack_incomplete_structures): Likewise.
10332         * except.c (push_eh_cleanup): Likewise.
10333
10334 Fri May 17 13:13:51 1996  Mike Stump  <mrs@cygnus.com>
10335
10336         * expr.c (expand_expr, cond UNSAVE_EXPR): Move from the C++
10337         frontend to the backend where it belongs.
10338         * tree.c (unsave_expr): Likewise.
10339         (unsave_expr_now): Likewise.
10340         * tree.def (UNSAVE_EXPR): Likewise.
10341         * cp-tree.h (unsave_expr): Likewise.
10342         (unsave_expr_now): Likewise.
10343
10344 Fri May 17 11:02:41 1996  Mike Stump  <mrs@cygnus.com>
10345
10346         * init.c (emit_base_init): Make sure the partial EH cleanups live
10347         on the function_obstack.
10348
10349 Thu May 16 15:29:33 1996  Bob Manson  <manson@charmed.cygnus.com>
10350
10351         * expr.c (do_case): Don't try to dereference null TREE_TYPEs
10352         when checking for pointer types.
10353
10354 Thu May 16 13:38:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
10355
10356         * pt.c (instantiate_class_template): Remove obsolete check for
10357         access declarations.
10358
10359 Thu May 16 13:34:15 1996  Mike Stump  <mrs@cygnus.com>
10360
10361         * call.c (build_overload_call): Simplify calls to
10362         build_overload_call by removing last parameter.
10363         (build_method_call): Likewise.
10364         * cp-tree.h: Likewise.
10365         * method.c (build_opfncall): Likewise.
10366         * typeck.c (build_x_function_call): Likewise.
10367
10368 Thu May 16 13:15:43 1996  Mike Stump  <mrs@cygnus.com>
10369
10370         * call.c (default_parm_conversions): Factor out common code.
10371         (build_method_call): Use it.
10372         (build_overload_call_real): Use it.
10373
10374 Wed May 15 14:46:14 1996  Mike Stump  <mrs@cygnus.com>
10375
10376         * call.c (build_method_call): Allow implicit & on METHOD_TYPEs,
10377         but pedwarn as the code is bogus.
10378         * typeck.c (decay_conversion): Likewise.
10379         (build_function_call_real): Use build_addr_func instead of
10380         default_conversion.  Don't allow pointer-to-method functions down
10381         here.
10382         (build_unary_op): Use real pointer-to-member functions instead of
10383         fake ones.
10384         (build_ptrmemfunc): Use build_addr_func instead of build_unary_op.
10385         (convert_for_assignment): Removed some obsolete code.
10386         * decl2.c (reparse_absdcl_as_expr): Pass current_class_ref to
10387         build_x_function_call instead of current_class_ptr.  Only call
10388         digest_init once on an initializer, we do this just checking
10389         TREE_TYPE.
10390         (build_expr_from_tree): Pass current_class_ref to
10391         build_x_function_call instead of current_class_ptr.
10392         * init.c (build_member_call): Likewise.
10393         * pase.y: Likewise.
10394         * error.c (dump_expr): Handle OFFSET_REFs better.
10395         * pt.c (unify): Handle pointer-to-member functions better.
10396         * decl.c (finish_function): Clear out current_class_ref just like
10397         we do for current_class_ptr.
10398
10399         * typeck.c (get_delta_difference): Handle virtual bases better.
10400
10401 Tue May 14 16:37:37 1996  Jason Merrill  <jason@yorick.cygnus.com>
10402
10403         * sig.c (build_signature_table_constructor): Use the delta for
10404         the original basetype for this virtual function with thunks.
10405         (build_signature_method_call): We still need to adjust 'this'
10406         with thunks.
10407
10408 Tue May 14 16:27:25 1996  Mike Stump  <mrs@cygnus.com>
10409
10410         * call.c (build_addr_func): New routine.  Used to get the `real'
10411         address of a function or a method.  Needed to avoid getting a
10412         pointer-to-member function.
10413         (build_call): New routine to build CALL_EXPRs.
10414         (build_method_call): Use it.
10415         * cvt.c (convert_to_aggr): Likewise.
10416         * typeck.c (build_function_call_real): Likewise.
10417         * sig.c (build_signature_table_constructor): Use build_addr_func.
10418         * cp-tree.h (build_call, build_addr_func): Declare them.
10419
10420 Tue May 14 12:47:47 1996  Mike Stump  <mrs@cygnus.com>
10421
10422         * cp-tree.h (LOOKUP_AGGR): Remove, unused.
10423         * parse.y: Remove uses of LOOKUP_AGGR.
10424
10425 Tue May 14 12:07:51 1996  Mike Stump  <mrs@cygnus.com>
10426
10427         * *.[chy]: Rename current_class_decl to current_class_ptr, and
10428         C_C_D to current_class_ref.
10429
10430 Mon May 13 16:55:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
10431
10432         * call.c (convert_harshness): Tighten up pointer conversions.
10433
10434 Sat May 11 04:33:50 1996  Doug Evans  <dje@canuck.cygnus.com>
10435
10436         * decl2.c (finish_vtable_vardecl): Surround DECL_ONE_ONLY with ifdef.
10437         (finish_file): Likewise.
10438
10439 Fri May 10 11:09:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
10440
10441         * cvt.c (convert_fn_ptr): We don't use thunks for pmfs.
10442
10443         * method.c (emit_thunk): Set flag_omit_frame_pointer in default
10444         code.
10445
10446 Thu May  9 18:18:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
10447
10448         * decl2.c: Turn on thunks by default where supported.
10449
10450 Tue May  7 20:39:57 1996  Mike Stump  <mrs@cygnus.com>
10451
10452         * cp-tree.h (build_overload_call_maybe): Removed.
10453         * call.c (build_overload_call_real): Invert meaning of last arg to
10454         be require_complete.
10455         (build_overload_call): Likewise.
10456         * typeck.c (build_x_function_call): Use build_overload_call_real
10457         instead of build_overload_call_maybe.
10458
10459 Mon May  6 01:23:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
10460
10461         * decl2.c (finish_file): Don't try to emit functions that haven't
10462         been compiled.
10463
10464 Fri May  3 09:30:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
10465
10466         * decl2.c (finish_vtable_vardecl): Oops.
10467
10468         * decl.c (maybe_push_to_top_level): Do save previous_class_*.
10469         Also store the bindings from previous_class_values.
10470         (pop_from_top_level): Restore them.
10471
10472 Thu May  2 21:56:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
10473
10474         * decl2.c (finish_vtable_vardecl): Only write out vtable if its
10475         symbol has been referenced.
10476         (finish_file): Re-join synthesis/vtable loop with inline emission
10477         loop, disable inlining when an inline is output.
10478
10479 Thu May  2 17:20:02 1996  Mike Stump  <mrs@cygnus.com>
10480
10481         * except.c (init_exception_processing): Setup saved_in_catch.
10482         (push_eh_cleanup): Reset __eh_in_catch.
10483         (expand_start_catch_block): Set __eh_in_catch.
10484
10485 Thu May  2 16:21:17 1996  Mike Stump  <mrs@cygnus.com>
10486
10487         * except.c (push_eh_cleanup): Add tracking for whether or not we
10488         have an active exception object.
10489         (expand_builtin_throw): Use it to make sure a rethrow without an
10490         exception object is caught.
10491
10492 Thu May  2 11:26:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
10493
10494         * decl.c (maybe_push_to_top_level): Clear out class-level bindings
10495         cache.
10496
10497 Wed May  1 11:26:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
10498
10499         * decl2.c (finish_file): Also use sentries for vars with
10500         DECL_ONE_ONLY or DECL_WEAK set (should any such happen to be
10501         created).
10502
10503         * lex.c (handle_cp_pragma): Disable #pragma
10504         interface/implementation if SUPPORTS_ONE_ONLY > 1.
10505
10506 Tue Apr 30 11:25:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
10507
10508         * method.c (emit_thunk): Wrap default case in
10509         temporary/permanent_allocation.
10510
10511         * method.c (make_thunk): Use DECL_ONE_ONLY.
10512         (emit_thunk): Call assemble_end_function.
10513
10514 Mon Apr 29 15:38:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
10515
10516         * decl2.c (import_export_vtable): Use DECL_ONE_ONLY.
10517         (import_export_decl): Likewise.
10518         (finish_prevtable_vardecl): Disable vtable hack if
10519         SUPPORTS_ONE_ONLY > 1.
10520
10521 Mon Apr 29 14:32:47 1996  Mike Stump  <mrs@cygnus.com>
10522
10523         * typeck.c (build_modify_expr): PREINCREMENT_EXPR and
10524         PREDECREMENT_EXPRs take two arguments, not one.
10525
10526 Mon Apr 29 00:27:53 1996  Jason Merrill  <jason@yorick.cygnus.com>
10527
10528         * class.c (build_vtable_entry): Don't build thunks for abstract
10529         virtuals.
10530
10531         * lex.c (real_yylex): Fix handling of __PRETTY_FUNCTION__ like C
10532         frontend.
10533
10534 Sat Apr 27 16:45:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
10535
10536         * class.c (set_rtti_entry): Use size_zero_node.
10537         (build_vtable): Likewise.
10538
10539 Sat Apr 27 14:48:57 1996  Jason Merrill  <jason@phydeaux.cygnus.com>
10540
10541         * class.c (finish_struct_1): Pass size_zero_node to set_rtti_entry.
10542         (prepare_fresh_vtable): Likewise.
10543
10544 Fri Apr 26 13:14:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
10545
10546         * method.c (emit_thunk): Call mark_used on the target function.
10547
10548         * call.c (build_method_call): Don't warn about pending templates.
10549
10550 Thu Apr 25 14:55:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
10551
10552         * decl2.c (finish_file): Fix list walking logic.
10553
10554         * typeck2.c (check_for_new_type): Only warn if -pedantic.
10555
10556 Wed Apr 24 15:41:15 1996  Bob Manson  <manson@charmed.cygnus.com>
10557
10558         * class.c (finish_struct_1): Remove old code for
10559         dont_allow_type_definitions.
10560         * cp-tree.h: Likewise.
10561         * spew.c: Make sure cp-tree.h is included before parse.h, so the
10562         definition of flagged_type_tree is found before it is used.
10563         * lex.c: Likewise.
10564         * parse.y: Added the ftype member to the type union, and changed a
10565         number of rules to use it instead of ttype. Added calls to
10566         check_for_new_type() as appropriate.
10567         * typeck2.c (check_for_new_type): New function for checking
10568         if a newly defined type appears in the specified tree.
10569         * cp-tree.h: Add new type flagged_type_tree. Add a prototype
10570         for check_for_new_type().
10571
10572 Wed Apr 24 00:36:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
10573
10574         * decl2.c (finish_file): Only use a sentry if the decl is public.
10575
10576         * pt.c (tsubst_expr, DECL_STMT): If we don't have an initializer,
10577         don't pass LOOKUP_ONLYCONVERTING.
10578
10579 Tue Apr 23 17:18:47 1996  Bob Manson  <manson@charmed.cygnus.com>
10580
10581         * typeck.c (common_type): Fix the ARRAY_TYPE case so it
10582         properly keeps track of const and volatile type modifiers.
10583
10584 Tue Apr 23 10:52:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
10585
10586         * tree.c (cp_tree_equal): C++ version of simple_cst_equal.
10587         * pt.c (comp_template_args): Use it.
10588
10589         * rtti.c (get_tinfo_fn, build_dynamic_cast, expand_*_desc): Call
10590         assemble_external for artificial function decls.
10591
10592         * decl.c (cp_finish_decl): Oops.
10593
10594 Mon Apr 22 17:28:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
10595
10596         * decl2.c (import_export_decl): Put static data member templates
10597         into common storage, or make them weak, depending on whether they
10598         are dynamically or statically initialized.
10599         (get_sentry): New function.
10600         (finish_file): Do import_export_decl for static data members before
10601         building the init/fini functions.  Don't init/fini a variable that's
10602         EXTERNAL.  Use a sentry for variables in common.  Fix mismatching
10603         push/pop_temp_slots.
10604         * decl.c (cp_finish_decl): If DECL_NOT_REALLY_EXTERN, do the
10605         expand_static_init thang.
10606         * method.c (get_id_2): New function.
10607
10608 Mon Apr 22 15:32:45 1996  Bob Manson  <manson@charmed.cygnus.com>
10609
10610         * parse.y (empty_parms): Make sure we use C++-style prototypes
10611         when we're declaring member functions.
10612
10613 Sun Apr 21 10:08:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
10614
10615         * Makefile.in (CONFLICTS): 16 s/r conflicts.
10616         * parse.y (self_template_type): New nonterminal.
10617
10618 Thu Apr 18 08:56:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
10619
10620         * decl.c (make_typename_type): Handle getting a TYPE_DECL for a
10621         name.
10622         * parse.y (base_class.1): Allow 'typename foo::bar'.
10623
10624         * lex.c (check_newline): Remove #pragma code that plays with the
10625         input stream, since we now deal with tokens.  Clear nextchar when
10626         we're done.
10627         (handle_cp_pragma): Use real_yylex.
10628         (handle_sysv_pragma): Don't do skipline here.  Only call real_yylex
10629         in one place.
10630
10631         * lex.c (check_for_missing_semicolon): Handle SELFNAME.
10632
10633         * lex.c (handle_cp_pragma): Fix "#pragma implementation".
10634
10635 Wed Apr 17 16:51:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
10636
10637         * parse.y: New token SELFNAME for potential constructor.
10638         * spew.c (yylex): Handle it.
10639         * lex.c (identifier_type): Produce it.
10640
10641         * parse.y (complete_type_name): In :: case, don't push class binding.
10642         (complex_type_name): Likewise.
10643
10644 Wed Apr 17 15:02:40 1996  Mike Stump  <mrs@cygnus.com>
10645
10646         * typeck.c (build_reinterpret_cast): Handle pointer to member
10647         functions.
10648
10649 Wed Apr 17 12:28:26 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10650
10651         * lex.c (handle_cp_pragma): New function, with decl, doing the cc1plus
10652         pragmas.
10653         (check_newline): Put the vtable/unit/implementation/interface pragma
10654         code into handle_cp_pragma, replacing it with a call.
10655         (handle_sysv_pragma): Give int return type, and take FINPUT and TOKEN
10656         args.  Get the next token after handling the pragma token.
10657
10658 Wed Apr 17 10:28:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
10659
10660         * cvt.c (cp_convert_to_pointer): Avoid doing base analysis on pmfs.
10661         (convert_to_pointer_force): Likewise.
10662
10663         * init.c (build_new): Fix array new without -fcheck-new.
10664
10665 Tue Apr 16 13:44:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
10666
10667         * cp-tree.h, call.c, class.c, decl.c, parse.y, pt.c, rtti.c,
10668         tree.c: Lose TYPE_NESTED_NAME.
10669
10670         * parse.y (nested_name_specifier_1): Don't treat non-identifiers
10671         as identifiers.
10672
10673         * tree.def: Add VEC_INIT_EXPR.
10674         * expr.c (cplus_expand_expr): Handle it.
10675         * init.c (build_new): Use it instead of the RTL_EXPR nastiness and
10676         the extra file-scope symbol nastiness.
10677
10678 Mon Apr 15 16:21:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
10679
10680         * method.c (make_thunk): Thunks are static.
10681         (emit_thunk): Use ASM_OUTPUT_MI_THUNK if it's defined.
10682
10683         * decl2.c (mark_vtable_entries): Emit thunks as needed.
10684         (finish_file): Don't emit them here.
10685
10686 Sun Apr 14 11:34:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
10687
10688         * rtti.c (build_dynamic_cast): Handle null pointers.
10689         (ifnonnull): New function.
10690
10691 Fri Apr 12 09:08:27 1996  Bob Manson  <manson@charmed.cygnus.com>
10692
10693         * call.c (build_method_call): Remember the original basetype we
10694         were called with. Give an error message instead of trying
10695         (incorrectly) to call a non-static member function through a
10696         non-inherited class.
10697
10698         * search.c (expand_upcast_fixups): Mark the new fixup as
10699         DECL_ARTIFICIAL.
10700
10701 Thu Apr 11 03:57:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
10702
10703         * init.c (build_new): Use a TARGET_EXPR for alloc_expr.
10704
10705         * class.c (set_rtti_entry): Fix for thunks.
10706
10707         * decl2.c (import_export_decl): Still emit typeinfo fns for
10708         cv-variants of builtin types.
10709
10710         * rtti.c (expand_class_desc): Set up base_info_type_node here.
10711         (init_rtti_processing): Instead of here.
10712
10713 Wed Apr 10 14:17:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
10714
10715         * rtti.c (init_rtti_processing): Do init regardless of -frtti.
10716         (build_typeid): Only complain about taking dynamic typeid without
10717         -frtti.
10718
10719         * decl2.c: flag_rtti defaults to 1.
10720
10721         * rtti.c (get_tinfo_var): The general class case is now smaller.
10722         (init_rtti_processing): Pack the latter three fields of base_info
10723         into 32 bits.
10724
10725 Wed Apr 10 13:50:14 1996  Mike Stump  <mrs@cygnus.com>
10726
10727         * init.c (expand_member_init): Don't dump if name is NULL_TREE.
10728
10729 Wed Apr 10 12:56:02 1996  Mike Stump  <mrs@cygnus.com>
10730
10731         * search.c (make_memoized_table_entry): Undefer the pop, if necessary.
10732         (push_memoized_context): Split out code to undefer pop_type_level to
10733         (clear_memoized_cache): here.
10734         (pop_memoized_context): We can only handle one layer of deferral of
10735         pop_type_level so clear the cache, if there was a previous level.
10736
10737 Tue Apr  9 23:06:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
10738
10739         * rtti.c (init_rtti_processing): Build up base_info_type_node.
10740         (expand_class_desc): Use one pointer to an array of base_info
10741         structs, passed using a CONSTRUCTOR.
10742
10743 Tue Apr  9 14:20:57 1996  Mike Stump  <mrs@cygnus.com>
10744
10745         * class.c (build_vbase_path): Remove block extern for
10746         flag_assume_nonnull_objects here.
10747         (build_vfn_ref): Split out functionality into build_vtbl_ref.
10748         (build_vtbl_ref): New routine.
10749         (build_vtable): Set up rtti info here.
10750         (add_virtual_function): Note in CLASSTYPE_RTTI the best
10751         place where we can get the rtti pointers from to avoid having to
10752         search around for a place.
10753         (finish_base_struct): Likewise.
10754         (finish_struct_1): Likewise.  Never create totally new vtables
10755         with totally new vtable pointers for rtti.  Disable code to layout
10756         vtable pointers better until we want to break binary
10757         compatibility.
10758         * rtti.c (build_headof_sub): New routine to convert down to a
10759         sub-object that has an rtti pointer in the vtable.
10760         (build_headof): Use it.  Also, use build_vtbl_ref now to be more
10761         maintainable.
10762         (build_dynamic_cast): Make sure we have saved it, if we need to.
10763         * search.c (dfs_init_vbase_pointers): Disable code that deals with
10764         a more efficient vtable layout, enable later.
10765         * call.c (flag_assume_nonnull_objects): Moved declaration to
10766         * cp-tree.h: here.  Declare build_vtbl_ref.
10767         * pt.c (instantiate_class_template): Use NULL_TREE instead of 0 in
10768         function calls that want a tree.
10769
10770 Tue Apr  9 12:10:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
10771
10772         * rtti.c (build_dynamic_cast): Handle downcasting to X* given
10773         other X subobjects in the most derived type.  Ack.
10774
10775         * rtti.c (build_dynamic_cast): No need to strip cv-quals here,
10776         get_typeid will do it for us.
10777         (get_typeid_1): Break out call-building for expand_*_desc to use.
10778         (get_typeid): Call it.
10779         (expand_*_desc): Likewise.
10780         * decl.c (init_decl_processing): Don't set TYPE_BUILT_IN on char *
10781         and void *.
10782         (init_decl_processing): Lose builtin_type_tdescs lossage.
10783         * decl2.c (finish_vtable_vardecl): Remove obsolete code.
10784
10785 Mon Apr  8 17:23:23 1996  Bob Manson  <manson@charmed.cygnus.com>
10786
10787         * pt.c (tsubst): When calling set_nested_typename, use
10788         TYPE_NESTED_NAME (current_class_type) instead of
10789         current_class_name.
10790
10791         * decl.c (pushdecl): Likewise.
10792         (pushdecl_class_level): Likewise.
10793         (grokdeclarator): Use NULL_TREE instead of 0 in the call to
10794         set_nested_typename.
10795
10796 Sun Apr  7 10:44:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
10797
10798         * rtti.c (synthesize_tinfo_fn): Handle arrays.
10799
10800         * cp-tree.h (DECL_REALLY_EXTERN): New macro.
10801
10802 Sat Apr  6 13:56:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
10803
10804         * rtti.c (throw_bad_cast): Use entry point __throw_bad_cast.
10805         (init_rtti_processing): Lose bad_cast_type.
10806         (build_dynamic_cast): Use throw_bad_cast.
10807
10808         * rtti.c (synthesize_tinfo_fn): Handle enums and pmfs.
10809
10810         * decl2.c (finish_file): Don't synthesize artificial functions
10811         that are external and not inline.
10812
10813         * rtti.c (get_tinfo_fn): If at_eof, call import_export_decl.
10814
10815         * decl2.c (finish_file): Handle having new inlines added to
10816         saved_inlines by synthesis.
10817
10818         * rtti.c (get_bad_cast_node): Don't require <typeinfo>.
10819
10820 Fri Apr  5 17:02:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
10821
10822         RTTI rewrite to initialize nodes as needed, not require that
10823         users #include <typeinfo>, complete functionality and reduce wasted 
10824         space.
10825         * rtti.c (init_rtti_processing): New fn.
10826         (build_typeid): The vtable entry is now a function.
10827         (get_tinfo_var): New fn.
10828         (get_tinfo_fn): Likewise.
10829         (get_typeid): Use it.
10830         (build_dynamic_cast): Declare and use entry point __dynamic_cast.
10831         (build_*_desc): Rename to expand_*_desc and rewrite to use entry
10832         points __rtti_*.
10833         (add_uninstantiated_desc, get_def_to_follow, build_t_desc): Lose.
10834         (synthesize_tinfo_fn): New fn.
10835         * method.c (build_t_desc_overload): Lose.
10836         (build_overload_with_type): More generic.
10837         * decl.c (init_decl_processing): Call init_rtti_processing.
10838         * class.c (set_rtti_entry): Use get_tinfo_fn.
10839         * decl2.c (mark_vtable_entries): Mark the rtti function.
10840         (finish_prevtable_vardecl): Don't build_t_desc.
10841         (import_export_decl): Handle tinfo functions.
10842         (finish_file): Likewise.
10843         * typeck.c (inline_conversion): New fn.
10844         (build_function_call_real): Use it.
10845         * cp-tree.h: Add decls.
10846
10847         * method.c (hack_identifier): Also convert component_refs from
10848         references.
10849
10850         * lex.c (cons_up_default_function): Use the type, not the name, in
10851         declspecs.
10852
10853         * decl2.c (import_export_vtable): Fix weak vtables.
10854
10855 Fri Apr  5 13:30:17 1996  Bob Manson  <manson@charmed.cygnus.com>
10856
10857         * search.c (get_base_distance_recursive): Fix access checks for
10858         protected bases.
10859
10860 Fri Apr  5 11:02:06 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10861
10862         * call.c (unary_complex_lvalue): Delete unneeded decl, it's in
10863         cp-tree.h.
10864         (convert_harshness): Add prototypes wrapped by PROTO.
10865         * decl2.c (grok_function_init): Likewise.
10866         (do_toplevel_using_decl): Change to void return type.
10867         * class.c (build_vtable_entry): Remove decl of make_thunk.
10868         (merge_overrides): Fix order of arg definitions.
10869         (finish_vtbls): Likewise.
10870         (fixup_vtable_deltas): Likewise.
10871         (modify_all_direct_vtables): Likewise.
10872         (modify_all_indirect_vtables): Likewise.
10873         * search.c (get_base_distance_recursive): Likewise.
10874         (get_abstract_virtuals_1): Likewise.
10875         (fixup_virtual_upcast_offsets): Likewise.
10876         (lookup_fnfields_1): Add prototypes wrapped by PROTO.
10877         * init.c (perform_member_init): Fix order of arg definitions.
10878         (expand_aggr_init_1): Add prototypes wrapped by PROTO.
10879         * cp-tree.h (make_thunk): Add decl.
10880         (overload_template_name, push_template_decl): Add decls.
10881         (do_toplevel_using_decl): Change to void return type.
10882         (vec_binfo_member): Add decl.
10883
10884 Thu Apr  4 13:33:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10885
10886         * typeck.c (mark_addressable, convert_for_assignment,
10887         convert_for_initialization, pointer_int_sum, pointer_diff,
10888         unary_complex_lvalue): Add prototypes wrapped by PROTO.
10889         (convert_sequence): #if 0 fn decl, since definition also is.
10890
10891 Thu Apr  4 11:00:53 1996  Mike Stump  <mrs@cygnus.com>
10892
10893         * rtti.c (build_dynamic_cast): Make sure we strip qualifiers on
10894         cast to pointer types for type searching.
10895
10896 Wed Apr  3 17:10:57 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10897
10898         * typeck.c (get_delta_difference): Use cp_error, not error, in the
10899         case where BINFO == 0.
10900
10901 Wed Apr  3 12:01:02 1996  Mike Stump  <mrs@cygnus.com>
10902
10903         * call.c (build_method_call): Fix wording of error messages so
10904         constructors come out right.
10905
10906 Tue Apr  2 16:06:59 1996  Bob Manson  <manson@charmed.cygnus.com>
10907
10908         * decl.c (push_overloaded_decl): Don't warn about hidden
10909         constructors when both the type and the function are declared
10910         in a system header file.
10911
10912 Mon Apr  1 09:03:13 1996  Bob Manson  <manson@charmed.cygnus.com>
10913
10914         * class.c (finish_struct_1): Propagate the TYPE_PACKED
10915         flag for the type to the type's fields.
10916
10917 Sat Mar 30 12:14:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10918
10919         * parse.y (complex_parmlist, ELLIPSES): Take out ARM-based warning.
10920
10921 Fri Mar 29 15:51:36 1996  Bob Manson  <manson@charmed.cygnus.com>
10922
10923         * class.c (base_info, finish_base_struct): Replace 
10924         needs_virtual_dtor with base_has_virtual.
10925
10926         (finish_struct_1): Remove the old code that tried to make default
10927         destructors virtual. Use base_has_virtual when checking if we need
10928         to add a vtable entry for the rtti code.
10929
10930 Fri Mar 29 14:02:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
10931
10932         * pt.c (push_template_decl): Complain about template decl with
10933         inappropriate declaration.
10934
10935 Fri Mar 29 12:15:35 1996  Bob Manson  <manson@charmed.cygnus.com>
10936
10937         * typeck.c (build_x_unary_op): Remove bogus check for taking
10938         the address of a member function.
10939
10940 Fri Mar 29 11:56:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
10941
10942         * parse.y (constructor_declarator): Only push the class if
10943         we are not already in the class.
10944
10945 Fri Mar 29 09:41:02 1996  Jeffrey A. Law  <law@cygnus.com>
10946
10947         * method.c (emit_thunk): Remove current_call_is_indirect nonsense.
10948         Add additional argument to INIT_CUMULATIVE_ARGS.
10949
10950 Thu Mar 28 16:41:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
10951
10952         * decl.c (shadow_tag): Fix error about anon union with methods.
10953
10954         * parse.y (self_reference): Only generate a self-reference if this
10955         is a non-template class.
10956         (opt.component_decl_list): Only use it if it was generated.
10957
10958         * parse.y (component_decl_1): Use constructor_declarator.
10959         (fn.def2): Likewise.
10960         (notype_component_declarator0): Likewise.
10961
10962 Thu Mar 28 15:11:35 1996  Bob Manson  <manson@charmed.cygnus.com>
10963
10964         * typeck.c (build_x_unary_op): Add checks for taking the address
10965         of a TARGET_EXPR or of a member function, and give appropriate
10966         warnings.
10967
10968 Thu Mar 28 14:49:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
10969
10970         * pt.c (process_template_parm): Allow template type parms to be
10971         used as types for template const parms.
10972
10973 Wed Mar 27 15:51:19 1996  Mike Stump  <mrs@cygnus.com>
10974
10975         * init.c (expand_vec_init): Ensure the eh cleanups are on the
10976         function_obstack.
10977
10978 Wed Mar 27 10:14:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
10979
10980         * decl.c (lookup_name_real): Be even more picky about the
10981         ambiguous lookup warning.
10982         (grokdeclarator): Tweak SCOPE_REF constructor declarators here.
10983         * parse.y (constructor_declarator): Rather than here.
10984
10985         * parse.y (constructor_declarator): New nonterminal.
10986         (fn.def1): Use it.
10987         (explicit_instantiation): Likewise.
10988
10989 Tue Mar 26 13:41:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
10990
10991         Add implicit declaration of class name at class scope.
10992         * decl.c (lookup_name_real): Restrict pedwarn about ambiguous lookup.
10993         * parse.y (self_reference): New nonterminal.
10994         (opt.component_decl_list): Use it.
10995         (fn.def1): Add nested_name_specifier type_name cases.
10996         * class.c (build_self_reference): New function.
10997         (finish_struct): Handle access_default later, move self-reference
10998         decl to the end.
10999         * pt.c (lookup_template_class): Handle getting a TYPE_DECL.
11000         * cp-tree.h: Adjust.
11001
11002         * pt.c (do_function_instantiation): Separate handling of member
11003         functions and non-member functions properly.
11004
11005 Mon Mar 25 14:23:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
11006
11007         * pt.c (process_template_parm): Improve error for 'volatile class K'.
11008
11009         * class.c (finish_struct_1): Check the right slot for destructors.
11010
11011         * decl.c (start_enum): Complain about enum templates.
11012
11013 Mon Mar 25 13:25:31 1996  Mike Stump  <mrs@cygnus.com>
11014
11015         * init.c (resolve_offset_ref): Offset pointers to member data by one.
11016         * typeck.c (unary_complex_lvalue): Likewise.
11017
11018 Mon Mar 25 13:30:42 1996  Bob Manson  <manson@charmed.cygnus.com>
11019
11020         * typeck.c (c_expand_return): Check for a returned local
11021         array name, similar to the check for an ADDR_EXPR.
11022
11023 Mon Mar 25 13:07:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
11024
11025         * decl.c (cp_finish_decl): Don't build cleanups for static
11026         variables here.
11027
11028 Fri Mar 22 17:57:55 1996  Mike Stump  <mrs@cygnus.com>
11029
11030         * typeck.c (build_modify_expr): Fix error messages to be more
11031         accurate.
11032         * cp-tree.h (assop_as_string): Parallel to op_as_string, but for
11033         assignment operators.
11034         * error.c (assop_as_string): Likewise.  Add support for `%Q' for
11035         assignment operators.
11036
11037 Fri Mar 22 13:48:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
11038
11039         * decl.c (grokdeclarator): Call bad_specifiers for typedefs.  Also
11040         give an error if initialized.  Pedwarn about nested type with the
11041         same name as its enclosing class.
11042
11043         * pt.c (tsubst, case TYPE_DECL): Set DECL_CONTEXT.
11044
11045         * typeck.c (require_complete_type): Be sure to instantiate the
11046         MAIN_VARIANT of the type.
11047
11048         * decl2.c (finish_file): Instantiate pending templates before
11049         processing static constructors and destructors.
11050
11051         * pt.c (instantiate_decl): Don't instantiate functions at toplevel
11052         unless at_eof.
11053
11054 Fri Mar 22 09:30:17 1996  Bob Manson  <manson@beauty.cygnus.com>
11055
11056         * decl2.c (delete_sanity): If error_mark_node is passed
11057         in as an expression, quit while we're ahead.
11058
11059         * decl.c (grokdeclarator): Give an error message if `friend'
11060         is combined with any storage class specifiers.
11061
11062 Wed Mar 20 14:51:55 1996  Jason Merrill  <jason@yorick.cygnus.com>
11063
11064         * parse.y (named_complex_class_head_sans_basetype): Don't crash on
11065         definition of nonexistent nested type.
11066
11067         * error.c (dump_decl, case TYPE_DECL): Fix decision for whether or
11068         not to say 'typedef'.
11069
11070 Wed Mar 20 00:11:47 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11071
11072         * cp-tree.h (struct lang_type): Make search_slot a tree, not a char*.
11073         * search.c (dfs_walk, dfs_init_vbase_pointers,
11074         expand_upcast_fixups): Remove cast of CLASSTYPE_SEARCH_SLOT.
11075         (dfs_find_vbases): Remove cast for CLASSTYPE_SEARCH_SLOT init.
11076
11077 Tue Mar 19 17:56:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
11078
11079         * except.c (build_throw): Support minimal parse.
11080         * pt.c (tsubst_copy): Support THROW_EXPR.
11081         * decl2.c (build_expr_from_tree): Likewise.
11082
11083         * pt.c (mangle_class_name_for_template): Always allocate
11084         scratch_firstobj.
11085
11086 Tue Mar 19 16:34:31 1996  Bob Manson  <manson@beauty.cygnus.com>
11087
11088         * cvt.c (cp_convert_to_pointer): Give an appropriate error
11089         when trying to cast from an incomplete type.
11090
11091 Tue Mar 19 16:00:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
11092
11093         * pt.c (instantiate_class_template): Don't bother setting up
11094         CLASSTYPE_TAGS explicitly, as the nested types will add
11095         themselves.
11096
11097 Tue Mar 19 15:48:43 1996  Bob Manson  <manson@beauty.cygnus.com>
11098
11099         * decl.c (shadow_tag): Remove old error check for usage of
11100         an enum without a previous declaration.
11101         (xref_tag): Add error message about usage of enums without a
11102         previous declaration.
11103
11104 Tue Mar 19 09:21:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
11105
11106         * lex.c (do_identifier): Only do name consistency check if we're
11107         parsing.
11108
11109         * pt.c (push_template_decl): Don't crash if we get a member defn
11110         that doesn't match.
11111
11112         * decl.c (xref_tag_from_type): New function to do an xref without
11113         always having to figure out code_type_node.
11114         * cp-tree.h: Declare it.
11115         * pt.c (instantiate_class_template): Use it for friend classes.
11116         (lookup_template_class): Use it.
11117
11118         * typeck2.c (build_functional_cast): Pull out a single parm before
11119         passing it to build_c_cast.
11120
11121 Tue Mar 19 09:07:15 1996  Bob Manson  <manson@beauty.cygnus.com>
11122
11123         * expr.c (do_case): Give an error message if a pointer is
11124         given as a case value.
11125
11126 Mon Mar 18 21:57:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
11127
11128         * typeck.c (build_c_cast): Don't pull single TEMPLATE_DECL out of
11129         an overload list.
11130
11131         * lex.c (cons_up_default_function): Really, now, interface hackery
11132         does not apply to synthesized methods.
11133
11134 Mon Mar 18 18:20:57 1996  Mike Stump  <mrs@cygnus.com>
11135
11136         * call.c (build_method_call): Ctors and dtors now have special names
11137         with respect to lookups.
11138         * class.c (add_method): Likewise.
11139         (grow_method): Likewise.
11140         (finish_struct_methods): Likewise.
11141         (warn_hidden): Likewise.
11142         (finish_struct_1): Likewise.
11143         * cvt.c (convert_to_reference): Likewise.
11144         (convert_to_aggr): Likewise.
11145         (cp_convert): Likewise.
11146         * decl2.c (check_classfn): Likewise.
11147         * init.c (expand_member_init): Likewise.
11148         (expand_default_init): Likewise.
11149         (expand_aggr_init_1): Likewise.
11150         (build_offset_ref): Likewise.
11151         (build_new): Likewise.
11152         (build_delete): Likewise.
11153         * lex.c (do_inline_function_hair): Likewise.
11154         * search.c (lookup_field_1): Likewise.
11155         (lookup_fnfields_here): Likewise.
11156         (lookup_field): Likewise.
11157         (lookup_fnfields): Likewise.
11158         (get_virtual_destructor): Likewise.
11159         (dfs_debug_mark): Likewise.
11160         (dfs_pushdecls): Likewise.
11161         (dfs_compress_decls): Likewise.
11162         * tree.c (layout_basetypes): Likewise.
11163         * typeck.c (build_component_ref): Likewise.
11164         (build_x_function_call): Likewise.
11165         (build_modify_expr): Likewise.
11166         (convert_for_initialization): Likewise.
11167         (build_functional_cast): Likewise.
11168         * cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Likewise.
11169         (CTOR_NAME): New.
11170         (DTOR_NAME): New.
11171         * decl.c (ctor_identifier): New.
11172         (dtor_identifier): New.
11173         (init_decl_processing): Set them.
11174
11175 Mon Mar 18 18:00:51 1996  Mike Stump  <mrs@cygnus.com>
11176
11177         * typeck.c (build_component_ref): Don't get confused by fields whose
11178         context has no type name, like pointer to member functions.
11179
11180 Mon Mar 18 13:19:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
11181
11182         * decl.c (grokdeclarator): Handle typedef without declarator.
11183
11184         * pt.c (tsubst): Handle SCOPE_REF in declarator.
11185
11186         * parse.y (bad_parm): Catch another case of missing `typename'.
11187
11188         * lex.c (yyprint): Handle TYPE_DECLs.
11189
11190         * decl.c (start_function): Don't try to be clever.
11191
11192         * lex.c: Lose compiler_error_with_decl.
11193         * typeck2.c: Lose error_with_aggr_type.
11194         (incomplete_type_error): Use cp_* instead of old functions.
11195         (readonly_error): Likewise.
11196         * typeck.c (convert_arguments): Likewise.
11197         * search.c (lookup_nested_field): Likewise.
11198         * method.c (make_thunk): Likewise.
11199         * decl.c (grokparms): Likewise.
11200         * cp-tree.h: Update.
11201
11202         * tree.c (min_tree_cons): Call copy_to_permanent for the purpose
11203         and value.
11204
11205 Mon Mar 18 11:25:52 1996  Bob Manson  <manson@beauty.cygnus.com>
11206
11207         * method.c (build_opfncall): When deleting a pointer to an
11208         array, build a new pointer to the tree past any ARRAY_TYPE
11209         nodes.
11210
11211 Mon Mar 18 10:11:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11212
11213         * decl.c (lookup_name_real): Initialize local var TYPE to NULL_TREE.
11214
11215 Fri Mar 15 11:03:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
11216
11217         * pt.c (instantiate_decl): Only call import_export_decl if at_eof
11218         and ! DECL_INLINE.
11219
11220         * decl.c (finish_function): Don't set nested based on
11221         hack_decl_function_context.
11222         * parse.y (function_try_block): Check for nested function.
11223         (pending_inlines): Likewise.
11224
11225         * decl2.c (build_expr_from_tree): If a unary op already has a
11226         type, just return it.
11227
11228         * decl2.c (finish_prevtable_vardecl): Use ADJUST_VTABLE_LINKAGE.
11229
11230         * decl2.c (walk_vtables): vardecl_fn returns int; return 1 if it does.
11231         (finish_file): Check the return value of walk_vtables.
11232         (finish_prevtable_vardecl): Return int.
11233         (finish_vtable_vardecl): Likewise.
11234         (prune_vtable_vardecl): Likewise.
11235         * lex.c (set_vardecl_interface_info): Likewise.
11236         * cp-tree.h: Adjust return types.
11237
11238         * class.c (delete_duplicate_fields_1): Don't complain about
11239         duplicate nested types if they're the same type.
11240         (finish_struct): Remove check for duplicate.
11241         * decl2.c (grokfield): Don't check for typedef of anonymous type.
11242
11243 Thu Mar 14 10:00:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
11244
11245         * cp-tree.h: Lose SIGNATURE_GROKKING_TYPEDEF.
11246
11247         * decl.c (grokdeclarator): Lose special handling of class-level
11248         typedef.  Lose SIGNATURE_GROKKING_TYPEDEF.  Set
11249         SIGNATURE_HAS_OPAQUE_TYPEDECLS later.
11250
11251         * cvt.c (convert_pointer_to_real): Retain cv-quals in conversion.
11252
11253         * pt.c (tsubst_copy): Strip cv-quals from destructor name types.
11254
11255         * search.c (compute_access): Fix handling of anonymous union
11256         members.
11257         * class.c (finish_struct_anon): Propagate TREE_{PRIVATE,PROTECTED}
11258         from anonymous unions to their members.
11259
11260         * typeck.c (build_x_function_call): For static member functions,
11261         hand off to build_member_call.
11262
11263 Wed Mar 13 14:03:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
11264
11265         * typeck.c (build_component_ref): Handle OFFSET_REFs.
11266
11267         * init.c (expand_vec_init): Fix init == 0 case.
11268
11269 Tue Mar 12 14:36:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
11270
11271         * init.c (build_new): Pedwarn about init and array new.
11272         (expand_vec_init): Handle lists, use convert_for_initialization.
11273
11274         * typeck.c (convert_for_initialization): Pass LOOKUP_NO_CONVERSION
11275         when converting to an aggregate type.
11276         * cvt.c (cp_convert): Pass it through.
11277
11278         * typeck.c (build_conditional_expr): Handle user-defined
11279         conversions to slightly different types.
11280
11281         * decl.c (grokdeclarator): Force an array type in a parm to be
11282         permanent.
11283
11284         * decl2.c (do_using_directive): Sorry.
11285         (do_namespace_alias): Likewise.
11286         * lex.c (real_yylex): Warn about using the `namespace' keyword.
11287
11288 Sun Mar 10 22:26:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
11289
11290         * parse.y (datadef): Move call to note_list_got_semicolon up.
11291
11292 Fri Mar  8 11:47:26 1996  Mike Stump  <mrs@cygnus.com>
11293
11294         * tree.c (unsave_expr): Don't unsave, UNSAVE_EXPRs.
11295
11296 Fri Mar  8 11:29:06 1996  Mike Stump  <mrs@cygnus.com>
11297
11298         * decl.c (cp_finish_decl): The exception regions have to be
11299         nested, not overlapping.  We start the exception region for a
11300         decl, after it has been fully built, and all temporaries for it
11301         have been cleaned up.
11302
11303 Thu Mar  7 17:46:06 1996  Mike Stump  <mrs@cygnus.com>
11304
11305         * tree.c (vec_binfo_member): Don't core dump if we have no bases.
11306
11307 Thu Mar  7 14:11:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
11308
11309         * tree.def: Add RETURN_INIT.
11310         * pt.c (instantiate_decl): Handle RETURN_INIT.
11311         * decl.c (store_return_init): Handle minimal_parse_mode.
11312
11313         * tree.c (cp_build_type_variant): Just return an error_mark_node.
11314         * decl.c (make_typename_type): Don't try to get the file and line
11315         of an identifier.
11316         * typeck.c (comptypes): Handle TYPENAME_TYPE.
11317
11318 Wed Mar  6 18:47:50 1996  Per Bothner  <bothner@kalessin.cygnus.com>
11319
11320         * decl.c (poplevel): Make sure we clear out and restore old local
11321         non-VAR_DECL values by default when they go out of scope.
11322
11323 Wed Mar  6 09:57:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
11324
11325         * method.c (build_overload_value): Use DECL_ASSEMBLER_NAME in
11326         referring to addresses of variables and functions.
11327
11328         * error.c (dump_expr): Support SIZEOF_EXPR.
11329
11330         * init.c (do_friend): Use the return value of check_classfn.
11331
11332         * typeck.c (convert_arguments): Call complete_type.
11333
11334         * method.c (hack_identifier): After giving an error, set value to
11335         error_mark_node.
11336
11337 Tue Mar  5 16:00:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
11338
11339         * tree.c (hack_decl_function_context): Kludge around DECL_CONTEXT
11340         lossage for local classes.
11341         * cp-tree.h: Declare it.
11342         * decl.c (lookup_name_real): Evil, painful hack for local classes.
11343         (grokfndecl): Set DECL_CLASS_CONTEXT and DECL_NO_STATIC_CHAIN here.
11344         Use hack_decl_function_context.
11345         (grokdeclarator): Don't set DECL_NO_STATIC_CHAIN here.
11346         (start_function): Use hack_decl_function_context.
11347         (finish_function): Likewise.
11348         * method.c (synthesize_method): Likewise.
11349         * lex.c (process_next_inline): Likewise.
11350         (do_pending_inlines): Likewise.
11351         * decl2.c (finish_file): Unset DECL_STATIC_FUNCTION_P when we're
11352         done with it.
11353
11354 Mon Mar  4 22:38:39 1996  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
11355
11356         * sig.c (build_signature_pointer_or_reference_type): Align
11357         signature pointers/references on 8-byte boundaries so they can be
11358         grabbed 2 words at a time on a Sparc.
11359
11360 Tue Mar  5 10:21:01 1996  Jason Merrill  <jason@yorick.cygnus.com>
11361
11362         * method.c (hack_identifier): Requiring a static chain is now a
11363         hard error.
11364         * decl.c (grokdeclarator): Set DECL_NO_STATIC_CHAIN on nested
11365         functions.
11366
11367 Mon Mar  4 20:03:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
11368
11369         * init.c (build_offset_ref): Call complete_type.
11370
11371         * decl.c (pop_from_top_level): Always pop previous_class_type.
11372
11373         * parse.y: Handle multiple decls in a for-init-statement.
11374         * pt.c (tsubst_expr): Likewise.
11375
11376         * pt.c (tsubst): Use tsubst_expr for the second operand of an
11377         ARRAY_REF.
11378
11379         * decl.c (maybe_push_to_top_level): Don't save previous_class_type.
11380         (poplevel_class): Set it here.
11381         (pop_from_top_level): Pop it here if we're returning to class scope.
11382         * class.c (pushclass): Don't set it here.
11383
11384         * decl.c (maybe_push_to_top_level): Save current_template_parms,
11385         and clear it if !pseudo.
11386         (pop_from_top_level): Restore it.
11387
11388         * decl2.c (finish_file): Push the dummy each time we walk the list
11389         of vtables.
11390
11391         * error.c (dump_expr): Support LOOKUP_EXPR and actually do
11392         something for CAST_EXPR.
11393         
11394 Mon Feb 19 14:49:18 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
11395
11396         * cvt.c (cp_convert): Warn about implicit conversion of the
11397         address of a function to bool, as it is always true.
11398
11399 Fri Feb 23 23:06:01 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
11400
11401         * typeck.c (c_expand_return): Fix warning for local externs returned.
11402
11403 Mon Mar  4 15:03:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
11404
11405         * tree.c (mapcar): Propagate const and volatile properly.
11406
11407         * typeck.c (complete_type): Be sure to instantiate the
11408         MAIN_VARIANT of the type.
11409
11410         * method.c (synthesize_method): Class interface hackery does not
11411         apply to synthesized methods.
11412
11413 Mon Mar  4 14:05:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
11414
11415         * pt.c (comp_template_args): Use comptypes rather than just
11416         checking for TEMPLATE_TYPE_PARM equivalence.
11417
11418         * typeck.c (build_x_function_call): Call complete_type before
11419         checking TYPE_OVERLOADS_CALL_EXPR.
11420
11421 Mon Mar  4 18:48:30 1996  Manfred Hollstein   <manfred@lts.sel.alcatel.de>
11422
11423         * g++.c (main): Check also for new define ALT_LIBM.
11424
11425 Fri Mar  1 13:09:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
11426
11427         * pt.c (instantiate_class_template): If we don't have a pattern
11428         yet, that's OK.
11429         (coerce_template_parms): If we see a local class, bail.
11430
11431         * decl.c (grok_reference_init): Make sure there's a type before
11432         checking its code.
11433
11434         * pt.c (do_function_instantiation): Avoid crashing on invalid decls.
11435         (push_template_decl): Likewise.
11436
11437         * parse.y (named_class_head): Set
11438         CLASSTYPE_TEMPLATE_SPECIALIZATION here if we have basetypes.
11439
11440         * decl.c (xref_tag): Diagnose redeclaration of template
11441         type-parameter name.
11442
11443         * error.c (dump_type): Handle anonymous template type parms.
11444
11445         * pt.c (instantiate_template): Use TYPE_MAIN_DECL instead of
11446         TYPE_STUB_DECL.
11447         (coerce_template_parms): Likewise.
11448
11449 Thu Feb 29 16:26:01 1996  Mike Stump  <mrs@cygnus.com>
11450
11451         * class.c (instantiate_type, case {ARRAY,INDIRECT}_REF,
11452         case ADDR_EXPR): Don't modify rhs if a subinstantiation fails.
11453
11454 Thu Feb 29 08:20:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
11455
11456         * pt.c (instantiate_template): Take the MAIN_VARIANT of the type
11457         before trying to get its STUB_DECL.
11458         (coerce_template_parms): Likewise.
11459
11460         * parse.y (template_type_parm): If they didn't use 'class',
11461         pretend they did after giving an error.
11462
11463         * pt.c (coerce_template_parms): Diagnose use of local class.
11464
11465         * decl.c (grok_reference_init): Use instantiate_type.
11466
11467         * error.c (dump_expr): Handle TEMPLATE_DECLs.
11468
11469         * parse.y (named_class_head): Diagnose mismatching types and tags.
11470
11471         * decl.c (pushdecl): Type decls and class templates clash with
11472         artificial type decls, not hide them.
11473
11474         * decl.c (redeclaration_error_message): Diagnose redefinition of
11475         templates properly.
11476         (duplicate_decls): Diagnose disallowed overloads for template
11477         functions, too.
11478
11479         * decl.c (start_decl): Call complete_type before checking for a
11480         destructor.
11481
11482         * pt.c (tsubst): Use tsubst_expr on the elts of a VEC.
11483
11484         * decl.c (xref_tag): A TEMPLATE_TYPE_PARM is a match.
11485
11486 Wed Feb 28 09:28:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
11487
11488         * decl.c (grok_op_properties): Don't check for operator++(int) in
11489         a template.
11490
11491         * tree.c (perm_manip): Return a copy of variable and function
11492         decls with external linkage.
11493
11494         * tree.def: Change some of the min tree codes to type "1".
11495         * pt.c (uses_template_parms): Handle 'e's, return 1 for LOOKUP_EXPRs.
11496         * method.c (build_overload_int): Emit something arbitrary for
11497         anything but an INTEGER_CST if we're in a template.
11498
11499         * decl.c (cp_finish_decl): Call complete_type before deciding
11500         whether or not to lay out the decl.
11501
11502         * lex.c (do_identifier): Check for DECL_INITIAL before using it.
11503
11504 Tue Feb 27 16:35:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
11505
11506         * typeck2.c (build_x_arrow): Call complete_type.
11507
11508         * pt.c (add_pending_template): Broken out.
11509         (lookup_template_class): If -fexternal-templates, call it for all
11510         the methods of implemented types.
11511         (instantiate_class_template): Instead of instantiating them here.
11512         (instantiate_decl): Handle -fexternal-templates earlier.
11513
11514 Tue Feb 27 15:51:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11515
11516         * search.c, lex.c, decl.c, class.c, cp-tree.h: Don't wrap the
11517         memoized lookup stuff inside GATHER_STATISTICS.
11518
11519 Tue Feb 27 10:38:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
11520
11521         * decl.c (start_decl): Complain about array of incomplete type
11522         here.
11523         (grokdeclarator): Not here.
11524
11525         * parse.y (template_parm): Expand full_parm inline so we can set
11526         the rule's precedence.
11527
11528         * pt.c (tsubst_expr): If we're in a template, just do tsubst_copy.
11529         (tsubst): tsubst_expr the DECL_INITIAL of FIELD_DECLs.
11530         * decl2.c (grokbitfield): Don't check for integer constant here.
11531         * class.c (finish_struct_1): Check here.
11532
11533         * decl.c (define_label): Make the min decl go on permanent_obstack.
11534
11535         * pt.c (unify): Don't handle CONST_DECLs.
11536         (uses_template_parms): Don't check DECL_INITIAL on a CONST_DECL.
11537         (tsubst_copy): Likewise.
11538
11539         * lex.c (do_identifier): Do pull the DECL_INITIAL out of a
11540         CONST_DECL for a template parm.
11541
11542 Mon Feb 26 12:48:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
11543
11544         * decl.c (grokdeclarator): Complain about array of incomplete type
11545         here.
11546         (start_decl_1): Not here.
11547
11548         * pt.c (tsubst): Handle pointer-to-function declarators.
11549
11550         * method.c (hack_identifier): If pedantic, diagnose local class
11551         methods that require a static chain.
11552
11553         * decl.c (grok_op_properties): No longer static.
11554         * cp-tree.h: Declare it.
11555         * pt.c (tsubst): Call it for operators.
11556         Use tsubst_copy for TREE_VECs.
11557
11558         * parse.y (template_arg): The expr has precedence like '>'.
11559
11560 Fri Feb 23 14:51:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
11561
11562         * pt.c (coerce_template_parms): Don't coerce an expression using
11563         template parms.
11564         (uses_template_parms): Also check DECL_INITIAL in CONST_DECLs.
11565         (tsubst): Don't use build_index_2_type if the max_value uses template
11566         parms.
11567         * method.c (build_overload_int): Emit something arbitrary for an
11568         expression using template parms.
11569
11570         * parse.y (template_close_bracket): New non-terminal to catch use
11571         of '>>' instead of '> >' in template class names.
11572         (template_type): Use it.
11573         * Makefile.in (CONFLICTS): Causes one more r/r conflict.
11574
11575         * tree.def: Add CAST_EXPR.
11576         * typeck2.c (build_functional_cast): Use CAST_EXPR instead of
11577         CONVERT_EXPR for minimal_parse_mode.
11578         * typeck.c (build_c_cast): Likewise.
11579         * pt.c (tsubst_copy): Likewise.
11580         * decl2.c (build_expr_from_tree): Likewise.
11581         * error.c (dump_expr): Likewise.
11582
11583 Fri Feb 23 10:36:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11584
11585         * except.c (SetTerminate, SetUnexpected): Put back global vars.
11586         (init_exception_processing): Put back decl/init of
11587         set_unexpected_fndecl and set_terminate_fndecl, needed to get the
11588         fns from libstdc++.
11589
11590         * decl.c (struct binding_level): Delete ACCEPT_ANY bitfield.
11591         (declare_uninstantiated_type_level, uninstantiated_type_level_p):
11592         Delete unused fns.
11593         * cp-tree.h (declare_uninstantiated_type_level,
11594         uninstantiated_type_level_p): Delete prototypes.
11595
11596 Thu Feb 22 19:36:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
11597
11598         * pt.c (tsubst_expr): Add default return.
11599
11600 Thu Feb 22 16:47:24 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11601
11602         * error.c (fndecl_as_string): Delete unused arg CNAME.
11603         * sig.c (build_signature_table_constructor,
11604         build_signature_method_call): Fix calls.
11605
11606         * class.c (the_null_vtable_entry): Delete var definition.
11607         (init_class_processing): Delete tree the_null_vtable_entry init.
11608         * decl.c (no_print_{functions, builtins}): Declare as static.
11609         (__tp_desc_type_node): #if 0 var definition.
11610         (init_type_desc): #if 0 init of __tp_desc_type_node.
11611         (vb_off_identifier): Move var decl into init_decl_processing.
11612         (current_function_assigns_this): Declare as static.
11613         (int_ftype_ptr_ptr_int, void_ftype_ptr_int_int): Delete var decls.
11614         (init_decl_processing): Delete init of void_ftype_ptr_ptr_int.
11615         Move decls of string_ftype_ptr_ptr and int_ftype_string_string here.
11616         * decl2.c (delete_sanity): Delete definition/mod of local var ELT_SIZE.
11617         * init.c (BI_header_type, BI_header_size): Declare as static.
11618         * pt.c (template_classes): Delete unused var.
11619         (add_pending_template): Delete decl for non-existent fn.
11620         (lookup_template_class): Delete vars CODE and TAG_CODE.
11621         (instantiate_template): Delete unused var TARGS.
11622         * cp-tree.h (vb_off_identifier, current_function_assigns_this):
11623         Delete decls.
11624         (__tp_desc_type_node): #if 0 var decl.
11625         (fndecl_as_string): Fix prototype.
11626
11627 Thu Feb 22 15:56:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
11628
11629         * tree.def: Add GOTO_STMT.
11630         * pt.c (tsubst_expr): Support goto and labels.
11631         * decl.c (define_label): Support minimal parsing.
11632         * parse.y (simple_stmt): Likewise.
11633
11634 Thu Feb 22 15:30:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11635
11636         * xref.c (GNU_xref_member): Only define/set var I if
11637         XREF_SHORT_MEMBER_NAMES is defined, to match when it's actually
11638         used.
11639         (GNU_xref_end_scope): Delete unused fifth arg TRNS.
11640         (GNU_xref_end): Fix call.
11641         * decl.c (poplevel, poplevel_class, finish_method): Fix calls.
11642         * cp-tree.h (GNU_xref_end_scope): Fix prototype.
11643
11644         * tree.c (build_exception_variant): Delete unused vars I, A, T,
11645         T2, and CNAME.
11646         (layout_vbasetypes): Delete unused var NONVIRTUAL_VAR_SIZE.
11647         (mapcar): Delete unused var CODE.
11648         (build_cplus_new): Delete unused arg WITH_CLEANUP_P.
11649         (break_out_cleanups): Fix call.
11650         (bot_manip): Likewise.
11651         * call.c (build_method_call): Likewise.
11652         * cvt.c (build_up_reference, convert_to_reference, cp_convert):
11653         Likewise.
11654         * typeck.c (unary_complex_lvalue, build_modify_expr,
11655         convert_for_initialization): Likewise.
11656         * typeck2.c (build_functional_cast): Likewise.
11657         * cp-tree.h (build_cplus_new): Fix prototype.
11658
11659         * repo.c (open_repo_file): Delete unused var Q.
11660         (repo_compile_flags, repo_template_declared,
11661         repo_template_defined, repo_class_defined, repo_inline_used,
11662         repo_vtable_used, repo_tinfo_used): #if 0 unused fns.
11663         (repo_get_id, repo_vtable_used): Declare as static. 
11664         * cp-tree.h (mark_{decl,class}_instantiated, finish_repo): Add
11665         prototypes.
11666
11667 Thu Feb 22 14:53:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
11668
11669         * parse.y (pending_inlines): Add function_try_block case.
11670
11671         * pt.c (unify): Fix for template const parms.
11672
11673 Thu Feb 22 13:24:15 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11674
11675         * lex.c (extract_interface_info): Delete forward decl.
11676         (default_copy_constructor_body, default_assign_ref_body): Delete
11677         decls for non-existent functions.
11678         (synth_firstobj, inline_text_firstobjs): Delete unused vars.
11679         (init_lex): Delete setting them.
11680         (cons_up_default_function): Delete unused vars FUNC_BUF,
11681         FUNC_LEN, and COMPLEX.  Delete code setting COMPLEX.  Delete old
11682         #if 0'd synth code.
11683         (toplevel, expression_obstack): Delete unused extern decls.
11684         (tree_node_kind): Delete unused enum.
11685         (tree_node_counts, tree_node_sizes): Wrap with #ifdef
11686         GATHER_STATISTICS.
11687         (tree_node_kind_names): Delete unused extern decl.
11688         (synth_obstack): Delete unused var.
11689         (init_lex): Don't set it.
11690         (init_parse): Add decl before use.
11691         (reduce_count): Only define #ifdef GATHER_STATISTICS && REDUCE_LENGTH.
11692         (current_unit_{name, language}): Delete unused vars. 
11693         (check_newline): Don't bother setting them, just accept the #pragma.
11694         * cp-tree.h (init_repo, peek_yylex): Add prototypes.
11695         (current_unit_{name, language}): Delete decls.
11696
11697         * search.c: Wrap all of the memoized functions, macros, and
11698         variables inside #ifdef GATHER_STATISTICS.
11699         (lookup_field, lookup_fnfields): Likewise.
11700         (init_search_processing): Likewise.
11701         (reinit_search_statistics): Wrap whole function.
11702         * lex.c (reinit_lang_specific): Wrap call to reinit_search_statistics.
11703
11704         * decl.c (finish_function): Only call pop_memoized_context if
11705         GATHER_STATISTICS is defined.
11706         (start_function): Likewise for push_memoized_context.
11707         * class.c (pushclass, popclass): Likewise.
11708
11709         * cp-tree.h (CLASSTYPE_MTABLE_ENTRY): Move definition from here...
11710         * search.c (CLASSTYPE_MTABLE_ENTRY): ... to here.
11711
11712         * cvt.c (cp_convert): Delete unused local var FORM.
11713         * cp-tree.h (can_convert, can_convert_arg, real_lvalue_p): Add
11714         prototypes.
11715
11716 Thu Feb 22 13:19:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
11717
11718         * pt.c (do_poplevel): Oops; really return what we get from
11719         poplevel this time.
11720
11721 Thu Feb 22 11:41:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11722
11723         * cp-tree.h (is_aggr_type): Add prototype.
11724
11725         * cp-tree.h ({push,pop}_cp_function_context): Add decls.
11726         * method.c ({push,pop}_cp_function_context): Delete decls.
11727         * except.c (start_eh_unwinder, end_eh_unwinder): Declare as void.
11728         (SetUnexpected, SetTerminate): Delete unused vars.
11729         (init_exception_processing): Don't set SetUnexpected or
11730         SetTerminate.  Don't set SET_UNEXPECTED_FNDECL or SET_TERMINATE_FNDECL.
11731         (output_exception_table_entry): Delete unused array LABEL.
11732         (expand_internal_throw): Delete unused var PARAMS.
11733         (expand_start_catch_block): Delete unused var CLEANUP.
11734         (emit_exception_table): Delete unused var EH_NODE_DECL.
11735         (expand_builtin_throw): Delete unused vars UNWIND_AND_THROW and
11736         GOTO_UNWIND_AND_THROW.  Don't set them.
11737         (end_eh_unwinder): Add top decl.
11738         (pop_rtl_from_perm): Delete unused decl of PERMANENT_OBSTACK.
11739         (exception_section, push_rtl_perm, do_function_call,
11740         lang_interim_eh, push_eh_cleanup, eh_outer_context,
11741         expand_end_eh_spec, end_eh_unwinder): Declare as static.
11742         (saved_pc, saved_throw_type, saved_throw_value, saved_cleanup,
11743         throw_used): Likewise.
11744         * cp-tree.h (expand_end_eh_spec): Delete prototype.
11745
11746         * search.c (dfs_mark, dfs_mark_vtable_path,
11747         dfs_unmark_vtable_path, dfs_mark_new_vtable,
11748         dfs_unmark_new_vtable, dfs_clear_search_slot,
11749         dfs_search_slot_nonempty_p, bfs_markedp, bfs_unmarkedp,
11750         bfs_marked_vtable_pathp, bfs_unmarked_vtable_pathp,
11751         bfs_marked_new_vtablep, bfs_unmarked_new_vtablep): #if 0 unused
11752         functions.
11753         (n_fields_searched, n_calls_lookup_field, n_calls_lookup_field_1,
11754         n_calls_lookup_fnfields, n_calls_lookup_fnfields_1,
11755         n_calls_get_base_type, n_outer_fields_searched, n_contexts_saved):
11756         Only define #ifdef GATHER_STATISTICS.
11757         (reinit_search_statistics): Only init some vars if GATHER_STATISTICS
11758         is defined.
11759         (vbase_decl): Delete var definition.
11760         (init_search): Delete old decl.
11761         (init_vbase_pointers): Delete building of VBASE_DECL, since it's
11762         never actually used.
11763         (expand_indirect_vtbls_init): Delete init of VBASE_DECL.
11764         (get_base_distance_recursive): Delete unused fourth arg
11765         BASETYPE_PATH.  Fix call .
11766         (get_base_distance): Fix call.
11767         (push_class_decls): Delete unused var ID.
11768         (make_memoized_table_entry): Declare as static.
11769         (breadth_first_search): Declare as static.
11770         (tree_has_any_destructor_p): Declare as static.
11771         (pop_class_decls): Delete unused arg pop_class_decls.
11772         * class.c (popclass): Fix call to pop_class_decls.
11773         * cp-tree.h (make_memoized_table_entry, breadth_first_search,
11774         tree_has_any_destructor_p): Delete prototypes.
11775
11776         * rtti.c (build_ptmf_desc): Delete unused arg TYPE.
11777         (build_t_desc): Fix call.  Delete unused vars ELEMS and TT.
11778         (build_dynamic_cast): Delete unused local vars TMP1 and RETVAL.
11779         (build_user_desc): Delete unused var T.
11780         (build_class_desc): Delete unused vars T and OFF.
11781         (build_t_desc): Delete unused var NAME_STRING.
11782         (build_headof): Make static.
11783         (get_bad_cast_node): Likewise.
11784         (get_def_to_follow): Likewise.
11785         * cp-tree.h (init_type_desc): Add prototype.
11786         (build_headof): Remove prototype.
11787
11788 Thu Feb 22 00:54:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
11789
11790         * pt.c (tsubst): Only look for matching decls at file scope for
11791         non-member functions.
11792
11793         * call.c (build_scoped_method_call): Handle scoped destructor
11794         calls in templates.
11795
11796         * decl.c (*_top_level): Also save previous_class_values.
11797
11798         * pt.c (tsubst_expr): Support do {} while loops.
11799         * parse.y (simple_stmt): Likewise.
11800         * tree.def: Likewise.
11801
11802         * method.c (build_overload_identifier): For a class nested in a
11803         template class, don't mangle in the template parms from our
11804         context.
11805
11806         * lex.c, cp-tree.h: Remove support for template instantiations in
11807         the pending_inlines code.
11808         * pt.c: Remove dead functions and unused arguments.
11809         (uses_template_parms): TYPENAME_TYPEs always use template parms.
11810         * parse.y: Stop passing anything to end_template_decl.
11811         * tree.c (print_lang_statistics): Only print tinst info #ifdef
11812         GATHER_STATISTICS.
11813
11814 Wed Feb 21 16:57:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11815
11816         * init.c (expand_recursive_init{,_1}): Delete decls. 
11817         (sort_member_init): Delete unused var INIT.
11818         (emit_base_init): Delete unused var X.
11819         (build_offset_ref): Delete unused var CNAME.
11820         (sort_member_init): Delete unused var FIELDS_TO_UNMARK.
11821         (emit_base_init): Delete unused local var BASE.  Delete extern
11822         decl of IN_CHARGE_IDENTIFIER.
11823         (build_delete): Delete unused local var VIRTUAL_SIZE.
11824
11825         * init.c (build_vec_delete): Delete unused third arg ELT_SIZE.
11826         (build_delete): Fix call.
11827         * decl2.c (delete_sanity): Likewise.
11828         * cp-tree.h (build_vec_delete): Update prototype.
11829
11830         * typeck.c (common_base_type): Delete unused var TMP.
11831         (build_binary_op): Delete local var ARGS_SAVE.
11832         (build_array_ref): Delete unused var ITYPE.
11833         (c_expand_return): Delete unused var USE_TEMP.
11834
11835         * typeck.c (compexcepttypes): Delete unused arg STRICT.
11836         (comptypes): Fix calls.
11837         * decl.c (duplicate_decls): Likewise.
11838         * cp-tree.h (compexcepttypes): Delete extra arg.
11839
11840         * decl2.c (check_classfn): Delete unused second arg CNAME.
11841         * decl.c (start_decl, grokfndecl): Fix calls.
11842         * init.c (do_friend): Likewise.
11843         * cp-tree.h (check_classfn): Update prototype.
11844
11845         * cp-tree.h (signature_error, import_export_vtable,
11846         append_signature_fields, id_in_current_class, mark_used,
11847         copy_assignment_arg_p): Add decls.
11848         * decl2.c (mark_used): Delete decl.
11849
11850         * class.c (n_*): Wrap with #ifdef GATHER_STATISTICS.
11851
11852         * class.c (get_vtable_entry): Diable unused function.
11853         (doing_hard_virtuals): Delete unused static global var.
11854         (finish_struct_1): Don't init DOING_HARD_VIRTUALS.
11855         (prepare_fresh_vtable): Delete unused vars PATH and RESULT.
11856         (overrides): Delete unused vars RETTYPE and BASE_RETTYPE.
11857         (modify_one_vtable): Delete unused var OLD_RTTI.
11858         (finish_struct_anon): Delete unused vars OFFSET and X.
11859         (finish_struct_bits): Delete unused var METHOD_VEC.
11860         (get_basefndecls): Delete unused var PURPOSE.  Delete unused
11861         for-scope local variable METHODS.
11862
11863         * call.c (user_harshness): Delete unused/unneeded arg PARM.
11864         (ideal_candidate): Delete unused args BASETYPE and PARMS.
11865         (build_method_call): Delete unused args passed into ideal_candidate.
11866         (build_overload_call_real): Likewise.  Delete unused var OVERLOAD_NAME.
11867         * cp-tree.h (synthesize_method): Add decl.
11868
11869         * decl.c (note_level_for_for): Give void return type.
11870         (pushdecl_nonclass_level): Likewise.
11871         (finish_function): Delete unused vars VFIELDS and ALLOCATED_THIS.
11872         (poplevel): Delete unused var IMPLICIT_TRY_BLOCK.
11873         (suspend_binding_level): Delete unused var LEVEL.
11874         (duplicate_decls): Delete unused var CTYPE.
11875         (duplicate_decls): Delete unused var PREVIOUS_C_DECL.
11876         (init_decl_processing): Delete unused vars FLOAT_ENDLINK and
11877         PTR_ENDLINK.
11878         (grokdeclarator): Delete unused var C.
11879         (grokdeclarator): Delete unused var SIZE_VARIES.
11880         (grokparms): Delete unused var SAW_VOID.
11881         (start_function): Delete unused var OLDDECL.
11882         (cplus_expand_expr_stmt): Delete unused var
11883         REMOVE_IMPLICIT_IMMEDIATELY. 
11884
11885         * cp-tree.h (pushdecl_nonclass_level): Fix prototype.
11886
11887         * Makefile.in (CONFLICTS): Update to 12 shift/reduce.
11888
11889 Wed Feb 21 00:06:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
11890
11891         * tree.c (build_min): Set TREE_COMPLEXITY to lineno.
11892         (build_min_nt): Likewise.
11893         * pt.c (do_pushlevel): Emit line note.
11894         (do_poplevel): Return what we get from poplevel.
11895         (tsubst_expr): Set lineno from TREE_COMPLEXITY in stmt nodes.
11896         * parse.y: Use do_pushlevel and do_poplevel.
11897         * cp-tree.h: Declare do_poplevel.
11898         
11899         * cp-tree.h: Declare at_eof.
11900         * decl.c (cp_finish_decl): Pass it to rest_of_decl_compilation.
11901         * decl2.c (import_export_decl): Renamed from import_export_inline.
11902         (finish_file): Call it to do interface handling for statics.
11903         * pt.c (tsubst_copy): Call mark_used on variables and functions
11904         used here.
11905
11906         * decl2.c (finish_file): Don't emit statics we can't generate.
11907         * pt.c (instantiate_decl): Don't set interface on instantiations
11908         we can't generate.
11909
11910         * cp-tree.h (struct tinst_level): Change 'classname' to 'decl'.
11911         * tree.c (print_lang_statistics): Print max template depth.
11912         * pt.c (push_tinst_level): Dump entire instantiation context.
11913         (instantiate_class_template): Use it and pop_tinst_level.
11914         (instantiate_decl): Likewise.
11915
11916         * call.c class.c cp-tree.h decl.c decl2.c error.c lex.c method.c
11917         pt.c ptree.c tree.def: Remove all traces of UNINSTANTIATED_P_TYPE.
11918
11919 Tue Feb 20 18:21:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
11920
11921         * call.c class.c cp-tree.h cvt.c decl.c decl2.c error.c expr.c
11922         init.c lex.c method.c parse.y pt.c repo.c search.c spew.c tree.c
11923         tree.def typeck.c typeck2.c xref.c: Massive, systemic changes for
11924         the new template implementation.
11925
11926 Tue Feb 20 17:14:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11927
11928         * decl2.c (check_cp_case_value): Use STRIP_TYPE_NOPS.
11929
11930 Thu Feb 15 18:44:42 1996  Mike Stump  <mrs@cygnus.com>
11931
11932         * decl.c (cp_finish_decl): Delay emitting the debug information for
11933         a typedef that has been installed as the canonical typedef, if the
11934         type has not yet been defined.
11935
11936 Thu Feb 15 09:39:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
11937
11938         * decl2.c (grokfield): Still call pop_nested_class for access decls.
11939
11940 Wed Feb 14 17:30:04 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11941
11942         * decl.c (lookup_label): Call label_rtx.
11943
11944         * decl.c (make_binding_level): New function.
11945         (pushlevel, pushlevel_class): Call it instead of explicit
11946         duplicate calls to xmalloc.
11947
11948         * decl.c (init_decl_processing): Delete useless build_pointer_type
11949         call.
11950
11951         * decl.c (float_ftype_float, ldouble_ftype_ldouble): Add definitions.
11952         (sizet_ftype_string): Delete variable.
11953         (init_decl_processing): Add built-in functions fabsf, fabsl,
11954         sqrtf, sqrtl, sinf, sin, sinl, cosf, cos, cosl.  New local
11955         variable strlen_ftype, used for strlen.
11956
11957 Wed Feb 14 16:21:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
11958
11959         * decl.c (push_to_top_level): Start from current_binding_level
11960         again for now; the stl hacks depend on g++ being broken in this
11961         way, and it'll be fixed in the template rewrite.
11962
11963         * tree.def: Add USING_DECL.
11964         * decl2.c (do_class_using_decl): Implement.
11965         (grokfield): Pass access decls off to do_class_using_decl instead of
11966         grokdeclarator.
11967         * error.c (dump_decl): Handle USING_DECLs.
11968         * decl.c (grokdeclarator): Remove code for handling access decls.
11969         * class.c (finish_struct_1): Adjust accordingly, treat using-decls
11970         as access decls for now.
11971         (finish_struct): Don't check USING_DECLs for other uses of the name.
11972
11973         * search.c (get_matching_virtual): Use cp_error_at.
11974
11975 Wed Feb 14 10:36:58 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11976
11977         * typeck.c (comptypes): Default COMP_TYPE_ATTRIBUTES to 1, to
11978         match c-typeck.c.
11979         (self_promoting_args_p): Move the check that TYPE is non-nil
11980         before trying to look at its main variant.
11981         (unsigned_type, signed_type): Add checking of DI/SI/HI/QI nodes.
11982
11983         * cp-tree.h (DECL_WAITING_FRIENDS, SET_DECL_WAITING_FRIENDS):
11984         Delete macros.
11985         * init.c (xref_friend, embrace_waiting_friends): Delete functions.
11986         (do_friend): Delete call to xref_friend.
11987         * class.c (finish_struct_1): Delete call to embrace_waiting_friends.
11988
11989         * typeck.c (convert_sequence): #if 0 unused function.
11990
11991         * cp-tree.h (DECL_IN_MEMORY_P): New macro w/ the check that used to
11992         be in decl_in_memory_p.
11993         (decl_in_memory_p): Delete decl.
11994         * expr.c (decl_in_memory_p): Delete fn.
11995         * typeck.c (mark_addressable): Use DECL_IN_MEMORY_P.
11996
11997         * decl.c (cp_finish_decl): Use DECL_IN_MEMORY_P.
11998
11999 Tue Feb 13 12:51:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
12000
12001         * class.c (finish_struct_1): Check for a pure-specifier on a
12002         non-virtual function here.
12003
12004         * decl2.c (grok_function_init): Don't check whether the function
12005         is virtual here.
12006         (grokfield): Don't call check_for_override here.
12007
12008         * decl.c (push_to_top_level): Start from inner_binding_level,
12009         check class_shadowed in class levels.
12010
12011 Mon Feb 12 17:46:59 1996  Mike Stump  <mrs@cygnus.com>
12012
12013         * decl.c (resume_level): Ignore things that don't have names, instead
12014         of core dumping.
12015
12016 Mon Feb 12 15:47:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12017
12018         * decl2.c (grokfield): Set DECL_VINDEX properly for FUNCTION_DECLs.
12019
12020 Sat Feb 10 17:59:45 1996  Jason Merrill  <jason@yorick.cygnus.com>
12021
12022         * class.c (finish_struct_1): Set DECL_VINDEX properly on a
12023         synthesized dtor.
12024
12025         * parse.y (complete_type_name): Bind global_scope earlier.
12026         (complex_type_name): Likewise.
12027         (qualified_type_name): Remove.
12028
12029 Thu Feb  8 15:15:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
12030
12031         * decl.c (grokfndecl): Move code that looks for virtuals in base
12032         classes...
12033         * class.c (check_for_override): ... to a new function.
12034         (finish_struct_1): Call it.
12035
12036         * cp-tree.h: Declare warn_sign_compare.
12037
12038         * typeck.c (build_binary_op_nodefault): Check warn_sign_compare
12039         rather than extra_warnings to decide whether to warn about
12040         comparison of signed and unsigned.
12041
12042         * decl2.c (lang_decode_option): Handle warn_sign_compare.  -Wall
12043         implies -Wsign-compare.  -Wall doesn't imply -W.
12044
12045 Wed Feb  7 15:27:57 1996  Mike Stump  <mrs@cygnus.com>
12046
12047         * typeck.c (build_component_ref): Fix to handle anon unions in base
12048         classes as well.
12049
12050 Wed Feb  7 14:29:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12051
12052         * class.c (resolves_to_fixed_type_p): Delete code dealing with
12053         a WITH_CLEANUP_EXPR, since we don't generate them any more.
12054         * cvt.c (build_up_reference): Likewise.
12055         * decl.c (grok_reference_init): Likewise.
12056         (cp_finish_decl): Likewise.
12057         * error.c (dump_expr): Likewise.
12058         * tree.c (real_lvalue_p): Likewise.
12059         (lvalue_p): Likewise.
12060         (build_cplus_new): Likewise.
12061         (unsave_expr_now): Likewise.
12062         * typeck.c (unary_complex_lvalue, build_modify_expr,
12063         c_expand_return): Likewise.
12064
12065 Tue Feb  6 13:39:22 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12066
12067         Make the C++ front-end pay attention to attributes for structures.
12068         * class.c (finish_struct): New argument ATTRIBUTES, passed down into
12069         finish_struct_1.
12070         (finish_struct_1): New argument ATTRIBUTES; call cplus_decl_attributes.
12071         Take out old round_up_size use and setting the DECL_ALIGN possibly
12072         using it.  Take out setting of TYPE_ALIGN to round_up_size, which
12073         can override what the attribute set.
12074         * cp-tree.h (finish_struct): Update prototype.
12075         * parse.y (template_instantiate_once): Pass a NULL_TREE for the
12076         attributes to finish_struct.
12077         (structsp): For a CLASS decl, add maybe_attribute to rule and pass that
12078         value down into finish_struct.
12079         * Makefile.in (CONFLICTS): Switch to 7 shift/reduce conflicts.
12080
12081 Tue Feb  6 13:12:15 1996  Per Bothner  <bothner@kalessin.cygnus.com>
12082
12083         * decl.c (poplevel):  Re-word dead for local handling.
12084         (pushdecl):  Remove useless DECL_DEAD_FOR_LOCAL test.
12085         (cp_finish_decl):  If is_for_scope, check for duplicates so
12086         we can disable is_for_scope.  Otherwise, preserve_temp_slots.
12087
12088         * lex.c (do_identifier):  Use global binding in preference of
12089         dead for local variable.
12090
12091 Mon Feb  5 17:46:46 1996  Mike Stump  <mrs@cygnus.com>
12092
12093         * init.c (initializing_context): Handle anon union changes, the
12094         context where fields of anon unions can be initialized now has to be
12095         found by walking up the TYPE_CONTEXT chain.
12096
12097 Fri Feb  2 14:54:04 1996  Doug Evans  <dje@charmed.cygnus.com>
12098
12099         * decl.c (start_decl): #ifdef out code to set DECL_COMMON
12100         if ASM_OUTPUT{,_ALIGNED}_BSS is defined.
12101         (obscure_complex_init): If bss is supported, always set
12102         DECL_INITIAL to error_mark_node.
12103
12104 Thu Feb  1 16:19:56 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12105
12106         * init.c (is_friend): Make sure there's a context before we see if
12107         it's an aggr type.
12108
12109 Thu Feb  1 15:44:53 1996  Mike Stump  <mrs@cygnus.com>
12110
12111         * init.c (is_friend): Classes are not friendly with nested classes.
12112
12113 Thu Feb  1 15:27:37 1996  Doug Evans  <dje@charmed.cygnus.com>
12114
12115         * lex.c (check_newline): Pass last character read to HANDLE_PRAGMA,
12116         and record its result.
12117
12118 Thu Feb  1 09:27:01 1996  Mike Stump  <mrs@cygnus.com>
12119
12120         * class.c (finish_struct_anon): Switch around code to not move anon
12121         union elements around, nor mess up their contexts, nor offsets,
12122         instead we now build up the right number of COMPONENT_REFs for all
12123         the anon unions that may be present at build_component_ref time.
12124         * typeck.c (lookup_anon_field): New routine to handle field lookup
12125         on fields without names.  We find them, based upon their unique type
12126         instead.
12127         * typeck.c (build_component_ref): Allow FIELD_DECL components.
12128         Handle finding components in anonymous unions, and ensure that a
12129         COMPONENT_REF is built for each level as necessary.
12130
12131 Tue Jan 30 18:18:23 1996  Mike Stump  <mrs@cygnus.com>
12132
12133         * cvt.c (build_up_reference): Make the INDIRECT_BIND case come after
12134         code that ensures that copy ctors are used if appropriate.
12135
12136 Tue Jan 30 17:35:14 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12137
12138         * init.c (build_vec_delete): Only give an error if base isn't an
12139         error_mark_node.
12140
12141 Mon Jan 29 17:09:06 1996  Mike Stump  <mrs@cygnus.com>
12142
12143         * spew.c (do_aggr): `new struct S;' isn't a forward declaration.
12144         (yylex): If we see `new', keep slurping.
12145
12146 Thu Jan 25 18:31:36 1996  Mike Stump  <mrs@cygnus.com>
12147
12148         * class.c (finish_struct_1): Move code for handling anon unions...
12149         (finish_struct_anon): to here.  Fixup so that we do the offset
12150         calculations right, and so that the fields are physically moved to
12151         the containers's chain.
12152
12153 Thu Jan 25 18:27:37 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12154
12155         * decl.c (grokdeclarator): Avoid trying to get an operand off an
12156         identifier node.
12157
12158 Wed Jan 24 11:25:30 1996  Jim Wilson  <wilson@chestnut.cygnus.com>
12159
12160         * typeck.c (pointer_int_sum): Use TYPE_PRECISION (sizetype) not
12161         POINTER_SIZE to agree with expr.c.
12162
12163 Thu Jan 25 13:01:23 1996  Mike Stump  <mrs@cygnus.com>
12164
12165         * search.c (lookup_field): Don't report ambiguities if protect is 0,
12166         instead return NULL_TREE.
12167
12168 Wed Jan 24 13:01:26 1996  Mike Stump  <mrs@cygnus.com>
12169
12170         * class.c (finish_struct_1): Call warn_hidden if we want warnings
12171         about overloaded virtual functions.
12172         (warn_hidden): New routine to warn of virtual functions that are
12173         hidden by other virtual functions, that are not overridden.
12174         (get_basefndecls): New routine, used by warn_hidden.
12175         (mark_overriders): New routine, used by warn_hidden.
12176         * search.c (get_matching_virtual): Remove old warning that just
12177         isn't very useful.
12178
12179 Tue Jan 23 12:26:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12180
12181         * decl.c (output_builtin_tdesc_entries): #if 0 the function definition.
12182
12183         * typeck.c (null_ptr_cst_p): Delete unused fn.
12184         (build_function_call_maybe): Delete unused fn.
12185
12186         * expr.c (extract_init): #if 0 the code after unconditional return 0
12187         for now.
12188
12189         Delete old cadillac code.
12190         * edsel.c: Remove file.
12191         * Make-lang.in (CXX_SRCS): Take edsel.c off the list.
12192         * Makefile.in (CXX_OBJS): Delete edsel.o.
12193         (edsel.o): Delete rule.
12194         * cp-tree.h (flag_cadillac): Delete var decl.
12195         * lang-options.h: Delete "-fcadillac" and "-fno-cadillac".
12196         * decl2.c (flag_cadillac): Delete var definition.
12197         (lang_decode_option): Delete handling of -fcadillac and -fno-cadillac.
12198         (grokfield): Delete code depending on flag_cadillac.
12199         (finish_anon_union): Likewise.
12200         * class.c (finish_struct_1): Likewise.
12201         (pushclass): Likewise.
12202         (popclass): Likewise.
12203         (push_lang_context): Likewise.
12204         (pop_lang_context): Likewise.
12205         * decl.c (init_decl_processing): Likewise.
12206         (start_decl): Likewise.
12207         (cp_finish_decl): Likewise.
12208         (xref_tag): Likewise.
12209         (finish_enum): Likewise.
12210         (start_function): Likewise.
12211         (finish_function): Likewise.
12212         (finish_stmt): Likewise.
12213         * lex.c (lang_init): Likewise.
12214         (check_newline): Likewise.
12215
12216         * lex.c (do_pending_inlines): Delete synthesized method kludge.
12217
12218         Delete defunct, ancient garbage collection implementation.
12219         * rtti.c: New file with the RTTI stuff from gc.c.
12220         * gc.c: Removed file (moved the remaining stuff into rtti.c).
12221         * Makefile.in (CXX_OBJS): Replace gc.o with rtti.o.
12222         (rtti.o): New rule, replacing gc.o.
12223         * Make-lang.in (CXX_SRCS): Replace gc.c with rtti.c.
12224         * cp-tree.h: Delete gc-related fn decls.
12225         (DECL_GC_OFFSET): Delete macro.
12226         (flag_gc): Delete extern decl.
12227         * decl.c (current_function_obstack_index): Delete var decl.
12228         (current_function_obstack_usage): Delete var decl.
12229         (start_function): Delete clearing of current_function_obstack_index
12230         and current_function_obstack_usage.
12231         (init_decl_processing): Delete code relying on -fgc.
12232         Delete call to init_gc_processing.
12233         (cp_finish_decl): Delete calls to build_static_gc_entry and
12234         type_needs_gc_entry.  Delete gc code setting DECL_GC_OFFSET.
12235         (store_parm_decls): Delete -fgc calls to cp_expand_decl_cleanup
12236         and to expand_expr of a __gc_main call.
12237         (maybe_gc_cleanup): Delete var decl.
12238         (finish_function): Delete call to expand_gc_prologue_and_epilogue.
12239         * decl2.c (flag_gc): Delete var decl.
12240         (lang_f_options): Delete offering of -fgc.
12241         (lang_decode_option): Delete -fgc and -fno-gc handling.
12242         (get_temp_regvar): Delete gc code.
12243         * init.c (build_new): Delete gc code.
12244         * lex.c (init_lex): Delete checking of flag_gc.
12245
12246         * typeck.c (convert_arguments): Delete gc code.
12247         (build_component_addr): Delete -fgc warning.
12248         (build_modify_expr): Delete gc code.
12249
12250         * decl2.c (build_push_scope): Delete fn.
12251         * cp-tree.h (build_push_scope): Delete decl.
12252
12253         * search.c (clear_search_slots): Delete fn.
12254         * cp-tree.h (clear_search_slots): Delete decl.
12255
12256         * search.c (tree_needs_constructor_p): Delete fn.
12257         * cp-tree.h (tree_needs_constructor_p): Delete decl.
12258
12259         * tree.c (id_cmp): Delete fn.
12260
12261         * tree.c (set_fnaddr_from_vtable_entry): Delete fn.
12262         * cp-tree.h (set_fnaddr_from_vtable_entry): Delete decl.
12263
12264         * tree.c (decl_value_member): Delete fn.
12265         * cp-tree.h (decl_value_member): Delete decl.
12266
12267         * tree.c (list_hash_lookup_or_cons): Delete fn.
12268         * cp-tree.h (list_hash_lookup_or_cons): Delete decl.
12269
12270         * method.c (cplus_exception_name): Delete fn.
12271         (EXCEPTION_NAME_{PREFIX, LENGTH}): Delete macros.
12272
12273         * spew.c (shift_tokens): Delete fn.
12274
12275 Mon Jan 22 17:49:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
12276
12277         * except.c (init_exception_processing): Pass 1 to needs_pop in calls
12278         to cp_finish_decl.
12279         * parse.y: Likewise.
12280
12281 Mon Jan 22 17:34:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12282
12283         * tree.c (build_cplus_staticfn_type): Delete function definition;
12284         never used.
12285         * cp-tree.h (build_cplus_staticfn_type): Delete decl.
12286
12287         * tree.c (virtual_member): Delete function definition; never used.
12288         * cp-tree.h (virtual_member): Delete decl.
12289
12290 Fri Jan 19 18:03:14 1996  Mike Stump  <mrs@cygnus.com>
12291
12292         * typeck.c (build_component_ref): Handle getting vbase pointers
12293         out of complex multiple inheritance better.
12294
12295 Fri Jan 19 16:27:40 1996  Mike Stump  <mrs@cygnus.com>
12296
12297         * typeck.c (build_object_ref): Make sure we use the real type, not
12298         any reference type.
12299
12300 Fri Jan 19 16:01:47 1996  Mike Stump  <mrs@cygnus.com>
12301
12302         * tree.c (build_exception_variant): Don't create new types if we
12303         don't have to, also build new types on the right obstack.
12304
12305 Fri Jan 19 14:09:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
12306
12307         * decl.c (store_bindings): Split out from push_to_top_level.
12308         (push_to_top_level): Call it for b->type_shadowed on class binding
12309         levels.
12310
12311 Fri Jan 19 13:53:14 1996  Mike Stump  <mrs@cygnus.com>
12312
12313         * search.c (expand_upcast_fixups): Fix so that offsets stored in
12314         vbase_offsets are always right.  Fixes a problem where virtual base
12315         upcasting and downcasting could be wrong during conversions on this
12316         during virtual function dispatch at ctor/dtor time when dynamic
12317         vtable fixups for deltas are needed.  This only sounds easier than
12318         it is.  :-)
12319         (fixup_virtual_upcast_offsets): Change to reflect new calling
12320         convention for expand_upcast_fixups.
12321
12322 Fri Jan 19 12:23:08 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12323
12324         * decl2.c (grokbitfield): Strip the NOPs from WIDTH before we
12325         check that it's usable as the bitfield width.
12326
12327 Wed Jan 17 21:22:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12328
12329         * decl2.c (grokfield): Call cplus_decl_attributes with the attrlist.
12330         Pass a null tree to grokdeclarator for its ATTRLIST arg, since it's
12331         only ever used for functions in it.
12332
12333 Wed Jan 17 12:10:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
12334
12335         * parse.y (qualified_type_name): Use the TYPE_DECL, not the type.
12336         (nested_type): Likewise.
12337         (nested_name_specifier): Use lastiddecl.
12338
12339         * decl.c (grokdeclarator): Adjust accordingly.
12340         * init.c (expand_member_init): Likewise.
12341         * parse.y (base_class): Likewise.
12342         * typeck2.c (build_functional_cast): Likewise.
12343
12344         * typeck2.c (build_functional_cast): Fill in name after we've
12345         checked for non-aggr type.
12346
12347 Wed Jan 17 10:18:01 1996  Mike Stump  <mrs@cygnus.com>
12348
12349         * decl2.c (warn_pointer_arith): Default to on.
12350
12351 Tue Jan 16 12:45:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
12352
12353         * lex.c (is_rid): New function.
12354         * decl.c (grokdeclarator): Diagnose reserved words used as
12355         declarator-ids.
12356
12357 Tue Jan 16 11:39:40 1996  Jason Merrill  <jason@yorick.cygnus.com>
12358
12359         * tree.c (get_decl_list): Don't lose cv-quals.
12360
12361         * decl.c (grokdeclarator): Fix SCOPE_REF handling and diagnose
12362         typespecs used as declarator-ids.
12363
12364 Tue Jan 16 11:09:42 1996  Mike Stump  <mrs@cygnus.com>
12365
12366         * decl.c (poplevel): When poping a level, don't give a warning for
12367         any subblocks that already exist.
12368
12369 Tue Jan 16 00:25:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
12370
12371         * typeck.c (build_object_ref): Finish what I started.
12372
12373         * parse.y (qualified_type_name): Don't check TYPE_BUILT_IN.
12374
12375         * decl2.c (constructor_name_full): Handle TEMPLATE_TYPE_PARMs.
12376
12377         * decl.c (grokdeclarator): Also accept TEMPLATE_TYPE_PARM as a
12378         scope.
12379
12380 Mon Jan 15 16:19:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
12381
12382         * decl.c (xref_tag): Handle passing a type in directly.
12383
12384         * parse.y (qualified_type_name): Pull out the type.
12385         (nested_type): Likewise.
12386         Take types directly instead of as identifiers.
12387         * call.c (build_scoped_method_call): Take types directly instead of
12388         as identifiers.
12389         * decl.c (xref_basetypes): Likewise.
12390         * init.c (expand_member_init): Likewise.
12391         (build_member_call): Likewise.
12392         (build_offset_ref): Likewise.
12393         * typeck2.c (build_scoped_ref): Likewise, remove bogus code.
12394         * method.c (do_build_assign_ref): Likewise.
12395         * decl.c (grokdeclarator): Handle a type appearing as the
12396         declarator-id for constructors.
12397         * method.c (do_build_copy_constructor): current_base_init_list now
12398         uses the types directly, not their names.
12399         * init.c (sort_base_init): Likewise.
12400         (expand_member_init): Likewise.
12401         * init.c (is_aggr_type): New function, like is_aggr_typedef.
12402
12403 Mon Jan 15 08:45:01 1996  Jeffrey A Law  <law@cygnus.com>
12404
12405         * tree.c (layout_basetypes): Call build_lang_field_decl instead
12406         of build_lang_decl if first arg is a FIELD_DECL.
12407
12408 Thu Jan 11 14:55:07 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12409
12410         * decl.c (cp_finish_decl): Only clear TREE_USED if DECL_NAME is
12411         non-empty.
12412         * except.c (expand_start_catch_block): Set TREE_USED to avoid
12413         warnings about the catch handler.
12414
12415 Mon Jan  8 17:35:12 1996  Jason Merrill  <jason@yorick.cygnus.com>
12416
12417         * typeck.c (build_modify_expr): Use a COMPOUND_EXPR instead of
12418         expand_target_expr.
12419
12420 Thu Jan  4 12:30:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12421
12422         Fix access control to use trees rather than integers.
12423         * class.c (access_{default, public, protected, private,
12424         default_virtual, public_virtual, private_virtual}_node): Add
12425         definitions.
12426         (init_class_processing): Do creation of those nodes.
12427         * cp-tree.h (access_type): Delete enum decl.
12428         (access_{default, public, protected, private, default_virtual,
12429         public_virtual, private_virtual}_node): Add decls.
12430         (compute_access): Change return type.
12431         * search.c (compute_access): Have tree return type, instead of enum.
12432         (lookup_field): Declare THIS_V and NEW_V to be tree nodes.
12433         * lex.c (real_yylex): Use yylval.ttype for giving the value of the
12434         access_* node for each of RID_{PUBLIC, PRIVATE, PROTECTED}.
12435         * parse.y (VISSPEC): Make ttype rather than itype.
12436         (base_class_access_list): Likewise.
12437         * *.[cy]: Change all refs of `access_public' to `access_public_node',
12438         etc.
12439         * call.c (build_method_call): Make ACCESS be a tree.
12440         * class.c (alter_access, finish_struct_1, filter_struct): Likewise.
12441         * cvt.c (convert_to_aggr): Likewise.
12442         * init.c (build_offset_ref, resolve_offset_ref, build_delete):
12443         Likewise.
12444         * method.c (hack_identifier): Likewise.
12445         * typeck.c (build_component_ref_1, build_component_ref): ): Likewise.
12446
12447 Thu Jan  4 11:02:20 1996  Mike Stump  <mrs@cygnus.com>
12448
12449         * typeck.c (pointer_int_sum, pointer_diff): Make code agree with C
12450         frontend, and make it more consistent with respect to
12451         warn_pointer_arith.
12452
12453 Tue Jan  2 00:13:38 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
12454
12455         * decl.c (pushdecl): Check for duplicate parameter names.
12456
12457 Wed Jan  3 09:25:48 1996  Mike Stump  <mrs@cygnus.com>
12458
12459         * decl.c (expand_static_init): Call assemble_external for atexit.
12460
12461 Wed Jan  3 07:55:19 1996  Mike Stump  <mrs@cygnus.com>
12462
12463         * except.c (do_unwind): Remove some generated dead code.
12464         (eh_outer_context): New routine, factor out some common code from
12465         expand_builtin_throw and end_eh_unwinder.  Add code to do return
12466         address masking for the PA.
12467         (expand_builtin_throw): Use eh_outer_context instead of open coding
12468         it here.
12469         (end_eh_unwinder): Likewise.
12470
12471 Tue Jan  2 17:00:56 1996  Mike Stump  <mrs@cygnus.com>
12472
12473         * except.c (expand_throw): Call assemble_external for __empty, if we
12474         use it.
12475
12476 Thu Dec 28 11:13:15 1995  Mike Stump  <mrs@cygnus.com>
12477
12478         * except.c (expand_builtin_throw): Use RETURN_ADDR_OFFSET instead of
12479         NORMAL_RETURN_ADDR_OFFSET.
12480         (end_eh_unwinder): Likewise.
12481
12482 Wed Dec 27 22:18:16 1995  Mike Stump  <mrs@cygnus.com>
12483
12484         * gc.c (build_dynamic_cast): Make sure we don't cast away const
12485         when dealing with references, and make sure we handle dynamic
12486         casting to a cv qualified reference.
12487
12488 Thu Dec 21 23:50:35 1995  Mike Stump  <mrs@cygnus.com>
12489
12490         * except.c (struct eh_context): New structure top hold eh context
12491         information.
12492         (push_eh_context): New routine.
12493         (pop_eh_context): Likewise.
12494         * decl.c (push_cp_function_context): Use them.
12495         (pop_cp_function_context): Likewise.
12496
12497 Wed Dec 20 12:42:51 1995  Jason Merrill  <jason@yorick.cygnus.com>
12498
12499         * decl2.c (finish_file): Also prune uninteresting functions in the
12500         inline emission loop.
12501
12502 Wed Dec 20 02:32:07 1995  Jeffrey A Law  <law@cygnus.com>
12503
12504         * sig.c (build_signature_table_constructor): Mark functions
12505         in the signature as referenced.
12506
12507 Tue Dec 19 22:36:56 1995  Jason Merrill  <jason@yorick.cygnus.com>
12508
12509         * decl2.c (finish_file): Do all the vtable/synthesis stuff before
12510         the inline emission stuff.
12511
12512 Mon Dec 18 15:51:33 1995  Jason Merrill  <jason@yorick.cygnus.com>
12513
12514         * cp-tree.h, decl2.c (flag_weak): New flag to control the use of
12515         weak symbols.   
12516         * lang-options.h: Add -f{no-,}weak.
12517         * decl.c (init_decl_processing): If the target does not support weak
12518         symbols, don't use them.
12519         * decl2.c, pt.c: s/SUPPORTS_WEAK/flag_weak/.
12520
12521 Sun Dec 17 21:13:23 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
12522
12523         * init.c (expand_member_init): warning for base init after members.
12524
12525 Fri Dec 15 15:32:18 1995  Jason Merrill  <jason@yorick.cygnus.com>
12526
12527         * cvt.c (build_expr_type_conversion): Don't convert to a reference
12528         type.
12529
12530 Thu Dec 14 16:05:58 1995  Mike Stump  <mrs@cygnus.com>
12531
12532         * method.c (report_type_mismatch): Improve wording for volatile
12533         mismatches.
12534
12535 Thu Dec 14 14:16:26 1995  Mike Stump  <mrs@cygnus.com>
12536
12537         * init.c (expand_aggr_init_1): Use expand_aggr_init_1 instead of
12538         expand_assignment, as the later doesn't handle things that have
12539         copy constructors well.  The compiler would do bitwise copying,
12540         instead of ctor calling in some cases.
12541
12542 Wed Dec 13 17:05:54 PST 1995  Paul Eggert  <eggert@twinsun.com>
12543
12544         * g++.c (my_strerror): Return "cannot access" if errno is 0.
12545         (pfatal_with_name, perror_exec): Don't assume that
12546         the returned value from my_strerror contains no '%'s.
12547         (concat): Remove.
12548         (sys_nerror): Declare only if HAVE_STRERROR is not defined.
12549
12550 Wed Dec 13 16:22:38 1995  Jason Merrill  <jason@yorick.cygnus.com>
12551
12552         Lose CLASSTYPE_METHODS/DECL_NEXT_METHOD chain; make
12553         TYPE_METHODS/TREE_CHAIN mean what they used to. 
12554         * decl2.c (constructor_name_full): Refer to CLASSTYPE_METHOD_VEC
12555         instead of TYPE_METHODS.
12556         * decl.c (duplicate_decls): Lose references to DECL_NEXT_METHOD.
12557         * tree.c (tree_copy_lang_decl_for_deferred_output): Likewise.
12558         * cp-tree.h (CLASSTYPE_METHODS): Lose.
12559         (CLASSTYPE_METHOD_VEC): Point to lang_spec->methods instead of
12560         TYPE_METHODS.
12561         (struct lang_decl): Lose next_method field.
12562         (DECL_NEXT_METHOD): Lose.
12563         * class.c (finish_struct_methods): Don't mess with TYPE_METHODS.
12564         (finish_struct): Just use TYPE_METHODS; we don't need fn_fields
12565         anymore.
12566         (finish_struct_methods): Don't mess with the TREE_CHAINs in
12567         fn_fields.
12568
12569         * search.c (add_conversions): Don't use TREE_CHAIN to traverse method
12570         vector.
12571
12572         * call.c (build_method_call): Synthesize here even when not inlining.
12573         * typeck.c (build_function_call_real): Likewise.
12574
12575 Wed Dec 13 15:02:39 1995  Ian Lance Taylor  <ian@cygnus.com>
12576
12577         * cp/lex.c (check_newline): If DBX_DEBUGGING_INFO and write_symbols
12578         == DBX_DEBUG, call dbxout_start_new_source_file and
12579         dbxout_resume_previous_source_file when appropriate.
12580
12581 Tue Dec 12 20:38:55 1995  Mike Stump  <mrs@cygnus.com>
12582
12583         * except.c (start_anon_func): Push to the top level.
12584         (end_anon_func): Pop from the top level.
12585
12586 Mon Dec 11 18:56:14 1995  Mike Stump  <mrs@cygnus.com>
12587
12588         * cp-tree.h (build_cleanup): New routine to build cleanups.
12589         * decl.c (expand_static_init): Use build_cleanup to build a cleanup
12590         call at ctor time and use atexit to run it later.
12591         * decl2.c (build_cleanup): New routine, taken from finish_file.
12592         (finish_file): Use build_cleanup instead, and don't put function
12593         local statics in global dtor list.
12594         
12595 Wed Dec  6 14:34:29 1995  Mike Stump  <mrs@cygnus.com>
12596
12597         * except.c (expand_throw): Ensure that we have cleanups, if we try
12598         and expand cleanups.
12599
12600 Wed Dec  6 11:48:21 1995  Mike Stump  <mrs@cygnus.com>
12601
12602         * except.c (expand_throw): Add logic to manage dynamic cleanups for
12603         the EH object.
12604         (expand_end_catch_block): Use the magic of expand_goto, instead of
12605         emit_jump so that we get the cleanup for any catch clause parameter
12606         and the cleanup for the exception object.  Update to reflect label
12607         changes.
12608         (push_eh_cleanup): New routine to register a cleanup for an
12609         exception object.
12610         (empty_fndecl): Used to default cleanup actions to
12611         nothing.
12612         (init_exception_processing): Setup empty_fndecl.  Setup
12613         saved_cleanup.
12614         (expand_start_catch_block): Update to reflect label changes.  Call
12615         push_eh_object to register the cleanup for the EH object.
12616         (start_anon_func): New routine to start building lambda expressions
12617         from trees.
12618         (end_anon_func): New routine to end them.
12619         (struct labelNode): Change so that we can use tree labels, or rtx
12620         labels.
12621         (saved_cleanup): Object to check for dynamic cleanups for the
12622         exception handling object.
12623         (push_label_entry): Change so that we can use tree labels, or rtx
12624         labels.
12625         (pop_label_entry): Likewise.
12626         (top_label_entry): Likewise.
12627         (expand_start_all_catch): Use tree label instead of rtx label, so
12628         that we can get the magic of expand_goto.
12629         (expand_end_all_catch): Update to reflect label changes.
12630
12631         * class.c (build_vfn_ref): Remove building_cleanup logic, as we now
12632         use UNSAVE_EXPRs.
12633         typeck.c (get_member_function_from_ptrfunc): Remove remnants of
12634         building_cleanup logic, as we now use UNSAVE_EXPRs.
12635         * cp-tree.h (unsave_expr): Declare it.
12636         * decl.c (building_cleanup): Remove.
12637         (maybe_build_cleanup): Remove building_cleanup logic, and use
12638         UNSAVE_EXPR instead.
12639
12640 Sun Dec  3 01:34:58 1995  Mike Stump  <mrs@cygnus.com>
12641
12642         * gc.c (build_t_desc): Update error message to say <typeinfo>.
12643
12644 Thu Nov 30 12:30:05 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
12645
12646         * decl.c (pushdecl): Only warn about shadowing a local variable if
12647         warn_shadow is true.
12648
12649 Sun Nov 26 16:06:55 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
12650
12651         * typeck.c (build_binary_op_nodefault): Added warning about
12652         comparisons between different enum types with -Wall, unless
12653         -fenum-int-equiv set.
12654
12655 Wed Nov 22 15:44:02 1995  Mike Stump  <mrs@cygnus.com>
12656
12657         * class.c (finish_struct_1): Skip down to the inner type in
12658         multidimensional arrays.  Ensures ctors will be made for types that
12659         need constructing.
12660
12661 Wed Nov 22 14:19:22 1995  Mike Stump  <mrs@cygnus.com>
12662
12663         * decl.c (last_dtor_insn): New to track the last compiler generated
12664         insn in a dtor.
12665         (store_parm_decls): Set it.
12666         (finish_function): Use it to see if the dtor is empty.  Avoid doing
12667         vtable setup all the time, if we can.
12668         (struct cp_function): Add last_dtor_insn.
12669         (push_cp_function_context): Save it.
12670         (pop_cp_function_context): Restore it.
12671
12672 Wed Nov 22 11:52:19 1995  Paul Russell  <Rusty.Russell@adelaide.maptek.com.au>
12673
12674         * typeck.c (build_unary_op): Set TREE_NO_UNUSED_WARNING to avoid
12675         warnings.
12676
12677 Tue Nov 21 17:15:23 1995  Mike Stump  <mrs@cygnus.com>
12678
12679         * typeck.c (expand_target_expr): Make sure targets get put into the
12680         current temp_slot_level, so that the free_temp_slots call will reuse
12681         them.
12682
12683 Tue Nov 21 13:32:03 1995  Mike Stump  <mrs@cygnus.com>
12684
12685         * class.c (finish_struct_1): Delay delta fixups for virtual bases
12686         until after we have done the hard virtuals, to avoid a bogus `every
12687         virtual function must have a unique final overrider' for virtual
12688         functions that are only overridden by hard virtuals.
12689
12690 Thu Nov  9 13:35:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
12691
12692         * pt.c (do_function_instantiation): Don't try to find a file-scope
12693         template for a member function.
12694
12695 Tue Nov 14 06:20:35 1995  Mike Stump  <mrs@cygnus.com>
12696
12697         * g++.c (main): Add handling of -nodefaultlibs.
12698
12699 Mon Nov 13 15:45:34 1995  Mike Stump  <mrs@cygnus.com>
12700
12701         * cp-tree.h (INDIRECT_BIND): Add a way for the frontend to
12702         distinguish between direct bindings of reference variables, and
12703         indirect bindings of reference variables.
12704         * cvt.c (build_up_reference): Use it.
12705         * typeck.c (convert_arguments): Use it to indicate this is an
12706         indirect binding.
12707         * decl.c (cp_finish_decl): Ensure that we reuse stack slots as fast
12708         as they are unused.
12709         (expand_static_init): Likewise.
12710         (cplus_expand_expr_stmt): Likewise.
12711         * decl2.c (finish_file): Likewise.
12712         * init.c (perform_member_init): Likewise.
12713         (emit_base_init): Likewise.
12714         (expand_aggr_vbase_init_1): Likewise.
12715
12716 Fri Nov 10 09:18:09 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
12717
12718         * decl.c (push_namespace): Rewrite to use build_lang_decl, so we
12719         get a DECL_LANG_SPECIFIC node.
12720         * cp-tree.h (lang_decl_flags): Add new member `level'.
12721         (NAMESPACE_LEVEL): Don't use decl.arguments, instead use the
12722         decl_flags level member.
12723
12724 Mon Nov  6 18:36:13 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
12725
12726         * call.c (build_method_call): Make sure instance has a
12727         TYPE_LANG_SPECIFIC node before we dive into it.  
12728
12729 Sat Nov  4 20:01:52 1995  Jason Molenda  <crash@phydeaux.cygnus.com>
12730
12731         * method.c (make_thunk): use TREE_SET_CODE to set thunk's tree code.
12732
12733 Thu Nov  2 17:56:57 1995  Mike Stump  <mrs@cygnus.com>
12734
12735         * decl.c (duplicate_decls): When smashing decls, smash staticness in
12736         the usual way.
12737
12738 Thu Nov  2 16:44:02 1995  Mike Stump  <mrs@cygnus.com>
12739
12740         * decl.c (poplevel): Handle the merging of subblocks of cleanups
12741         when finishing blocks that have already been created (usually due to
12742         the fixup goto code).  Fixes bad debugging information.
12743
12744 Wed Nov  1 12:33:53 1995  Jason Merrill  <jason@yorick.cygnus.com>
12745
12746         * method.c (hack_identifier): Don't abort when we get a TREE_LIST
12747         that's not a list of overloaded functions.
12748
12749 Wed Nov  1 11:38:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
12750
12751         * decl2.c (mark_vtable_entries): Check DECL_LANG_SPECIFIC on fn
12752         before trying to use DECL_ABSTRACT_VIRTUAL_P.
12753
12754 Tue Oct 31 11:56:55 1995  Jason Merrill  <jason@yorick.cygnus.com>
12755
12756         * decl2.c (mark_used): New function for hooking into setting of
12757         TREE_USED on decls.
12758         * call.c (build_method_call): Use it.
12759         * class.c (instantiate_type): Likewise.
12760         * init.c (build_offset_ref): Likewise.  Don't call assemble_external
12761         for all like-named functions.
12762         * method.c (hack_identifier): Likewise.
12763         (emit_thunk): Don't call assemble_external.
12764         (make_thunk): Create thunk as a FUNCTION_DECL so that it
12765         gets the right mode and ENCODE_SECTION_INFO works.
12766         
12767         * parse.y: Use mark_used.  Pass operator names to do_identifier.
12768         * lex.c (do_identifier): Handle operator names.
12769
12770         * decl2.c (grokclassfn): Tweak __in_chrg attributes.
12771
12772 Thu Oct 26 16:45:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
12773
12774         * errfn.c: Include stdio.h.
12775         (cp_sprintf): Take out decl of sprintf, and cast sprintf to errorfn*.
12776
12777 Wed Oct 25 18:58:41 1995  Mike Stump  <mrs@cygnus.com>
12778
12779         * typeck2.c (digest_init): Always convert initializers to the
12780         right type.
12781
12782 Wed Oct 25 13:25:24 1995  Mike Stump  <mrs@cygnus.com>
12783
12784         * init.c (member_init_ok_or_else): Don't allow member initializers
12785         for indirect members, as it is invalid.
12786
12787 Wed Oct 25 11:35:28 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
12788
12789         * decl.c (grokdeclarator): Don't allow `friend signed ()'.
12790
12791 Fri Oct 20 10:30:59 1995  Mike Stump  <mrs@cygnus.com>
12792
12793         * parse.y (for.init.statement): Catch compound statements inside for
12794         initializations, if we're being pedantic.
12795
12796 Fri Oct 20 10:03:42 1995  Mike Stump  <mrs@cygnus.com>
12797
12798         * decl.c (lookup_tag): Return NULL_TREE if we don't find what we are
12799         looking for.
12800
12801 Thu Oct 19 14:26:10 1995  Mike Stump  <mrs@cygnus.com>
12802
12803         * error.c (dump_expr): Don't core dump when a boolean expression is
12804         used as a default argument.
12805
12806 Thu Oct 19 10:36:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
12807
12808         * class.c (finish_struct_bits): Check aggregate_value_p instead of
12809         RETURN_IN_MEMORY.
12810
12811 Wed Oct 18 18:12:32 1995  Jason Merrill  <jason@yorick.cygnus.com>
12812
12813         * class.c (finish_struct_bits): Also set TREE_ADDRESSABLE on a
12814         BLKmode type that would otherwise be returned in registers.
12815
12816 Mon Oct 16 12:32:19 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
12817
12818         * g++.c (WITHLIBC): New macro.
12819         (main): Declare saw_libc.  Use WITHLIBC if `-lc' was used; set
12820         saw_libc and pass it at the end if it was set.
12821
12822 Wed Oct 11 16:30:34 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
12823
12824         * parse.y (fn.def1): Call split_specs_attrs in
12825         declmods notype_declarator case.