OSDN Git Service

* decl.c (grokfndecl): Set DECL_CONTEXT to namespace if appropriate.
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 1998-10-17  Jason Merrill  <jason@yorick.cygnus.com>
2
3         * decl.c (grokfndecl): Set DECL_CONTEXT to namespace if appropriate.
4         (grokvardecl): Likewise.
5
6 Sat Oct 17 23:27:20 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7
8         * class.c (make_method_vec): Cast 1st argument of `bzero' to (PTR).
9         (add_method): Likewise for arguments 1 & 2 of `bcopy'.
10         
11         * decl.c (signal_catch): Mark with ATTRIBUTE_NORETURN.
12
13         * pt.c (process_partial_specialization): Cast 1st argument of
14         `bzero' to (PTR).
15
16         * tree.c (build_base_fields): Cast `base_align' to (int) when
17         comparing against one.
18
19 1998-10-16  Mark Mitchell  <mark@markmitchell.com>
20
21         * decl.c (lookup_name_real): Handle template parameters for member
22         temlates where said parameters have the same name as the
23         surrounding class.
24         
25         * decl.c (expand_static_init): Build cleanups before entering the
26         anonymous function used to do them to avoid access-checking
27         confusion.
28
29         * decl.c (grokfndecl): Add back call to cplus_decl_attributes
30         accidentally removed by previous change, and make DECL_RTL here.
31         * class.c (add_method): Don't make DECL_RTL here.
32         
33         * pt.c (for_each_template_parm): Don't examine uninstantiated
34         default arguments.
35
36 1998-10-16  Dave Brolley  <brolley@cygnus.com>
37
38         * lex.c (real_yylex): Fix unaligned access of wchar_t.
39
40 1998-10-16  Mark Mitchell  <mark@markmitchell.com>
41
42         * class.c (add_method): Fix documentation to reflect previous
43         changes.  Check for duplicate method declarations here.
44         * decl.c (decls_match): Handle FUNCTION_DECL vs TEMPLATE_DECL
45         correctly; such things never match.
46         (grokfndecl): Don't look for duplicate methods here.
47         * decl2.c (check_classfn): Don't assume names are mangled.
48         Don't add bogus member function declarations to a class before the
49         class type is complete.
50         (grokfield): Reformat error message.
51         * method.c (set_mangled_name_for_decl): Don't mangle names while
52         procesing_template_decl.
53         
54 1998-10-16  Jason Merrill  <jason@yorick.cygnus.com>
55
56         * typeck.c (build_indirect_ref): Complain about a pointer to data
57         member, too.
58         * typeck2.c (build_m_component_ref): Don't indirect a pointer to
59         data member.
60         * init.c (resolve_offset_ref): Don't undo the above.
61
62         * cp-tree.h (DECL_C_BIT_FIELD, SET_DECL_C_BIT_FIELD): New macros.
63         (struct lang_decl_flags): Add `bitfield'.
64         * class.c (finish_struct_1): Use DECL_C_BIT_FIELD instead of
65         DECL_BIT_FIELD.
66         * decl2.c (grokbitfield, grok_alignof): Likewise.
67         * init.c (build_offset_ref): Likewise.
68         * typeck.c (build_component_addr, expr_sizeof): Likewise.
69         * cvt.c (build_up_reference): Don't crash if taking the address
70         returns error_mark_node.
71
72         * decl.c (grokfndecl): Also check ctype when checking for ::main().
73
74 1998-10-15  Jason Merrill  <jason@yorick.cygnus.com>
75
76         * decl.c (grokfndecl): ::main and __builtin_* get C linkage.
77         Do mangling here.
78         (grokdeclarator): Instead of here.
79         * friend.c (do_friend): Lose special handling of ::main and
80         __builtin_*.
81         * cp-tree.h (DECL_MAIN_P): Check for C linkage.
82
83         * spew.c (yylex): Clear looking_for_typename if we got
84         'enum { ... };'.
85
86 1998-10-15  Mark Mitchell  <mark@markmitchell.com>
87
88         * class.c (maybe_warn_about_overly_private_class): Improve error
89         messages for class with only private constructors.
90
91         * cp-tree.def (TYPENAME_TYPE): Add to documentation.
92         * cp-tree.h (TYPENAME_TYPE_FULLNAME): Document.
93         (build_typename_type): New function.
94         * decl.c (build_typename_type): Broken out from ...
95         (make_typename_type): Use it.
96         * search.c (lookup_field): Likewise.
97
98 1998-10-14 Benjamin Kosnik  <bkoz@rhino.cygnus.com>
99
100         * pt.c (convert_nontype_argument): Check against type_referred_to.
101         * decl.c (grokvardecl): Check for declarator name before building
102         DECL_ASSEMBLER_NAME.
103          
104 1998-10-14  Mark Mitchell  <mark@markmitchell.com>
105
106         * pt.c (lookup_template_class): Add comment.
107         (instantiate_class_template): Don't mark the _TYPE node for
108         member class templates as an instantiation.
109
110 1998-10-14  Jason Merrill  <jason@yorick.cygnus.com>
111
112         * decl.c (grokfndecl): Fix my thinko.
113
114 1998-10-13  Jason Merrill  <jason@yorick.cygnus.com>
115
116         * tinfo2.cc (fast_compare): Remove.
117         (before): Just use strcmp.
118         * tinfo.cc (operator==): Just use strcmp.
119
120 1998-10-13  Klaus-Georg Adams  <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>
121
122         * decl.c (grokfndecl): Don't check for linkage in `extern "C"'
123         declarations.
124
125 1998-10-13  Mark Mitchell  <mark@markmitchell.com>
126
127         * cp-tree.h (specializations_of_same_template_p): Remove.
128         * search.c (get_template_base): Don't use it.
129         (get_template_base_recursive): Likewise.
130         * pt.c (specializations_of_same_template_p): Remove.
131         (unify): Don't use it.
132         (lookup_template_class): Find the correct parent when setting
133         CLASSTYPE_TI_TEMPLATE.
134         
135 1998-10-12  Jason Merrill  <jason@yorick.cygnus.com>
136
137         * tinfo.cc (operator==): Always compare names.
138
139 1998-10-12  Herman ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
140
141         * decl.c (start_function): Fix cut-and-paste error.
142
143 1998-10-12  Jason Merrill  <jason@yorick.cygnus.com>
144
145         * inc/typeinfo: Add #pragma interface.
146         (operator!=): Just call operator==.
147         * tinfo.cc: Add #pragma implementation.
148         (operator==): Move from inc/typeinfo and tinfo2.cc.
149         Check __COMMON_UNRELIABLE instead of _WIN32.
150
151         * typeck2.c (my_friendly_abort): Add URL.
152
153 1998-10-12  Alastair J. Houghton <ajh8@doc.ic.ac.uk>
154
155         * decl.c (start_method): Added extra parameter for attributes.
156         * cp-tree.h (start_method): Update prototype.
157         * parse.y (fn.def2): Update start_method parameter list.
158
159 1998-10-11  Mark Mitchell  <mark@markmitchell.com>
160
161         * cp-tree.h (specializations_of_same_template_p): Declare.
162         * pt.c (specializations_of_same_template_p): New function.
163         (unify): Use it.
164         * search.c (get_template_base): Use it.
165         (get_template_base_recursive): Likewise.
166         
167 1998-10-10  Manfred Hollstein  <manfred@s-direktnet.de>
168
169         * decl2.c (start_objects): Add new variable `joiner' and
170         initialize it properly.
171
172 1998-10-09  Mark Mitchell  <mark@markmitchell.com>
173
174         * search.c (expand_upcast_fixups): Tweak to match 1998-10-07
175         change to vtable types.
176
177         * cvt.c (ocp_convert): Avoid infinite recursion caused by
178         1998-10-03 change.
179
180 1998-10-08  Jason Merrill  <jason@yorick.cygnus.com>
181
182         * pt.c (resolve_overloaded_unification): New fn.
183         (try_one_overload): Likewise.
184         (unify): Don't fail on unknown type.
185         (type_unification_real): Likewise.  Use resolve_overloaded_unification
186         to handle an overloaded argument.
187         (template_args_equal): Split out...
188         (comp_template_args): From here.
189         (determine_specialization): Also allow a template with more
190         parms than were explicitly specified.
191         * cp-tree.h: Add template_args_equal.
192         * call.c (resolve_args): Remove TEMPLATE_ID_EXPR code.
193
194 Thu Oct  8 15:58:30 1998  Anthony Green  <green@cygnus.com>
195
196         * semantics.c (finish_asm_stmt): Revert my 1998-09-28
197         change.
198
199 Thu Oct  8 06:00:19 1998  Jeffrey A Law  (law@cygnus.com)
200
201         * typeck.c (unsigned_type): Only return TItype nodes when
202         HOST_BITS_PER_WIDE_INT is >= 64 bits.
203         (signed_type): Similarly.
204         * decl.c (intTI_type_node, unsigned_intTI_type_node): Only declare
205         when HOST_BITS_PER_WIDE_INT is >= 64 bits.
206         (init_decl_processing): Only create TItype nodes when
207         HOST_BITS_PER_WIDE_INT is >= 64 bits.
208         * cp-tree.h (intTI_type_node, unsigned_intTI_type_node): Only declare
209         when HOST_BITS_PER_WIDE_INT is >= 64 bits.
210
211 Wed Oct  7 12:32:44 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
212
213         * Makefile.in (hash.h): Add -L KR-C -F ', 0, 0' flags to gperf.
214         (gxx.gperf): Update comments describing invocation flags.
215         (hash.h): Regenerate using gperf 2.7.1 (19981006 egcs).
216
217 1998-10-07  Mark Mitchell  <mark@markmitchell.com>
218
219         * class.c (finish_struct_1): Add commentary on prevous change.
220
221         * cp-tree.h (vtbl_ptr_type_node): New variable.
222         * class.c (build_vtbl_ref): Don't indirect through the vptr; it's
223         already of the right type.
224         (finish_struct_1): Make the vptr be of type vtbl_ptr_type_node.
225         Simplify code to grow vtable.
226         * decl.c (vtbl_ptr_type_node): Define.
227         (init_decl_processing): Initialize it.
228         
229 1998-10-06  Mark Mitchell  <mark@markmitchell.com>
230
231         * cp-tree.def (PTRMEM_CST): New tree node.
232         * cp-tree.h (ptrmem_cst): New type.
233         (lang_type): Remove local_typedecls.
234         (dummy): Increase to 12 bits from 11.
235         (CLASSTYPE_LOCAL_TYPEDECLS): Remove.
236         (PTRMEM_CST_CLASS): New macro.
237         (PTRMEM_CST_MEMBER): Likewise.
238         (current_access_specifier): New variable.
239         (current_class_type): Remove duplicate declaration.
240         (finish_struct): Change prototype.
241         (unreverse_member_declarations): New function.
242         (pushdecl_class_level): Change prototype.
243         (grok_enum_decls): Remove.
244         (fixup_anonymous_union): New function.
245         (grok_x_components): Change prototype.
246         (tsubst_chain): Remove.
247         (finish_member_template_decl): Likewise.
248         (check_explicit_specialization): Fix indentation.
249         (finish_class_definition): Change prototype.
250         (finish_member_class_template): Likewise.
251         (finish_member_declaration): New function.
252         (check_multiple_declarators): Likewise.
253         * class.c (class_stack_node_t): New type.
254         (current_class_base): Remove.
255         (current_class_stack): Change type.
256         (current_access_specifier): New variable.
257         (grow_method): Remove.
258         (check_member_decl_is_same_in_complete_scope): Break out from
259         finish_struct.
260         (make_method_vec): New function.
261         (free_method_vec): Likewise.
262         (add_implicitly_declared_members): Break out from finish_struct_1.
263         (free_method_vecs): New variable.
264         (add_method): Rework for direct use from parser.
265         (handle_using_decl): Watch for NULL_TREE while iterating through
266         CLASSTYPE_METHOD_VEC.
267         (finish_struct_methods): Don't build CLASSTYPE_METHOD_VEC here;
268         just do some error-checking.
269         (warn_hidden): Change iteration through CLASSTYPE_METHOD_VEC.
270         (finish_struct_1): Simplify.  Use add_implicitly_declared_members.
271         (finish_struct): Change prototype.  Simplify; fields and methods
272         are already set up at this point.
273         (init_class_processing): Set up current_class_stack.
274         (pushclass): Save current_access_specifier.
275         (popclass): Restore it.
276         (currently_open_class): Simplify.
277         (build_self_reference): Remove use of CLASSTYPE_LOCAL_TYPEDECLS.
278         * decl.c (saved_scope): Add access_specifier.
279         (maybe_push_to_top_level): Save it.
280         (pop_from_top_level): Restore it.
281         (maybe_process_template_type_declaration): Use
282         finish_member_declaration. 
283         (pushtag): Likewise.
284         (pushdecl_class_level): Don't return a value.
285         (fixup_anonymous_union): Break out from grok_x_components.
286         (shadow_tag): Use it.
287         (xref_tag): Complain about using an elaborated type specifier to
288         reference a template type parameter or typedef name.
289         (xref_basetypes): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
290         (current_local_enum): Remove.
291         (build_enumerator): Call finish_member_declaration.
292         (grok_enum_decls): Remove.
293         * decl2.c (grok_x_components): Simplify.
294         (check_classfn): Change iteration through CLASSTYPE_METHOD_VEC.
295         (grokfield): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
296         (merge_functions): Add to comment.
297         (arg_assoc_type): Prototype.
298         (arg_assoc): Pass as many arguments as there are parameters.
299         * error.c (dump_expr): Handle PTRMEM_CST.  Improve handling of
300         OFFSET_REF.
301         * expr.c (cpls_expand_expr): Remove dead code.  Handle
302         PTRMEM_CST.
303         * friend.c (do_friend): Lookup friends when in nested classes.
304         Change comments.
305         * init.c (build_offset_ref): Do lookup even for classes that are
306         only partially defined.
307         (decl_constant_value): Remove dead code.
308         * method.c (build_overload_value): Remove hack where by TYPE was
309         not a TYPE.  Handle PTRMEM_CST.
310         (build_template_parm_names): Don't pass a PARM_DECL where a TYPE
311         should go.
312         * parse.y (components, notype_components, component_decl,
313         component_decl_1, component_declarator, component_declarator0):
314         Now all are itype rather than ttype.  Rework to add members to
315         classes on the fly.
316         (typesqpecqual_reserved): Use check_multiple_declarators.
317         (structsp): Update class to finish_class_definition.
318         (do_xref_defn): Unsplit into named_class_head.
319         (access_specifier): Set current_access_specifier.
320         * pt.c (set_current_access_from_decl): New function.
321         (finish_member_template_decl): Don't take the parameters.
322         (comp_template_args): Make more robust.
323         (lookup_template_class): Don't use current_local_enum.
324         (for_each_template_parm): Handle PTRMEM_CST.
325         (instantiate_class_template): Use set_current_access_from_decl,
326         finish_member_declaration and unreverse_member_declarations.  Set
327         lineno/input_filename before generating implicit member functions.  
328         (type_unification_real): Don't assume back-unification happens
329         only for the last argument.
330         (regenerate_decl_from_template): Call pushclass a bit earlier.
331         (tsubst_chain): Remove.
332         (tsubst_enum): Use set_current_access_from_decl.
333         (set_mangled_name_for_template_decl): Fix indentation.
334         * search.c (lookup_fnfields_1): Change iteration through
335         CLASSTYPE_METHOD_VEC.
336         (dfs_pushdecls): Likewise.
337         (dfs_compress_decls): Likewise.
338         (add_conversions): Likewise.
339         * semantics.c (finish_class_definition): Don't take components.
340         Change call to finish_struct.
341         (finish_member_declaration): New function.
342         (finish_member_class_template): Don't take template parameters.
343         Change call to grok_x_components.  Call finish_member_template_decl.
344         (check_multiple_declarators): New function.
345         * sig.c (append_signature_fields): Work from the TYPE_METHODS, not
346         a passed in fieldlist.
347         * tree.c (search_tree): Handle PTRMEM_CST.
348         (mapcar): Likewise.
349         * typeck.c (unary_complex_lvalue): Build PTRMEM_CSTs, not
350         INTEGER_CSTs, for pointer-to-data members.
351         
352         * call.c (resolve_args): Resolve template specializations, if
353         possible.
354
355 Tue Oct  6 07:57:26 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
356
357         * Makefile.in (spew.o): Depend on toplev.h.
358
359         * call.c (compare_ics): Initialize variables `deref_from_type2',
360         `deref_to_type1' and `deref_to_type2'.
361
362         * except.c (get_eh_type): Hide prototype and definition.
363         (process_start_catch_block_old): Remove unused static prototype.
364
365         * pt.c (tsubst_decl): Initialize variable `argvec'.
366
367         * spew.c: Include toplev.h.
368
369 1998-10-05  Jason Merrill  <jason@yorick.cygnus.com>
370
371         * pt.c (instantiate_decl): Do save and restore file position.
372
373 1998-10-05  Martin von Löwis  <loewis@informatik.hu-berlin.de>
374
375         * method.c (build_decl_overload_real): Clear
376         numeric_output_need_bar after __.
377
378 1998-10-05  Nathan Sidwell  <nathan@acm.org>
379
380         * call.c (build_new_method_call): Issue 'incomplete type' error,
381         if class is not defined.
382
383 1998-10-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
384
385         * call.c (build_object_call): Move declaration of variable
386         `fn' into the scope where it is used.  Don't access variable
387         `fn' when it is uninitialized, instead use `fns'.
388
389 1998-10-04  Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
390
391         * errfn.c (cp_thing): Print buf as a string not as a printf format
392         to avoid problems with the operator%. Consequently, `%%' sequences
393         in format are copied as `%' in buf.
394
395 1998-10-04  Jason Merrill  <jason@yorick.cygnus.com>
396
397         * pt.c (pop_tinst_level): Call extract_interface_info.
398         (instantiate_decl): Don't save and restore file position.
399
400         * decl.c (cp_finish_decl): Make statics in extern inlines and
401         templates common, if possible and the target doesn't support weak
402         symbols.
403
404         * decl.c (grokdeclarator): Remove redundant calls to
405         build_type_variant and some duplicated code.
406         * sig.c (build_signature_reference_type): Only take the type parm.
407         (build_signature_pointer_type): Likewise.
408         * tree.c (build_cplus_method_type): Adjust.
409         * cp-tree.h: Update.
410
411 1998-10-04  Mark Mitchell  <mark@markmitchell.com>
412
413         * call.c (build_over_call): Make pedwarns about dropped qualifiers
414         into full-fledged errors.
415         * cvt.c (convert_to_reference): Likewise.
416         * typeck.c (convert_for_assignment): Likewise.
417
418         * search.c (expand_upcast_vtables): In addition to unsetting 
419         TREE_READONLY, remove top-level const type qualifier.
420
421 1998-10-03  Mark Mitchell  <mark@markmitchell.com>
422
423         * class.c (current_class_ptr, current_class_ref): Clarify
424         documentation.
425         * cvt.c (ocp_convert): Don't expect fold to remove all trivial
426         NOP type conversions.
427         * decl.c (decls_match): Use comptypes directly; ignore
428         qualifiers on the DECL.
429         (duplicate_decls): Remove qualifier checks on DECL.
430         (grokdeclarator): Make the type built up include top-level
431         qualifiers.
432         * decl2.c (do_dtors): Fix spelling error.
433         * error.c (dump_simple_decl): Don't look at qualifiers on the decl
434         when printing type information.
435         * init.c (build_new_1): Add documentation.  Deal with the fact
436         that type of allocated memory now contains qualifiers.
437         * lex.c (is_global): Improve error-recovery.
438         * sig.c (build_member_function_pointer): Don't cast away const
439         on fields of sigtable_entry_type.
440         * tree.c (lvalue_type): Don't look at top-level qualifiers on
441         expressions.
442         * typeck.c (decay_conversion): Likewise.
443         (build_component_ref): Make sure the type of the COMPONENT_REF
444         contains top-level qualifiers, as appropriate.  Improve
445         error-handling. 
446         (build_indirect_ref): Simplify.  Don't strip top-level qualifiers.
447         (build_array_ref): Likewise.
448         (build_unary_op): Improve error-recovery.
449         (unary_complex_lvalue): Make taking the address a bound member
450         function an error, not a sorry.
451         (build_conditional_expr): Look at the type qualifiers, not the
452         qualifiers on the expression itself.
453         
454 1998-10-03  Jason Merrill  <jason@yorick.cygnus.com>
455
456         * decl2.c (merge_functions): Remove duplicates.
457
458         * decl2.c: Add -f{no-,}implicit-inline-templates.
459         (lang_decode_option): Unset it if -frepo.
460         (import_export_decl): Check it.
461
462         * decl.c (lookup_name_real): Template parms also take precedence
463         over implicit typename.  Only warn if yylex.
464
465         * typeck.c (build_conditional_expr): Only fold if ifexp is an
466         INTEGER_CST.
467
468         * decl2.c (finish_vtable_vardecl): Check DECL_INTERFACE_KNOWN
469         instead of linkage.
470
471 1998-10-01  Jason Merrill  <jason@yorick.cygnus.com>
472
473         * cp-tree.h (FORMAT_VBASE_NAME): New macro.
474         * class.c (build_vbase_pointer): Use it.
475         * rtti.c (expand_class_desc): Likewise.
476         * tree.c (build_vbase_pointer_fields): Likewise.
477
478 Thu Oct  1 10:43:45 1998  Nick Clifton  <nickc@cygnus.com>
479
480         * decl.c (start_decl): Add invocation of
481         SET_DEFAULT_DECL_ATTRIBUTES, if defined.
482         (start_function): Add invocation of
483         SET_DEFAULT_DECL_ATTRIBUTES, if defined.
484
485         * lex.c: Replace occurances of HANDLE_SYSV_PRAGMA with
486         HANDLE_GENERIC_PRAGMAS.
487         
488 1998-09-28  Anthony Green  <green@cygnus.com>
489
490         * semantics.c (finish_asm_stmt): Always permit volatile asms.
491
492 1998-09-28  Mark Mitchell  <mark@markmitchell.com>
493
494         * decl.c (grokdeclarator): Tighten checks for invalid
495         destructors.  Improve error-messages and error-recovery.
496         * decl2.c (check_classfn): Don't assume that mangled destructor 
497         names contain type information.
498         
499 1998-09-25  Jason Merrill  <jason@yorick.cygnus.com>
500
501         * search.c (get_base_distance): Remove assert.
502
503         * decl2.c (build_anon_union_vars): Don't process a field with no
504         name.
505         (finish_anon_union): Also complain about local anon unions with no
506         members.
507
508 1998-09-25  Martin von Löwis  <loewis@informatik.hu-berlin.de>
509
510         * decl.c (lookup_namespace_name): If the name is a namespace,
511         return it immediately.
512
513 Fri Sep 25 11:45:38 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
514
515         * cp-tree.h (define_case_label): Remove unused parameter.
516         (check_java_method): Likewise.
517         (grokclassfn): Likewise.
518         (expand_aggr_init): Likewise.
519         (build_x_delete): Likewise.
520         (maybe_end_member_template_processing): Likewise.
521         (unshare_base_binfos): Add prototype.
522         (string_conv_p): Likewise.
523         (my_friendly_abort): Mark with ATTRIBUTE_NORETURN.
524
525         * cvt.c (build_up_reference): Remove unused parameter
526         `checkconst', all callers changed.
527         (build_type_conversion): Mark parameter `code' with
528         ATTRIBUTE_UNUSED.
529         (build_expr_type_conversion): Initialize variable `conv'.
530
531         * decl.c (push_namespace): Initialize variable `d'.
532         (define_case_label): Remove unused parameter `decl', all callers
533         changed.
534
535         * decl2.c (lang_decode_option): If !USE_CPPLIB, mark parameter
536         `argc' with ATTRIBUTE_UNUSED.
537         (grokclassfn): Remove unused parameter `cname', all callers
538         changed.
539         (check_java_method): Likewise for parameter `ctype'.
540         (copy_assignment_arg_p): Mark parameter `virtualp' with
541         ATTRIBUTE_UNUSED.
542         (finish_prevtable_vardecl): Likewise for parameter `prev'.
543
544         * expr.c (extract_init): Likewise for parameters `decl' and `init'.
545
546         * init.c (expand_aggr_init_1): Remove unused parameter
547         `alias_this', all callers changed.
548         (expand_aggr_init): Likewise.
549         (expand_default_init): Likewise.
550         (build_new_1): Initialize variable `susp'.
551         (build_x_delete): Remove unused parameter `type', all callers
552         changed.
553
554         * lex.c (set_typedecl_interface_info): Mark parameter `prev' with
555         ATTRIBUTE_UNUSED.
556         (readescape): Use (unsigned) value in shift.
557         (real_yylex): Likewise.  Likewise.  Also cast `sizeof' to int when
558         comparing to a signed quantity.
559
560         * pt.c (maybe_end_member_template_processing): Remove unused
561         parameter `decl', all callers changed.
562         (check_explicit_specialization): Add braces around empty body in
563         an else-statement.
564         (current_template_args): Initialize variable `args'.
565         (lookup_template_class): Likewise for variable `prev_local_enum'.
566         (tsubst_decl): Likewise for variable `r'.
567         (set_mangled_name_for_template_decl): Initialize variable
568         `context'.
569
570         * spew.c (scan_tokens): Change type of parameter `n' to unsigned.
571         Likewise for variable `i'.
572         (yylex): Initialize variable `trrr'.
573
574         * typeck.c (compparms): Mark variable `strict' with
575         ATTRIBUTE_UNUSED.
576
577         * xref.c (simplify_type): Cast argument of ctype function to
578         `unsigned char'.
579
580 1998-09-24  Mark Mitchell  <mark@markmitchell.com>
581
582         * cp-tree.h (language_lvalue_valid): Remove.
583         * decl.c (grokdeclarator): Don't disallow references to functions.
584         * tree.c (lvalue_p_1): New function, combining duplicated
585         code from ...
586         (lvalue_p): Use it.
587         (real_lvalue_p): Likewise.
588         * typeck.c (language_lvalue_valid): Remove.
589         (build_modify_expr): Treat FUNCTION_TYPEs as readonly, even though
590         they don't have TREE_READONLY set.
591         * typeck2.c (readonly_error): Add case for FUNCTION_DECLs.
592         
593 1998-09-24  Benjamin Kosnik  <bkoz@loony.cygnus.com>
594
595         * spew.c (yylex): Give diagnostic.
596         * hash.h (is_reserved_word): Add export.
597         * gxx.gperf: Ditto.
598         * lex.h (rid): Add RID_EXPORT.
599         * lex.c (init_parse): Ditto. 
600
601 Tue Sep 22 21:01:19 1998  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
602
603         * friend.c (do_friend): Make warning a full sentence.
604
605 1998-09-22  Mark Mitchell  <mark@markmitchell.com>
606
607         * parse.y (component_decl_list): Improve error-recovery.
608
609 1998-09-22  Benjamin Kosnik  <bkoz@loony.cygnus.com>
610
611         * decl.c (make_typename_type): Move error to point where name
612         variable can be used by dump_type.
613
614 1998-09-22  Mark Mitchell  <mark@markmitchell.com>
615
616         * decl.c (grokfndecl): Improve error-recovery.
617         * decl2.c (grokfield): Likewise.
618         * pt.c (finish_member_template_decl): Likewise.
619
620 1998-09-20  Martin von Löwis  <loewis@informatik.hu-berlin.de>
621
622         * method.c (hack_identifier): Finding multiple members is always
623         an error.
624
625 1998-09-21  Per Bothner  <bothner@cygnus.com>
626
627         * Make-lang.in (c++-filt):  Link libiberty.a after cxxmain.o.
628
629 Mon Sep 21 01:53:05 1998  Felix Lee  <flee@cygnus.com>
630
631         * lex.c (init_lex): Use getenv ("LANG"), not GET_ENVIRONMENT ().
632
633 1998-09-20  Mark Mitchell  <mark@markmitchell.com>
634
635         * class.c (maybe_warn_about_overly_private_class): Reformat.
636
637 1998-09-17  Andrew MacLeod  <amacleod@cygnus.com>
638
639         * exception.cc (__cplus_type_matcher): realign some code.
640
641 1998-09-16  Mark Mitchell  <mark@markmitchell.com>
642
643         * Make-lang.in (tinfo.o): Use CXXFLAGS when compiling.
644         (tinfo2.o): Likewise.
645         (exception.o): Likewise.
646         (new.o): Likewise.
647         (opnew.o): Likewise.
648         (opnewnt.o): Likewise.
649         (opvnew.o): Likewise.
650         (opvnewnt.o): Likewise.
651         (opdel.o): Likewise.
652         (opdelnt.o): Likewise.
653         (opvdel.o): Likewise.
654         (opvdelnt.o): Likewise.
655
656 1998-09-16  Richard Henderson  <rth@cygnus.com>
657
658         * decl.c (init_decl_processing): Kill __builtin_fp and __builtin_sp.
659
660 1998-09-15  Alexandre Oliva  <oliva@dcc.unicamp.br>
661
662         * call.c (build_field_call): handle static data members too
663
664         * typeck.c (comptypes): when comparing pointer types, check
665         whether referred types match even in strictest modes
666
667 1998-09-15  Mark Mitchell  <mark@markmitchell.com>
668
669         * cp-tree.h: Revert previous change.
670         (finish_struct_methods): Remove declaration.
671         * class.c: Revert previous change.
672         (maybe_warn_about_overly_private_class): New function.
673         (finish_struct_methods): Declare here, and make static.  Remove
674         unnecessary parameters.  Tidy slightly.  Use
675         maybe_warn_about_overly_private_class. 
676         (finish_struct_1): Adjust.  Remove check for private constructors,
677         now done elsewhere.
678         (finish_struct): Adjust.
679         
680 1998-09-15  Andrew MacLeod  <amacleod@cygnus.com>
681
682         * except.c (expand_start_catch_block): No need to check for new
683         exception model.
684         (process_start_catch_block_old): Deleted.
685         (process_start_catch_block): Add call to start_decl_1().
686         (expand_end_catch_block): Add call to end_catch_handler().
687         * exception.cc (__cplus_type_matcher): Only check the exception 
688         language if there is an exception table.
689
690 1998-09-15  Andrew MacLeod  <amacleod@cygnus.com>
691
692         * search.c (expand_indirect_vtbls_init): Mark temporary stack slots
693         as used to prevent conflicts with virtual function tables.
694
695 1998-09-14  Mark Mitchell  <mark@markmitchell.com>
696
697         * cp-tree.h (lang_type): Add has_non_private_static_mem_fn.
698         (CLASSTYPE_HAS_NON_PRIVATE_STATIC_MEM_FN): New macro, to access it.
699         * class.c (maybe_class_too_private_p): New function.
700         (finish_struct_methods): Use it.
701         (finish_struct_1): Likewise.
702         (finish_struct): Set CLASSTYPE_HAS_NON_PRIVATE_STATIC_MEM_FN if
703         appropriate.
704         
705         * pt.c (check_specialization_scope): Fix spelling error.
706         (check_explicit_specialization): Remove code to handle explicit
707         specializations in class scope; they are now correctly diagnosed
708         as errors.
709
710 1998-09-10  Mark Mitchell  <mark@markmitchell.com>
711
712         * decl.c (pushdecl): Don't copy types if the
713         DECL_ABSTRACT_ORIGIN of the new decl matches the TYPE_NAME of the
714         type. 
715
716 1998-09-09  Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
717
718         * class.c (get_enclosing_class): New function.
719         (is_base_of_enclosing_class): Likewise.
720         * cp-tree.h (get_enclosing_class): Declare.
721         (is_base_of_enclosing_class): Likewise.
722         * pt.c (coerce_template_parms): Use them.
723
724 1998-09-09  Jason Merrill  <jason@yorick.cygnus.com>
725
726         * g++spec.c (lang_specific_driver): Check whether MATH_LIBRARY is
727         null to decide whether to use it.
728
729         * error.c (dump_type_real): Handle NAMESPACE_DECL.
730         * parse.y (base_class.1): Avoid crash on error.
731
732 1998-09-08  Martin von Löwis  <loewis@informatik.hu-berlin.de>
733
734         * decl.c (make_typename_type): If context is a namespace, the code
735         is in error.
736
737 1998-09-08  Mumit Khan  <khan@xraylith.wisc.edu>
738
739         * parse.y (nomods_initdcl0): Set up the parser stack correctly.
740
741 1998-09-08  Mark Mitchell  <mark@markmitchell.com>
742
743         * cp-tree.h (anonymous_namespace_name): Declare.
744         * decl.c: Define it.
745         (push_namespace): Use anonymous_namespace_name, rather than local
746         static anon_name.
747         * error.c (dump_decl): If a namespace is named
748         anonymous_namespace_name, call it {anonymous}.
749
750         * decl.c (grokparms): Distinguish between references and pointers
751         in error message.
752
753 1998-09-08  Richard Henderson  <rth@cygnus.com>
754             Mark Mitchell  <mark@markmitchell.com>      
755         
756         * pt.c (process_partial_specialization): Consistantly allocate
757         and zero tpd.parms based on ntparms.  Use tpd2.parms, not
758         tpd.parms, where appropriate.
759
760 Sun Sep  6 00:00:51 1998  Jeffrey A Law  (law@cygnus.com)
761
762         * Makefile.in (INCLUDES): Update after recent toplevel gcc
763         reorganizations.
764
765 1998-09-05  Mark Mitchell  <mark@markmitchell.com>
766
767         * cp-tree.h (TI_PENDING_SPECIALIZATION_FLAG): Remove.
768         * class.c (finish_struct): Remove hackery to deal with explicit
769         specializations in class scope.
770         * decl.c (grokfndecl): Improve error-recovery.
771         * decl2.c (grokfield): Likewise.
772         * pt.c (check_specialization_scope): New function.
773         (begin_specialization): Call it.
774         (process_partial_specialization): New function, split out from
775         push_template_decl.  Check partial specializations more
776         stringently.
777         (push_template_decl): Call it.
778         (check_explicit_specialization): Don't attempt to handle explicit
779         specializations in class scope.
780         (template_parm_data): Document.  Add current_arg and
781         arg_uses_template_parms. 
782         (mark_template_parm): Set it.
783         (tsubst_arg_types): Remove unused variable.
784         * semantics.c (begin_class_definition): Tweak.
785         
786 1998-09-04  Mark Mitchell  <mark@markmitchell.com>
787
788         * inc/typeinfo (type_info::type_info(const char*)): Make
789         `explicit'.
790
791         * cp-tree.h (hash_tree_cons_simple): New macro.
792         * pt.c (tsubst_arg_types): New function.  Use hash_tree_cons.
793         (coerce_template_parms): Use make_temp_vec, instead of
794         make_tree_vec.  Document this behavior.
795         (lookup_template_class): Likewise.
796         (tsubst, cases METHOD_TYPE, FUNCTION_TYPE): Use tsubst_arg_types.  
797         Remove dead code (and add ssertion to check its deadness).  Fix
798         bug w.r.t. exception specifications.
799
800 1998-09-03  Jason Merrill  <jason@yorick.cygnus.com>
801
802         * decl2.c (import_export_vtable): Always make artificials comdat.
803         (import_export_decl): Likewise.
804         * pt.c (mark_decl_instantiated): Likewise.
805
806 1998-09-03  Mark Mitchell  <mark@markmitchell.com>
807
808         * cp-tree.h (finish_globally_qualified_member_call_expr):
809         Rename to ...
810         (finish_qualified_call_expr).
811         * semantics.c: Likewise.
812         * parse.y (primary): Use it.
813         * method.c (hack_identifier): Remove redundant code.
814         
815         * init.c (resolve_offset_ref): Call convert_from_reference to
816         handle members of reference type.  Improve error recovery.
817
818 1998-09-03  Benjamin Kosnik  <bkoz@cygnus.com>
819
820         * cp-tree.h: Declare warn_nontemplate_friend.
821         * decl2.c (lang_decode_option): Set.
822         * lang-options.h: Add -Wnon-template-friend.
823         * friend.c (do_friend): Use to toggle non-template function warning.
824
825 1998-09-03  Mark Mitchell  <mark@markmitchell.com>
826
827         * decl.c (finish_enum): Don't resolve CONST_DECLs to their
828         corresponding INTEGER_CSTs when processing_template_decl.
829         * pt.c (tsubst_enum): Tweak accordingly.
830
831 1998-09-03  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
832
833         * decl.c (pushdecl_class_level): Add warning here.
834         (pushdecl): Tweak.
835
836 1998-09-02  Jason Merrill  <jason@yorick.cygnus.com>
837
838         * cvt.c (convert_pointer_to_real): Tidy.
839         * search.c (get_base_distance_recursive): Simplify.
840         (get_base_distance): Likewise.
841
842         * pt.c (unify): Only special-case INTEGER_TYPE if it uses template
843         parms.
844
845 Wed Sep 02 09:25:29 1998  Nick Clifton  <nickc@cygnus.com>
846
847         * lex.c (check_newline):  Call HANDLE_PRAGMA before
848         HANDLE_SYSV_PRAGMA if both are defined.  Generate warning messages
849         if unknown pragmas are encountered.
850         (handle_sysv_pragma): Interpret return code from
851         handle_pragma_token ().  Return success/failure indication rather
852         than next unprocessed character. 
853         (pragma_getc): New function: retrieves characters from the
854         input stream.  Defined when HANDLE_PRAGMA is defined.
855         (pragma_ungetc): New function: replaces characters back into the
856         input stream.  Defined when HANDLE_PRAGMA is defined.
857
858 1998-09-01  Jason Merrill  <jason@yorick.cygnus.com>
859
860         * decl2.c (output_vtable_inherit): Use %cDIGIT in the operands.
861         * class.c (build_vtable_entry_ref): Likewise.
862
863 1998-09-01  Mark Mitchell  <mark@markmitchell.com>
864
865         * cp-tree.h (DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION): New macro.
866         * decl2.c (import_export_decl): Likewise.
867         * pt.c (instantiate_decl): Use it.
868
869 1998-09-01  Jason Merrill  <jason@yorick.cygnus.com>
870
871         * decl.c (lookup_name_real): Also do implicit typename thing for
872         artificial TYPE_DECLs.
873         * search.c (lookup_field): Likewise.
874         (lookup_fnfields, lookup_field): Adjust for implicit typename kludge.
875         * semantics.c (begin_constructor_declarator): Use enter_scope_of.
876         (enter_scope_of): Extract type from implicit typename.
877         (begin_class_definition): Likewise.
878         * lex.c (identifier_type): Handle implicit typename when checking
879         for SELFNAME.
880
881         * cp-tree.h: Declare flag_strict_prototype.
882         * lex.c (do_scoped_id, do_identifier): Don't implicitly_declare if
883         -fstrict-prototype.
884         * decl.c (init_decl_processing): If -f{no,-}strict-prototype wasn't
885         specified, set it to the value of pedantic.
886
887 1998-09-01  Mark Mitchell  <mark@markmitchell.com>
888
889         * decl2.c (arg_assoc): Handle template-id expressions as arguments.
890
891 1998-08-31  Mark Mitchell  <mark@markmitchell.com>
892
893         * decl.c (finish_enum): Handle member enums of classes declared in
894         template functions.
895         
896         * decl2.c (grok_x_components): Strip attributres before calling
897         groktypename. 
898         
899 1998-08-31  Jason Merrill  <jason@yorick.cygnus.com>
900
901         * cp-tree.h, decl2.c: Remove support for -fall-virtual,
902         -fenum-int-equivalence and -fno-nonnull-objects.
903         * class.c (check_for_override): Remove support for -fall-virtual.
904         (finish_struct_1): Likewise.
905         * call.c (build_new_op): Remove support for -fenum-int-equivalence.
906         * typeck.c (build_binary_op_nodefault): Likewise.
907         * cvt.c (ocp_convert): Likewise.
908         * call.c (build_vfield_ref): Remove support for -fno-nonnull-objects.
909         * class.c (build_vbase_path): Likewise.
910
911 Sun Aug 30 22:16:31 1998  H.J. Lu  (hjl@gnu.org)
912
913         * Makefile.in (INTERFACE): New, set to 1.
914
915 1998-08-30  Mark Mitchell  <mark@markmitchell.com>
916
917         * error.c (dump_decl): Use CP_DECL_CONTEXT, not DECL_CONTEXT, when
918         comparing with global_namespace.
919         (dump_aggr_type): Likewise.
920
921         * decl.c (grokfndecl): Issue error on declaration of friend
922         templates with explicit template arguments.
923
924         * pt.c (convert_template_argument): New function, split out
925         from...
926         (coerce_template_parms): Here.
927         (tsubst): Attempt better error-recovery.
928
929 1998-08-28  Benjamin Kosnik  <bkoz@loony.cygnus.com>
930
931         * pt.c (decl_template_parm_p): Add checks for
932         TEMPLATE_TEMPLATE_PARM.
933
934 1998-08-28  Mark Mitchell  <mark@markmitchell.com>
935
936         * lex.c (do_identifier): Fix thinko in previous change.
937
938 1998-08-28  Jason Merrill  <jason@yorick.cygnus.com>
939
940         * search.c (dfs_search, binfo_for_vtable, dfs_bfv_helper): New fns.
941         * decl2.c (output_vtable_inherit): Call binfo_for_vtable.
942
943 1998-08-28  Richard Henderson  <rth@cygnus.com>
944
945         Add support for discarding unused virtual functions.
946         * lang-options.h: Add -fvtable-gc.
947         * cp-tree.h: Add flag_vtable_gc.
948         * decl2.c (output_vtable_inherit): New fn.
949         (finish_vtable_vardecl): Call it.
950         * class.c (build_vtable_entry_ref): New fn.
951         (build_vtbl_ref): Call it.
952
953 1998-08-28  Mark Mitchell  <mark@markmitchell.com>
954
955         * cp-tree.h (build_enumerator): Take the enumeration type as a
956         paramter. 
957         * decl.c (finish_enum): Don't set the TREE_TYPE for the
958         enumeration constant values if we're processing_template_decls.
959         Don't set the type for the CONST_DECLs either; that's done in
960         build_enumerator.
961         (build_enumerator): Take the enumeration type as a
962         parameter. 
963         * lex.c (do_identifier): Don't resolve enumeration constants while
964         processing template declarations, even if they happen to be
965         TEMPLATE_PARM_INDEXs. 
966
967         * parse.y (current_enum_type): New variable.
968         (primary): Don't allow statement-expression in local classes just
969         as we don't in global classes.
970         (structsp): Use current_enum_type.
971         (enum_list): Likewise.
972         * pt.c (tsubst_enum): Don't check for NOP_EXPRs introduced by
973         finish_enum; they no longer occur.
974         
975         * cp-tree.h (finish_base_specifier): New function.
976         * parse.y (base_class): Use it.
977         * semantics.c (finish_base_specifier): Define it.
978
979         * parse.y (structsp): Warn on use of typename outside of template
980         declarations. 
981         
982 1998-08-27  Jason Merrill  <jason@yorick.cygnus.com>
983
984         * lex.c (handle_cp_pragma): Remove #pragma vtable.
985         * lang-options.h: Remove +e options.
986         * decl2.c (lang_decode_option): Likewise.
987         (import_export_vtable): Don't check write_virtuals.
988         (finish_vtable_vardecl, finish_file): Likewise.
989         * search.c (dfs_debug_mark): Likewise.
990         * semantics.c (begin_class_definition): Likewise.
991         * class.c (build_vtable, finish_vtbls, finish_struct_1): Likewise.
992
993         * call.c (build_over_call): Check flag_elide_constructors.
994         * decl2.c: flag_elide_constructors defaults to 1.
995         * typeck.c (convert_arguments): Remove return_loc parm.
996         (build_function_call_real): Adjust.
997
998         * search.c: Tear out all mi_matrix and memoize code.
999         (lookup_field, lookup_fnfields): Use scratch_tree_cons.
1000         * lang-options.h: Remove documentation for -fhandle-exceptions,
1001         -fmemoize-lookups and -fsave-memoized.
1002         * cp-tree.h: Lose mi_matrix and memoize support.
1003         * decl2.c: Ignore -fmemoize-lookups and -fsave-memoized.
1004         * class.c: Lose struct class_level.
1005         (pushclass, popclass): Lose memoize support.
1006         * init.c (build_offset_ref): Likewise.
1007
1008         Never change BINFO_INHERITANCE_CHAIN.
1009         * init.c (emit_base_init): Change modification of
1010         BINFO_INHERITANCE_CHAIN to an assert.
1011         * search.c (get_base_distance_recursive): Likewise.
1012         (get_base_distance): Likewise.
1013         (lookup_member): Likewise.
1014         (convert_pointer_to_single_level): Likewise.
1015         (lookup_field): Likewise.  Lose setting TREE_VIA_* on TREE_LISTs.
1016         (lookup_fnfields): Likewise.
1017         * tree.c (propagate_binfo_offsets): Don't call unshare_base_binfos.
1018         (unshare_base_binfos): Don't call propagate_binfo_offsets.
1019         (layout_basetypes): Call propagate_binfo_offsets instead of 
1020         unshare_base_binfos.
1021         * decl.c (xref_basetypes): Call unshare_base_binfos.
1022         * pt.c (instantiate_class_template): Likewise.
1023         * tree.c (reverse_path): Remove 'copy' parm; always make a
1024         temporary copy.
1025         * class.c (build_vbase_path): Just call it.
1026         * search.c (compute_access): Likewise.  Don't re-reverse.
1027
1028 1998-08-27  Mark Mitchell  <mark@markmitchell.com>
1029
1030         * class.c (build_vbase_path): Use reverse_path.
1031         (finish_base_struct): Move warnings for inaccessible bases to
1032         layout_basetypes.
1033         (modify_one_vtable): Remove check of TREE_USED (binfo).
1034         (fixup_vtable_deltas1): Likewise.
1035         * cp-tree.h (BINFO_INHERITANCE_CHAIN): Document here.
1036         (xref_tag): Remove binfos parameter.
1037         (make_binfo): Remove chain parameter.
1038         (reverse_path): Add copy parameter.
1039         * decl.c (init_decl_processing): Change calls to xref_tag.
1040         (xref_tag): Remove binfos parameter.
1041         (xref_basetypes): Change calls to make_binfo.
1042         * decl2.c (grok_x_components): Change calls to xref_tag.
1043         (handle_class_head): Likewise.
1044         * friend.c (do_friend): Likewise.
1045         * lex.c (make_lang_type): Change calls to make_binfo.
1046         * parse.y (structsp): Change calls to xref_tag.
1047         (named_complex_class_head_sans_basetype): Likewise.
1048         (named_class_head): Likewise.
1049         * rtti.c (init_rtti_processing): Likewise.
1050         * search.c (compute_access): Change calls to reverse_path.
1051         (dfs_get_vbase_types): Change calls to make_binfo.
1052         (get_vbase_types): Remove dead code.
1053         * tree.c (unshare_base_binfos): Change calls to make_binfo.
1054         (layout_basetypes): Warn here about inaccessible bases.
1055         (make_binfo): Remove chain parameter.
1056         (reverse_path): Add copy parameter.
1057         
1058 1998-08-27  Jason Merrill  <jason@yorick.cygnus.com>
1059
1060         * class.c: #if 0 complete_type_p.
1061         * init.c (build_java_class_ref, build_new_1): Remove unused locals.
1062         * method.c (process_overload_item): Likewise.
1063         * typeck.c (comp_target_types): Likewise.
1064
1065         Stop sharing binfos for indirect virtual bases.
1066         * tree.c (propagate_binfo_offsets): Unshare vbases, too.
1067         (layout_basetypes): Likewise.
1068         (unshare_base_binfos): Copy vbases, too.
1069         * cp-tree.h (BINFO_VIA_PUBLIC, BINFO_BASEINIT_MARKED,
1070         BINFO_VBASE_INIT_MARKED): Remove obsolete macros.
1071         (BINFO_PUSHDECLS_MARKED, SET_BINFO_PUSHDECLS_MARKED,
1072         CLEAR_BINFO_PUSHDECLS_MARKED): New macros.
1073         * search.c (lookup_field, lookup_fnfields, lookup_member): Remove
1074         reference to BINFO_VIA_PUBLIC.
1075         (marked_pushdecls_p, unmarked_pushdecls_p): New fns.
1076         (push_class_decls): Use them.
1077         (dfs_pushdecls): Use SET_BINFO_PUSHDECLS_MARKED.
1078         (dfs_compress_decls): Use CLEAR_BINFO_PUSHDECLS_MARKED.
1079
1080 1998-08-27  Mark Mitchell  <mark@markmitchell.com>
1081
1082         * decl.c (build_enumerator): Set DECL_CONTEXT for the
1083         CONST_DECLs. 
1084
1085 1998-08-26  Mark Mitchell  <mark@markmitchell.com>
1086
1087         * cp-tree.h (finish_enum): Change prototype.
1088         * decl.c (finish_enum): Use TYPE_VALUES, rather than taking a
1089         VALUES parameter.  Don't try to compute mins/maxs if
1090         processing_template_decl. 
1091         * parse.y (structsp): Use new calling sequence for finish_enum.
1092         * pt.c (tsubst_enum): Likewise.  Take the new type as input.  
1093         (lookup_template_class): Remove unused variables.  Tweak.
1094         Register enums on instantiation list before substituting
1095         enumeration constants.
1096         (tsubst_decl): Remove unused variables.
1097         (regenerate_decl_from_template): Likewise.
1098         
1099         * decl.c (duplicate_decls): Don't obliterate the
1100         DECL_TEMPLATE_INFO for a template if we're not replacing it with
1101         anything. 
1102
1103         * lex.c (do_identifier): Fix typo in comment.
1104
1105 Wed Aug 26 10:54:51 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1106
1107         * errfn.c: Remove stdarg.h/varargs.h.
1108         * tree.c: Likewise.
1109
1110 1998-08-25  Brendan Kehoe  <brendan@cygnus.com>
1111
1112         * pt.c (tsubst_copy): Only do typename overloading on an
1113         IDENTIFIER_NODE that happens to look like a typename if it actually
1114         has a type for us to use.
1115
1116 1998-08-25  Jason Merrill  <jason@yorick.cygnus.com>
1117
1118         * typeck.c (comp_cv_target_types): Split out...
1119         (comp_target_types): From here.  Don't allow cv-qual changes under
1120         a pointer if nptrs == 0.  Fix OFFSET_TYPE handling.
1121         (build_ptrmemfunc): Pass 1 to nptrs.
1122         * cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.
1123
1124 1998-08-25  Mark Mitchell  <mark@markmitchell.com>
1125
1126         * search.c (dependent_base_p): Don't compare a binfo to
1127         current_class_type; use the TREE_TYPE of the binfo instead.
1128
1129         * cp-tree.h (CLASS_TYPE_P): Revise definition.
1130
1131 1998-08-25  Jason Merrill  <jason@yorick.cygnus.com>
1132
1133         * decl.c (duplicate_decls): Don't complain about different
1134         exceptions from an internal decl even if pedantic.
1135
1136         * typeck.c (convert_for_assignment): Converting from pm of vbase
1137         to derived is an error, not a sorry.
1138
1139         * call.c (build_over_call): Use convert_pointer_to_real for 'this'.
1140         * class.c (fixed_type_or_null): Rename from
1141         resolves_to_fixed_type_p.  Return the dynamic type of the
1142         expression, if fixed, or null.
1143         (resolves_to_fixed_type_p): Use it.  Return 0 if the dynamic type
1144         does not match the static type.
1145         (build_vbase_path): Rename 'alias_this' to 'nonnull'.  Use
1146         resolves_to_fixed_type_p again.
1147
1148 1998-08-24  Mark Mitchell  <mark@markmitchell.com>
1149
1150         * pt.c (tsubst_decl): Move special case code for dealing with
1151         tricky friend templates here from ...
1152         (regenerate_decl_from_template): Here.
1153
1154 1998-08-24  Jason Merrill  <jason@yorick.cygnus.com>
1155
1156         * decl.c (start_decl): Remove redundant linkage check.
1157
1158 1998-08-24  Gavin Romig-Koch  <gavin@cygnus.com>
1159
1160         * typeck.c (c_expand_return): Handle the case that valtype
1161         is wider than the functions return type.
1162
1163 1998-08-24  Mark Mitchell  <mark@markmitchell.com>
1164
1165         * cp-tree.h (CLASS_TYPE_P): New macro.
1166         * decl.c (grokdeclarator): Use it instead of IS_AGGR_TYPE.
1167         * pt.c (process_template_parm): Undo previous change.
1168         
1169 1998-08-24  Benjamin Kosnik  <bkoz@cygnus.com>
1170
1171         * cp-tree.h: Declare.
1172         * pt.c (decl_template_parm_p): New function.
1173         * decl.c (pushdecl): Check decls for redeclaring template parms.
1174         (xref_tag): Make redeclaration an error, print decl.
1175         * decl2.c (grokfield): Check field_decls for redeclaration as well.
1176
1177 1998-08-24  Jason Merrill  <jason@yorick.cygnus.com>
1178
1179         * parse.y (primary): Fix up the type of string constants.
1180
1181 1998-08-24  Mark Mitchell  <mark@markmitchell.com>
1182
1183         * typeck.c (convert_for_initialization): Move check for odd uses
1184         of NULL to avoid duplicate warnings.
1185
1186 1998-08-24  Jason Merrill  <jason@yorick.cygnus.com>
1187
1188         * tree.c (lvalue_type): Fix for arrays.
1189         * typeck.c (string_conv_p): New fn.
1190         (convert_for_assignment): Use it.
1191         (build_unary_op): Use lvalue_type.
1192         * call.c (standard_conversion, convert_like): Use string_conv_p.
1193         (add_function_candidate): Use lvalue_type.
1194         * cvt.c (convert_to_reference): Likewise.
1195         * decl2.c (lang_decode_option): Ignore -traditional.
1196         * decl.c (init_decl_processing): flag_writable_strings inhibits
1197         flag_const_strings.
1198
1199 1998-08-24  Andrew MacLeod  <amacleod@cygnus.com>
1200
1201         * lang-options.h (lang_options): Add fconst-strings to the list
1202         of valid options.
1203         * decl2.c (lang_f_options, lang_decode_option): Likewise.
1204
1205 1998-08-24  Nathan Sidwell  <nathan@acm.org>
1206
1207         * lex.c (real_yylex): Don't warn about long long constants if
1208         we're allowing long long.
1209
1210 1998-08-24  Martin von Löwis  <loewis@informatik.hu-berlin.de>
1211
1212         * decl.c (pushdecl): Use IDENTIFIER_NAMESPACE_VALUE instead of
1213         accessing bindings directly.
1214
1215         * search.c (my_tree_cons): Reimplement.
1216
1217         * lang-specs.h: Remove __HONOR_STD.
1218         * inc/exception, inc/new, inc/new.h, inc/typeinfo: Likewise.
1219
1220 1998-08-23  Mark Mitchell  <mark@markmitchell.com>
1221
1222         * decl.c (grokdeclarator): Complain about in-class initialization
1223         of aggregates and/or references.
1224         * pt.c (process_template_parm): Clear IS_AGGR_TYPE for
1225         TEMPLATE_TYPE_PARMs. 
1226
1227         * decl2.c (grok_array_decl): Add comment.
1228         (mark_used): Don't instantiate an explicit instantiation.
1229         * friend.c (make_friend_class): Remove bogus comment.  Fix check
1230         for partial specializations.
1231         * pt.c (check_explicit_specialization): Don't
1232         SET_DECL_EXPLICIT_INSTANTIATION here.
1233         (mark_decl_instantiated): Or here.
1234         (do_decl_instantiation): Do it here, instead.  Add checks for
1235         duplicate explicit instantiations, etc.  Tidy.
1236         (do_type_instantiation): Likewise.
1237         (instantiate_decl): Improve comments.  Complain about explicit
1238         instantiations where no definition is available.
1239         
1240         * cp-tree.h (ansi_null_node): Remove.
1241         * call.c (build_over_call): Warn about converting NULL to an
1242         arithmetic type.
1243         * cvt.c (build_expr_type_conversion): Likewise.  Use
1244         null_ptr_cst_p instead of expanding it inline.
1245         * decl.c (ansi_null_node): Remove. 
1246         (init_decl_processing): Make null_node always have integral type.
1247         * except.c (build_throw): Warn about converting NULL to an
1248         arithmetic type.
1249         * lex.c (init_parse): Remove handling of ansi_null_node.
1250         * pt.c (type_unification_real): Don't convert NULL to void* type.
1251         * typeck.c (build_binary_op_nodefault): Fix NULL warnings.
1252         (convert_for_assignment): Warn about converting NULL to an
1253         arithmetic type.
1254         (convert_for_initialization): Likewise.
1255         
1256 1998-08-20  Jason Merrill  <jason@yorick.cygnus.com>
1257
1258         * tree.c (search_tree, no_linkage_helper, no_linkage_check): New fn.
1259         * pt.c (coerce_template_parms): Use no_linkage_check.
1260         * decl.c (grokvardecl): Likewise.
1261         (grokfndecl): Likewise.  Members of anonymous types have no linkage.
1262
1263         * method.c (process_overload_item): Remove useless code.
1264
1265 1998-08-20  Per Bothner  <bothner@cygnus.com>
1266
1267         Handle new'ing of Java classes.
1268         * init.c (build_class_classref):  New function.
1269         (build_new_1):  If type is TYPE_FOR_JAVA:  Call _Jv_AllocObject;
1270         constructor does not return this;  don't need to exception-protect.
1271
1272         * pt.c (lookup_template_class):  Copy TYPE_FOR_JAVA flag.
1273         * decl2.c (acceptable_java_type):  Handle template-derived types.
1274
1275 1998-08-20  Per Bothner  <bothner@cygnus.com>
1276
1277         * decl2.c (import_export_vtable):  Suppress vtables for Java classes.
1278
1279 1998-08-20  Mark Mitchell  <mark@markmitchell.com>
1280
1281         * decl.c (duplicate_decls): Always merge the old and new patterns
1282         for templates, regardless of whether or not the new one has
1283         DECL_INITIAL.  Don't throw away specializations.  Merge
1284         DECL_SAVED_TREE.
1285         * pt.c (tsubst_decl): Use the right pattern when calculating the
1286         complete args for a new template instance.
1287         (do_decl_instantiation): Fix typo in comment.
1288         (regenerate_decl_from_template): Deal with tricky friend template
1289         case.
1290         (instantiate_decl): Likewise.
1291         
1292 Thu Aug 20 09:09:45 1998  Jeffrey A Law  (law@cygnus.com)
1293
1294         * init.c (build_builtin_delete_call): Add missing assemble_external
1295         call.
1296
1297 1998-08-20  Jason Merrill  <jason@yorick.cygnus.com>
1298
1299         * parse.y (notype_unqualified_id): Also accept ~A<int>.
1300
1301 1998-08-19  Mark Mitchell  <mark@markmitchell.com>
1302
1303         * typeck.c (build_binary_op_nodefault): Warn on use of NULL in
1304         arithmetic.
1305         * except.c (build_throw): Warn when NULL is thrown, even with
1306         -ansi.  Use ansi_null_node, rather than integer_zero_node, in the
1307         thrown expression.
1308         
1309         * cp-tree.h (ansi_null_node): New variable.
1310         * decl.c (ansi_null_node): New variable.
1311         (init_decl_processing): Initialize its type.
1312         * lex.c (init_parse): Initialize its value.  Use ansi_null_node
1313         for null_node in non-ANSI mode.
1314         * typeck.c (build_binary_op_nodefault): Use ansi_null_node in
1315         place of null_node to avoid spurious errors.
1316
1317 1998-08-17  Mark Mitchell  <mark@markmitchell.com>
1318
1319         * cp-tree.h (enter_scope_of): New function.
1320         * parse.y (complex_direct_notype_declarator): Use it.
1321         * semantics.c (enter_scope_of): New function.
1322
1323 1998-08-17  Jason Merrill  <jason@yorick.cygnus.com>
1324
1325         * decl.c (grokparms): No, here.
1326
1327         * decl.c (grokdeclarator): Catch parm with pointer to array of
1328         unknown bound here...
1329         * method.c (process_overload_item): ...not here.
1330
1331         * gxxint.texi: Remove obsolete documentation of overloading code.
1332
1333         * decl.c (finish_enum): Also set TYPE_SIZE_UNIT.
1334         * class.c (finish_struct_bits): Likewise.
1335
1336         * tree.c (lvalue_type): Fix for arrays.
1337         * typeck.c (build_unary_op): Use lvalue_type.
1338         * call.c (add_function_candidate): Likewise.
1339         * cvt.c (convert_to_reference): Likewise.
1340
1341         * decl2.c (lang_decode_option): Ignore -traditional.
1342
1343         * init.c (build_offset_ref): Don't mess with error_mark_node.
1344         * lex.c (do_scoped_id): Use cp_error.
1345
1346         * rtti.c (get_tinfo_fn): Don't mess with the context for now.
1347
1348 1998-08-17  Benjamin Kosnik  <bkoz@loony.cygnus.com>
1349
1350         * decl.c (grokdeclarator): Allow anonymous types to be cv-qualified.
1351
1352 Mon Aug 17 10:40:18 1998  Jeffrey A Law  (law@cygnus.com)
1353
1354         * cp-tree.h (set_identifier_local_value): Provide prototype.
1355
1356         * decl2.c (do_namespace_alias): Remove unused variables `binding'
1357         and `old'.
1358
1359 Fri Aug 14 16:42:27 1998  Nick Clifton  <nickc@cygnus.com>
1360
1361         * Makefile.in: Rename BBISON to BISON so that it can be properly
1362         inherited from the parent makefile.
1363
1364 1998-08-13  Jason Merrill  <jason@yorick.cygnus.com>
1365
1366         * lang-options.h: Add -finit-priority.
1367         * decl2.c: Likewise.  Check flag_init_priority instead of
1368         USE_INIT_PRIORITY.
1369
1370         * decl2.c (setup_initp): New fn.
1371         (start_objects, finish_objects, do_ctors): Handle init_priority.
1372         (do_dtors, finish_file): Likewise.
1373
1374 1998-08-13  Jason Merrill  <jason@yorick.cygnus.com>
1375
1376         * pt.c (tsubst_copy): Hush warning.
1377
1378         * rtti.c (get_tinfo_fn): Also set DECL_IGNORED_P.
1379
1380 1998-08-12  Mark Mitchell  <mark@markmitchell.com>
1381
1382         * pt.c (print_template_context): Don't abort when instantiating a
1383         synthesized method.
1384
1385         * decl.c (grokdeclarator): Issue errors on namespace qualified
1386         declarators in parameter lists or in class scope.
1387
1388 1998-08-09  Mark Mitchell  <mark@markmitchell.com>
1389
1390         * pt.c (check_explicit_specialization): Don't abort on bogus
1391         explicit instantiations.
1392
1393 1998-08-07  Mark Mitchell  <mark@markmitchell.com>
1394
1395         * typeck.c (require_complete_type): Use complete_type_or_else.
1396         (complete_type_or_else): Always return NULL_TREE on failure, as
1397         documented.
1398
1399         * pt.c (tsubst_aggr_type): Prototype.
1400         (tsubst_decl): New function, split out from tsubst.  Set
1401         input_filename and lineno as appropriate.
1402         (pop_tinst_level): Restore the file and line number saved in
1403         push_tinst_level.
1404         (instantiate_class_template): Set input_filename and lineno as
1405         appropriate.
1406         (tsubst): Move _DECL processing to tsubst_decl.  Make sure the
1407         context for a TYPENAME_TYPE is complete.
1408
1409         * decl2.c (grokbitfield): Issue errors on bitfields declared with
1410         function type.
1411         (do_dtors): As in do_ctors, pretend to be a member of the same
1412         class as a static data member while generating a call to its
1413         destructor.
1414
1415         * cvt.c (cp_convert_to_pointer): Handle NULL pointer
1416         conversions, even in complex virtual base class hierarchies.
1417
1418 1998-08-06  Mark Mitchell  <mark@markmitchell.com>
1419
1420         * cp-tree.h (ENUM_TEMPLATE_INFO): New macro.
1421         (TYPE_TEMPLATE_INFO): Likewise.
1422         (SET_TYPE_TEMPLATE_INFO): Likewise.
1423         (ENUM_TI_TEMPLATE): Likewise.
1424         (ENUM_TI_ARGS): Likewise.
1425         (lookup_nested_type_by_name): Remove.
1426         * decl.c (maybe_process_template_type_declaration): Handle enums.
1427         (start_enum): Don't check for primary-template enum declarations
1428         here. 
1429         (finish_enum): Clean up, document.  Make sure template enum
1430         constants get the correct type.
1431         (build_enumerator): Copy initializers for template enumerations,
1432         too. 
1433         (grok_enum_decls): Document.
1434         * lex.c (do_identifier): Document use of LOOKUP_EXPR a bit
1435         better.  Build LOOKUP_EXPRs for local variables, even if they are
1436         TREE_PERMANENT.
1437         * pt.c (tsubst_enum): Remove field_chain parameter.
1438         (template_class_depth): Include the depth of surrounding function
1439         contexts.
1440         (push_template_decl): Check for primary-template enum declarations
1441         here.  Deal with enumeration templates.
1442         (lookup_template_class): Likewise.
1443         (for_each_template_parm): Likewise.
1444         (instantiate_class_template): Don't call tsubst_enum directly,
1445         call tsubst instead, to instantiate enums.  Deal with all
1446         field_chain issues here, not in tsubst_enum.
1447         (lookup_nested_type_by_name): Remove.
1448         (tsubst_aggr_type): Revise handling of enumeration types.
1449         (tsubst): Likewise.
1450         (tsubst_copy): Likewise.
1451         (tsubst_expr): Call tsubst, not tsubst_enum for TAG_DEFNs.
1452         
1453 1998-08-04  Mark Mitchell  <mark@markmitchell.com>
1454
1455         * decl.c (pushtag): Don't mangle the name of a TYPE_DECL if it
1456         uses template parameters.
1457         * method.c (build_template_parm_names): Use the full set of
1458         template arguments for tsubst'ing.
1459         (build_overload_identifier): Pass the full set of template
1460         arguments to build_template_parm_names, not just the
1461         innermost_args. 
1462         * pt.c (TMPL_ARGS_DEPTH): Define using
1463         TMPL_ARGS_HAVE_MULTIPLE_LEVELS, for clarity.
1464         (NUM_TMPL_ARGS): New macro.
1465         (add_outermost_template_args): Deal with the case where the outer
1466         args will be completely discarded.
1467         (coerce_template_parms): Use the full set of template arguments
1468         for tsubst'ing.  Simplify.  Add some asserts.  Improve
1469         error messages.
1470         (lookup_template_class): Pass the full set of template arguments
1471         to coerce_template_parms.
1472         (tsubst): Add assertion.
1473         (do_type_instantiation): Don't instantiate member template
1474         classes. 
1475         
1476         * init.c (build_offset_ref): Deal with a TEMPLATE_ID_EXPR whose
1477         name is a LOOKUP_EXPR, rather than an IDENTIFIER_NODE.
1478
1479 1998-08-03  Jason Merrill  <jason@yorick.cygnus.com>
1480
1481         * method.c (set_mangled_name_for_decl): Change return type to void.
1482
1483         * decl.c (lookup_name_real): A namespace-level decl takes priority
1484         over implicit typename.  Avoid doing the same lookup twice.
1485
1486         * search.c (dependent_base_p): New fn.
1487         (dfs_pushdecls, dfs_compress_decls): Use it.
1488
1489         * typeck.c (get_member_function_from_ptrfunc): Don't try to handle 
1490         virtual functions if the type doesn't have any.
1491
1492 1998-08-03  Mark Mitchell  <mark@markmitchell.com>
1493
1494         * decl2.c (grokfield): Don't mangle the name of a TYPE_DECL if it
1495         uses template parameters.
1496
1497 1998-08-02  Mark Mitchell  <mark@markmitchell.com>
1498
1499         * cp-tree.def (LOOKUP_EXPR): Document.  Remove second argument.
1500         * cp-tree.h (DECL_TI_TEMPLATE): Improve documentation.
1501         * lex.c (do_identifier): Don't use a second argument, or a type,
1502         when building LOOKUP_EXPRs.
1503         (do_identifier): Likewise.
1504         (do_scoped_id): Likewise.
1505         * method.c (hack_identifier): Improve error message.
1506         * pt.c (lookup_template_function): Don't needlessly call
1507         copy_to_permanent or build_min.
1508         (tsubst_copy): Remove #if 0'd code.  Tsubst into LOOKUP_EXPRs if
1509         necessary.
1510         (do_decl_instantiation): Improve error message.
1511         * tree.c (mapcar, case LOOKUP_EXPR): Don't be sorry; make a copy.
1512         (build_min): Copy the type to the permanent obstack, too.
1513         
1514 1998-08-01  Jason Merrill  <jason@yorick.cygnus.com>
1515
1516         * init.c (init_init_processing): Remove BI* handling.
1517         (build_builtin_call): Remove.
1518         (build_builtin_delete_call): New fn.
1519         (build_delete): Use it.
1520         
1521 1998-07-31  Mark Mitchell  <mark@markmitchell.com>
1522
1523         * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): New macro.
1524         (maybe_check_template_type): New function.
1525         * decl.c (maybe_process_template_type_declaration): New function,
1526         split out from pushtag  Call maybe_check_template_type.
1527         (pushtag): Use it.  Use PROCESSING_REAL_TEMPLATE_DECL_P.
1528         (xref_tag): Use PROCESSING_REAL_TEMPLATE_DECL_P.
1529         * friend.c (do_friend): Use PROCESSING_REAL_TEMPLATE_DECL_P.
1530         * pt.c (template_class_depth_real): Generalization of ...
1531         (template_class_depth): Use it.
1532         (register_specialization): Use duplicate_decls for duplicate
1533         declarations of specializations.
1534         (maybe_check_template_type): New function.
1535         (push_template_decl_real): Fix comment.
1536         (convert_nontype_argument): Likewise.
1537         (lookup_template_class): Likewise.  Avoid an infinite loop on
1538         erroneous code.
1539         (tsubst_friend_function): Fix comment.
1540         (tsubst, case FUNCTION_DECL): Deal with a DECL_TI_TEMPLATE that is
1541         an IDENTIFIER_NODE.
1542         * semantics.c (begin_function_definition): Use
1543         reset_specialization to note that template headers don't apply
1544         directly to declarations after the opening curly for a function.
1545
1546 1998-07-29  Jason Merrill  <jason@yorick.cygnus.com>
1547
1548         * decl.c (push_overloaded_decl): Use current_namespace instead of
1549         DECL_CONTEXT (decl) to determine where we go.
1550
1551         * decl.c (lookup_name_real): Fix typo.
1552
1553 1998-07-28  Mark Mitchell  <mark@markmitchell.com>
1554
1555         * friend.c (is_friend): Be lenient with member functions to deal
1556         with nested friends.
1557
1558 1998-07-28  Jason Merrill  <jason@yorick.cygnus.com>
1559
1560         * class.c (finish_struct_1): Convert integer_zero_node to
1561         ssizetype before passing it to set_rtti_entry.
1562         * typeck2.c (initializer_constant_valid_p): Allow conversion of 0
1563         of any size to a pointer.
1564
1565 1998-07-27  Mark Mitchell  <mark@markmitchell.com>
1566
1567         * cp-tree.h (TI_USES_TEMPLATE_PARMS): Remove.
1568         (build_template_decl_overload): Remove.
1569         (set_mangled_name_for_decl): New function.
1570         (innermost_args): Remove is_spec parameter.
1571         (most_specialized, most_specialized_class): Remove declarations.
1572         (lookup_template_class): Add entering_scope parameter.
1573         (maybe_process_partial_specialization): New function.
1574         (finish_template_decl): Likewise.
1575         (finish_template_type): Likewise.  
1576         * class.c (finish_struct): Clean up processing of member template
1577         specializations.
1578         * decl.c (pushtag): Fix formatting.
1579         (lookup_tag): Improve handling of pseudo-global levels.
1580         (make_typename_type): Adjust call to lookup_template_class.
1581         (shadow_tag): Use maybe_process_partial_specialization.
1582         (xref_tag): Improve handling of member friends.  
1583         (start_function): Call push_nested_class before
1584         push_template_decl.  Don't call push_template_decl for
1585         specializations.
1586         * decl2.c (grok_x_components): Don't call xref_tag for
1587         template instantiations.  Handle UNION_TYPEs like RECORD_TYPEs.
1588         (grokclassfn): Use set_mangled_name_for_decl.
1589         (arg_assoc_class): Adjust call to innermost_args.
1590         (mark_used): Don't call instantiate_decl for a TEMPLATE_DECL.
1591         * error.c (dump_function_name): Improve printing of template
1592         function names.
1593         * friend.c (is_friend): Don't compare types of decls to determine
1594         friendship, unless flag_guiding_decls.
1595         (make_friend_class): Partial specializations cannot be friends.  
1596         (do_friend): Use set_mangled_name_for_decl.  Call
1597         push_template_decl_real instead of push_template_decl.
1598         * method.c (build_decl_overload_real): Remove prototype.  Give it
1599         external linkage.
1600         (build_overload_identififer): Adjust call to innermost_args.
1601         (build_template_decl_overload): Remove.
1602         (set_mangled_name_for_decl): New function.
1603         * parse.y (.finish_template_type): New non-terminal.
1604         (template_def): Use finish_template_decl.  Use template_extdef
1605         instead of extdef.
1606         (template_extdef, template_datadef): New non-terminals, containing
1607         only those rules for things which can be templates.
1608         (datadef): Tidy.
1609         (template_type, self_template_type): Use .finish_template_type.
1610         (named_class_head): Use maybe_process_partial_specialization.
1611         * pt.c (mangle_class_name_for_template): Remove context parameter.
1612         (get_class_bindings): Remove outer_args parameter.
1613         (complete_template_args): Remove.
1614         (add_outermost_template_args): New function.
1615         (register_specialization): Return the specialization.
1616         (unregister_specialization): New function.
1617         (tsubst_template_parms): Likewise.
1618         (most_specialized, most_specialized_class): Prototype here as
1619         static. 
1620         (original_template): Rename to most_general_template.
1621         (tsubst_template_parms): New function.
1622         (set_mangled_name_for_template_decl): Likewise.
1623         (TMPL_ARGS_DEPTH): New macro.
1624         (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): Adjust.
1625         (TMPL_ARGS_LEVEL): New macro.
1626         (SET_TMPL_ARGS_LEVEL): Likewise.
1627         (TMPL_ARG): Likewise.
1628         (SET_TMPL_ARG): Likewise.
1629         (TMPL_ARGS_DEPTH): Likewise.
1630         (finish_member_template_decl): Use finish_template_decl.
1631         (maybe_process_partial_specialization): New function, split out
1632         from tsubst.
1633         (inline_needs_template_parms): Use TMPL_PARMS_DEPTH.
1634         (maybe_begin_member_template_processing): Use new macros.
1635         (is_member_template): Likewise.
1636         (is_member_template_class): Likewise.
1637         (add_to_template_args): Likewise.  Deal with multiple levels of
1638         args. 
1639         (maybe_process_partial_specialization): New function.
1640         (retrieve_specialization): Add consistency check.
1641         (determine_specialization): Return full argument list.
1642         (check_explicit_specialization): Tweak friend handling.  Use full
1643         argument lists.  Simplify.
1644         (current_template_args): Use new macros.
1645         (push_template_decl_real): Change ill-named mainargs to specargs.
1646         Check that a partial specialization actually specializes at least
1647         one parameter.   Improve friend handling.  Modify for full
1648         template arguments.
1649         (classtype_mangled_name): Don't mangle the names of
1650         specializations. 
1651         (lookup_template_class): Add entering_scope parameter.  Use it to
1652         avoid finding a template type when an instantiation is required.
1653         Simplify.  Use full template arguments.
1654         (tsubst_friend_function): Use unregister_specialization.  Use new
1655         macros.  Use full template arguments.
1656         (tsubst_friend_class): Substitute, using tsubst_template_parms,
1657         into the template parameters before passing them to
1658         redeclare_class_template.
1659         (instantiate_class_template): Simplify.  Use full template
1660         arguments.  Adjust calls to get_class_bindings.  Use
1661         SET_IDENTIFIER_TYPE_VALUE where needed.  Improve friend handling.
1662         (innermost_args): Use new macros.
1663         (tsubst_aggr_type): New function, split out from tsubst.
1664         (tsubst): Use tsubst_aggr_type, tsubst_template_parms, new calling
1665         conventions for lookup_tmeplate_class.  Refine handling of partial
1666         instantiations.   Remove calls to complete_template_args.
1667         Simplify.  Add consistency checks.  Use set_mangled_name_for_decl
1668         and set_mangled_name_for_template_decl.
1669         (tsubst_copy): Use tsubst_aggr_type.
1670         (instantiate_template): Use full template arguments.
1671         (more_specialized): Improve formatting.
1672         (more_specialized_class): Adjust calls to get_class_bindings.
1673         (get_bindings_real): Don't call complete_template_args.
1674         (most_specialized): Don't overwrite input; create a new list.
1675         (most_specialized_class): Use most_general_template.
1676         (regenerate_decl_from_template): Use unregister_specialization.
1677         Use full template arguments.  
1678         (instantiate_decl): Use full template arguments.
1679         (set_mangled_name_for_template_decl): New function.
1680         * semantics.c (begin_class_definition): Use
1681         maybe_process_partial_specialization.
1682         (finish_member_class_template): New function.
1683         (finish_template_decl): Likewise.
1684         (finish_template_type): Likewise.  
1685         (typeck.c): Don't crash after issuing a compiler_error.
1686         * Makefile.in (CONFLICTS): Adjust; we removed a s/r conflict.
1687         
1688 1998-07-27  Jason Merrill  <jason@yorick.cygnus.com>
1689
1690         * typeck2.c (build_functional_cast): Handle default-initialization.
1691
1692         * call.c (build_over_call): Pass 1 to popclass.
1693
1694         * parse.y (direct_notype_declarator): Add precedence declaration
1695         to notype_unqualified_id case.
1696         * Makefile.in (EXPECT): Adjust.
1697
1698         * tree.c (ovl_member): Fix for single function in OVL.
1699
1700 1998-07-27  Dave Brolley  <brolley@cygnus.com>
1701
1702         * c-lex.c (yylex): Fix boundary conditions in character literal and
1703         string literal loops.
1704
1705 1998-07-24  Jason Merrill  <jason@yorick.cygnus.com>
1706
1707         * decl.c (lookup_name_real): OK, do return the from_obj value
1708         unless got_object depends on template parms.
1709
1710         * parse.y (nested_name_specifier_1): Pull out the TYPE_MAIN_VARIANT.
1711
1712         * pt.c (coerce_template_parms): Also complain about local enums.
1713
1714         * cp-tree.h: Add prototype for set_identifier_local_value.
1715         * decl.c (set_identifier_local_value_with_scope): Make static,
1716         prototype.
1717         * search.c (covariant_return_p): Likewise.
1718         * except.c (build_terminate_handler, alloc_eh_object): Likewise.
1719
1720         * call.c (build_method_call): Only pull out the type of a destructor
1721         if it's a template type parm.
1722         * decl.c (lookup_name_real): Never return the from_obj value.
1723
1724 1998-07-23  Jason Merrill  <jason@yorick.cygnus.com>
1725
1726         * except.c (process_start_catch_block_old): Call start_decl_1 for
1727         catch parm.
1728         * decl.c (start_decl_1): Avoid duplicate error.
1729
1730         * init.c (expand_default_init): Only perform the initialization if
1731         it will do something.
1732
1733 1998-07-23  H.J. Lu  (hjl@gnu.org)
1734
1735         * parse.y (base_class): Check for invalid base class.
1736
1737 1998-07-23  Jason Merrill  <jason@yorick.cygnus.com>
1738
1739         * decl2.c (import_export_template): Fold in...
1740         (import_export_class): ...to here.  Handle dllimport/export.
1741
1742         * class.c (build_vtable): Pass at_eof to import_export_vtable.
1743         (prepare_fresh_vtable): Likewise.
1744         * decl2.c (import_export_class): Split out...
1745         (finish_prevtable_vardecl): From here.
1746         * class.c (finish_struct_1): Call import_export_class if at_eof.
1747
1748         * decl.c (start_function): #if 0 mysterious code I wrote and have 
1749         forgotten why.
1750         * rtti.c (get_tinfo_fn): If this is for a class type, set
1751         DECL_CONTEXT.
1752
1753 1998-07-22  Jason Merrill  <jason@yorick.cygnus.com>
1754
1755         * inc/exception: Change terminate and unexpected to ().
1756
1757         * parse.y (named_class_head_sans_basetype_defn): A
1758         named_class_head_sans_basetype followed by '{' or ':' is a defn.
1759
1760 1998-07-21  Jason Merrill  <jason@yorick.cygnus.com>
1761
1762         * tree.c (canonical_type_variant): New fn to handle arrays.
1763         * cp-tree.h (CANONICAL_TYPE_VARIANT): Remove.
1764         * pt.c (unify, default case): Also fold arg.  Fix array bounds case.
1765         * method.c (process_overload_item): Use build_overload_value for
1766         arrays.
1767
1768 1998-07-20  Dave Brolley  <brolley@cygnus.com>
1769
1770         * lex.c (mbchar.h): #include it.
1771         (GET_ENVIRONMENT): New macro.
1772         (init_parse): Set character set based on LANG environment variable.
1773         (real_yylex): Handle multibyte characters in character literals.
1774         (real_yylex): Handle multibyte characters in string literals.
1775
1776 1998-07-19  Jason Merrill  <jason@yorick.cygnus.com>
1777
1778         * lex.c (do_identifier): Look for class value even if we don't
1779         have a global value.  Do implicit declaration if parsing is 2.
1780         * semantics.c (finish_call_expr): Pass 2 if we're doing Koenig
1781         lookup.
1782
1783 1998-07-19  Mark Mitchell  <mark@markmitchell.com>
1784
1785         * decl.c (pushtag): Revert previous change.
1786         * pt.c (lookup_template_class): Don't put out debugging
1787         information for types that use template parameters.
1788
1789         * decl.c (pushtag): Don't put out debugging information for
1790         compiler-generated typedefs.
1791         
1792         * error.c (dump_type_real): Don't crash when presented with
1793         intQI_type_node or the like.
1794
1795         * semantics.c (finish_translation_unit): Fix spelling error in
1796         comment.
1797
1798 1998-07-17  Jason Merrill  <jason@yorick.cygnus.com>
1799
1800         * decl.c (lookup_name_real): Pull out single function here.
1801         (select_decl): Not here.
1802         (unqualified_namespace_lookup): Use CP_DECL_CONTEXT.
1803
1804         * decl.c (qualify_lookup): Tweak again.
1805
1806         * pt.c (lookup_template_class): Don't mess with the context of the
1807         instantiation.
1808         * decl2.c (current_decl_namespace): Remove special handling for
1809         templates.
1810
1811         * pt.c (tsubst, case FUNCTION_DECL): Fix getting complete args for
1812         a member template specialization.
1813
1814         * tree.c (ovl_member): Use decls_match to compare functions.
1815         * decl.c (decls_match): Check the context of a function.
1816
1817         * parse.y (primary): Use notype_unqualified_id instead of IDENTIFIER
1818         in Koenig lookup support rules.
1819         * semantics.c (finish_call_expr): Handle the new cases.
1820
1821         * typeck.c (build_x_function_call): Handle overloaded methods.
1822
1823         * decl.c (grokvardecl): Don't call build_static_name for extern "C".
1824
1825 1998-07-16  Mark Mitchell  <mark@markmitchell.com>
1826
1827         * semantics.c (finish_object_call_expr): Revert previous change.
1828         * call.c (build_new_method_call): Likewise.  Instead, convert
1829         TYPE_DECLs to IDENTIFIERs here, in the presence of templates.
1830
1831 1998-07-16  Jason Merrill  <jason@yorick.cygnus.com>
1832
1833         * decl.c (qualify_lookup): Handle templates.
1834
1835         * decl2.c (do_using_directive): Don't pass ancestor.
1836         * decl.c (push_using_directive): Calculate ancestor.
1837
1838         * decl2.c (do_nonmember_using_decl): Allow for type shadowing.
1839         * decl.c (pushdecl): Move type shadowing handling from here...
1840         (duplicate_decls): ...to here.
1841         * decl.c (set_identifier_local_value_with_scope): New fn.
1842         (pushdecl): Use it.
1843         (set_identifier_local_value, lookup_type_current_level): New fns.
1844         * decl2.c (do_local_using_decl): Handle types and binding level
1845         stuff properly.
1846
1847         * init.c (build_offset_ref): Don't call mark_used on an OVERLOAD.
1848         * decl.c (select_decl): Extract a lone function from an OVERLOAD.
1849         (lookup_namespace_name): Likewise.
1850         * typeck.c (build_unary_op): Not here anymore.
1851
1852         * decl2.c (do_class_using_decl): Make sure we get an identifier.
1853         * class.c (handle_using_decl): Ignore TYPE_DECLs.
1854
1855         * decl.c (qualify_lookup): New fn.
1856         (lookup_name_real): Use it.
1857
1858 1998-07-16  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
1859
1860         * decl2.c (add_using_namespace): When directly using a namespace
1861         that was indirect before, promote it.
1862
1863         * cp-tree.h (LOOKUP_PREFER_TYPES, LOOKUP_PREFER_NAMESPACES,
1864         LOOKUP_PREFER_BOTH, LOOKUP_NAMESPACES_ONLY, LOOKUP_TYPES_ONLY,
1865         LOOKUP_QUALIFIERS_ONLY, LOOKUP_TEMPLATES_EXPECTED): New macros.
1866         * decl.c (select_decl): Replace two flag parameters by one.
1867         (unqualified_namespace_lookup): Likewise, pass flag.
1868         (lookup_flags): New function.
1869         (lookup_name_real): Compute flags, pass them.
1870         (lookup_namespace_name): Call with zero-flag.
1871         * decl2.c (ambiguous_decl): Add flag parameter, complain only
1872         according to flags.
1873         (lookup_using_namespace, qualified_lookup_using_namespace):
1874         Add flag parameter, pass them through.
1875         * lex.c (do_scoped_id): Call with zero-flag.
1876
1877 1998-07-16  Jason Merrill  <jason@yorick.cygnus.com>
1878
1879         * typeck.c (convert_for_assignment): Use comptypes.
1880
1881 1998-07-16  Mark Mitchell  <mark@markmitchell.com>
1882
1883         * semantics.c (finish_object_call_expr): Move test for the
1884         function called being a TYPE_DECL to ...
1885         * call.c (build_new_method_call): Here.
1886
1887 1998-07-15  Jason Merrill  <jason@yorick.cygnus.com>
1888
1889         * decl2.c (arg_assoc_class): Also look at template arguments, if any.
1890         (arg_assoc): Handle error_mark_node and multiple levels of TREE_LIST.
1891
1892         * lex.c (looking_for_typename): Don't initialize.
1893
1894         * decl2.c (ambiguous_decl): Clarify error message.
1895
1896         * decl.c (push_using_directive): Iterate over namespaces used
1897         indirectly.
1898
1899 1998-07-15  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
1900
1901         * decl2.c (add_using_namespace): Iterate over namespaces used
1902         indirectly.
1903
1904         * decl.c (lookup_name_real): Accept namespace aliases as locals.
1905         (cat_namespace_levels): Ignore aliases.
1906         (duplicate_decls): Ignore duplicate aliases.
1907         * decl2.c (do_namespace_alias): Process block level namespace
1908         aliases. Store alias with pushdecl. Remove odr errors.
1909         * parse.y (namespace_alias): New non-terminal.
1910         (extdef): Use it.
1911
1912 1998-07-15  Jason Merrill  <jason@yorick.cygnus.com>
1913
1914         * decl2.c (arg_assoc_type): Handle METHOD_TYPE like FUNCTION_TYPE.
1915         Handle TEMPLATE_TYPE_PARM.
1916         (arg_assoc): Rewrite.
1917
1918         * pt.c (complete_template_args): Don't look at the context unless
1919         we have to.
1920
1921         * method.c (build_decl_overload_real): Fix namespace handling.
1922
1923         * typeck.c (build_unary_op): Extract a lone function from an
1924         OVERLOAD.
1925
1926         * call.c (build_scoped_method_call): Handle getting a namespace
1927         for basetype in a destructor call.
1928         (check_dtor_name): Handle enums.
1929
1930         * parse.y (using_directive): New nonterminal.
1931         (extdef, simple_stmt): Use it.
1932
1933 1998-07-14  Martin von Löwis  <loewis@informatik.hu-berlin.de>
1934
1935         * decl2.c (add_function): Move error message ...
1936         (arg_assoc_namespace): ... from here.
1937
1938 1998-07-14  Jason Merrill  <jason@yorick.cygnus.com>
1939
1940         * parse.y (namespace_qualifier): Fix multiple level handling.
1941         * decl2.c (namespace_ancestor): Use CP_DECL_CONTEXT.
1942         (arg_assoc): Don't skip the first argument of a function.
1943
1944 Tue Jul 14 20:09:22 1998  Jeffrey A Law  (law@cygnus.com)
1945
1946         * search.c (my_tree_cons): Clean up.
1947
1948 1998-07-14  Jason Merrill  <jason@yorick.cygnus.com>
1949
1950         * call.c (joust): Don't warn about "confusing" conversions to the
1951         same type.
1952
1953 1998-07-14  Martin von Löwis  <loewis@informatik.hu-berlin.de>
1954
1955         * class.c (push_nested_class): Complain about namespaces.
1956         * decl.c (start_decl): Enter the object's namespace.
1957         (cp_finish_decl): Leave it.
1958         (grokdeclarator): Likewise.
1959         * decl2.c (check_decl_namespace): New function.
1960         (finish_file): Call it.
1961         * parse.y (complex_direct_notype_declarator): Set complexity
1962         of namespace-qualified ids to -1, enter the namespace.
1963
1964         * method.c (build_template_decl_overload): Expect _DECL as first
1965         parameter. Put context temporarily into current_namespace.
1966         * pt.c (check_explicit_specialization): Change caller.
1967         (tsubst): Likewise.
1968
1969         * init.c (build_offset_ref): Call mark_used and
1970         convert_from_reference for namespace members.
1971
1972 Mon Jul 13 23:25:28 1998  Martin von Löwis  <loewis@informatik.hu-berlin.de>
1973
1974         * search.c (my_tree_cons): The bitfield is at index 2.
1975
1976 Mon Jul 13 17:21:01 1998  Nick Clifton  <nickc@cygnus.com>
1977
1978         * lang-options.h: Format changed to work with new --help support
1979         in gcc/toplev.c
1980         
1981 1998-07-12  Martin von Löwis  <loewis@informatik.hu-berlin.de>
1982
1983         * decl2.c (build_expr_from_tree): Change calls of do_identifier.
1984         Do Koenig lookup in CALL_EXPR.
1985         (arg_assoc): Handle error_mark.
1986         * lex.c (is_global): New function.
1987         (do_identifier): Expect arguments for Koenig lookup.
1988         * parse.y (primary): Add rules for calls of unqualified function calls.
1989         (do_id): Change call of do_identifier.
1990         * pt.c (finish_stmt_expr): Likewise.
1991         * semantics.c (finish_id_expr): Likewise.
1992         (finish_call_expr): Add integer parameter to indicate
1993         argument-dependent lookup.
1994
1995         * decl.c (struct binding_level): New field using_directives.
1996         (push_using_decl): Not sorry anymore.
1997         (push_using_directive): New function.
1998         (lookup_tag): Use CP_DECL_CONTEXT to iterate.
1999         (unqualified_namespace_lookup): New function, code from ...
2000         (lookup_name_real): ... here.
2001         * decl2.c (lookup_using_namespace): Pass using list instead of
2002         initial scope.
2003         (validate_nonmember_using_decl): New function.
2004         (do_nonmember_using_decl): New function.
2005         (do_toplevel_using_decl): Use them.
2006         (do_local_using_decl): New function.
2007         (do_using_directive): Support block-level directives.
2008         * parse.y (simple_stmt): Support using declarations and
2009         directives.
2010         (namespace_qualifier, namespace_using_decl): New non-terminals.
2011
2012         * xref.c (classname): New function.
2013         (GNU_xref_hier): Change class and base parameters to tree.
2014         * decl.c (xref_baseypes): Change caller.
2015         * friend.c (make_friend_class): Likewise.
2016
2017 1998-07-12  Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
2018
2019         * typeck.c (comptypes, case TEMPLATE_TEMPLATE_PARM): Add parameter 
2020         comparison.
2021
2022         * pt.c (for_each_template_parm, case TEMPLATE_DECL): If it is a 
2023         template template parameter, record its use.
2024         (for_each_template_parm, case TEMPLATE_TEMPLATE_PARM): Traverse 
2025         its template arguments if exists.
2026
2027         * pt.c (coerce_template_template_parms): New function equivalent
2028         to coerce_template_parms when IS_TMPL_PARM is true.
2029         (coerce_template_parms): Use it.  Remove the IS_TMPL_PARM parameter,
2030         all callers changed.
2031
2032         (coerce_template_parms): Access ARGLIST properly when creating a
2033         new vector.  Only accept implicit TYPE_DECL as valid argument for
2034         a template template parameter when it is a base class of
2035         current_class_type.  Don't display error message when COMPLAIN is
2036         false.
2037
2038 1998-07-12  Klaus Kaempf (kkaempf@progis.de)
2039
2040         * repo.c (get_base_filename): Use file_name_nondirectory.
2041         (open_repo_file): Ditto.
2042         * cp-tree.h (file_name_nondirectory): Add prototype.
2043
2044 1998-07-12  Jason Merrill  <jason@yorick.cygnus.com>
2045
2046         * friend.c (do_friend): Pull the identifier out of declarator.
2047         Use cp_error and friends.
2048         * decl2.c (qualified_lookup_using_namespace): Fix call to 
2049         purpose_member.
2050         * decl.c (lookup_name_real): Don't call complete_type on a namespace.
2051         (grokvardecl): Use DECL_CLASS_SCOPE_P.
2052         * cvt.c (convert_pointer_to_real): Check for error_mark_node sooner.
2053         * class.c (warn_hidden): Fix for OVERLOAD.
2054         From grahams@rcp.co.uk:
2055         * cp-tree.h (DEFARG_NODE_CHECK): New macro.
2056         (DEFARG_LENGTH, DEFARG_POINTER): Use it.
2057
2058 Sun Jul 12 01:20:57 1998  Jeffrey A Law  (law@cygnus.com)
2059
2060         * g++.1 (-traditional): Remove duplicated documentation.
2061
2062 1998-07-11  Mark Mitchell  <mark@markmitchell.com>
2063
2064         * method.c (flush_repeats): Add nrepeats parameter.
2065         (issue_nrepeats): Likewise.
2066         (is_back_referenceable_type): New function.  Don't back-reference
2067         TEMPLATE_TYPE_PARMs as well as simple types like integers.
2068         (build_mangled_name_for_type): Likewise.
2069         (build_mangled_name_for_type_with_Gcode): Likewise.
2070         (lasttype): Remove.
2071         (nrepeats): Likewise.
2072         (Nrepeats): Likewise.
2073         (start_squangling): Don't clear the variables removed above.
2074         (end_squangling): Likewise.
2075         (flush_repeats): Tidy.  Use nrepeats parameter rather than
2076         Nrepeats global.
2077         (issue_nrepeats): Likewise, but with nrepeats global.  Use
2078         is_backreferenceable_type.
2079         (build_overload_nested_name): Tidy.  Add comment.  Use
2080         build_mangled_name_for_type.
2081         (build_underscore_int): Comment.
2082         (build_overload_scope_ref): Use build_mangled_name_for_type.
2083         (build_overload_int): Likewise.
2084         (build_template_template_parm_names): Tidy.
2085         (build_template_parm_names): Use build_mangled_name_for_type.
2086         (build_overload_identifier): Add comments.
2087         (build_mangled_name_for_type_with_Gcode): Split out from
2088         build_mangled_name.
2089         (build_mangled_name_for_type): Use it.
2090         (build_mangled_name): Rework to use build_mangled_name_for_type
2091         and to not use global nrepeats/Nrepeats.  Tidy.
2092         (process_modifiers): Tidy.
2093         (check_btype): Use is_backreferenceable_type.  Add comment.
2094         Rename `node' to `type'.
2095         (process_overload_item): Set numeric_output_need_bar here.
2096         Use build_mangled_name_for_type.  Tidy.
2097         (build_decl_overload_real): Tidy.  Don't use Nrepeats.  Use
2098         build_mangled_name_for_type.
2099
2100         * pt.c (push_template_decl_real): Don't look at DECL_TEMPLATE_INFO
2101         for TYPE_DECLs.
2102
2103 1998-07-08  Vladimir N. Makarov  <vmakarov@cygnus.com>
2104
2105         * cp-tree.h (warn_long_long): Define.
2106         * decl.c (grokdeclarator): Add flag `warn_long_long' as guard for
2107         warning "ANSI C++ does not support `long long'".
2108         * decl2.c (warn_long_long): Define.
2109         (lang_decode_option): Parse -Wlong-long, -Wno-long-long options.
2110
2111 1998-07-07  Jason Merrill  <jason@yorick.cygnus.com>
2112
2113         * decl.c (xref_tag): Handle attributes between 'class' and name.
2114         * parse.y (aggr): Likewise.
2115         * semantics.c (finish_class_definition): Likewise.
2116         * Makefile.in (EXPECTED): Adjust.
2117
2118         * cp-tree.h: Declare flag_optional_diags and warn_multichar.
2119         * decl2.c: Define them.
2120         (lang_decode_option): Handle them.
2121         * lang-options.h: Add -foptional-diags.
2122         * class.c (finish_struct): Don't complain about multiple meanings of 
2123         name if -fno-optional-diags.
2124         * decl.c (pushdecl_class_level): Likewise.
2125         * lex.c (real_yylex): Check warn_multichar.
2126
2127 1998-07-06  Jason Merrill  <jason@yorick.cygnus.com>
2128
2129         * decl.c (lookup_tag): Use CP_DECL_CONTEXT.
2130
2131         * tree.c (make_binfo): Fix length.
2132
2133 1998-06-30  Benjamin Kosnik  <bkoz@bliss.nabi.net>
2134
2135         * decl2.c (lang_decode_option): Remove warn_template_debugging.
2136         * lang-options.h: Ditto.
2137
2138 Mon Jun 29 20:17:40 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2139
2140         * except.c (build_eh_type_type_ref): Remove unused variable `susp'.
2141         (process_start_catch_block): Likewise for variables
2142         `false_label_rtx', `call_rtx' and `return_value_rtx'.
2143
2144 1998-06-29  Brendan Kehoe  <brendan@cygnus.com>
2145
2146         * tree.c (build_srcloc): Make sure we allocate this node on the
2147         permanent obstack.
2148
2149 Sat Jun 27 23:34:18 1998  Fred Fish  <fnf@ninemoons.com>
2150
2151         * g++spec.c (NEED_MATH_LIBRARY): Define to 1 if not already defined.
2152         (lang_specific_driver): Initialize need_math with NEED_MATH_LIBRARY.
2153         (lang_specific_driver): Only add -lm automatically if need_math is
2154         nonzero.
2155
2156 Sat Jun 27 12:22:56 1998  Jeffrey A Law  (law@cygnus.com)
2157
2158         * Make-lang.in (g++): Depend on mkstemp.o.  Link in mkstemp.o
2159
2160 Sat Jun 27 07:36:09 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2161
2162         * Makefile.in (EXPR_H): New dependency variable.
2163         (decl2.o): Depend on $(EXPR_H).
2164         (typeck.o): Likewise.
2165         (init.o): Likewise.
2166         (expr.o): Likewise.
2167
2168 1998-06-25  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
2169
2170         * decl.c (start_enum): Put local enums on permanent_obstack.
2171
2172 1998-06-25  Mark Mitchell  <mark@markmitchell.com>
2173
2174         * cp-tree.h (c_get_alias_set): Declare.
2175         * decl.c (init_decl_processing): Set lang_get_alias_set.
2176
2177 1998-06-25  Andrew MacLeod  <amacleod@cygnus.com>
2178
2179         * cp-tree.h (mark_all_runtime_matches): Add function prototype.
2180         * except.c (mark_all_runtime_matches): Set TREE_SYMBOL_REFERENCED
2181         flag for all function decls which are in the exception table. 
2182         * exception.cc (__cplus_type_matcher): Check for CATCH_ALL_TYPE match.
2183         * decl2.c (finish_file): Call mark_all_runtime_matches to make sure
2184         code is emitted for any referenced rtti function.
2185
2186 1998-06-25  Dave Brolley  <brolley@cygnus.com>
2187
2188         * lang-specs.h: Use new | syntax to eliminate
2189         string concatenation.
2190
2191 1998-06-25  Jason Merrill  <jason@yorick.cygnus.com>
2192
2193         * cp-tree.h (CP_DECL_CONTEXT): New macro.
2194         * decl2.c (is_namespace_ancestor, lookup_using_namespace): Use it.
2195         * method.c (build_overload_nested_name): Likewise.
2196         * sig.c (build_signature_pointer_or_reference_type): Don't set
2197         DECL_CONTEXT.
2198
2199 1998-06-24  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
2200
2201         Set DECL_CONTEXT for globals to NULL_TREE instead of global_namespace.
2202         * cp-tree.h (FROB_CONTEXT): New macro.
2203         (DECL_MAIN_P): ::main should have a DECL_CONTEXT of NULL_TREE.
2204         * decl.c (namespace_binding): Replace NULL_TREE with
2205         global_namespace.
2206         (set_namespace_binding, pop_namespace, lookup_name_real): Likewise.
2207         * decl2.c (is_namespace_ancestor, lookup_using_namespace):
2208         Likewise.
2209         * decl.c (pushtag): Use FROB_CONTEXT.
2210         (pushdecl, make_typename_type, define_function, grokdeclarator):
2211         Likewise.
2212         * decl2.c (set_decl_namespace, do_namespace_alias): Likewise.
2213         * pt.c (push_template_decl_real, lookup_template_class, tsubst):
2214         Likewise.
2215         * decl2.c (decl_namespace): Return global_namespace if no context.
2216         * method.c (build_overload_nested_name): Expect null as context.
2217         * pt.c (mangle_class_name_for_template): Do nothing for null
2218         contexts.
2219         (lookup_template_class): Allow for null id_context.
2220
2221 1998-06-25  Richard Henderson  <rth@cygnus.com>
2222
2223         * method.c (emit_thunk): Set current_function_is_thunk for the
2224         ASM_OUTPUT_MI_THUNK case as well.
2225
2226 1998-06-23  Andrew MacLeod  <amacleod@cygnus.com>
2227
2228         * exception.cc (__cplus_type_matcher): Get a match_info pointer
2229         instead of an exception table entry as a parameter.
2230
2231 1998-06-23  Andrew MacLeod  <amacleod@cygnus.com>
2232
2233         * parse.y (function_try_block): Don't call start_catch_handler.
2234         * except.c (call_eh_info): Remove coerced field from declaration.
2235         (build_eh_type_type_ref): New function to create an address of a
2236         rtti function for the new style exception tables.
2237         (expand_start_catch_block): Split function, this contains the
2238         common part.
2239         (process_start_catch_block_old): New function to perform the rest
2240         of expand_start_catch_block under old style exceptions.
2241         (process_start_catch_block_old): New function to perform the rest
2242         of expand_start_catch_block under new style exceptions.
2243         (expand_end_catch_block): Only pop the false label off the stack under
2244         the old style of exceptions.
2245         * semantics.c (finish_try_block): Don't call start_catch_handler.
2246         * exception.cc (struct cp_eh_info): Add original_value field.
2247         (__cplus_type_matcher): Perform type matching on the original exception
2248         value, and if we have a match, set the current value.
2249         (__cp_push_exception): Set the original expcetion value.
2250
2251 1998-06-23  Jason Merrill  <jason@yorick.cygnus.com>
2252
2253         * call.c (joust): Fix confusing conversion warning.
2254
2255         * call.c (build_op_delete_call): Add placement parm.  Check
2256         LOOKUP_SPECULATIVELY.
2257         * cp-tree.h, decl2.c, init.c: Adjust.
2258         * decl.c (finish_function): Use it.
2259
2260         * pt.c (tsubst): Diagnose creating void fields or variables.
2261
2262 Mon Jun 22 08:50:26 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2263
2264         * call.c (build_scoped_method_call): Remove unused variable `tmp'.
2265
2266         * cp-tree.h (check_dtor_name): Add prototype.
2267
2268         * init.c (expand_member_init): Remove unused variables
2269         `ptr_type_node', `parm' and `rval'.
2270
2271         * ptree.c (print_lang_type): Use HOST_WIDE_INT_PRINT_DEC specifier
2272         in call to fprintf.
2273         (lang_print_xnode): Likewise.
2274
2275         * typeck2.c (enum_name_string): Cast argument to sprintf to long
2276         and use %ld specifier.
2277
2278         * xref.c (GNU_xref_end_scope): Use HOST_WIDE_INT_PRINT_DEC
2279         specifier in call to fprintf.
2280         (GNU_xref_member): Cast argument to sprintf to int.
2281
2282 Fri Jun 19 23:22:42 1998  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
2283
2284         * typeck2.c (pop_init_level): Warn about implicit zero initialization
2285         of struct members.
2286
2287 Thu Jun 18 09:32:32 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2288
2289         * cp-tree.h: Prototype function `check_java_method'.
2290
2291 1998-06-17  Jason Merrill  <jason@yorick.cygnus.com>
2292
2293         * class.c (finish_struct): Make conflicting use of id a pedwarn.
2294         * decl.c (pushdecl_class_level): Likewise.
2295
2296 1998-06-17  Mark Mitchell  <mark@markmitchell.com>
2297
2298         * pt.c (convert_nontype_argument): Issue an error when presented
2299         with an integer (real) constant that cannot be simplified to an
2300         INT_CST (REAL_CST).
2301
2302         * cp-tree.h (c_get_alias_set): Remove declaration added in
2303         1998-06-13 change that should never have been checked in.
2304
2305 1998-06-17  Jason Merrill  <jason@yorick.cygnus.com>
2306
2307         * typeck.c (build_binary_op_nodefault): Change % in format strings
2308         to %%.
2309
2310         * decl.c (grokvardecl): Don't build_static_name for decls that
2311         aren't at namespace scope.
2312
2313         * init.c (perform_member_init): Catch default-initialization of
2314         references.
2315
2316 1998-06-17  Mark Mitchell  <mark@markmitchell.com>
2317
2318         * errfn.c (cp_thing): Handle the `%%' formatting sequence.
2319
2320 1998-06-17  Jason Merrill  <jason@yorick.cygnus.com>
2321
2322         * method.c (hack_identifier): Complain about getting a namespace
2323         or class template.
2324         * typeck.c (decay_conversion): Remove check for namespaces.
2325         * typeck2.c (incomplete_type_error): Likewise.
2326         * parse.y (template_arg): Add PTYPENAME expansion.
2327
2328 1998-06-16  Andrew MacLeod  <amacleod@cygnus.com>
2329
2330         * decl.c (grokvardecl): Don't build external assembler names for 
2331         TYPENAMEs in other namespaces as there is no declarator.
2332         * error.c (cp_file_of, cp_line_of): Don't extract file or line number
2333         info from DECL_CONTEXT if it is NULL.
2334
2335 1998-06-16  Jason Merrill  <jason@yorick.cygnus.com>
2336
2337         * call.c (check_dtor_name): Split out.
2338         (build_scoped_method_call): Use it.
2339         (build_method_call): Use it.
2340         * init.c (build_offset_ref): Use it.
2341
2342         * typeck.c (build_static_cast): Fix handling of pointers to members.
2343
2344         * decl.c (finish_function): Just return nothing from a constructor.
2345         * typeck.c (c_expand_return): Complain about returning a void
2346         expression from a destructor.
2347
2348 1998-06-13  Mark Mitchell  <mark@markmitchell.com>
2349
2350         * class.c (alter_access): Accept a BINFO explaining how to get
2351         from the entity whose accessed is being altered to the type doing
2352         the altering.
2353         (handle_using_decl): New function containing code split out from ...
2354         (finish_struct_1): Here.
2355
2356         * cp-tree.h (complete_type_or_else): Declare.
2357         * init.c (build_new_1, build_delete): Use it.
2358         * typeck.c (require_complete_type): Use complete_type, rather than
2359         expanding it inline.
2360         (complete_type_or_else): New function.
2361         (build_component_ref): Use it.
2362         (pointer_int_sum): Make sure the type pointed to is complete.
2363         (pointer_diff): Likewise.
2364
2365         * pt.c (for_each_template_parm): Traverse the TYPE_CONTEXT for
2366         types. 
2367
2368         * search.c (get_matching_virtual): Note that member templates
2369         cannot override virtual functions.
2370
2371 1998-06-12  Brendan Kehoe  <brendan@cygnus.com>
2372
2373         * pt.c (check_explicit_specialization): If DECLARATOR turned into
2374         an error_mark_node from lookup_template_function, return the same.
2375         (determine_specialization): Also make sure TEMPLATE_ID isn't an
2376         error_mark_node, before we try to read its operands.
2377         * decl.c (grokdeclarator): If we got an error_mark_node from
2378         check_explicit_specialization, just return it right back.
2379
2380 1998-06-12  Mark Mitchell  <mark@markmitchell.com>
2381
2382         * class.c (instantiate_type): Don't treat template-ids that don't
2383         specify any template arguments as equivalent to ordinary
2384         identifiers.  Use OFFSET_REF instead of SCOPE_REF to refer to
2385         pointer-to-members for member templates.  Tidy slightly.
2386         * cp-tree.def (TEMPLATE_ID_EXPR): Revise documentation.
2387         * init.c (build_offset_ref): Handle template-ids like ordinary
2388         identifiers, for the most part, but store a TEMPLATE_ID_EXPR in the
2389         offset part of the OFFSET_REF.
2390         * typeck.c (build_unary_op): Change check for unknown types to
2391         look for OFFSET_REFs, not SCOPE_REFs.
2392
2393 1998-06-11  Mark Mitchell  <mark@markmitchell.com>
2394
2395         * pt.c (is_member_template_class): New function.
2396         (push_template_decl_real): Use it.
2397
2398 1998-06-11  Benjamin Kosnik  <bkoz@elmo.cygnus.com>
2399
2400         * friend.c (do_friend): Add support for nested classes using
2401         member functions of the enclosing class as friends.
2402
2403 1998-06-10  Mark Mitchell  <mark@markmitchell.com>
2404
2405         * call.c (convert_default_arg): Make global, not static.
2406         (convert_arg_for_ellipsis): Split out from ...
2407         (build_over_call): Here.
2408         * cp-tree.h (convert_default_arg); Declare.
2409         (convert_arg_to_ellipsis): Likewise.
2410         (do_member_init): Remove.
2411         * init.c (do_member_init): Remove; this code is dead.
2412         (expand_member_init): Remove much of this code; it is dead.
2413         * typeck.c (convert_arguments): Use convert_default_arg and
2414         convert_arg_for_ellipsis, rather than duplicating here.
2415         
2416         * call.c (convert_like): Don't fail silently if 
2417         build_user_type_conversion fails.  Always return error_mark_node 
2418         for failure.
2419
2420 1998-06-10  Jason Merrill  <jason@yorick.cygnus.com>
2421
2422         * search.c (covariant_return_p): Complain about ambiguous base.
2423
2424         * typeck.c (build_component_ref): Diagnose ref to nested type.
2425
2426 1998-06-10  Brendan Kehoe  <brendan@cygnus.com>
2427
2428         * decl.c (grokparms): Check that INIT isn't an error_mark_node
2429         before giving error about invalid type for default arg.
2430
2431 1998-06-10  Jason Merrill  <jason@yorick.cygnus.com>
2432
2433         * call.c (build_method_call): Fix thinko.
2434
2435 1998-06-10  Dave Brolley  <brolley@cygnus.com>
2436
2437         * decl2.c (lang_decode_option): New argc/argv interface.
2438         * cp-tree.h (lang_decode_option): New argc/argv interface.
2439         * lang-specs.h (default_compilers): Only call cpp if -E, -M or -MM is
2440         specified for cpplib-enabled compilers.
2441         * lex.c (lang_init): Don't check_newline for cpplib.
2442         (init_parse): Don't initialize cpplib here.
2443
2444 1998-06-10  Brendan Kehoe  <brendan@cygnus.com>
2445
2446         * typeck.c (build_component_ref): Make sure FIELD has a lang_specific
2447         piece before checking DECL_MUTABLE_P.
2448
2449 1998-06-10  John Carr  <jfc@mit.edu>
2450
2451         * tree.c (debug_binfo): Make printf format match arguments.
2452
2453         * error.c (OB_PUTI): Make printf format match arguments.
2454
2455 1998-06-10  Jason Merrill  <jason@yorick.cygnus.com>
2456
2457         * init.c (perform_member_init): Handle default-initialization.
2458
2459         * except.c (build_throw): Handle throwing NULL.
2460
2461         * typeck.c (build_x_function_call): Use resolve_offset_ref.
2462
2463         * search.c (compute_access): Only strip an anonymous union
2464         for a FIELD_DECL.
2465
2466         * call.c (add_builtin_candidates): Tweak.
2467
2468         * cvt.c (build_expr_type_conversion): Restore code for conversion
2469         from class types.
2470         * decl2.c (delete_sanity): Use it.  Clean up.
2471
2472         * typeck.c (comp_ptr_ttypes_real): Fix cv-qual comparisons.
2473
2474 1998-06-10  Branko Cibej  <branko.cibej@hermes.si>
2475
2476         * typeck.c (c_expand_return): Don't warn about void expressions on
2477         return statements in functions returning void.
2478
2479 1998-06-09  Mark Mitchell  <mark@markmitchell.com>
2480
2481         * pt.c (fn_type_unification): Revise documentation.  Tidy.
2482         (type_unification): Likewise.
2483
2484 1998-06-09  Andrew MacLeod  <amacleod@cygnus.com>
2485
2486         * semantics.c (finish_try_block): Rename expand_start_catch, and delete
2487         expand_end_catch.
2488         * parse.y (function_try_block): Rename expand_start_catch, and delete
2489         expand_end_catch.
2490         * except.c (expand_end_eh_spec): Rename expand_start_catch, and delete
2491         expand_end_catch.
2492
2493 1998-06-09  Jason Merrill  <jason@yorick.cygnus.com>
2494
2495         * search.c (lookup_member): New fn.
2496         * class.c (finish_struct_1): Use it.
2497         * decl.c (lookup_name_real): Use it.
2498
2499 Mon Jun  8 20:45:52 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2500
2501         * Makefile.in (decl2.o): Depend on dwarf2out.h and dwarfout.h.
2502
2503         * cp-tree.h: Add prototype for `maybe_print_template_context' and
2504         `maybe_make_one_only'.
2505
2506         * decl.c (auto_function): Remove unused variable `decl'.
2507
2508         * decl2.c: Include dwarf2out.h and dwarfout.h.
2509
2510         * lex.c: Remove redundant declarations of `set_float_handler' and
2511         `asm_out_file'.
2512
2513 1998-06-08  Andrew MacLeod  <amacleod@cygnus.com>
2514
2515         * except.c (init_exception_processing): Remove NEW_EH_MODEL compile 
2516         time flag.  Call __cp_eh_info instead of __cp_exception_info.
2517         * exception.cc (struct cp_eh_info): Remove NEW_EH_MODEL flag.
2518         (__cp_exception_info): Return offset into cp_eh_info structure to 
2519         match what use to be the start of this structure.
2520         (__cp_eh_info): New function to return a pointer to cp_eh_info struct.
2521         (__cplus_type_matcher, __cp_push_exception): Remove NEW_EH_MODEL
2522         compile time flag.
2523         (__uncatch_exception, __check_eh_spec, std::uncaught_exception): Call 
2524         __cp_eh_info instead of __cp_exception_info.
2525
2526 1998-06-08  Jason Merrill  <jason@yorick.cygnus.com>
2527
2528         * decl.c (cp_finish_decl): Disable inlining of extern inlines
2529         with static variables.
2530
2531 1998-06-08  Mark Mitchell  <mark@markmitchell.com>
2532
2533         * init.c (build_offset_ref): Correct previous change to use build,
2534         not build_min.
2535
2536 1998-06-07  Mark Mitchell  <mark@markmitchell.com>
2537
2538         * class.c (instantiate_type): Handle pointer-to-members where the
2539         member is a template.
2540         * init.c (build_offset_ref): Likewise.
2541         * typeck.c (build_unary_op): Likewise.
2542
2543 1998-06-07  Richard Henderson  <rth@cygnus.com>
2544
2545         * lex.c (lang_init_options): New function.
2546         (lang_init): Remove flag_exceptions == 2 hack.
2547         
2548 1998-06-05  Jason Merrill  <jason@yorick.cygnus.com>
2549
2550         * search.c (envelope_add_decl): Tweak for implicit typename.
2551
2552         * call.c (joust): Also warn about confusing conversion op/constructor
2553         overload resolution.
2554
2555         * spew.c (yylex): Also return the TYPE_DECL if got_object.
2556         Don't clear got_object after '~'.
2557         * call.c (build_scoped_method_call): Tweak destructor handling.
2558         (build_method_call): Likewise.
2559         * pt.c (tsubst_copy, case METHOD_CALL_EXPR): Don't mess with
2560         TYPE_MAIN_VARIANT for destructors.
2561         * semantics.c (finish_object_call_expr): Complain about calling a
2562         TYPE_DECL.
2563
2564 1998-06-05  Per Bothner  <bothner@cygnus.com>
2565
2566         * g++spec.c (lang_specific_pre_link, lang_specific_extra_ofiles):
2567         Define - update needed by gcc.c change.
2568
2569 1998-06-05  Jason Merrill  <jason@yorick.cygnus.com>
2570
2571         * error.c (cp_printers): Use 'o' instead of '_' for the null entry.
2572
2573 1998-06-05  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
2574
2575         * cp-tree.h (DECL_NAMESPACE_ALIAS, ORIGINAL_NAMESPACE): Declare.
2576         * decl.c (lookup_name_real): Add namespaces_only parameter.
2577         If set, return only NAMESPACE_DECLs.
2578         (select_decl): Likewise.
2579         (identifier_type_value): Give additional parameter.
2580         (lookup_name_nonclass): Likewise.
2581         (lookup_name): Likewise.
2582         (find_binding): Skip namespace aliases.
2583         (binding_for_name): Likewise.
2584         (push_namespace): Check for namespace aliases.
2585         (lookup_name_namespace_only): New function.
2586         (begin_only_namespace_names, end_only_namespace_names): New functions.
2587         * decl2.c (set_decl_namespace): Skip namespace aliases.
2588         (do_using_directive): Likewise.
2589         (do_namespace_alias): Produce namespace aliases, fix alias 
2590         redeclaration.
2591         * error.c (dump_decl): Support SCOPE_REF.
2592         * parse.y (extdef): Wrap lookup with namespace_only for namespace
2593         aliases and using declarations.
2594
2595 1998-06-04  Jason Merrill  <jason@yorick.cygnus.com>
2596
2597         * tree.c (really_overloaded_fn): Only see through one TREE_LIST.
2598
2599         * error.c (dump_expr): Clean up NEW_EXPR case.
2600
2601 1998-06-04  Martin von Löwis  <loewis@informatik.hu-berlin.de>
2602
2603         Suggested by Brendan Kehoe
2604         * decl2.c (do_toplevel_using_decl): When decl is a TYPE_DECL,
2605         treat it as using ::decl.
2606
2607         * decl2.c (arg_assoc_type): Process unknown_type_node and OFFSET_TYPE.
2608
2609         * tree.c (mapcar): Support NEW_EXPR.
2610
2611         * error.c (dump_expr): Support NEW_EXPR.
2612
2613 1998-06-03  Jason Merrill  <jason@yorick.cygnus.com>
2614
2615         * method.c (make_thunk): Use overload machinery to make name.
2616         * search.c (covariant_return_p): New fn.
2617         (get_matching_virtual): Use it.
2618
2619         * init.c (build_new_1): Fix check for void.
2620
2621 1998-06-01  Per Bothner  <bothner@cygnus.com>
2622
2623         * cp-tree.h (TYPE_FOR_JAVA):  New macro.
2624         * decl.c, cp-tree.h (java_byte_type_node, java_short_type_node,
2625         java_int_type_node, java_long_type_node, java_float_type_node,
2626         java_double_type_node, java_char_type_node, java_boolean_type_node):
2627         New "primitive" types, with predefined names __java_byte etc.
2628         (record_builtin_java_type):  New function.
2629         (init_decl_processing):  Make Java types with record_builtin_java_type.
2630         (pushtag, grokdeclarator):  Set TYPE_FOR_JAVA if in extern "JAVA".
2631         (xref_baseypes):  If base class was TYPE_FOR_JAVA, so is this class.
2632         (grokfndecl):  Call check_java_method for Java classes.
2633         * method.c (is_java_type):  Removed.  Replaced with TYPE_FOR_JAVA.
2634         (process_overload_item):  Match types against specific
2635         java_XX_type_node types, rather than using is_java_type.
2636         * class.c (finish_struct_1):  Don't add default copy constructor
2637         or operator= if TYPE_FOR_JAVA.
2638         (pop_lang_conext):  Restore strict_prototyp proper if Java.
2639         * decl2.c (acceptable_java_type, check_java_method):  New functions.
2640         * pt.c (instantiate_class_template):  Copy TYPE_FOR_JAVA from pattern.
2641         (tsubst):  Move common statement after if statement.
2642         * typeck.c (comptypes):  If strict, TYPE_FOR_JAVA must match.
2643
2644 1998-06-01  Jason Merrill  <jason@yorick.cygnus.com>
2645
2646         * pt.c (for_each_template_parm): Use first_rtl_op.
2647
2648         * tree.c (build_cplus_array_type_1): Also check index_type for
2649         template parms.
2650
2651 1998-05-31  Jason Merrill  <jason@yorick.cygnus.com>
2652
2653         * pt.c (tsubst): Always copy BINFO_BASETYPES.
2654
2655 1998-05-29  scott snyder  <snyder@d0sgif.fnal.gov>
2656
2657         * tree.c (layout_basetypes): If we change TYPE_SIZE, change
2658         TYPE_SIZE_UNIT too.
2659
2660 1998-05-29  Mark Mitchell  <mark@markmitchell.com>
2661
2662         * decl.c (grokdeclarator): Don't complain about in-class
2663         initialization of static consts if we don't really know the type
2664         of the variable.
2665
2666 1998-05-29  Jason Merrill  <jason@yorick.cygnus.com>
2667
2668         * cp-tree.h (DECL_DESTRUCTOR_P): New macro.
2669         * method.c (build_destructor_name): New fn.
2670         * decl2.c (maybe_retrofit_in_chrg): Split out...
2671         (grokclassfn): From here.  Reorganize.
2672         * decl.c (grok_ctor_properties): Make sure ctors for types with 
2673         vbases have the in_chrg parm.
2674         * pt.c (instantiate_class_template): Update 
2675         TYPE_USES_VIRTUAL_BASECLASSES from tsubsted bases.  Don't call
2676         grok_*_properties.
2677         (tsubst): Call grok_ctor_properties and maybe_retrofit_in_chrg.
2678
2679 1998-05-28  Mark Mitchell  <mark@markmitchell.com>
2680
2681         * pt.c (instantiate_decl): Make test for whether or not static
2682         variables should be instantiated early match its comment.
2683
2684 1998-05-28  Jason Merrill  <jason@yorick.cygnus.com>
2685
2686         * decl.c (start_decl): Always pedwarn about vacuously redeclaring 
2687         a member.
2688         (start_function): Call check_default_args.
2689         * decl2.c (grokfield): Don't call check_default_args.
2690         (check_default_args): Use cp_error_at.
2691         * lex.c (do_pending_defargs): Call check_default_args.
2692
2693 1998-05-27  Brendan Kehoe  <brendan@cygnus.com>
2694
2695         * call.c (build_method_call): Make sure get_type_value returns
2696         something before we try to use its TYPE_MAIN_VARIANT.
2697         (build_scoped_method_call): Likewise.
2698
2699 1998-05-27  Jason Merrill  <jason@yorick.cygnus.com>
2700
2701         * typeck2.c (digest_init): Complain about getting a TREE_LIST to
2702         initialize an array.
2703
2704         * search.c (expand_upcast_fixups): Don't set DECL_CONTEXT and
2705         DECL_VIRTUAL_P.
2706
2707         * friend.c (do_friend): Clarify template warning.
2708
2709 1998-05-27  Mark Mitchell  <mark@markmitchell.com>
2710
2711         * decl.c (shadow_label): Don't treat decls as identifiers.
2712         (maybe_push_to_top_level): Clear shadowed_labels.
2713
2714         * pt.c (instantiate_decl): Reset lineno and filename after calling
2715         regenerate_decl_from_template. 
2716
2717         * decl.c (grokdeclarator): Don't try to use TYPE_OBSTACK on an
2718         error_mark_node.
2719
2720 1998-05-27  Kevin Buhr  <buhr@stat.wisc.edu>
2721
2722         * parse.y (base_class): Use is_aggr_type, not IS_AGGR_TYPE.
2723
2724 1998-05-26  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
2725
2726         * pt.c (process_template_parm): Accept TYPENAME_TYPE nodes.
2727         (convert_nontype_argument): Handle cases when nontype template
2728         parameters become classes after substitution.
2729
2730 1998-05-26  Mark Mitchell  <mark@markmitchell.com>
2731
2732         * friend.c (is_friend): Use comptypes, rather than == to compare
2733         types.  Modify for new representation of template friends.
2734         (make_friend_class): Likewise.
2735         * pt.c (tsubst_friend_class): Undo 1998-05-21 change.  Tweak.
2736         (instantiate_class_template): Deal with template friends.
2737
2738         * decl.c (store_parm_decls): Remove redundant call to
2739         expand_main_function.
2740
2741 1998-05-26  Benjamin Kosnik  <bkoz@loony.cygnus.com>
2742
2743         * decl.c (start_decl): Check for DECL_LANG_SPECIFIC before
2744         DECL_USE_TEMPLATE.
2745
2746 1998-05-26  Per Bothner  <bothner@cygnus.com>
2747
2748         * language_as_string:  Handle lang_java.
2749
2750 1998-05-26  Jason Merrill  <jason@yorick.cygnus.com>
2751
2752         * decl.c (pushdecl): Don't copy the type_decl.
2753
2754 1998-05-26  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
2755
2756         * class.c (pushclass): Always store TYPE_MAIN_VARIANT in
2757         current_class_type.
2758         * decl.c (grokdeclarator): Put typedefs on the type's obstack.
2759
2760         * parse.y (complex_direct_notype_declarator): Use $1 to access
2761         scope of notype_qualified_id.
2762
2763 1998-05-26  Dave Brolley  <brolley@cygnus.com>
2764
2765         * lex.c (parse_options,yy_cur,yy_lim): Add for cpplib.
2766         (init_parse): Initialize cpplib interface.
2767
2768         * Makefile.in (CXX_OBJS): Make sure dependencies never end with an
2769         empty continuation.
2770
2771 1998-05-26  Mark Mitchell  <mark@markmitchell.com>
2772
2773         * decl.c (pushtag): Avoid crashing on erroneous input.
2774
2775 1998-05-25  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
2776
2777         * decl.c (push_namespace): Only produce one unique name for
2778         anonymous namespaces.
2779         (get_unique_name): Remove.
2780
2781 1998-05-25  Mark Mitchell  <mark@markmitchell.com>
2782
2783         * call.c (tourney): Don't do any extra comparisons.
2784
2785         * decl2.c (build_anon_union_vars): Don't crash on empty sub-unions.
2786
2787         * cp-tree.h (processing_template_parmlist): Declare.
2788         * decl.c (pushtag): Don't call push_template_decl when we
2789         shouldn't. 
2790         * pt.c (processing_template_parmlist): New variable.
2791         (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): New macro.
2792         (complete_template_args): Use it.
2793         (add_to_template_args): Likewise.
2794         (innermost_args): Likewise.
2795         (tsubst): Likewise.
2796         (begin_template_parm_list): Use processing_template_parmlist.
2797         (end_template_parm_list): Likewise.
2798
2799         * cp-tree.h (ANON_UNION_TYPE_P): New macro.
2800         * decl.c (grokdeclarator): Use it.
2801         * decl2.c (grok_x_components): Likewise.
2802         * init.c (initializing_context): Likewise.
2803         * method.c (do_build_copy_constructor): Likewise.
2804         (do_build_assign_ref): Likewise.
2805         * search.c (compute_access): Likewise.
2806         * typeck.c (build_component_ref): Likewise.
2807
2808         * decl.c (grokdeclarator): Don't give a cv-qualified version of an
2809         unnamed type a typedef name "for linkage purposes".
2810
2811         * pt.c (lookup_template_class): Don't look at
2812         IDENTIFIER_CLASS_VALUE when there's no current_class_type.
2813
2814         * method.c (build_overload_int): Handle error cases gracefully.
2815
2816         * pt.c (instantiate_decl): Handle static member variables
2817         correctly.
2818
2819         * pt.c (tsubst): Use the tsubst'd type when producing new
2820         TEMPLATE_PARM_INDEX nodes.
2821
2822 1998-05-24  Mark Mitchell  <mark@markmitchell.com>
2823
2824         * tree.c (cp_tree_equal): Handle pointers to member functions.
2825
2826         * call.c (maybe_handle_implicit_object): Handle QUAL_CONVs.  Make
2827         sure the type of the REF_BIND is a reference type.
2828         (maybe_handle_ref_bind, compare_ics): Rename reference_type to
2829         target_type for clarity.
2830
2831         * parse.y (xcond): Move call to condition_conversion ...
2832         * semantics.c (finish_for_cond): Here.
2833         * parse.c: Regenerated.
2834         
2835 1998-05-24  Jason Merrill  <jason@yorick.cygnus.com>
2836
2837         * decl.c (push_namespace): Namespaces have type void.
2838         * typeck2.c (incomplete_type_error): Complain about namespace
2839         used as expression.
2840         * typeck.c (decay_conversion): Likewise.
2841
2842 1998-05-24  Martin von Löwis  <loewis@informatik.hu-berlin.de>
2843
2844         * error.c (dump_expr): Support namespaces.
2845
2846 1998-05-23  Jason Merrill  <jason@yorick.cygnus.com>
2847
2848         * cp-tree.def: Add SRCLOC.
2849         * cp-tree.h: Add struct tree_srcloc and accessor macros.
2850         * tree.c (build_srcloc, build_srcloc_here): New fns.
2851         * pt.c (add_pending_template): Use build_srcloc_here.
2852         (push_tinst_level): Update last_template_error_tick before erroring.
2853         (instantiate_decl): Restore lineno and input_filename before 
2854         calling add_pending_template.
2855         * decl2.c (finish_file): Set up lineno and input_filename for
2856         pending templates.
2857
2858 1998-05-22  Jason Merrill  <jason@yorick.cygnus.com>
2859
2860         * decl.c (lang_print_error_function): New fn.  
2861         (init_decl_processing): Set print_error_function to use it.
2862         * errfn.c (cp_thing): Don't call maybe_print_template_context here.
2863
2864         * call.c (maybe_handle_ref_bind): Propagate ICS_USER_FLAG and
2865         ICS_BAD_FLAG.
2866
2867         * cvt.c (ocp_convert): Don't set LOOKUP_NO_CONVERSION for
2868         copy-initialization.
2869
2870         * class.c (build_vtable_entry): Use int_fits_type_p.
2871         (build_vtable): Pass a signed offset to build_vtable_entry.
2872         (prepare_fresh_vtable, modify_one_vtable, fixup_vtable_deltas1,
2873         set_rtti_entry): Likewise.
2874
2875 1998-05-22  Per Bothner  <bothner@cygnus.com>
2876
2877         * cp-tree.h:  Add comments documenting which LANG_FLAGS are used.
2878         (C_TYPE_VARIABLE_SIZE, C_DECL_VARIABLE_SIZE):  Removed, not used.
2879
2880 1998-05-22  Jason Merrill  <jason@yorick.cygnus.com>
2881
2882         * pt.c (print_template_context): Use fprintf instead of cp_error.
2883
2884         * pt.c (determine_specialization): Just return an error_mark_node.
2885         Also print the decl we want in error messages.  If we complain,
2886         return error_mark_node.
2887         (tsubst_friend_function): Set lineno and input_filename so 
2888         error messages will be useful.
2889         (instantiate_template): Just return an error_mark_node.
2890         (check_explicit_specialization): Don't mess with a returned
2891         error_mark_node.
2892
2893         * pt.c (print_template_context): Add new argument.
2894         (maybe_print_template_context): New fn.
2895         (push_tinst_level): Increment tinst_level_tick.
2896         (pop_tinst_level): Likewise.
2897         * errfn.c (cp_thing): Call maybe_print_template_context.  Use
2898         xrealloc instead of xmalloc.
2899
2900         * typeck.c (build_unary_op, CONVERT_EXPR): Propagate TREE_CONSTANT.
2901
2902 1998-05-21  Jason Merrill  <jason@yorick.cygnus.com>
2903
2904         * pt.c (tsubst_friend_class): Don't call redeclare_class_template
2905         if the template we looked up is the same as the one we already
2906         have.
2907
2908 Thu May 21 11:54:44 1998  Dave Brolley  <brolley@cygnus.com>
2909
2910         * lex.c: (handle_sysv_pragma): FILE* parameter not used.
2911         (cpp_reader,parse_in): Add for cpplib.
2912         (check_newline): Call handle_sysv_pragma with new interface.
2913         (check_newline): Call GET_DIRECTIVE_LINE, not get_directive_line.
2914
2915         * input.c: (yy_cur,yy_lim,yy_get_token,GETC): Add for cpplib.
2916         (sub_getch): Call GETC for cpplib.
2917
2918         * cp-tree.h: (get_directive_line): Different prototype for cpplib.
2919         (GET_DIRECTIVE_LINE): Macro wrapper for get_directive_line.
2920
2921         * Makefile.in (CXX_OBJS): add @extra_cxx_objs@ for cpplib.
2922
2923 1998-05-21  Jason Merrill  <jason@yorick.cygnus.com>
2924
2925         * decl2.c (maybe_make_one_only): New fn.
2926         (import_export_vtable): Use it.
2927         (import_export_decl): Likewise.
2928         * pt.c (mark_decl_instantiated): Likewise.
2929
2930 1998-05-21  Mark Mitchell  <mmitchell@usa.net>
2931
2932         * decl2.c (find_representative_member): Rename to ...
2933         (build_anon_union_vars): New function.
2934         (finish_anon_union): Fix stupidity of previous change.
2935
2936 1998-05-20  Jason Merrill  <jason@yorick.cygnus.com>
2937
2938         * decl.c (grokfndecl): Handle definition of specialization in
2939         friend declaration.
2940
2941         * error.c (dump_decl): Fix LOOKUP_EXPR handling.
2942
2943 1998-05-20  Mark Mitchell  <mmitchell@usa.net>
2944
2945         * class.c (delete_duplicate_fields_1): Use DECL_DECLARES_TYPE_P
2946         to look for type declarations.
2947         (finish_struct): Deal with templates on the CLASSTYPE_TAGS list.
2948         * cp-tree.h (DECL_DECLARES_TYPE_P): New macro.
2949         (finish_member_class_template): Declare.
2950         * decl.c (pushtag): Put member class templates on the
2951         CLASSTYPE_TAGS list, just as for ordinary member classes.
2952         (pushdecl_class_level): Use DECL_DECLARES_TYPE_P.
2953         (lookup_tag): Look for IDENTIFIER_CLASS_VALUEs, just as with
2954         IDENTIFIER_NAMESPACE_VALUEs. 
2955         * parse.y (component_decl): Move code to ...
2956         * semantics.c (finish_member_class_template): New function.  
2957         Don't put member class templates on the list of components for a
2958         class. 
2959         * parse.c: Regenerated.
2960         * pt.c (classtype_mangled_name): Don't try DECL_CONTEXT on types.
2961         In fact, don't use DECL_CONTEXT at all here.
2962
2963 1998-05-20  Martin von Loewis  <loewis@informatik.hu-berlin.de>
2964
2965         * decl.c (record_unknown_type): New function.
2966         (init_decl_processing): Call it for the unknown and global type
2967         nodes.
2968
2969 1998-05-20  Mark Mitchell  <mmitchell@usa.net>
2970
2971         * decl2.c (find_representative_member): New function.
2972         (finish_anon_union): Use it.
2973
2974         * cp-tree.h (MAIN_NAME_P): New macro.
2975         (DECL_MAIN_P): Likwise.
2976         * decl.c (pushdecl): Avoid crashing on redefinitions of `main'.
2977         (grokfndecl): Use the new macros.
2978         (grokdeclarator): Likewise.
2979         (start_function): Likewise.
2980         (store_parm_decls): Likewise.
2981         (finsh_function): Likewise.
2982         * friend.c (do_friend): Likewise.
2983         * typeck.c (build_function_call_real): Likewise.
2984         (build_unary_op): Likewise.
2985
2986 Wed May 20 02:16:01 1998  Jason Merrill  <jason@yorick.cygnus.com>
2987
2988         * decl2.c (start_objects, finish_objects, do_dtors,
2989         do_ctors): Split out from...
2990         (finish_file): ...here.
2991
2992 Tue May 19 20:36:23 1998  Jason Merrill  <jason@yorick.cygnus.com>
2993
2994         * tree.c (is_overloaded_fn): Don't abort on placeholders from
2995         push_class_decls.
2996
2997 Tue May 19 15:16:22 1998  Brendan Kehoe  <brendan@cygnus.com>
2998
2999         * class.c (is_empty_class): Return 0 if TYPE is an error_mark_node.
3000
3001         * error.c (dump_expr): Handle an ARROW_EXPR.
3002
3003 Tue May 19 15:13:39 1998  Mark Mitchell  <mmitchell@usa.net>
3004
3005         * decl.c (saveable_obstack): Declare.
3006         (pushdecl): Copy TYPE_DECLs to the same obstack as the type they
3007         declare, if necessary.
3008
3009 Tue May 19 14:50:27 1998  Mark Mitchell  <mmitchell@usa.net>
3010
3011         * call.c (compare_qual): Remove.
3012         (is_subseq): Tweak.
3013         (is_properly_derived_from): New function.
3014         (maybe_handle_ref_bind): Likewise.
3015         (maybe_handle_implicit_object): Likewise.
3016         (compare_ics): Modify substantially to bring into conformance with
3017         the standard.
3018         * cp-tree.h (TYPE_PTRMEMFUNC_OBJECT_TYPE): New macro.
3019         (comp_cv_qualification): Declare.
3020         (comp_cv_qual_signature): Likewise.
3021         * typeck.c (comp_cv_qualification): Likewise.
3022         (comp_cv_qual_signature): Likewise.
3023
3024 Tue May 19 10:05:02 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3025
3026         * Makefile.in (parse.o): Depend on toplev.h.
3027
3028         * class.c (typecode_p): Remove prototype and definition.
3029
3030         * cp-tree.h (currently_open_class, is_empty_class, member_p):
3031         Add prototype.
3032
3033         * decl.c (push_overloaded_decl_top_level): Remove prototype and
3034         definition.
3035
3036         * errfn.c (cp_error): Cast function pointer `error' to (errorfn *)
3037         in call to `cp_thing'.
3038         (cp_warning): Likewise for function pointer `warning'.
3039
3040         * except.c (do_function_call): Remove prototype and definition.
3041         (call_eh_info): Wrap variable `t1' in macro NEW_EH_MODEL.
3042
3043         * method.c (is_java_type): Add prototype and make it static.
3044
3045         * parse.y: Include toplev.h.
3046
3047         * pt.c (type_unification): Remove unused variable `arg'.
3048         (instantiate_decl): likewise for `save_ti'.
3049
3050         * tree.c (propagate_binfo_offsets): Likewise for `base_binfos'.
3051         
3052 Tue May 19 02:43:25 1998  Jason Merrill  <jason@yorick.cygnus.com>
3053
3054         * init.c (build_member_call): Handle template_ids.
3055         * parse.y (primary): Add global_scope template_id.
3056
3057 Mon May 18 23:22:52 1998  Jason Merrill  <jason@yorick.cygnus.com>
3058
3059         * decl2.c (get_sentry): Use end_temporary_allocation.
3060         Don't declare permanent_obstack.
3061
3062 Mon May 18 12:28:44 1998  Mark Mitchell  <mmitchell@usa.net>
3063
3064         * parse.y (.finish_new_placement): New non-terminal.
3065         (unary_expr, new_type_id): Use it.  
3066         * parse.c: Regenerated.
3067         
3068 Mon May 18 12:20:27 1998  Brendan Kehoe  <brendan@cygnus.com>
3069
3070         * pt.c (redeclare_class_template): Say where the original definition
3071         of the template-parameter's default argument appeared.
3072
3073 Mon May 18 03:00:57 1998  Jason Merrill  <jason@yorick.cygnus.com>
3074
3075         * call.c (build_over_call): Tweak empty class handling.
3076
3077         * decl.c (make_typename_type): Use currently_open_class.
3078
3079         * class.c (instantiate_type): Don't abort on TREE_NONLOCAL_FLAG.
3080
3081 Mon May 18 01:43:01 1998  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
3082
3083         * decl.c (lookup_name_real): Don't look at IDENTIFIER_LOCAL_VALUE 
3084         for a type unless it is one.
3085
3086         * class.c (finish_struct_1): Use OVL_CURRENT in error message.
3087
3088 Mon May 18 01:24:08 1998  Jeffrey A Law  (law@cygnus.com)
3089
3090         * Makefile.in (program_transform_name, objdir): Define.
3091
3092         * Makefile.in (BISON): Use bison from the build tree if it exists.
3093         (FLEX): Similarly.
3094
3095 Sun May 17 14:52:08 1998  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
3096
3097         * typeck.c (type_unknown_p): Return true for TREE_LIST also.
3098
3099         * call.c (build_method_call): Use TYPE_MAIN_VARIANT on typedefs.
3100
3101 Sun May 17 14:51:41 1998  Jason Merrill  <jason@yorick.cygnus.com>
3102
3103         * call.c (build_scoped_method_call): Likewise.
3104
3105 Sun May 17 13:53:48 1998  Mark Mitchell  <mmitchell@usa.net>
3106
3107         * init.c (build_new_1): Call suspend_momentary around the creation
3108         of values that must be saved for exception handling.
3109         * parse.y (.build_new_placement): New non-terminal.
3110         (unary_expr, new_placement): Use it.
3111         * parse.c: Regenerated.
3112         
3113 Sun May 17 12:32:08 1998  Jason Merrill  <jason@yorick.cygnus.com>
3114
3115         * decl.c (duplicate_decls): Use CANONICAL_TYPE_VARIANT to compare
3116         old and new types.
3117
3118         * pt.c (tsubst): Make sure that BINFO_TYPE of new binfos is the
3119         canonical type.
3120
3121         * call.c (build_over_call): Don't use IS_SIGNATURE on a namespace.
3122
3123 Fri May 15 20:28:00 1998  Jason Merrill  <jason@yorick.cygnus.com>
3124
3125         * decl.c (start_decl): Revert problem change.
3126
3127         * Makefile.in (CONFLICTS): Fix.
3128
3129 Fri May 15 15:34:02 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
3130
3131         * decl.c (duplicate_decls): Clean up, add DECL_DATA_AREA bits.
3132
3133 Fri May 15 00:46:05 1998  Jason Merrill  <jason@yorick.cygnus.com>
3134
3135         * class.c (finish_struct_1): Use BINFO_SIZE.
3136
3137         * decl.c (start_decl): Use 'tem'.
3138
3139 Thu May 14 16:30:47 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
3140
3141         * exception.cc: Include eh-common.h.
3142         (struct cp_eh_info): add eh_info struct with NEW_EH_MODEL.
3143         (__cplus_type_matcher): First stab at new C++ runtime type matcher.
3144         (__cp_push_exception): Initialize eh_info struct as well.
3145         * except.c: Remove local structs and include eh-common.h.
3146         (init_exception_processing): Set language and version codes.
3147         (call_eh_info): add presence of eh_info to runtime description of 
3148         struct cp_eh_info.
3149         (expand_end_eh_spec): call start_catch_block() and end_catch_block().
3150         * semantics.c (finish_try_block): call start_catch_block() and 
3151         end_catch_block().
3152         * parse.y (function_try_block): call start_catch_block() and 
3153         end_catch_block().
3154
3155 Thu May 14 12:27:34 1998  Brendan Kehoe  <brendan@cygnus.com>
3156
3157         * typeck.c (original_type): New function.
3158         (common_type): Use it to get the DECL_ORIGINAL_TYPE for T1 and T2,
3159         to see if they're actually the same.
3160         * cp-tree.h (original_type): Declare.
3161
3162 Wed May 13 12:54:30 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3163
3164         * Makefile.in (lex.o): Depend on output.h.
3165         
3166         * call.c (add_function_candidate): Remove unused variable `cand'.
3167         (add_conv_candidate): Likewise.
3168         (build_builtin_candidate): Likewise.
3169         
3170         * cp-tree.h: Add prototype for `types_overlap_p'.
3171
3172         * decl.c (signal_catch): Mark parameter `sig' with ATTRIBUTE_UNUSED.
3173
3174         * decl2.c (merge_functions): Remove unused variables `tmp' and
3175         `tempn'.
3176
3177         * error.c (expr_as_string): Mark parameter `v' with ATTRIBUTE_UNUSED.
3178         (code_as_string): Likewise.
3179         (language_as_string): Likewise.
3180         (parm_as_string): Likewise.
3181         (op_as_string): Likewise.
3182         (assop_as_string): Likewise.
3183         (cv_as_string): Likewise.
3184
3185         * lex.c: Include output.h.
3186
3187         * pt.c (type_unification): Cast first argument of `bzero' to a char*.
3188
3189         * search.c (dfs_no_overlap_yet): Mark parameter `t' with
3190         ATTRIBUTE_UNUSED.
3191
3192         * tinfo.cc (__class_type_info::dcast): Change the type of variable
3193         `i' from int to size_t.
3194
3195         * typeck.c (language_lvalue_valid): Mark parameter `exp' with
3196         ATTRIBUTE_UNUSED.
3197
3198 Tue May 12 21:37:49 1998  Jason Merrill  <jason@yorick.cygnus.com>
3199
3200         * error.c (dump_simple_decl): Use DECL_CLASS_SCOPE_P and/or
3201         DECL_NAMESPACE_SCOPE_P.
3202         (lang_decl_name): Likewise.
3203         * pt.c (tsubst_friend_function, tsubst): Likewise.
3204         * decl.c (pushdecl, redeclaration_error_message, start_decl, 
3205         cp_finish_decl, start_function): Likewise.
3206         * class.c (finish_struct_1): Likewise.
3207         * call.c (build_over_call): Likewise.
3208         (compare_ics): Use DERIVED_FROM_P.
3209
3210 Tue May 12 07:24:18 1998  Mark Mitchell  <mmitchell@usa.net>
3211
3212         * cp-tree.h (CANONICAL_TYPE_VARIANT): New macro.
3213         * method.c (build_mangled_name): Use it.
3214         (build_decl_overload_real): Likewise.
3215
3216         * error.c (dump_simple_decl): New function, broken out from ...
3217         (dump_decl): Use it.
3218
3219 Mon May 11 11:38:07 1998  Mark Mitchell  <mmitchell@usa.net>
3220
3221         * ptree.c (lang_print_xnode): Add missing `break'.
3222
3223         * pt.c (tsubst): Remove duplicate check for IDENTIFIER_NODE.
3224
3225         * call.c (add_template_candidate): Adjust for changes to
3226         fn_type_unification. 
3227         (add_template_candidate_real): Likewise.
3228         (add_template_conv_candidate): Likewise.
3229         (build_user_type_conversion_1): Likewise.
3230         (build_new_function_call): Likewise.
3231         (build_object_call): Likewise.
3232         (build_new_op): Likewise.
3233         (build_new_method_call): Likewise.
3234         * class.c (instantiate_type): Likewise.
3235         * cp-tree.h (unification_kind_t): New type.
3236         (fn_type_unification): Adjust prototype.
3237         (type_unificaiton): Likewise.
3238         * pt.c (UNIFY_ALLOW_NONE): New macro.
3239         (UNIFY_ALLOW_MORE_CV_QUAL): Likewise.
3240         (UNIFY_ALLOW_LESS_CV_QUAL): Likewise.
3241         (UNIFY_ALLOW_DERIVED): Likewise.
3242         (unify): Change prototype.
3243         (maybe_adjust_types_for_deduction): New function.
3244         (check_cv_quals_for_unify): Likewise.
3245         (determine_specialization): Adjust.
3246         (fn_type_unification): Likewise.
3247         (type_unification): Likewise.
3248         (type_unification_real): Likewise.  Use
3249         maybe_adjust_types_for_deduction.  Fix mishandling of
3250         back-unification of template functions passed as arguments.  Pass
3251         appropriate combination of UNIFY_ALLOW_* to unify.
3252         (unify): Remove unused NTPARMS parameter.  Use
3253         check_cv_quals_for_unify.  Remove bogus code that allowed
3254         too-generous unification in order to adhere more closely to standard.
3255         (get_bindings_real): Adjust.
3256         (get_class_bindings): Likewise.
3257
3258         * method.c (build_overload_identifier): Only use the innermost
3259         template arguments when mangling.
3260         * pt.c (tsubst_template_argument_vector): New function.
3261         (complete_template_args): Deal with the situation where the
3262         extra_args contain more than one level of arguments.
3263         (lookup_template_class): Deal with member template classes, which
3264         may have more than one level of arguments.
3265         (tsubst): Don't tsbust into the TREE_TYPE of an IDENTIFIER_NODE.
3266         Improve handling of member template classes.  Use
3267         DECL_PRIMARY_TEMPLATE instead of inline expansion.  Use
3268         tsubst_template_argument_vector where appropriate.
3269         (regenerate_decl_from_template): Break out from ...
3270         (instantiate_decl): Here.
3271         
3272         * lex.c (yyprint): Remove TYPENAME_ELLIPSIS.
3273         * parse.h: Regenerated.
3274         * parse.c: Really regenerated.
3275         
3276         * cp-tree.h (finish_unary_op_expr): New function.
3277         (finish_id_expr): Likewise.
3278         (begin_new_placement): Likewise.
3279         (finish_new_placement): Likewise.
3280         (finish_declarator): Likewise.
3281         (finish_translation_unit): Likewise.
3282         (finish_parmlist): Likewise.
3283         (begin_class_definition): Likewise.
3284         (finish_class_definition): Likewise.
3285         (finish_default_args): Likewise.
3286         (finish_inline_definitions): Likewise.
3287         * parse.y (GCC_ASM_KEYWORD): Remove.
3288         (TYPENAME_ELLIPSIS): Likewise.
3289         * parse.c: Regenerated.
3290         Use new functions in semantics.c in the actions for many rules.
3291         * gxx.gperf (GCC_ASM_KEYWORD): Just use ASM_KEYWORD.
3292         * hash.h: Regenerated.
3293         * semantics.c (finish_expr_stmt): Allow NULL expr.
3294         (finish_unary_op_expr): New function, containing
3295         code previously in parse.y.
3296         (finish_id_expr): Likewise.
3297         (begin_new_placement): Likewise.
3298         (finish_new_placement): Likewise.
3299         (finish_declarator): Likewise.
3300         (finish_translation_unit): Likewise.
3301         (finish_parmlist): Likewise.
3302         (begin_class_definition): Likewise.
3303         (finish_class_definition): Likewise.
3304         (finish_default_args): Likewise.
3305         (finish_inline_definitions): Likewise.
3306
3307 Sun May 10 23:43:13 1998  Mark Mitchell  <mmitchell@usa.net>
3308
3309         * typeck.c (build_c_cast): Don't decay arrays and functions to
3310         pointer type when converting to a class type.
3311
3312 Sun May 10 22:53:56 1998  Jason Merrill  <jason@yorick.cygnus.com>
3313
3314         * cp-tree.h (DECL_NAMESPACE_SCOPE_P): New macro.
3315         (DECL_CLASS_SCOPE_P): Likewise.
3316
3317 Sun May 10 22:48:22 1998  H.J. Lu  (hjl@gnu.org)
3318
3319         * class.c (finish_struct_1): Use OVL_CURRENT on TREE_VEC_ELT.
3320         * decl2.c (constructor_name_full): Likewise.
3321
3322 Sun May 10 22:48:12 1998  Mike Stump  <mrs@wrs.com>
3323
3324         * tree.c (mapcar): Add OVERLOAD support.
3325
3326         * init.c (resolve_offset_ref): We must use basetype_path before we
3327         destroy it with a call to convert_pointer_to.
3328
3329 Sat May  9 14:44:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
3330
3331         * class.c (currently_open_class): New fn.
3332         * decl.c (lookup_name_real): Use it.
3333         * search.c (lookup_field): Likewise.
3334
3335 Fri May  8 23:32:42 1998  Martin von Loewis  <loewis@informatik.hu-berlin.de>
3336
3337         * cp-tree.def (OVERLOAD): New node.  
3338         * cp-tree.h (BINDING_TYPE, SET_IDENTIFIER_GLOBAL_VALUE,
3339         SET_IDENTIFIER_NAMESPACE_VALUE): Define.
3340         (NAMESPACE_BINDING): Remove.
3341         (IDENTIFIER_GLOBAL_VALUE, IDENTIFIER_NAMESPACE_VALUE): Use
3342         namespace_binding.
3343         (OVL_FUNCTION, OVL_CHAIN, OVL_CURRENT, OVL_NEXT, OVL_USED):
3344         Define.
3345         (tree_overload): New struct.
3346         (IDENTIFIER_TYPE_VALUE): Use identifier_type_value.
3347         (REAL_IDENTIFIER_TYPE_VALUE): Define.
3348         (IDENTIFIER_HAS_TYPE_VALUE): Use IDENTIFIER_TYPE_VALUE.
3349         (lang_decl_flags): Remove in_namespace.
3350         (lang_decl): Remove chain.
3351         (DECL_CHAIN, DECL_NAMESPACE): Remove.
3352         (flag_honor_std): Declare extern.
3353         (identifier_type_value, pushdecl_namespace_level, push_using_decl,
3354         namespace_binding, set_namespace_binding,
3355         lookup_function_nonclass, cat_namespace_levels,
3356         set_decl_namespace, lookup_arg_dependent, binding_init, ovl_cons,
3357         scratch_ovl_cons, ovl_member, build_overload): Declare.
3358         (decl_list_length, get_namespace_id, current_namespace_id,
3359         overloaded_globals_p): Remove.
3360         (lookup_using_namespace, qualified_lookup_using_namespace): Change
3361         return type.
3362         (push_scratch_obstack): New macro.
3363         * call.c (add_function_candidate): Special-case type of OVERLOAD node.
3364         (build_user_conversions_1): Iterate using OVL_NEXT for ctors,
3365         convs, fns.
3366         (build_new_function_call): Iterate using OVL_CHAIN.  
3367         Print DECL_NAME in when reporting ambiguities.
3368         (build_object_call): Iterate using OVL_NEXT for fns, convs.
3369         (build_new_op): Call lookup_function_nonclass.  
3370         Iterate using OVL_NEXT.
3371         (build_op_delete_call): Change detection of members.
3372         Do not wrap TREE_LIST around fields and single global functions.
3373         (build_over_call): Don't push a class level if the context is a
3374         namespace.
3375         (build_new_method_call): Iterate using OVL_NEXT.
3376         * class.c (add_method): Chain overloaded members using
3377         build_overload.  Remove copying of method.
3378         (grow_method): When iterating through the obstack, expect OVERLOAD
3379         nodes.  Chain overload members.
3380         (finish_struct_methods): Chain overload members.  Unpack OVERLOAD
3381         nodes in call to get_baselinks.
3382         (duplicate_tag_error): Expect OVERLOAD nodes when unchaining.
3383         (finish_struct_1): Iterate over ctor using OVL_NEXT.  Handle
3384         fdecls that are OVERLOAD nodes.
3385         (validate_lhs): New function.
3386         (instantiate_type): Do not copy OVERLOAD nodes.  Remove dead
3387         code. Use DECL_NAME in error messages. Split code between global
3388         and member function processing.
3389         * decl.c (global_type_node): New static variable.
3390         (in_std): New global.
3391         (struct binding_level): New field usings.
3392         (resume_binding_level): Assert that we are not in a class.
3393         (toplevel_bindings_p): Just check for namespace_p or
3394         pseudo_global.
3395         (resume_level): Remove.
3396         (find_binding): New function.
3397         (binding_for_name): Call it.
3398         (namespace_binding, set_namespace_binding): New functions.
3399         (push_namespace): Associate binding level with new namespace,
3400         resume_binding_level for existing namespace.  Remove old code.
3401         Fake std by counting.
3402         (store_bindings): Use REAL_IDENTIFIER_TYPE_VALUE.
3403         (maybe_push_to_top_level): Save current namespace.
3404         (pop_from_top_level): Restore saved namespace.
3405         (pop_namespace): Call suspend_binding_level.  Remove old code.
3406         (cat_namespace_levels): New function.
3407         (set_identifier_type_value_with_scope): For namespace bindings,
3408         set BINDING_TYPE, and use global_type_node.
3409         Use REAL_IDENTIFIER_TYPE_VALUE otherwise.
3410         (identifier_type_value): New function.
3411         (pushtag): If no context, use current_namespace.
3412         (duplicate_decls): Don't process DECL_CHAIN.
3413         (pushdecl): Set DECL_CONTEXT to current_namespace, if it is not
3414         already set. Never reset it to NULL_TREE.  Lookup global variables
3415         in their namespace.  Push overloaded templates if they are on
3416         namespace level.
3417         (pushdecl_namespace_level): New function.
3418         (pushdecl_top_level): Implement using pushdecl_namespace_level.
3419         (pushdecl_using_decl): New function.
3420         (overloaded_globals_p): Remove.
3421         (push_overloaded_decl): Create OVERLOAD nodes, and iterate through
3422         them. Use namespace_binding and set_namespace_value.
3423         (redeclaration_error_message): Complain if the declarations come
3424         from different namespaces.
3425         (lookup_tag): On namespace level, look in the BINDING_TYPE.
3426         (lookup_namespace_name): Pass tree_bindings from stack.  Remove
3427         old code.
3428         (select_decl): New function.
3429         (lookup_name_real): Call it for qualified and unqualified lookup.
3430         Pass tree_bindings from the stack.
3431         If prefer_type is 1, also accept namespaces.
3432         (lookup_function_nonclass): New function.
3433         (init_decl_processing): Set the binding level of the global
3434         namespace to global_binding_level.
3435         Build a proper type list for __builtin_apply.
3436         Initialize std_node to "fake std" if flag_honor_std is set.
3437         Initialize global_type_node.
3438         Allocated bad_alloc in namespace std if flag_honor_std.
3439         (define_function): Set the DECL_CONTEXT to the current_namespace.
3440         (start_decl): A namespace is not considered as a context here.  If
3441         the DECL_CONTEXT is a namespace, push the decl.
3442         (cp_finish_decl): Check for namespaces used as initializers.
3443         (grokfndecl): Add namespace parameter.  Remove processing of
3444         DECL_CHAIN.
3445         (grokvardecl): Add namespace parameter.
3446         (grokdeclarator): Process SCOPEs that are namespaces.  For
3447         mangling, temporarily set the DECL_CONTEXT on anonymous structs.
3448         (start_function): Check for contexts that are namespaces.  
3449         Set context for declarations that have not been pushed.
3450         (store_parm_decls): Check for ::main only.
3451         (finish_function): Likewise.
3452         (start_method): Check for contexts that are namespaces.
3453         (start_method): Remove DECL_CHAIN processing.
3454         * decl2.c (flag_honor_std): Declare.
3455         (lang_decode_option): Set it if -fhonor-std or -fnew-abi is given.
3456         (decl_namespace_list): New static global.
3457         (grok_x_components): Ignore namespaces as type contexts.
3458         (check_classfn): Expect OVERLOAD nodes.
3459         (grokfield): Remove DECL_CHAIN processing.
3460         (finish_file): Call cat_namespace_levels.
3461         (merge_functions): New function.
3462         (ambiguous_decl): Rewrite.
3463         (lookup_using_namespace): Produce tree_bindings.
3464         (qualified_lookup_using_namespace): Likewise.
3465         (set_decl_namespace, decl_namespace, current_decl_namespace,
3466         push_decl_namespace, pop_decl_namespace): New functions.
3467         (arg_lookup): New struct.
3468         (add_function, arg_assoc_namespace, arg_assoc_class,
3469         arg_assoc_type, arg_assoc_args, arg_assoc, lookup_arg_dependent):
3470         New functions.
3471         (get_namespace_id, current_namespace_id): Remove.
3472         (do_toplevel_using_decl): Rewrite.
3473         (do_class_using_decl): Complain about namespace qualifiers.
3474         (do_using_directive): Sorry if not on namespace level.  Complain
3475         about unknown namespaces.
3476         * error.c (dump_aggr_type): Check for namespace contexts.
3477         * except.c (init_exception_processing): Push terminate into std.
3478         * friend.c (is_friend): A namespace is not a context, here.
3479         * init.c (expand_member_init): Remove DECL_CHAIN processing.
3480         (build_offset_ref): Process OVERLOAD nodes.
3481         * lang-specs.h (__HONOR_STD): Define if -fnew-abi or -fhonor-std.
3482         * lex.c (identifier_type): Loop using OVL_CHAIN.
3483         (see_typename): Set looking_for_typename to 2.
3484         (real_yylex): Likewise. 
3485         (do_identifier): Expect OVERLOAD nodes instead of TREE_LISTs.
3486         (do_scoped_id): Expect OVERLOAD nodes.
3487         Change calling convention for qualified_lookup_using_namespace.
3488         (build_lang_decl): Don't set in_namespace anymore.
3489         * method.c (typevec_size): New global.
3490         (build_overload_nested_name): Return if global_namespace.
3491         Otherwise, always expect a declaration context.
3492         (build_qualified_name): Likewise.
3493         Make sure we don't write beyond typevec_size.
3494         (build_decl_overload_real): Likewise.
3495         Allocate one extra slot for the namespace.
3496         (hack_identifier): Mark code dead.
3497         Process OVERLOAD and NAMESPACE_DECL nodes.
3498         * parse.y (program): Pop namespaces until in global namespace.
3499         (extdef): In a using-declaration, don't discard the identifier if
3500         there is no declaration.
3501         (left_curly): Ignore type contexts which are namespaces.
3502         (typename_sub2): Use IDENTIFIER_TYPE_VALUE to retrieve the type
3503         used as scope.
3504         * pt.c (template_class_depth): Expect types to be namespaces.
3505         (determine_specialization): Simplify by expecting OVERLOAD nodes.
3506         (push_template_decl): Push into namespace level.
3507         Reset ctx if it is a namespace.
3508         Set DECL_CONTEXT to current_namespace if not set already.
3509         Ignore real contexts that are namespaces.
3510         (mangle_class_name_for_template): Skip global_namespace.
3511         Mangle other namepaces as declarations.
3512         (lookup_template_function): Set type of OVERLOAD nodes to unknown.
3513         (lookup_template_class): Push into namespace of context.
3514         If the context is a namespace, set it to global_namespace.
3515         Use id_context for mangling.
3516         (for_each_template_parm): Handle OVERLOAD and NAMESPACE_DECL nodes.
3517         (tsubst_friend_function): Ignore namespace contexts.
3518         Push into namespace level.
3519         (tsubst): Handle NAMESPACE_DECL nodes.
3520         Remove DECL_CHAIN processing.
3521         (type_unification_real): Recognize OVERLOAD instead of TREE_LIST nodes.
3522         * ptree.c (print_lang_identifier): Print bindings.
3523         (lang_print_xnode): Print OVERLOAD nodes.
3524         * rtti.c (init_rtti_processing): Push type_info into std.
3525         * search.c (lookup_fnfields_here): Expect OVERLOAD nodes.
3526         (lookup_fnfields_1, get_virtuals_named_this, get_matching_virtual,
3527         dfs_debug_mark, dfs_pushdecls, dfs_compress_decls, add_conversions,
3528         lookup_fnfields_here): Likewise.
3529         Process all nodes, instead of going through TREE_CHAIN.
3530         * sig.c (build_signature_pointer_or_reference_type): Set context
3531         to global_namespace.
3532         (build_signature_table_constructor): Expect OVERLOAD nodes.
3533         * spew.c (yylex): Save old setting of looking_for_typename.
3534         * tree.c (decl_list_length): Remove.
3535         (binding_init): New function.
3536         (count_functions): Rewrite.
3537         (is_overloaded_fn): Expect OVERLOAD nodes.
3538         (really_overloaded_fn, get_first_fn, lvalue_type): Likewise.
3539         (ovl_cons, scratch_ovl_cons, build_overload, build_overload_after,
3540         ovl_member): New functions.
3541         * typeck.c (require_complete_type): Expect OVERLOAD nodes.
3542         (type_unknown_p): Likewise.
3543         (require_instantiated_type): Likewise.
3544         (build_component_ref): Declare code dead.
3545         (build_x_function_call): Create and expect OVERLOAD nodes.
3546         (build_function_call_real): Check for ::main only.
3547         (build_unary_op): Likewise.  Expect OVERLOAD nodes.
3548         (convert_for_assignment): Check for TREE_LIST before accessing
3549         TREE_VALUE.
3550         * decl.c (duplicate_decls): Check for namespace bindings instead
3551         of global bindings.
3552         (pushdecl, push_overloaded_decl, lookup_tag, lookup_name_real,
3553         lookup_name_current_level, start_decl, xref_tag, 
3554         finish_enum): Likewise.
3555         * init.c (build_offset_ref): Likewise.
3556         * search.c (lookup_field): Likewise.
3557         (lookup_fnfields): Likewise.
3558         (dfs_debug_mark): Likewise.
3559         * decl.c (poplevel): Use SET_IDENTIFIER_TYPE_VALUE.
3560         (poplevel_class, pop_from_top_level): Likewise.
3561         * decl2.c (finish_method): Likewise.
3562         * class.c (build_vtable): Use SET_IDENTIFIER_GLOBAL_VALUE.
3563         * decl.c (record_builtin_type): Likewise.
3564         (init_decl_processing, grokfndecl): Likewise.
3565         * lex.c (get_time_identifier, do_identifier, do_scoped_id): Likewise.
3566         (make_lang_type): Likewise.
3567         * parse.y (make_thunk): Likewise.
3568         * pt.c (tsubst): Likewise.
3569         * tree.c (debug_binfo): Likewise.
3570         * exception.cc, new.cc, new1.cc, new2.cc, tinfo.cc, tinfo.h, 
3571         tinfo2.cc, inc/new.h: Add std qualifications.
3572         * inc/new: Wrap with namespace std if __HONOR_STD.
3573         * inc/typeinfo: Likewise.
3574
3575 Fri May  8 00:43:50 1998  Jason Merrill  <jason@yorick.cygnus.com>
3576
3577         * call.c (build_user_type_conversion_1): Handle second_conv 
3578         properly for templates.
3579
3580 Thu May  7 17:09:25 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
3581
3582         * method.c (build_decl_overload_real): Set TREE_USED flag to
3583         zero for build_type_variants nodes as well.
3584
3585 Wed May  6 19:27:09 1998  Jason Merrill  <jason@yorick.cygnus.com>
3586
3587         * pt.c (tsubst): Don't tsubst the type of an IDENTIFIER_NODE.
3588
3589 Wed May  6 16:49:48 1998  Jim Wilson  <wilson@cygnus.com>
3590
3591         * Makefile.in (call.o, class.o, decl.o, decl2.o, errfn.o, error.o,
3592         except.o, expr.o, friend.o, init.o, lex.o, method.o, pt.o, repo.o,
3593         rtti.o, search.o, semantics.o, sig.o, tree.o, typeck.o, typeck2.o, 
3594         xref.o): Add toplev.h dependencies.
3595
3596 Wed May  6 16:44:58 1998  Jeffrey A Law  (law@cygnus.com)
3597
3598         * errfn.c (cp_error, cp_warning): Remove declarations for
3599         error and warning respectively.
3600
3601 Wed May  6 14:28:18 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3602
3603         * error.c: Convert to using ctype macros defined in system.h.
3604         * method.c: Likewise.
3605         * xref.c: Likewise.
3606         * lex.c: Likewise.  Also remove redundant system header stuff.
3607
3608 Wed May  6 06:36:41 1998  Robert Lipe  <robertl@dgii.com>
3609
3610         * call.c, class.c, decl.c, decl2.c, errfn.c, error.c, except.c, 
3611         expr.c, friend.c, init.c, lex.c, method.c, pt.c, repo.c, rtti.c, 
3612         search.c, semantics.c, sig.c, tree.c, typeck.c, typeck2.c, 
3613         xref.c: Add include of toplev.h.
3614
3615 Wed May  6 02:33:39 1998  Jason Merrill  <jason@yorick.cygnus.com>
3616
3617         * tree.c (perm_manip): Also regenerate the RTL of an extern.
3618         (copy_to_permanent): Use end_temporary_allocation.
3619
3620 Tue May  5 23:54:04 1998  Jason Merrill  <jason@yorick.cygnus.com>
3621
3622         * init.c (expand_vec_init): The initialization of each array
3623         element is a full-expression.
3624
3625 Tue May  5 18:24:13 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
3626
3627         * method.c (build_mangled_name): Add a call to build_type_variant 
3628         to get the right type.
3629
3630 Tue May  5 01:25:03 1998  Jason Merrill  <jason@yorick.cygnus.com>
3631
3632         * Makefile.in: Add .SUFFIXES.
3633
3634         * cp-tree.def: Remove NAMESPACE_DECL.
3635
3636 Sun May  3 01:32:14 1998  Jason Merrill  <jason@yorick.cygnus.com>
3637
3638         * call.c (build_over_call): Do evaluate arg even if it has empty 
3639         class type.
3640         * decl.c (start_function): Don't push a member function.
3641
3642 Thu Apr 30 18:59:23 1998  Jim Wilson  <wilson@cygnus.com>
3643
3644         * Makefile.in (g++FAQ.info): Put -o option before input file.
3645
3646 Thu Apr 30 13:05:33 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
3647
3648         * gxxint.texi: Add info for squangling codes K and B.
3649
3650 Tue Apr 28 13:22:01 1998  Mark Mitchell  <mmitchell@usa.net>
3651
3652         * semantics.c (begin_stmt_expr): Avoid duplicating the effect of
3653         the expression in templates.
3654         (finish_stmt_expr): Likewise.
3655
3656 1998-04-28  Brendan Kehoe  <brendan@cygnus.com>
3657
3658         * decl2.c (ambiguous_decl): Fix NAME parm to be a tree, not int.
3659
3660 Mon Apr 27 13:58:10 1998  Mark Mitchell  <mmitchell@usa.net>
3661
3662         * decl.c (maybe_push_to_top_level): Always clear
3663         current_template_parms and processing_template_decl.
3664         (pushtag): Remove check of current_class_type and some comments,
3665         since maybe_push_to_top_level no longer creates confusion.
3666
3667 Sun Apr 26 12:10:18 1998  Mark Mitchell  <mmitchell@usa.net>
3668
3669         * cp-tree.h (CLASSTYPE_IS_TEMPLATE): New macro.
3670         (DECL_CLASS_TEMPLATE_P): Likewise.
3671         (DECL_PRIMARY_TEMPLATE): Likewise.
3672         (PRIMARY_TEMPLATE_P): Use it.
3673         (push_template_decl_real): New function.
3674         (redeclare_class_template): Take new template parameters as
3675         input. 
3676         (is_specialization_of): New function.
3677         (comp_template_args): Declare.
3678         * decl.c (pushtag): Handle friend template classes.
3679         (xref_tag): Likewise.  Use new calling convention for
3680         redeclare_class_template.
3681         * decl2.c (grok_x_components): Handle friend templates.
3682         * friend.c (is_friend): Use is_specialization_of where
3683         appropriate.  Deal with friend class templates.
3684         (make_friend_class): Let a class template be friends with itself.
3685         * pt.c (comp_template_args): Remove declaration.
3686         (tsubst_friend_class): New function.
3687         (push_template_decl_real): New function.
3688         (push_template_decl): Use it.
3689         (redeclare_class_template): Adjust for new calling convention.
3690         (comp_template_args): Give it external linkage.
3691         (instantiate_class_type): Use tsubst_friend_class to deal
3692         with friend templates.
3693         * typeck.c (comptypes): Use comp_template_args, rather than
3694         expanding it inline.
3695         * parse.y (component_decl): Handle a nested template type 
3696         like other component type declarations.
3697
3698         * pt.c (check_explicit_specialization): Handle overloaded
3699         constructors correctly.
3700
3701         * pt.c (mabybe_get_template_decl_from_type_decl): New function.
3702         (lookup_template_class): Use it.
3703
3704 Thu Apr 23 21:19:06 1998  Jason Merrill  <jason@yorick.cygnus.com>
3705
3706         * cp-tree.def: Add WRAPPER.  USER_CONV now only has two ops.
3707         * cp-tree.h: Add WRAPPER support.
3708         * call.c (add_candidate): Split out from add_*_candidate fns.
3709         (build_over_call): Take the candidate instead of function and args.
3710         Enforce access control here.  Emit overload warnings here.
3711         (add_warning): New fn.
3712         (joust): Add WARN parm.  If not set, call add_warning instead of
3713         printing a warning.  Reenable some warnings.
3714         (tourney): Pass it.
3715         (convert_like): Adjust.
3716         (build_new_op): Adjust.
3717         (build_new_function_call): Adjust.
3718         (build_user_type_conversion_1): Adjust.
3719         (USER_CONV_FN): Adjust.
3720         * tree.c (build_expr_wrapper, build_expr_ptr_wrapper, 
3721         build_int_wrapper): New fns.
3722
3723 Thu Apr 23 18:27:53 1998  Mark P. Mitchell  <mmitchell@usa.net>
3724
3725         * pt.c (unify): Fix typo in previous change.
3726
3727 Thu Apr 23 09:32:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
3728
3729         * error.c (dump_type_real): Declare canonical_name.
3730
3731         * typeck.c (comp_target_types): Fix PMFs.
3732
3733 Wed Apr 22 13:24:48 1998  Mark Mitchell  <mmitchell@usa.net>
3734
3735         * class.c (finish_struct): Set TREE_PRIVATE and TREE_PROTECTED for
3736         the DECL_RESULTs of a member TEMPLATE_DECL, not just the
3737         TEMPLATE_DECL.
3738
3739          * pt.c (tsubst): Decrease the template-level of
3740          TEMPLATE_TEMPLATE_PARMS.  Likewise for the DECL_INITIAL of a
3741          TEMPLATE_PARM_INDEX.
3742          (template_decl_level): New function.
3743          (unify): Make sure to record unifications for template
3744          parameters, even when the parameters exactly match the arguments.
3745          Combine duplicated code for TEMPLATE_TEMPLATE_PARMs and
3746          TEMPLATE_TYPE_PARMS.  Don't try to unify template parameters that
3747          aren't from the level we're currently working on.
3748
3749 Tue Apr 21 22:00:04 1998  Mark Mitchell  <mmitchell@usa.net>
3750
3751         * errfn.c (cp_thing): Use xrealloc, not xmalloc, to copy memory.
3752
3753         * decl2.c (check_member_template): Set DECL_IGNORED for member
3754         class templates, too.
3755
3756         * decl2.c (grokfield): Remangle the name of a member TYPE_DECL.
3757
3758 Tue Apr 21 18:59:11 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
3759
3760         * decl.c (duplicate_decls): Only check DECL_FRIEND_P if function.
3761
3762 Tue Apr 21 14:22:00 1998  Jeffrey A Law  (law@cygnus.com)
3763
3764         * cp-tree.h (intTI_type_node, unsigned_intTI_type_node): Declare.
3765         * decl.c (intTI_type_node, unsigned_intTI_type_node): Define.
3766         (init_decl_processing): Handle TI types.
3767         * typeck.c (unsigned_type, signed_type): Handle TI types.
3768
3769 Sat Apr 18 15:25:21 1998  Jim Wilson  <wilson@cygnus.com>
3770
3771         * g++spec.c (lang_specific_driver): New argument in_added_libraries.
3772         New local added_libraries.  Increment count when add library to
3773         arglist.
3774
3775 Fri Apr 17 21:25:00 1998  Mark Mitchell  <mmitchell@usa.net>
3776
3777         * cp-tree.h (type_as_string_real): New function.
3778         * pt.c (mangle_class_name_for_template): Use it.
3779         * error.c (dump_aggr_type): Change prototype.
3780         (dump_type_prefix): Likewise.
3781         (dump_type_suffix): Likewise.
3782         (dump_type_real): Convert from dump_type.  If desired, the
3783         "canonica" name of a typedef, i.e., the name of the underlying
3784         type, can be printed.
3785         (dump_type): Call dump_type_real.
3786
3787 Fri Apr 17 14:30:45 1998  Jason Merrill  <jason@yorick.cygnus.com>
3788
3789         * decl2.c (lang_decode_option): -fnew-abi implies -fvtable-thunks.
3790
3791         * typeck.c (comp_target_types): Tweak pedantic case.
3792         (comp_target_parms): Tweak pedantic case.  Clean up somewhat.
3793         Return -1 or 1 instead of 1 or 2.
3794         (compparms): Remove STRICT handling.
3795         (convert_for_assignment): Fix handling of pmfs.
3796
3797 Fri Apr 17 14:04:16 1998  Mark Mitchell  <mmitchell@usa.net>
3798
3799         * typeck.c (comp_target_types): Handle references like pointers.
3800         (comp_target_parms): Note that return code from comp_target_types
3801         can be negative to indicate failure.
3802
3803 Fri Apr 17 09:10:52 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
3804
3805         * Make-lang.in (c++.all.build): Don't depend on $(DEMANGLER_PROG),
3806         which requires a working target compiler to build.
3807
3808 Fri Apr 17 08:57:35 1998  Jeffrey A Law  (law@cygnus.com)
3809
3810         * tree.c (avoid_overlap): Add prototype.
3811
3812         * spew.c (num_tokens): Add prototype.
3813         (nth_noken, add_token, consume_token, debug_yychar): Likewise.
3814
3815         * search.c (dfs_check_overlap): Add prototype.
3816         (dfs_no_overlap_yet): Likewise.
3817
3818         * pt.c (original_template): Add prototype.
3819         (inline_needs_template_parms): Likewise.
3820         (push_inline_template_parms_recursive): Likewise.
3821         (retrieve_specialization, register_specialization): Likewise.
3822         (print_candidates, reduce_template_parm_level): Likewise.
3823         (build_template_decl, mark_template_parm): Likewise.
3824         (tsubst_friend_function, get_bindings_real): Likewise.
3825
3826         * method.c (start_squangling): Add prototype.
3827         (end_squangling, check_ktype, issue_ktype): Likewise.
3828         (build_overloaded_scope_ref, check_btype): Likewise.
3829         (build_mangled_template_parm_index): Likewise.
3830
3831         * lex.c (init_cpp_parse): Add prototype.
3832         (handle_cp_pragma, handle_sysv_pragma): Likewise.
3833         (reduce_cmp, token_cmp): Likewise.
3834
3835         * except.c (call_eh_info): Add prototype.
3836         (push_eh_info, get_eh_info, get_eh_value, get_eh_type): Likewise.
3837         (get_eh_caught, get_eh_handlers, do_pop_exception): Likewise.
3838
3839         * decl2.c (is_namespace_ancestor): Add prototype.
3840         (namespace_ancestor, add_using_namespace): Likewise.
3841         (ambiguous_decl): Likewise.
3842
3843         * decl.c (indent): Add prototype.
3844
3845         * call.c (add_template_candidate_real): Add prototype.
3846
3847 Fri Apr 17 01:57:12 1998  Jason Merrill  <jason@yorick.cygnus.com>
3848
3849         * decl2.c (build_expr_from_tree): Just return a PMF.
3850
3851 Fri Apr 17 00:45:12 1998  Mark Mitchell  <mmitchell@usa.net>
3852
3853         * typeck2.c (process_init_constructor): Don't strip cv-qualifiers
3854         when doing initializations.
3855
3856         * pt.c (unify): Use comptypes to compare type args.
3857
3858 Fri Apr 17 00:24:22 1998  Jason Merrill  <jason@yorick.cygnus.com>
3859
3860         * decl.c (duplicate_decls): Fix check for when it's safe to free
3861         the new decl.
3862
3863         * pt.c (mangle_class_name_for_template): Don't pass a typedef type
3864         to type_as_string.
3865
3866 Thu Apr 16 17:47:30 1998  Jeffrey A Law  (law@cygnus.com)
3867
3868         * pt.c (build_template_parm_index): Add prototype.
3869
3870         * search.c (my_tree_cons): Don't clear words outside the
3871         newly allocated node.
3872
3873 Wed Apr 15 15:34:44 1998  Dave Brolley  <brolley@cygnus.com>
3874
3875         * lex.c (init_parse): Now returns char* containing the filename.
3876
3877 Wed Apr 15 13:20:06 1998  John Carr  <jfc@mit.edu>
3878                           Jeff Law   <law@cygnus.com>
3879
3880         * errfn.c: Rework to avoid problems when HOST_WIDE_INT is longer
3881         than a pointer.
3882
3883 Sun Apr 12 22:31:19 1998  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3884
3885         * cvt.c (cp_convert_to_pointer): Use TYPE_PRECISION.
3886
3887 Fri Apr 10 12:16:49 1998  Benjamin Kosnik  <bkoz@loony.cygnus.com>
3888
3889         * decl.c (duplicate_decls): Don't warn for redundant decls if
3890         friend: let add_friend take care of it.
3891
3892 Thu Apr  9 02:40:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
3893
3894         * sig.c (build_signature_pointer_constructor): Don't set
3895         TREE_HAS_CONSTRUCTOR for a signature pointer.
3896         * cvt.c (ocp_convert): Don't force a temporary for internal structs.
3897         * init.c (resolve_offset_ref): Warn about implicit & on pmfs 
3898         here, too.
3899         * typeck.c (build_unary_op): Only allow taking the address of a 
3900         real constructor.
3901         * typeck2.c (digest_init): Simplify.
3902         (store_init_value): Don't pedwarn about using { } for pmfs.
3903
3904 Thu Apr  9 22:16:57 1998  Per Bothner  <bothner@cygnus.com>
3905
3906         * cp-tree.h (start_decl):  Update prototype.
3907         * decl.c (start_decl):  Like the C version, new parameters
3908         for the attributes.  Call cplus_decl_attributes here,
3909         (pushdecl):  Like C version, do build_type_copy if TYPE_DECL,
3910         (grokdeclarator):  Pass NULL for new start_decl arguments.
3911         * pt.c (tsubst_expr):  Likewise.
3912         * parse.y:  Merge cplus_decl_attribute calls into start_decl calls.
3913         * typeck.c (common_type): Check TYPE_MAIN_VARIANT.
3914         * lex.c (build_lang_decl): Add lang_name_java.
3915         * class.c (push_lang_context): Add lang_name_java.
3916         * method.c (build_mangled_name): Check for is_java_type.
3917
3918 Thu Apr  9 22:16:57 1998  Benjamin Kosnik  <bkoz@loony.cygnus.com>
3919
3920         * decl.c (grokdeclarator): Check TYPE_MAIN_VARIANT.
3921         * call.c (build_scoped_method_call): Check for TREE_CODE for
3922         VOID_TYPE instead of type ==  void_type_node.
3923         (build_method_call): Ditto.
3924         * decl.c (lookup_name_real): Ditto.
3925         (grokdeclarator): Ditto.
3926         (start_decl): Ditto.
3927         (grokparms): Ditto.
3928         (start_function): Ditto.
3929         (finish_function): Ditto.
3930         (start_method): Ditto.
3931
3932 Thu Apr  9 00:18:44 1998  Dave Brolley  (brolley@cygnus.com)
3933
3934         * lex.c (finput): New variable.
3935         (init_cpp_parse):  Renamed from init_parse.
3936         (init_parse): Handle !USE_CPPLIB.  Call init_cpp_parse when finished.
3937         (finish_parse): New function.
3938         * cp-tree.h (init_lex, init_parse): Remove declarations.
3939
3940 Mon Apr  6 02:25:05 1998  Jason Merrill  <jason@yorick.cygnus.com>
3941
3942         * call.c (build_call): Still evaluate the actual argument.
3943         * class.c (is_empty_class): Update for -fnew-abi.
3944
3945         * decl2.c: -fnew-abi implies -fsquangle.
3946
3947         * method.c (do_build_assign_ref): Don't do anything to copy
3948         an empty class.
3949         (do_build_copy_constructor): Likewise.
3950         * call.c (build_over_call): Likewise.
3951
3952 Sat Apr  4 18:43:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
3953
3954         * tree.c (avoid_overlap): Return a value.
3955
3956 Sat Apr  4 12:52:35 1998  Jeffrey A Law  (law@cygnus.com)
3957
3958         * method.c (check_btype): Add missing argument to xrealloc.
3959         (check_ktype): Likewise.
3960
3961 Fri Apr  3 02:22:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
3962
3963         Implement empty base optimization.
3964         * class.c (finish_struct_1): Add vbase fields earlier.  Set 
3965         CLASSTYPE_SIZE of an empty base to 0.  Types with bases can be empty.
3966         * search.c (dfs_check_overlap, dfs_no_overlap_yet): New fns.
3967         (types_overlap_p): New fn.
3968         * tree.c (avoid_overlap): New fn.
3969         (build_base_fields): Use it to avoid overlapping empty bases.
3970         * cp-tree.h, decl2.c, lang-options.h: Add -fnew-abi.
3971
3972         * decl.c (cplus_expand_expr_stmt): Strip unused INDIRECT_REFs.
3973
3974         Re-implement allocation of base class subobjects.
3975         * tree.c (unshare_base_binfos): New fn.
3976         (layout_basetypes): Use it.  Now handles offsets of both virtual and
3977         non-virtual bases, after layout_type.
3978         (layout_vbasetypes): Remove.
3979         (build_base_fields): Generate FIELD_DECLs for each non-virtual base.
3980         (build_vbase_pointer_fields): Split out from old layout_basetypes.
3981         * class.c (finish_base_struct): Lose offset handling code.
3982         Move nonvdtor warning here.  Don't mess with t_binfo anymore.
3983         (finish_struct_1): Don't mess with t_binfo anymore.  Use fns above.
3984         * cp-tree.h: Adjust.
3985
3986 Thu Apr  2 14:25:13 1998  Jason Merrill  <jason@yorick.cygnus.com>
3987
3988         * cp-tree.h: Lose CLASSTYPE_VBASE_SIZE, some unused stuff.
3989         * decl.c, decl2.c, pt.c, ptree.c, lex.c: Likewise.
3990         * class.c (duplicate_tag_error): Likewise.
3991         (finish_struct_1): Set CLASSTYPE_SIZE, CLASSTYPE_MODE, CLASSTYPE_ALIGN.
3992         * tree.c (layout_vbasetypes): Update from layout_record, remove
3993         var_size support, use CLASSTYPE_SIZE instead of CLASSTYPE_VBASE_SIZE.
3994         (layout_basetypes): Likewise.
3995
3996 Wed Apr  1 18:22:25 1998  Jeffrey A Law  (law@cygnus.com)
3997
3998         * class.c, Make sure system.h is included just after config.h.
3999         Delete lingering stdio and errno references too.
4000         * decl.c, errfn.c, parse.y, ptree.c search.c, xref.c: Likewise.
4001         
4002 Wed Apr  1 15:38:36 1998  Jason Merrill  <jason@yorick.cygnus.com>
4003
4004         * friend.c (is_friend): Fix access control for local classes.
4005
4006         * class.c (is_empty_class): New fn.
4007         * call.c (build_call): Don't pass empty class objects to a function.
4008
4009 Wed Apr  1 14:58:35 1998  Mark Mitchell  <mmitchell@usa.net>
4010
4011         * call.c (build_over_call): Do name resolution for default
4012         arguments of function templates in the scope of the templates.
4013
4014 Tue Mar 31 13:43:57 1998  Jeffrey A Law  (law@cygnus.com)
4015
4016         * call.c: Include system.h.  Remove includes, declarations and
4017         defines provided by system.h.
4018         * class.c, cvt.c, decl.c, decl2.c, errfn.c error.c: Likewise.
4019         * except.c, expr.c friend.c, g++spec.c, init.c, input.c: Likewise.
4020         * lex.c, parse.y, pt.c, ptree.c repo.c rtti.c, search.c: Likewise.
4021         * semantics.c, sig.c, spew.c, tree.c, typeck.c: Likewise.
4022         * typeck2.c, xref.c: Likewise.
4023         * Makefile.in: Dependencies updated as appropriate.
4024         * Make-lang.in: Likewise.
4025
4026 Mon Mar 30 12:15:00 1998  Mark Mitchell  <mmitchell@usa.net>
4027
4028         * pt.c (fn_type_unification): Allow incomplete unification without 
4029         an immediate error message.
4030
4031 Mon Mar 30 08:55:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
4032
4033         * tree.c (member_p): New fn.
4034         * decl2.c (finish_file): Only set DECL_STATIC_FUNCTION_P for
4035         initializing class members.
4036
4037         * cp-tree.def (TEMPLATE_PARM_INDEX): Class 'x'.
4038         * ptree.c (lang_print_xnode): Handle TEMPLATE_PARM_INDEX.
4039
4040         * call.c (build_method_call): Handle non-scoped destructors, too.
4041         * pt.c (tsubst_copy): Likewise.
4042
4043         * pt.c (print_template_context): Split out...
4044         (push_tinst_level): ...from here.
4045
4046         * friend.c (is_friend): Don't pass a type to decl_function_context.
4047
4048         * typeck.c (convert_for_initialization): Always hand off
4049         conversions to class type.
4050
4051 Sun Mar 29 20:01:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
4052
4053         * friend.c (is_friend): Local classes have the same access as the
4054         enclosing function.
4055
4056 Sun Mar 29 00:47:32 1998  Jeffrey A Law  (law@cygnus.com)
4057
4058         * typeck.c (expand_target_expr): Delete dead function.
4059
4060         * search.c: Put various prototypes inside #ifdef MI_MATRIX.
4061
4062         * repo.c (save_string): Delete dead function.
4063
4064         * method.c (thunk_printable_name): Delete dead function.
4065
4066         * lex.c (yynextch): Delete dead function.
4067
4068         * expr.c (tree_extract_aggr_init): #if 0 out.
4069
4070         * except.c (do_unwind): Delete dead function.
4071         (easy_expand_asm): Likewise.
4072
4073         * cvt.c (build_conversion_type_1): Delete dead function.
4074
4075         * cp-tree.h (push_expression_obstack): Declare.
4076
4077         * call.c (source_type): #if 0 out.
4078
4079         * class.c (alter_access): Remove unused label.  Add braces
4080         around empty else clause.
4081
4082         * lex.c (yyprint): Fix argument to printf.
4083
4084 Sat Mar 28 17:43:52 1998  Mark Mitchell  <mmitchell@usa.net>
4085
4086         * pt.c (tsubst): Clear TREE_USED for new FUNCTION_DECLs.
4087
4088         * pt.c (instantiate_class_template): Make sure template
4089         arguments are permanent.
4090         * init.c (resolve_offset_ref): Don't go looking around in
4091         template types.
4092
4093         * semantics.c: Add routines to handle expressions, and some
4094         declaration processing.
4095         * parse.y: Use them.
4096         (current_class_depth): Move declaration to cp-tree.h.
4097         * parse.c: Regenerated.
4098         * cp-tree.h: Use them.
4099         (current_class_depth): Declare.
4100         * pt.c (tsubst_copy): Use begin_stmt_expr and finish_stmt_expr.
4101
4102 Fri Mar 27 20:23:18 1998  Mark Mitchell  <mmitchell@usa.net>
4103
4104         * error.c (dump_decl): Be a bit more explicit with template
4105         type arguments, when verbose.
4106         
4107 Fri Mar 27 18:16:40 1998  Jason Merrill  <jason@yorick.cygnus.com>
4108
4109         * inc/exception: Reorder closing braces.
4110
4111 Fri Mar 27 13:22:18 1998  Mark Mitchell  <mmitchell@usa.net>
4112
4113         * pt.c (redeclare_class_template): New function.
4114         * cp_tree.h (redeclare_class_template): Declare it.
4115         * decl.c (xref_tag): Use it.
4116
4117 Thu Mar 26 11:16:30 1998  Jason Merrill  <jason@yorick.cygnus.com>
4118
4119         * call.c (build_over_call): Check IS_AGGR_TYPE, not 
4120         TYPE_LANG_SPECIFIC.
4121         * typeck.c (convert_arguments): Likewise.
4122
4123         * decl.c (grokdeclarator): Remove const and volatile from type after
4124         setting constp and volatilep.
4125
4126         * class.c (finish_struct_1): Don't warn about bool bitfield larger
4127         than one bit.
4128
4129 Thu Mar 26 10:25:52 1998  Mark Mitchell  <mmitchell@usa.net>
4130
4131         * pt.c (convert_nontype_argument): STRIP_NOPS where appropriate.
4132
4133 Thu Mar 26 10:24:05 1998  Mark Mitchell  <mmitchell@usa.net>
4134
4135         * call.c (build_object_call): Complain about ambiguous operator(),
4136         rather that crashing.
4137         (build_new_op): Likewise.
4138         (build_op_delete_call): Likewise.
4139
4140 Thu Mar 26 10:23:24 1998  Mark Mitchell  <mmitchell@usa.net>
4141
4142         * cvt.c (perform_qualification_conversions): Use comp_target_types
4143         instead of comp_ptr_ttypes.
4144
4145 Wed Mar 25 16:10:50 1998  Mark Mitchell  <mmitchell@usa.net>
4146
4147         * cp-tree.h (enforce_access): Declare.
4148         * call.c (enforce_access): Make it extern, not static.
4149         * class.c (alter_access): Use enforce_access; modify code for ISO
4150         compliance, rather than ARM rules.
4151
4152 Wed Mar 25 12:10:45 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
4153
4154         * cp-tree.h: Fix typo.
4155
4156 Wed Mar 25 02:01:02 1998  Jason Merrill  <jason@yorick.cygnus.com>
4157
4158         * expr.c (cplus_expand_expr): Only do PCC_STATIC_STRUCT_RETURN thing
4159         if (aggregate_value_p (type)).
4160
4161         * decl2.c (constructor_name_full): Handle TYPENAME_TYPE.
4162
4163 Tue Mar 24 16:12:01 1998  Mark Mitchell  <mmitchell@usa.net>
4164
4165         * tree.c (mapcar): When dealing with a DECL, use it's constant
4166         value, if any.
4167         * pt.c (lookup_template_class): Don't mangle the names of template
4168         classes whose arguments are unknown.
4169
4170         * pt.c (tsubst_expr): Handle GOTO_STMT correctly.
4171
4172 Tue Mar 24 12:21:55 1998  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
4173
4174         * decl.c (init_decl_processing): Set TYPE_PRECISON for bools to 1.
4175
4176 Tue Mar 24 12:21:48 1998  Jim Wilson  <wilson@cygnus.com>
4177
4178         * decl.c (init_decl_processing): Initialize TYPE_MAX_VALUE for
4179         boolean_type_node to 1.
4180
4181 Tue Mar 24 10:23:47 1998  Mark Mitchell  <mmitchell@usa.net>
4182
4183         * error.c (dump_expr): Remove unused variable `l'.
4184
4185         * pt.c (for_each_template_parm): New function, created by
4186         converting uses_template_parms.
4187         (tree_fn_t): New typedef.
4188         (uses_template_parms): Use it.
4189         (mark_template_parm): New function.
4190         (push_template_decl): Check that the argument list of a partial
4191         specialization uses all the template parameters.
4192
4193         * Make-lang.in (c++filt): Don't delete cxxmain.c after we're done
4194         with it; we might want it for debugging.
4195         * cp-tree.h (type_unification): Change interface.
4196         * class.c (finish_struct_1): Skip nested template types, just like
4197         ordinary nested types.
4198         (instantiate_type): Use new interface to type_unification.
4199         * lex.c (init_lex): Add __sz as opname for sizeof.
4200         * method.c (build_overload_scope_ref): New function.
4201         (build_overload_int): Handle complex expressions.  Set
4202         numeric_output_need_bar if necessary.
4203         (build_overload_value): Handle non-PARM_DECL nodes; this
4204         routine is now used by build_overload_int.  Remove some
4205         assignments to numeric_output_need_bar.  Use
4206         build_overload_scope_ref.
4207         (build_qualified_name): Note that some template mangled names end
4208         with digits, and set numeric_output_need_bar appropriately.  Use
4209         build_underscore_int.
4210         * pt.c (unify): Change interface.
4211         (type_unification_real): Likewise.
4212         (determine_specialization): Use new interfaces.
4213         (tsubst): Deal gracefully with situations in which the argument
4214         vector is not fully filled.
4215         (fn_type_unification): Use new interfaces.
4216         (type_unification): Likewise.  Remove NOP_EXPR hack.
4217         (type_unification_real): Likewise.
4218         (unify): Likewise.  Deal with unification of complex expresions.
4219
4220 Mon Mar 23 12:24:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
4221
4222         * pt.c (complete_template_args): Initialize skip properly.
4223
4224         * decl.c (make_typename_type): Revert.
4225         (make_implicit_typename): Remove.
4226         (lookup_name_real): Don't call it.  Call lookup_field if we see a
4227         TYPE_DECL from a template base.
4228         * search.c (lookup_field): Do implicit typename stuff.
4229
4230 Sun Mar 22 00:50:42 1998  Nick Clifton  <nickc@cygnus.com>
4231                           Geoff Noer    <noer@cygnus.com>
4232
4233         * Makefile.in: Various fixes for building cygwin32 native toolchains.
4234         * Make-lang.in: Likewise.
4235
4236 Fri Mar 20 18:07:39 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
4237
4238         * pt.c (tsubst, TEMPLATE_TEMPLATE_PARM): Simplify.
4239
4240 Fri Mar 20 10:42:07 1998  Jason Merrill  <jason@yorick.cygnus.com>
4241
4242         * decl.c (make_implicit_typename): Rewrite removed code.
4243         (make_typename_type): Call it if the type we look up comes from
4244         a base that uses template parms.
4245
4246         * pt.c (complete_template_args): Rewrite.
4247         (tsubst, FUNCTION_DECL): Use it.
4248
4249 Fri Mar 20 08:12:43 1998  H.J. Lu  (hjl@gnu.org)
4250
4251         * semantics.c (finish_asm_stmt): Fix combine strings. Call
4252         c_expand_asm_operands () if output_operands, input_operands or
4253         clobbers is not NULL_TREE.
4254
4255 Fri Mar 20 00:10:19 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
4256
4257         * pt.c (complete_template_args): New function.
4258         (get_bindings): Deal with specializations of function templates
4259         with return type containing parameters from outer class 
4260         templates.
4261         (tsubst, TEMPLATE_TEMPLATE_PARM): When reducing parameter level,
4262         substitute arguments and compose a new type.
4263
4264 Thu Mar 19 19:01:48 1998  Mark Mitchell  <mmitchell@usa.net>
4265
4266         * pt.c (tsubst): Clear DECL_PENDING_INLINE_INFO for new
4267         FUNCTION_DECLs.
4268
4269 Thu Mar 19 11:51:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
4270
4271         * decl.c (make_implicit_typename): Lose useless code.
4272
4273         * call.c (standard_conversion): Handle A* -> const A* properly.
4274
4275         * pt.c (get_bindings_real): Rename from get_bindings.  Add 
4276         check_rettype parm.
4277         (get_bindings): Pass 1.
4278         (get_bindings_overload): Pass 0.
4279
4280 Wed Mar 19 09:08:12 1998  Mark Mitchell  <mmitchell@usa.net>
4281
4282         * pt.c (check_explicit_specialization): When reverting a static
4283         member function, also remove the `this' parameter from
4284         last_function_parms.
4285
4286 Thu Mar 19 02:27:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
4287
4288         * pt.c (tsubst_copy, CONST_DECL): Don't bother tsubsting
4289         a function context.
4290
4291         * decl.c (store_bindings): Use free_binding_vecs.
4292         (pop_from_top_level): Likewise.
4293
4294 Wed Mar 18 12:41:43 1998  Jason Merrill  <jason@yorick.cygnus.com>
4295
4296         * decl.c (make_implicit_typename): Only change the type of a 
4297         TYPENAME_TYPE.
4298
4299 Wed Mar 18 10:09:51 1998  Mark Mitchell  <mmitchell@usa.net>
4300
4301         * semantics.c: New file, containing routines to perform the
4302         semantic phase of parsing.
4303         * parse.y: Use it.
4304         * pt.c (tsubst_expr): Likewise.
4305         * cp-tree.h: Declare the various functions in semantics.c.
4306         Provide macros to access _STMT tree nodes.
4307         * cp-tree.def: Add ASM_STMT tree node.
4308         * Makefile.in, Make-lang.in: Add dependencies on and for
4309         semantics.c.
4310         
4311 Wed Mar 18 00:24:10 1998  Jason Merrill  <jason@yorick.cygnus.com>
4312
4313         * pt.c (push_template_decl): Only check primary templates.
4314
4315         * pt.c (check_explicit_specialization): Complain about default args
4316         in explicit specialization.
4317
4318         * parse.y (nomods_initdcl0): Also call cp_finish_decl for a 
4319         constructor_declarator.
4320
4321 Tue Mar 17 14:44:54 1998  Mark Mitchell  <mmitchell@usa.net>
4322
4323         * typeck2.c (build_x_arrow): Don't crash when an aggregate type
4324         has no overloaded operator ->.
4325
4326         * call.c (build_field_call): Don't crash when presented with a
4327         field that is actually a nested type.
4328
4329         * decl.c (pushtag): Deal with friend class injection in local
4330         classes.
4331
4332         * call.c (build_object_call): Don't crash if OBJ is a
4333         pointer-to-member-function.
4334
4335 Tue Mar 17 11:40:26 1998  Jason Merrill  <jason@yorick.cygnus.com>
4336
4337         * pt.c (push_template_decl): Complain about template with C linkage,
4338         anonymous template class.
4339
4340 Mon Mar 16 12:10:39 1998  Jason Merrill  <jason@yorick.cygnus.com>
4341
4342         * class.c (pushclass): Only use the mi_matrix stuff #ifdef MI_MATRIX.
4343         * search.c: Likewise.
4344
4345         * lex.c (do_pending_defargs): Only call 
4346         maybe_{begin,end}_member_template_processing for FUNCTION_DECLs.
4347
4348         * parse.y (initdcl0_innards): Move maybeasm back into initdcl0 et al.
4349
4350 Mon Mar 16 10:47:22 1998  Mark Mitchell  <mmitchell@usa.net>
4351
4352         * parse.y: Deal with CONSTRUCTORS in new_initializers.
4353
4354 Mon Mar 16 10:54:21 1998  Mark Mitchell  <mmitchell@usa.net>
4355
4356         * pt.c (tsubst_copy): Deal with BIND_EXPR in a way that more
4357         closely mimics the behavior in parse.y.
4358         (tsubst_expr): Return the resuting BLOCK when making a tsubst'ing
4359         into a compound statement.
4360         
4361 Sun Mar 15 02:07:26 1998  Jason Merrill  <jason@yorick.cygnus.com>
4362
4363         * cp-tree.h (TEMPLATE_PARMS_FOR_INLINE): New macro.
4364         * pt.c (inline_needs_template_parms): New fn.
4365         (original_template): New fn.
4366         (push_inline_template_parms_recursive): New fn.
4367         (maybe_begin_member_template_processing): Use them.
4368         (maybe_end_member_template_processing): Likewise.
4369         (is_member_or_friend_template): Rename to is_member_template.
4370         Member functions of local classes are never member templates.
4371
4372 Sun Mar 15 01:14:22 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
4373
4374         * lex.c (do_identifier): Handle TEMPLATE_DECL that was
4375         added in the class scope to catch redefinition error.
4376
4377         * pt.c (reduce_template_parm_level): Also copy 
4378         the DECL_TEMPLATE_PARMS field.
4379
4380 Sun Mar 15 10:54:08 1998  Mark Mitchell  <mmitchell@usa.net>
4381
4382         * pt.c (tsubst): Clear TYPE_REFERENCE_TO when creating a
4383         reduced-level template type parameter.
4384
4385 Sun Mar 15 12:26:02 1998  Manfred Hollstein  <manfred@s-direktnet.de>
4386
4387         * cp-tree.h (struct lang_decl_flags): Add needs_final_overrider.
4388         (DECL_NEEDS_FINAL_OVERRIDER_P): New macro.
4389         * class.c (override_one_vtable): Set DECL_NEEDS_FINAL_OVERRIDER_P.
4390         * decl.c (duplicate_decls): Propagate it.
4391         * typeck2.c (abstract_virtuals_error): Use two loops to emit
4392         abstract virtual functions and virtual functions which need a
4393         final overrider separately.
4394         
4395 Thu Mar 12 09:39:40 1998  Manfred Hollstein  <manfred@s-direktnet.de>
4396
4397         * lang-specs.h: Properly put brackets around array elements in 
4398         initializer.
4399
4400         * typeck.c (build_binary_op_nodefault): Correctly place parens around
4401         && and || in expression.
4402
4403 Thu Mar 12 09:26:04 1998  Manfred Hollstein  <manfred@s-direktnet.de>
4404
4405         * call.c (default_parm_conversions): Remove prototype definition.
4406         (build_method_call): Remove unused variable result.
4407
4408         * cvt.c (ocp_convert): Remove unused variable conversion.
4409
4410         * decl2.c (ambiguous_decl): Add explicit parameter definition for name.
4411
4412         * except.c (do_unwind): #if 0 definition of unused variables fcall
4413         and next_pc.
4414
4415         * expr.c (extract_scalar_init): #if 0 prototype and function 
4416         definition.
4417
4418         * init.c (expand_aggr_init_1): Remove unused variable init_type.
4419         (build_new_1): Remove unused variable t.
4420
4421         * pt.c (instantiate_class_template): Remove unused variable newtag;
4422         cast called function return value to void.
4423         (do_decl_instantiation): Remove unused variables name and fn.
4424
4425         * tree.c (get_type_decl): Add default return to shut up compiler from
4426         complaining control reaches end of non-void function.
4427
4428         * typeck.c (build_x_conditional_expr): Remove unused variable rval.
4429
4430 Thu Mar 12 09:12:15 1998  Manfred Hollstein  <manfred@s-direktnet.de>
4431
4432         * call.c (default_parm_conversions): Remove prototype definition.
4433         (build_method_call): Remove unused variable result.
4434         (build_over_call): Add default case in enumeration switch.
4435
4436 Thu Mar 12 08:39:13 1998  Manfred Hollstein  <manfred@s-direktnet.de>
4437
4438         * decl2.c (lang_decode_option): Change j's type to size_t.
4439
4440         * tree.c (layout_vbasetypes): record_align and desired_align are of
4441         type unsigned int; const_size and nonvirtual_const_size likewise.
4442
4443 Wed Mar 11 07:25:20 1998  Mark Mitchell  <mmitchell@usa.net>
4444
4445         * parse.y (new_initializer): Make sure all initializers are
4446         lists.
4447
4448 Tue Mar 10 07:32:36 1998  Mark Mitchell  <mmitchell@usa.net>
4449
4450         * decl2.c (import_export_decl): Mark tinfo functions for
4451         cv-qualified versions of class types as DECL_NOT_REALLY_EXTERN.
4452
4453 Fri Mar  6 23:27:35 1998  Jeffrey A Law  (law@cygnus.com)
4454
4455         * method.c: Fix typo.
4456
4457 Fri Mar  6 10:06:59 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4458
4459         * method.c: Include "system.h" to get stdlib.h, stdio.h,
4460         ctype.h, string.h, etc.
4461         (issue_nrepeats): Add default case in enumeration switch.
4462         (check_btype): Likewise.
4463         (process_overload_item): Likewise.
4464          
4465         * Makefile.in (method.o): Depend on system.h.
4466
4467 Wed Mar  4 22:26:53 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
4468
4469         * lex.c (do_scoped_id): Fix parenthesizing.
4470
4471 Wed Mar  4 12:11:53 1998  Michael Tiemann  <tiemann@axon.cygnus.com>
4472
4473         * rtti.c (get_tinfo_fn_dynamic): If this function is called an
4474         FLAG_RTTI is unset, initialize type info machinery and continue
4475         with FLAG_RTTI enabled.
4476         (get_typeid): Ditto.
4477
4478 Wed Mar  4 11:47:55 1998  Jason Merrill  <jason@yorick.cygnus.com>
4479
4480         * typeck.c (unary_complex_lvalue): &D::i has type B::* if i comes
4481         from B.
4482
4483 Wed Mar  4 11:28:08 1998  Mark Mitchell  <mmitchell@usa.net>
4484
4485         * pt.c (finish_member_template_decl): Deal more gracefully with
4486         invalid declarations.
4487
4488 Tue Mar  3 01:38:17 1998  Jason Merrill  <jason@yorick.cygnus.com>
4489
4490         * cvt.c, decl.c, decl2.c, init.c, rtti.c, typeck.c, typeck2.c,
4491         cp-tree.h: Clean up more old overloading code, old RTTI code, and
4492         some formatting quirks.
4493
4494         * call.c, class.c, cp-tree.h, cvt.c, decl.c, init.c, lex.c,
4495         method.c, pt.c, ptree.c, typeck.c: Remove support for 
4496         -fno-ansi-overloading and overloading METHOD_CALL_EXPR.
4497         * class.h: Remove.
4498         * Makefile.in: Adjust.
4499
4500         * pt.c (unify): Don't allow reduced cv-quals when strict.
4501
4502         * call.c, class.c, pt.c, cp-tree.h: Remove nsubsts parm from
4503         *type_unification* and unify.
4504
4505 Mon Mar  2 12:11:06 1998  Jason Merrill  <jason@yorick.cygnus.com>
4506
4507         * parse.y (explicit_template_type): Remove TEMPLATE keyword.
4508         (nested_name_specifier): And add it before this use.
4509         (typename_sub0): And this use.  Also add use without the keyword.
4510         (typename_sub1): Likewise.
4511         * pt.c (instantiate_class_template): Don't actually instantiate 
4512         anything if our type uses template parms.
4513
4514 Mon Mar  2 11:04:59 1998  Jim Wilson  <wilson@cygnus.com>
4515
4516         * decl.c (start_function): Don't call temporary_allocation for a
4517         nested function.
4518
4519 Sun Mar  1 21:06:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
4520
4521         * pt.c (instantiate_class_template): Don't mess with friends if
4522         our type uses template parms.
4523
4524 Sat Feb 28 12:06:44 1998  Jason Merrill  <jason@yorick.cygnus.com>
4525
4526         * parse.y (nested_name_specifier): Use explicit_template_type.
4527         (typename_sub): Allow a template_type, an explicit_template_type,
4528         or an implicit template type at the end.
4529         * lex.c (yyprint): Handle a PTYPENAME being a TEMPLATE_DECL.
4530         * decl.c (make_typename_type): Handle template-id where the name
4531         is a TEMPLATE_DECL.
4532         * call.c (build_scoped_method_call): Handle member template 
4533         destructor call.
4534         * pt.c (tsubst_copy, METHOD_CALL_EXPR): Don't assume a member 
4535         destructor is represented by the type.
4536
4537         * cp-tree.h (TYPENAME_TYPE_FULLNAME): New macro.
4538         * parse.y (nested_name_specifier): Add 'template' case.
4539         (explicit_template_type): New rule.
4540         (typename_sub): Use it.
4541         * decl.c (make_typename_type): Handle getting a template-id for NAME.
4542         * pt.c (tsubst): Likewise.
4543
4544 Fri Feb 27 11:17:50 1998  Jason Merrill  <jason@yorick.cygnus.com>
4545
4546         * pt.c (add_to_template_args): Fix thinko.
4547         (instantiate_class_template): Call it later.
4548
4549         * pt.c (get_class_bindings): Add outer_args parm.
4550         (most_specialized_class): Likewise.
4551         (instantiate_class_template): Pass it.
4552         (more_specialized_class): Likewise.
4553         (lookup_template_class): Get context from template if none
4554         was specified.
4555         (finish_member_template_decl): Don't do anything with a
4556         partial specialization.
4557         * decl2.c (check_member_template): Use IS_AGGR_TYPE instead of
4558         AGGREGATE_TYPE_P.
4559         * class.c (finish_struct): Member class templates have already been
4560         checked for name clashes.
4561         * decl.c (pushdecl_with_scope): Handle pushing at class level.
4562
4563 Fri Feb 27 02:25:16 1998  Jason Merrill  <jason@yorick.cygnus.com>
4564
4565         * pt.c (tsubst, TEMPLATE_DECL): Support member class templates.
4566         (tsubst, *_PARM): Support multiple levels of template classes.
4567         (instantiate_class_template): Look up the pattern from the
4568         original template.
4569         (lookup_template_class): Handle getting a template for d1.
4570         (push_template_decl): Correct setting of 'primary'.
4571         (reduce_template_parm_level): Add 'levels' parm.
4572         (finish_member_template_decl): Support member class templates.
4573         (template_class_depth): Handle multiple levels.
4574         * parse.y (component_decl_1, fn.def2): Remove member template case.
4575         (component_decl): Add member template cases.
4576         * decl2.c (check_member_template): We now handle member template
4577         classes.
4578         * decl.c (pushtag): Handle member templates.
4579         * method.c (do_inline_function_hair): Don't touch
4580         IDENTIFIER_GLOBAL_VALUE.
4581         * init.c (build_offset_ref): If name isn't an identifier, just 
4582         return it.
4583         * spew.c (yylex): Handle PTYPENAME like TYPENAME.
4584
4585         * typeck.c (get_delta_difference): Do adjust for conversions to
4586         and from virtual base.
4587
4588 Wed Feb 25 09:51:29 1998  Jason Merrill  <jason@yorick.cygnus.com>
4589
4590         * typeck.c (get_delta_difference): Give hard error for conversion
4591         from virtual base.
4592
4593         * cp-tree.h: Tweak formatting.
4594
4595 Wed Feb 25 00:35:33 1998  Jason Merrill  <jason@yorick.cygnus.com>
4596
4597         * decl.c (push_namespace): Handle redeclaration error.
4598
4599         * cp-tree.h (IDENTIFIER_NAMESPACE_VALUE): New macro.
4600         (IDENTIFIER_NAMESPACE_BINDINGS): New macro.
4601         (NAMESPACE_BINDING): New macro.
4602         (IDENTIFIER_GLOBAL_VALUE): Use NAMESPACE_BINDING.
4603         * *.c: Use them.
4604
4605         * pt.c (push_template_decl): Use innermost_args.
4606
4607         * decl.c (get_unique_name): Tweak from earlier in the name.
4608
4609 Tue Feb 24 22:15:04 1998  Martin von Loewis  <loewis@informatik.hu-berlin.de>
4610
4611         * cp-tree.def: Add CPLUS_BINDING node.
4612         * cp-tree.h (tree_binding): new struct
4613         (BINDING_SCOPE, BINDING_VALUE): new macros
4614         (current_namespace, global_namespace): declare extern
4615         (struct lang_decl_flags): new field in_namespace
4616         (DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): new macros
4617         (DECL_NAMESPACE, SET_DECL_NAMESPACE): new macros
4618         (TREE_INDIRECT_USING): new macro
4619         * decl2.c (current_namespace, global_namespace): Declare.  The
4620         value is a NAMESPACE_DECL now, not a TREE_LIST.
4621         (is_namespace_ancestor, namespace_ancestor):new static functions.
4622         (add_using_namespace, ambiguous_decl): likewise.
4623         (lookup_using_namespace): new support function for lookup_name.
4624         (qualified_lookup_using_namespace): new support function for
4625         do_scoped_id and lookup_namespace_name
4626         (get_namespace_id): mark as obsolete.
4627         (current_namespace_id): Likewise.
4628         (do_namespace_alias): Implement.
4629         (do_using_directive): Implement as call to add_using_namespace.
4630         * decl.c (binding_for_name): new function.
4631         (push_namespace, pop_namespace): implement.
4632         (push_decl): don't install a FUNCTION_DECL in the global branch.
4633         (lookup_namespace_name): implement using qualified lookup.
4634         (lookup_name_real): For global scoping, lookup in
4635         global_namespace. For namespace scoping, lookup in given
4636         namespace. For unscoped lookup, iterate over namespace,
4637         considering using directives.
4638         (init_decl_processing): initialize global_namespace.
4639         (grokvardecl): Build assembler name as static name for globals.
4640         (grokdeclarator): Remove old namespace mangling.
4641         (xref_tag): When installing a global binding for the
4642         tag, make sure we have an identifier.
4643         * method.c (build_overload_nested_name): mangle namespaces.
4644         (build_qualified_name): Likewise.
4645         (build_decl_overload_real): Likewise.
4646         * lex.c (build_lang_decl): set namespace for new declaration to
4647         current_namespace.
4648         (do_scoped_id): find global names in global or current
4649         namespace, or using qualified namespace lookup, depending on
4650         context.
4651         * init.c (build_member_call): When scope is namespace, use
4652         build_x_function_call instead.
4653         (build_offset_ref): When scope is namespace, collapse processing
4654         to lookup_namespace_name instead.
4655         * error.c (dump_decl): Support NAMESPACE_DECL.
4656         * decl.c (pushdecl): Bind globals to current namespace.
4657         (push_overloaded_decl): Likewise.
4658         (lookup_tag): Likewise.
4659         (lookup_name_current_level): Likewise.
4660         (xref_tag): Likewise.
4661         (start_function): Likewise.
4662         * lex.c (do_identifier): Likewise.
4663         (identifier_typedecl_value): Likewise.
4664         (real_yylex): Likewise.
4665         * method.c (do_inline_function_hair): Likewise.
4666         * parse.y (unscoped): Likewise.
4667         * pt.c (check_explicit_specialization): Likewise.
4668         (lookup_template_class): Likewise.
4669         * rtti.c (call_void_fn): Likewise.
4670         * sig.c (build_sigtable): Likewise.
4671         * ptree.c (lang_print_xnode): New function.
4672
4673 Tue Feb 24 01:40:24 1998  Jason Merrill  <jason@yorick.cygnus.com>
4674
4675         * pt.c (instantiate_class_template): Don't instantiate if pedantic
4676         and the args use template parms.
4677
4678         * pt.c (push_tinst_level): If the instantiaton uses template parms,
4679         fail silently.
4680         * decl.c (xref_basetypes): Do call complete_type for basetypes
4681         that involve template parameters.
4682
4683 Tue Feb 24 00:36:43 1998  Jason Merrill  <jason@yorick.cygnus.com>
4684
4685         * typeck2.c (process_init_constructor): Fix labeled init check.
4686
4687 Mon Feb 23 05:08:55 1998  Jason Merrill  <jason@yorick.cygnus.com>
4688
4689         * pt.c, call.c, decl.c, method.c, cp-tree.h: Remove unused NARGS
4690         argument to tsubst and friends.
4691
4692         * pt.c (tsubst, FUNCTION_DECL): Tidy.
4693
4694         * typeck.c (build_x_function_call): Handle static member function
4695         templates like non-templates.  Handle friend templates like normal
4696         function templates.
4697         * pt.c (tsubst, *_PARM): Don't use orig_level.
4698         (get_bindings): Don't call add_to_template_args.
4699         (instantiate_template): Likewise.
4700         (tsubst, FUNCTION_DECL): Call add_to_template_args as appropriate.
4701         * ptree.c (print_lang_type): Print index/level for template parms.
4702
4703 Mon Feb 23 02:52:29 1998  Mark Mitchell  <mmitchell@usa.net>
4704
4705         * Make-lang.in (cc1plus): Note that cc1plus depends on
4706         cp/cp-tree.h and cp/cp-tree.def.
4707         
4708         * cp-tree.def (TEMPLATE_CONST_PARM): Remove.
4709         (TEMPLATE_PARM_INDEX): New tree code, used to indicate a
4710         position in a template parameter list.
4711         * cp-tree.h (template_parm_index): New structure, used as the tree
4712         structure for a TEMPLATE_PARM_INDEX.
4713         (TEMPLATE_PARM_IDX): New macro.
4714         (TEMPLATE_PARM_LEVEL): Likewise.
4715         (TEMPLATE_PARM_DESCENDANTS): Likewise.
4716         (TEMPLATE_PARM_ORIG_LEVEL): Likewise.
4717         (TEMPLATE_PARM_DECL): Likewise.
4718         (TEMPLATE_TYPE_PARM_INDEX): Likewise.
4719         (TEMPLATE_TYPE_ORIG_LEVEL): Likewise.
4720         (TEMPLATE_TYPE_DECL): Likewise.
4721         (TEMPLATE_CONST_IDX): Remove.
4722         (TEMPLATE_CONST_LEVEL): Likewise.
4723         (TEMPLATE_CONST_SET_INFO): Likewise.
4724         (TEMPLATE_TYPE_SET_INFO): Likewise.
4725         (TEMPLATE_TYPE_IDX): Redefine in terms of TEMPLATE_PARM_INDEX
4726         node.
4727         (TEMPLATE_TYPE_LEVEL): Likewise.
4728         * decl.c (decls_match): Call comp_template_parms, rather than
4729         expanding it inline.
4730         (duplicate_decls): If two template declarations are being merged,
4731         then their TEMPLATE_INFOs should be merged as well.
4732         (grokfndecl): Save template-id information when declaring a friend
4733         with explicit template arguments.  Pass arguments to
4734         check_explicit_specialization via correct convention; at some
4735         point check_explicit_specialization changed, but these call-sites
4736         did not.
4737         (grokdeclarator): Tidy up slightly.
4738         * decl2.c (check_classfn): Tidy up slightly.  Don't assume that
4739         two template functions with the same DECL_ASSEMBLER_NAME the same,
4740         since the names are not yet mangled.
4741         * error.c (dump_decl): Use TEMPLATE_PARM_INDEX instead of
4742         TEMPLATE_CONST_PARM. 
4743         (dump_expr): Likewise.  Use the TEMPLATE_PARM_DECL to get at the
4744         decl for a non-type parameter, rather than printing `<tparm ...>'.
4745         * friend.c (is_friend): Handle TEMPLATE_DECL friends.
4746         (do_friend): Deal with template friends.
4747         * lex.c (do_pending_inlines): Call
4748         maybe_begin_member_template_processing, rather than
4749         conditionally calling begin_member_template_processing.
4750         (process_next_inline): Likewise.  Call
4751         maybe_end_member_template_processing, rather than
4752         conditionally calling end_member_template_processing.
4753         (do_pending_defargs): Likewise.
4754         (do_identifier): Use TEMPLATE_PARM_INDEX instead of
4755         TEMPLATE_CONST_PARM.  
4756         * method.c (build_mangled_template_parm_index): New function.
4757         (build_overload_value): Use it.
4758         (build_overload_name): Likewise.
4759         * pt.c (finish_member_template_decl): Allow friend declarations.
4760         (template_class_depth): New function.
4761         (is_member_template): Rename, and modify, to become...
4762         (is_member_or_friend_template): New function.
4763         (end_member_template_processing): Rename, and modify, to become...
4764         (maybe_end_member_template_processing).
4765         (build_template_parm_index): New function.
4766         (reduce_template_parm_level): New function.
4767         (process_template_parm): Modify to use build_template_parm_index.
4768         (push_template_decl): Deal with friend templates.
4769         (uses_template_parms): Use TEMPLATE_PARM_INDEX instead of
4770         TEMPLATE_CONST_PARM.
4771         (tsubst_friend_function): New function.
4772         (instantiate_class_template): Generate the DECL_FRIENDLIST
4773         for a new instantiation by using tsubst_friend_function rather
4774         than just tsubst.
4775         (tsubst): Don't tsubst into a type which is a TEMPLATE_DECL.
4776         Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM, and the
4777         appropriate new macros.  Use reduce_template_parm_level to
4778         generate lower-level template parameters.  Handle tsubst'ing into
4779         TEMPLATE_DECLS that declare TEMPLATE_TEMPLATE_PARMS.  Don't forget
4780         to tsubst the DECL_CONTEXT and DECL_CLASS_CONTEXT of newly created
4781         templates.  Similarly for the template parameters for a new
4782         template.
4783         (tsubst_copy): Tidy up slightly.  Use TEMPLATE_PARM_INDEX instead
4784         of TEMPLATE_CONST_PARM.  Handle TYPE_DECLs by tsubsting into them.
4785         (unify): Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM.  
4786         (get_bindings): Call add_to_template_args if necessary.
4787         (instantiate_decl): Handle instantiations of friend templates.
4788         * search.c (lookup_field_1): Don't treat the TYPE_FIELDS of a
4789         TEMPLATE_TYPE_PARM as a list of fields; it's not!
4790         * spew.c (yylex): Do a little manual constant propogation to
4791         clarify the code.
4792         
4793 Sun Feb 22 19:53:29 1998  Jeffrey A Law  (law@cygnus.com)
4794
4795         * error.c: Include sys/types.h.
4796
4797 Thu Feb 19 14:49:09 1998  Jeffrey A Law  (law@cygnus.com)
4798
4799         * method.c (build_mangled_name): Start CPP directives in column zero.
4800
4801 Thu Feb 19 10:36:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
4802
4803         * typeck2.c (process_init_constructor): Sorry about non-trivial
4804         labeled initializers.
4805         * parse.y (initlist): Reenable labeled initializers.
4806
4807 Thu Feb 19 10:15:55 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
4808
4809         * pt.c (coerce_template_parms) Add a new parameter, is_tmpl_parm,
4810         all callers changed.  Rely on the new parameter instead of arg 
4811         being a TREE_LIST when determine whether we are working inside
4812         template template parameter.  Clean up is_type test.
4813         
4814 Thu Feb 19 10:04:12 1998  Jason Merrill  <jason@yorick.cygnus.com>
4815
4816         * cvt.c (cp_convert_to_pointer): Preserve TREE_CONSTANT.
4817         * typeck2.c (initializer_constant_valid_p): Allow conversions
4818         between pointers and refrerences.
4819
4820 1998-02-19  Brendan Kehoe  <brendan@cygnus.com>
4821
4822         * typeck.c (build_unary_op): Only warn about incr/decr a pointer
4823         if pedantic || warn_pointer_arith.
4824
4825 Thu Feb 19 09:37:21 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
4826
4827         * pt.c (unify): Handle TEMPLATE_DECL.
4828
4829 1998-02-18  Brendan Kehoe  <brendan@cygnus.com>
4830
4831         * cp-tree.h (strip_attrs): Remove decl.
4832
4833 1998-02-18  Doug Evans  <devans@cygnus.com>
4834
4835         * decl.c (duplicate_decls): Call merge_machine_decl_attributes.
4836         Update olddecl's attributes too.
4837         (strip_attrs): Remove function.
4838         * typeck.c (common_type): Call merge_machine_type_attributes.
4839
4840 Tue Feb 17 14:07:52 1998  Mark Mitchell  <mmitchell@usa.net>
4841
4842         * parse.y (initdcl0_innards): New grammar symbol.
4843         (nomods_initdecls, nomods_initdcl0): Change type from itype to
4844         none, since the resulting value is never used.
4845         (parse_decl): New function.
4846         (datadef): Remove redundant actions.
4847         (initdcl0, notype_initdcl0, nomods_initdcl0): Use initdcl0_innards.
4848         * parse.c: Regenerated.
4849         
4850 Tue Feb 17 11:54:16 1998  Jason Merrill  <jason@yorick.cygnus.com>
4851
4852         * parse.y (simple_stmt): Use getdecls() to check for decl.
4853
4854 Sat Feb 14 11:50:51 1998  Manfred Hollstein  <manfred@s-direktnet.de>
4855
4856         * Make-lang.in (DEMANGLER_INSTALL_NAME, DEMANGLER_CROSS_NAME): New 
4857         macros.
4858         (c++.install-common): Install c++filt properly as native or as cross
4859         variant.
4860         (c++.uninstall): Add c++filt.
4861
4862 Fri Feb 13 14:55:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
4863
4864         * call.c (standard_conversion): Fix multi-level ptr conversions.
4865
4866 Fri Feb 13 14:06:22 1998  Mike Stump  <mrs@wrs.com>
4867
4868         * init.c (build_new): Propagate error_mark_node up.
4869
4870 Fri Feb 13 13:24:32 1998  Jason Merrill  <jason@yorick.cygnus.com>
4871
4872         * parse.y (simple_stmt): If the condition isn't a declaration, 
4873         start the controlled block after the test.
4874
4875 Fri Feb 13 02:26:10 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
4876
4877         * call.c (build_over_call): Convert builtin abs, labs and fabs to
4878         tree-codes.
4879         * decl.c (init_decl_processing): Reenable abs, labs and fabs as
4880         builtins.
4881
4882 Fri Feb 13 01:36:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
4883
4884         * call.c (standard_conversion): A BASE_CONV replaces an RVALUE_CONV.
4885
4886 Fri Feb 13 00:21:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
4887
4888         * cp-tree.h: Add access_protected_virtual_node.
4889         * class.c (init_class_processing): Initialize it.
4890         * decl.c (xref_basetypes): Use it.
4891         * parse.y (base_class_access_list): Likewise.
4892
4893         * Make-lang.in (DEMANGLER_PROG): Add $(exeext).
4894         (c++.install-common): Install c++filt.
4895
4896 Thu Feb 12 12:46:51 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
4897
4898         * decl.c (shadow_tag): Give error for typedef-ing built-in types.
4899
4900 Wed Feb 11 23:28:05 1998  Mark Mitchell  <mmitchell@usa.net>
4901
4902         * call.c (reference_binding): Use comptypes when comparing
4903         TYPE_MAIN_VARIANTS to handle non-canonical array/index types.
4904
4905 Wed Feb 11 16:42:04 1998  Mark Mitchell  <mmitchell@usa.net>
4906
4907         * tree.c (is_overloaded_fn): Use really_overloaded_fn.
4908         (really_overloaded_fn): Move check here from is_overloaded_fn. 
4909         (get_first_fn): Use really_overloaded_fn and is_overloaded_fn.
4910
4911 Wed Feb 11 15:54:18 1998  Mark Mitchell  <mmitchell@usa.net>
4912
4913         * typeck.c (build_ptrmemfunc): Type-check pointer-to-member
4914         conversions.
4915
4916 Mon Feb  9 22:23:31 1998  Mark Mitchell  <mmitchell@usa.net>
4917
4918         * cp-tree.h (push_template_decl): Return the decl passed in, or an
4919         equivalent duplicate.
4920         * decl.c (pushtag): Use the return value from push_template_decl.
4921         (duplicate_decls): When duplicating a template declaration, merge
4922         the DECL_TEMPLATE_RESULTs as well.
4923         (make_implicit_typename): Don't try to dive into typename types to
4924         find a context for making a new implicit typename.
4925         (start_decl): Use the return value from push_template_decl.
4926         (grokdeclarator): Complain about declarations list `const operator
4927         int'.  Since we don't correctly handle in-class initializations of
4928         non-static data members, complain about this (now illegal)
4929         practice.  Issue an error for initializations of non-const statics
4930         since that is illegal as well, and since we don't handle that case
4931         correctly either.
4932         (start_function): Use the return value from push_template_decl.
4933         (start_method): Likewise.
4934         * decl2.c (grokfield): Likewise.  Since the change to
4935         grokdeclarator ensures that all initialized fields are in fact
4936         static, remove a redundant test for TREE_PUBLIC.
4937         * parse.y (initlist): Disable labeled initializers since they do
4938         not work as per the documentation, and since they do not use the
4939         same syntax as the C front end.
4940         * pt.c (push_template_decl): Return the decl passed in, or an
4941         equivalent duplicate.
4942         (lookup_template_class): When searching in a nested context,
4943         use the right arguments.
4944         (uses_template_parms): Handle the DECL_INITIAL for a CONST_DECL.
4945         * typeck.c (build_component_ref): Assign the correct type to the
4946         result of build_vfn_ref.
4947         
4948 Tue Feb 10 23:56:46 1998  Jason Merrill  <jason@yorick.cygnus.com>
4949
4950         * pt.c (convert_nontype_argument): Fix typo.
4951         (check_explicit_specialization): Allow old-style specialization
4952         of class template members.
4953
4954 Tue Feb 10 20:36:52 1998  Jason Merrill  <jason@yorick.cygnus.com>
4955                           Manfred Hollstein  <manfred@s-direktnet.de>
4956
4957         * decl.c (grokdeclarator): Use DECL_USE_TEMPLATE instead
4958         when deciding to override DECL_ASSEMBLER_NAME.
4959
4960 Tue Feb 10 15:30:55 EST 1998 Andrew MacLeod <amacleod@torpedo.to.cygnus.com>
4961
4962         * decl2.c (lang_f_options): Add -fsquangle to option processing list.
4963         * cp-tree.h (flag_do_squangling): Add declaration.
4964         * lang-options.h: Add -fsquangle and -fno-squangle.
4965         * method.c: Add macros and static variables for squangling.
4966         (build_overload_name): Rename to build_mangled_name, add logic for B 
4967         compression, and split into process_modifiers and 
4968         process_overload_item.
4969         (process_modifiers): New function, to handle constant, reference, 
4970         and pointer types. 
4971         (process_overload_item): New function, handles issue of type codes.
4972         (build_overload_name): New function, start squangling and call 
4973         build_mangled_name.
4974         (ALLOCATE_TYPEVEC, DEALLOCATE_TYPEVEC): Remove macro and expand inline.
4975         (start_squangling): New function to initialize squangling structs.
4976         (end_squangling): New function to destroy squangling structs.
4977         (nrepeats): Rename variable to Nrepeats.
4978         (issue_nrepeats): New function for issuing 'n' type repeats.
4979         (check_ktype): New function to check for type K name compression.
4980         (build_overload_nested_name): Add a check for K name compression.
4981         (build_qualified_name): Add a check for K name compression and don't
4982         use DECL_ASSEMBLER_NAME when squangling is on.
4983         (check_btype): New function, checks for B type compression.
4984         (build_static_name, build_decl_overload_real): Initiate squangling.
4985         (build_typename_overload, build_overload_with_type): Initiate 
4986         squangling
4987
4988 Sun Feb  8 23:47:38 1998  scott snyder  <sss@d0linux01.fnal.gov>
4989
4990         * method.c (make_thunk): Avoid name buffer overflow.
4991
4992 Sat Feb  7 16:48:54 1998  Jason Merrill  <jason@yorick.cygnus.com>
4993
4994         * pt.c (instantiate_decl): Call cp_finish_decl for vars even if we
4995         don't define them yet.
4996
4997         * parse.y (nomods_initdcl0): Add constructor_declarator case.
4998
4999 Fri Feb  6 21:32:25 1998  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
5000
5001         * config-lang.in (diff_excludes): Use basename only.
5002
5003 Thu Feb  5 19:10:40 1998  Jason Merrill  <jason@yorick.cygnus.com>
5004
5005         * tinfo2.cc: Add tinfo for signed char.
5006
5007 Thu Feb  5 14:38:23 1998  Mike Stump  <mrs@wrs.com>
5008
5009         * search.c (compute_access): Handle protected constructors in derived
5010         classes as accessible.
5011
5012 Wed Feb  4 01:26:49 1998  Jason Merrill  <jason@yorick.cygnus.com>
5013
5014         * expr.c (cplus_expand_expr, PCC_STATIC_STRUCT_RETURN code):
5015         Call convert_from_reference sooner.
5016
5017 Tue Feb  3 23:50:52 1998  Mark Mitchell  <mmitchell@usa.net>
5018
5019         * cvt.c (ocp_convert): Obtain the constant values from constant
5020         decls even if the destination type is the same as the type of the
5021         decl. 
5022
5023         * decl2.c (finish_file): Make sure that static inlines with
5024         definitions are not marked DECL_EXTERNAL before returning.
5025
5026 Tue Feb  3 22:43:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
5027
5028         * decl.c: Lose arg_looking_for_template.
5029         (lookup_name_real): Likewise.
5030         * parse.y: Lose processing_template_arg, template_arg1
5031         (primary): Likewise.
5032         * spew.c (yylex): Set lastiddecl for PTYPENAMEs, too.
5033
5034 Tue Feb  3 22:04:01 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
5035
5036         * error.c (dump_decl): Fix type of default arguments for template
5037         template parameters and nontype template parameters.
5038         * parse.y (template_parm): Handle invalid default template 
5039         template arguments here.
5040
5041         * parse.y (template_parm): Use template_arg instead of PTYPENAME 
5042         for default template template argument.
5043         * pt.c (coerce_template_parms): Merge default template argument 
5044         codes.  Can treat RECORD_TYPE as template name if it is implicitly
5045         created.  Fix argument index in error message.
5046         * typeck.c (comptypes): Merge template argument comparison codes in 
5047         TEMPLATE_TEMPLATE_PARM and RECORD_TYPE.
5048
5049 Tue Jan  6 01:42:44 1998  Mumit Khan <khan@xraylith.wisc.edu>
5050
5051         * lex.c (file_name_nondirectory): Also check for '/'.
5052
5053 Mon Feb  2 11:24:22 1998  Mark Mitchell  <mmitchell@usa.net>
5054
5055         * parse.y (primary): Deal with statement-expressions in
5056         templates. 
5057         * pt.c (tsubst_copy): Handle BIND_EXPR.
5058         * tree.c (mapcar): Likewise.
5059
5060         * call.c (add_template_candidate_real): Pass extra parameter to
5061         fn_type_unification. 
5062         * cp-tree.h (fn_type_unification): Add parameter.
5063         * pt.c (fn_type_unification): Add additional parameter to deal with
5064         static member functions.
5065         (get_bindings): Deal with static member functions.
5066
5067         * cp-tree.h (DECL_NONSTATIC_MEMBER_FUNCTION_P): New macro.      
5068         (revert_static_member_fn): Declare.
5069         * decl.c (revert_static_member_fn): Remove declaration.  Change
5070         linkage from internal to external.
5071         (cp_finish_decl): Deal with virtual functions in classes local to
5072         template functions.
5073         * decl2.c (finish_file): Don't forget to emit increment/decrement
5074         expressions in initializers for file-scope variables.
5075         * parse.y (typename_sub2): If the typename doesn't names a
5076         template, rather than a type, issue an error message.
5077         * pt.c (check_explicit_specialization): Handle specializations of
5078         static member functions.
5079         (coerce_template_parms): Handle offset references to lists of
5080         member functions.
5081         * search.c (note_debug_info_needed): Don't crash when handed a
5082         type which is being defined.
5083         * typeck.c (complete_type): Don't crash when handed NULL_TREE;
5084         that can happen with some illegal code.
5085
5086 Mon Feb  2 00:57:38 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5087
5088         * call.c (user_harshness): Initialize `code' to 0.
5089         (build_method_call): Initialize `candidates', `cp' and `len' to 0.
5090         (null_ptr_cst_p): Add parentheses around && within ||.
5091         (standard_conversion): Likewise.
5092         (z_candidate): Likewise.
5093         (build_user_type_conversion_1): Initialize `args' to NULL_TREE.
5094         (build_object_call): Likewise for `mem_args'.
5095         (build_new_op): Likewise for `mem_arglist'.  Add `return' from
5096         default case in enumeration switch.
5097
5098         * class.c (build_vtable_entry): Add explicit braces to avoid
5099         ambiguous `else'.
5100         (build_class_init_list): Likewise.
5101         (finish_struct_1): Initialize `width' to 0.
5102         (instantiate_type): Initialize `name' to NULL_TREE.  Add
5103         explicit braces to avoid ambiguous `else'.
5104
5105         * cvt.c (convert_to_aggr): Add explicit braces to avoid ambiguous
5106         `else'.
5107
5108         * decl.c (grok_reference_init): Eliminate unused parameter, all
5109         callers changed.
5110         (record_builtin_type): Initialize `tdecl' to NULL_TREE.
5111         (init_decl_processing): Initialize `vb_off_identifier' to NULL_TREE.
5112         (cp_finish_decl): Initialize `ttype' to NULL_TREE.
5113         (grokdeclarator): Add parentheses around && within ||.  Add
5114         explicit braces to avoid ambiguous `else'.
5115         (grokparms): Initialize `type' to NULL_TREE.
5116         (xref_tag): Remove unused label `just_return'.
5117         (finish_enum): Initialize `minnode' and `maxnode' to NULL_TREE.
5118         (finish_function): Initialize `cond' and `thenclause' to NULL_TREE.
5119         (hack_incomplete_structures): Add parentheses around assignment
5120         used as truth value.
5121
5122         * decl2.c (coerce_delete_type): Hide definition of `e3'.
5123
5124         * error.c: Include <stdlib.h>.
5125         (dump_expr): Change the type of `i' to size_t.  Remove unused
5126         label `error'. 
5127
5128         * except.c (init_exception_processing): Remove unused variable `d'.
5129         (expand_throw): Likewise for `label'.
5130
5131         * friend.c (add_friends): Add explicit braces to avoid ambiguous
5132         `else'.
5133
5134         * init.c (sort_member_init): Initialize `last_field' to NULL_TREE.
5135         (sort_base_init): Likewise for `binfo'.
5136         (expand_member_init): Likewise for `rval'.
5137         (build_member_call): Add parentheses around assignment used as
5138         truth value.
5139         (build_offset_ref): Add explicit braces to avoid ambiguous `else'.
5140         (build_new): Initialize `nelts' to NULL_TREE.  Initialize
5141         `old_immediate_size_expand' to 0.
5142         (build_new_1): Initialize `nelts' and `alloc_node' to NULL_TREE.
5143         (build_vec_delete_1): Remove unused variable `block'.
5144         (expand_vec_init): Initialize `itype' to NULL_TREE.
5145
5146         * lex.c: Include <strings.h> if we don't have <string.h>.  Protect
5147         declaration of `index' and `rindex' with autoconf macros.
5148         (reinit_parse_for_expr): Remove unused variables
5149         `look_for_semicolon' and `look_for_lbrac'.
5150         (cons_up_default_function): Initialize `args' to NULL_TREE.
5151         (readescape): Initialize `firstdig' to 0.
5152         (real_yylex): Add parentheses around assignment used as truth value. 
5153
5154         * method.c: Include <strings.h> if we don't have <string.h>.
5155         Protect declaration of `index' with autoconf macro.
5156
5157         * parse.y (primary): Add explicit braces to avoid ambiguous `else'.
5158         Initialize `type' to NULL_TREE.
5159         (structsp): Remove unused variable `id'.
5160
5161         * pt.c (coerce_template_parms): Add explicit braces to avoid
5162         ambiguous `else'.
5163         (lookup_template_class): Initialize `template' to NULL_TREE.
5164         (instantiate_class_template): Remove unused variable `name' and `e'.
5165         (tsubst): Likewise for `i'.  Initialize `last' to NULL_TREE.
5166         (do_poplevel): Initialize `saved_warn_unused' to 0.
5167         (type_unification): Remove unused varable `parm'.
5168         (unify): Likewise for `j'.
5169
5170         * repo.c (init_repo): Add parentheses around assignment used as
5171         truth value.
5172         (finish_repo): Remove unused varable `p'.
5173         
5174         * search.c (get_binfo): Initiize `type' to NULL_TREE.
5175         (get_base_distance): Likewise.
5176         (lookup_field): Initialize `rval_binfo_h', `type', `basetype_path'
5177         and `new_v' to NULL_TREE.
5178         (lookup_fnfields): Likewise for `rval_binfo_h'.
5179         (breadth_first_search): Add parentheses around assignment used as
5180         truth value.
5181         (get_template_base): Initialize `type' to NULL_TREE.
5182
5183         * sig.c (append_signature_fields): Initialize `last_mfptr' to
5184         NULL_TREE.
5185         (build_signature_table_constructor): Likewise for
5186         `last_rhs_field', `pfn' and `vt_off'.
5187         (build_sigtable): Likewise for `init'.
5188
5189         * tree.c (break_out_calls): Initialize `t2' to NULL_TREE.
5190         (propagate_binfo_offsets): Likewise for `delta'.
5191         (hash_tree_cons): Initialize hashcode to 0.
5192         (can_free): Likewise for `size'.
5193         (cp_tree_equal): Add explicit braces to avoid ambiguous `else'.
5194         
5195         * typeck.c (convert_sequence): Hide prototype.
5196         (common_type): Add explicit braces to avoid ambiguous `else'.
5197         (comp_target_types): Likewise.
5198         (build_x_function_call): Initialize `ctypeptr' to NULL_TREE.
5199         (build_function_call_real): Add explicit braces to avoid ambiguous
5200         `else'.
5201         (convert_arguments): Initialize `called_thing' to 0.
5202         (convert_for_initialization): Initialize `savew' and `savee' to 0.
5203
5204         * typeck2.c (incomplete_type_error): Initialize `errmsg' to 0.
5205         (digest_init): Initialize `old_tail_contents' to NULL_TREE.
5206         (build_x_arrow): Likewise for `last_rval'.
5207
5208         * xref.c (GNU_xref_decl): Initialize `cls' to 0.
5209
5210 Sun Feb  1 12:45:34 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
5211
5212         * decl.c (init_decl_processing): Use set_sizetype.
5213         * decl2.c (sizetype): Don't declare.
5214         * typeck.c (c_sizeof): Convert result of *_DIV_EXPR to sizetype.
5215         (c_sizeof_nowarn, build_binary_op_nodefault): Likewise.
5216         (build_component_addr, unary_complex_lvalue): Likewise.
5217         * rtti.c (expand_class_desc): Likewise.
5218         * class.c (get_vfield_offset): Likewise.
5219
5220 Thu Jan 29 10:39:30 1998  Mark Mitchell  <mmitchell@usa.net>
5221
5222         * pt.c (convert_nontype_argument): Move check for is_overloaded_fn
5223         early to avoid bogus error.  Handle overloaded function
5224         names provided as template arguments correctly.
5225         (coerce_template_parms): Don't mishandle overloaded functions when
5226         dealing with template template parameters.
5227         (lookup_template_class): Issue an error message, rather than
5228         crashing, when the TYPE_DECL provided is not a template type.
5229
5230 Wed Jan 28 23:14:44 1998  Jason Merrill  <jason@yorick.cygnus.com>
5231
5232         * class.c (instantiate_type): Don't just return a known type if
5233         it's wrong.
5234
5235 Wed Jan 28 11:04:07 1998  Mark Mitchell  <mmitchell@usa.net>
5236
5237         * class.c (instantiate_type): Remove handling of FUNCTION_DECL
5238         since that code could never be reached.
5239         
5240         * error.c (dump_decl): Avoid aborting in the midst of printing an
5241         error message about an illegal template declaration.
5242
5243         * parse.y (structsp): Print an error message, rather than crashing,
5244         when a class-head does not name a class.
5245
5246         * pt.c (convert_nontype_argument):  Allow REAL_TYPE and COMPLEX_TYPE
5247         template arguments as a g++ extension.
5248         
5249         * cp-tree.def (ALIGNOF_EXPR): New tree code.
5250         * decl2.c (grok_alignof): If processing_template_decl, just store
5251         the expression.
5252         * typeck.c (c_alignof): Likewise.
5253         * decl2.c (build_expr_from_tree): Handle ALIGNOF_EXPR.
5254         * error.c (dump_expr): Likewise.
5255         * pt.c (tsubst_copy): Likewise.
5256         * tree.c (cp_tree_equal): Likewise.
5257         * pt.c (uses_template_parms): Correctly determine whether or not a
5258         SIZEOF_EXPR/ALIGNOF_EXPR uses template parameters so that constant
5259         folding can be done.
5260         
5261         * cp-tree.h (grok_enum_decls): Remove type parameter.
5262         * decl.c (grok_enum_decls): Likewise.
5263         * decl2.c (grok_x_components): Call grok_enum_decls
5264         unconditionally, since it will do nothing if there is no
5265         current_local_enum.  Use the new calling sequence.
5266         * pt.c (tsubst_enum): Use the new calling sequence for
5267         grok_enum_decls.
5268
5269         * decl.c (start_function): Make member functions of local classes
5270         in extern inline functions have comdat linkage here...
5271         (grokdeclarator): Rather than here.
5272         
5273 Wed Jan 28 10:55:47 1998  Jason Merrill  <jason@yorick.cygnus.com>
5274
5275         * pt.c (convert_nontype_argument): Use decl_constant_value.
5276
5277 Tue Jan 27 16:42:21 1998  Mark Mitchell  <mmitchell@usa.net>
5278
5279         * call.c (add_template_candidate_real): New function.
5280         (add_template_candidate): Use it.
5281         (add_template_conv_candidate): Likewise.
5282         (joust): Pass extra argument to more_specialized.
5283         * class.c (instantiate_type): Handle a single FUNCTION_DECL.
5284         (is_local_class): Remove.
5285         (finish_struct): Check TI_PENDING_SPECIALIZATION_FLAG.
5286         * cp-tree.h (is_local_class): Remove.
5287         (perform_array_to_pointer_conversion): Likewise.
5288         (finish_member_template_decl): Add.
5289         (check_explicit_specialization): Return a tree, not an int.
5290         (more_specialized): Take additional argument.
5291         (get_bindings): Likewise.
5292         (TI_PENDING_SPECIALIZATION_FLAG): New macro.
5293         * cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.
5294         (perform_array_to_pointer_conversion): Remove.
5295         * decl.c (saved_scope): Add processing_specialization,
5296         processing_explicit_instantiation fields.
5297         (maybe_push_to_top_level): Save them.
5298         (pop_from_top_level): Restore them.
5299         (grokfndecl): Use new return value from
5300         check_explicit_specialization. 
5301         (start_decl): Don't check flag_guiding_decls before pushing
5302         decls. 
5303         (cp_finish_decl): Remove previous (bogus) change.
5304         (grok_declarator): Use decl_function_context rather than
5305         is_local_class. 
5306         * decl2.c (finish_file): Pass extra argument to get_bindings.
5307         (build_expr_from_tree): Let build_x_component_ref check 
5308         validity of arguments rather than doing it here.
5309         * lex.c (cons_up_default_function): Remove code fooling with
5310         processing_specialization, processing_explicit_instantiation
5311         flags, as that is now done in {maybe_push_top,pop_from}_top_level. 
5312         * method.c (build_overload_identifier): Mangle local classes in
5313         template functions correctly.
5314         * parse.y (finish_member_template_decl): Move to pt.c.
5315         * pt.c (finish_member_template_decl): Moved here from parse.y.
5316         (print_candidates): New function.
5317         (determine_specialization): Change interface.  Properly look for
5318         most specialized versions of template candidates.
5319         (check_explicit_specialization): Fully process explicit
5320         instantiations. 
5321         (push_template_decl): Avoid looking at CLASSTYPE fields in
5322         FUNCTION_DECLS. 
5323         (determine_overloaded_function): Remove.
5324         (convert_nontype_argument): Change name from
5325         convert_nontype_parameter.  Use determine_overloaded_function
5326         instead of instantiate_type.
5327         (mangle_class_name_for_template): Handle type contexts as well as
5328         function contexts.
5329         (classtype_mangled_name): Likewise.
5330         (lookup_template_class): Likewise.
5331         (tsubst): Likewise.
5332         (more_specialized): Take explict template arguments as a
5333         parameter. 
5334         (most_specialized): Likewise.
5335         (get_bindings): Likewise.  Check that return types match before
5336         proclaiming a function a match.
5337         (do_decl_instantiation): Remove code searching for function to
5338         instantiate; that is now done in check_explicit_specialization.
5339         (add_maybe_template): Pass extra argument to get_bindings.
5340         * tree.c (really_overloaded_fn): Use is_overloaded_fn to simplify
5341         implementation.
5342         * typeck.c (build_component_ref): Check for invalid arguments.
5343
5344 Tue Jan 27 01:44:02 1998  Jason Merrill  <jason@yorick.cygnus.com>
5345
5346         * expr.c (cplus_expand_expr, AGGR_INIT_EXPR): Don't check that 
5347         return_target and call_target are equivalent.
5348
5349         * pt.c (type_unification_real): Just accept function parms that
5350         don't use any template parms.
5351
5352 Sun Jan 25 03:30:00 1998  Jason Merrill  <jason@yorick.cygnus.com>
5353
5354         * decl.c (cp_finish_decl): When bailing on a comdat variable, also
5355         unset DECL_NOT_REALLY_EXTERN.
5356
5357         * parse.y (typename_sub*): Fix std::.
5358
5359 Sat Jan 24 12:13:54 1998  Jason Merrill  <jason@yorick.cygnus.com>
5360
5361         * error.c (dump_decl): Fix type default template args.
5362         (dump_type): Hand TEMPLATE_DECL off to dump_decl.
5363
5364 Fri Jan 23 18:34:37 1998  Mumit Khan <khan@xraylith.wisc.edu>
5365
5366         * lex.c (DIR_SEPARATOR): Define to be '/' if not already defined.
5367         (file_name_nondirectory): Use.
5368
5369 Wed Jan 21 10:29:57 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
5370
5371         * pt.c (coerce_template_parms): Don't access elements of ARGLIST
5372         that are not really present.  Substitute default arguments in 
5373         template template arguments.  Correctly convert TEMPLATE_DECL to 
5374         TEMPLATE_TEMPLATE_PARM.
5375         (comp_template_args): TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM 
5376         are no longer treated specially here.
5377         * parse.y (template_template_parm): Fix copy error.
5378         * decl.c (grokdeclarator): Warn about missing `typename' for nested
5379         type created from template template parameters.
5380         * parse.y (bad_parm): Likewise
5381
5382         * class.c (finish_struct): Handle TEMPLATE_TEMPLATE_PARM.
5383         (push_nested_class): Likewise.
5384         * cp-tree.def (TEMPLATE_TEMPLATE_PARM): New tree code.
5385         * cp-tree.h (DECL_TEMPLATE_TEMPLATE_PARM_P): New macro.
5386         (copy_template_template_parm): Declare.
5387         * decl.c (arg_looking_for_template): New variable.
5388         (lookup_name_real): Handle TEMPLATE_TEMPLATE_PARM.
5389         Try to return TEMPLATE_DECL or TEMPLATE_TEMPLATE_PARM
5390         node if arg_looking_for_template is nonzero.
5391         (pushdecl): Handle TEMPLATE_TEMPLATE_PARM.
5392         (grok_op_properties, xref_tag, xref_basetypes): Likewise.
5393         (grokdeclarator): Handle TEMPLATE_DECL.
5394         * decl2.c (constructor_name_full): Handle TEMPLATE_TEMPLATE_PARM.
5395         * error.c (dump_type): Add TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM.
5396         (dump_type_prefix, dump_type_suffix) Handle TEMPLATE_TEMPLATE_PARM.
5397         (dump_decl): Handle unnamed template type parameters.
5398         Handle template template parameters.
5399         (dump_function_name): Handle template template parameters.
5400         * init.c (is_aggr_typedef, is_aggr_type, get_aggr_from_typedef): 
5401         Handle TEMPLATE_TEMPLATE_PARM.
5402         * method.c (build_template_template_parm_names): New function.
5403         (build_template_parm_names): Handle TEMPLATE_DECL.
5404         (build_overload_nested_name, build_overload_name): 
5405         Handle TEMPLATE_TEMPLATE_PARM.
5406         * parse.y (maybe_identifier): New nonterminal.
5407         (template_type_parm): Use it.
5408         (template_template_parm, template_arg1): New nonterminal.
5409         (template_parm): Add template_template_parm rules.
5410         (template_arg): Set processing_template_arg.
5411         (template_arg1): Rules moved from template_arg.
5412         (primary, nonnested_type): Set arg_looking_for_template if we are
5413         processing template arguments.
5414         * pt.c (begin_member_template_processing): Handle TEMPLATE_DECL.
5415         (process_template_parm): Handle template template parameters.
5416         (coerce_template_parms, comp_template_args): Likewise.
5417         (mangle_class_name_for_template, lookup_template_class): Likewise.
5418         (uses_template_parms): Handle TEMPLATE_DECL and 
5419         TEMPLATE_TEMPLATE_PARM.
5420         (current_template_args): Handle TEMPLATE_DECL.
5421         (tsubst, tsubst_copy, unify): Handle TEMPLATE_TEMPLATE_PARM.
5422         * search.c (dfs_walk, dfs_record_inheritance): 
5423         Handle TEMPLATE_TEMPLATE_PARM.
5424         * tree.c (copy_template_template_parm): New function.
5425         (mapcar): Handle TEMPLATE_TEMPLATE_PARM.
5426         * typeck.c (comptypes): Handle TEMPLATE_TEMPLATE_PARM.
5427
5428 Mon Jan 19 22:40:03 1998  Mark Mitchell  <mmitchell@usa.net>
5429
5430         * decl.c (start_decl): Don't allow duplicate definitions of static
5431         data members.
5432
5433         * call.c (build_user_type_conversion_1): Handle user-defined
5434         template conversion operators correctly.
5435
5436         * decl2.c (build_expr_from_tree): Issue an error message if the
5437         object in a COMPONENT_REF is a TEMPLATE_DECL.
5438         
5439         * typeck.c (incomplete_type_error): Handle TEMPLATE_TYPE_PARMs.
5440         
5441         * class.c (is_local_class): New function.
5442         * cp-tree.h (is_local_class): Declare it.
5443         (last_tree): Likewise.
5444         (begin_tree): Likewise.
5445         (end_tree): Likewise.
5446         (lookup_template_class): Change prototype.
5447         * decl.c (cp_finish_decl): Check for NULL where necesary.
5448         Consider FUNCTION_DECLS to declare objects with top-level binding,
5449         when calling make_decl_rtl.
5450         (grokdeclarator): Give members of local classes internal linkage.
5451         (start_function): Remove declaration of last_tree.
5452         (finish_function): Set flag_keep_inline_functions around call to
5453         rest_of_compilation if we are processing a member function in a
5454         local class.
5455         (start_method): Call push_template_decl for member functions of
5456         local classes in template functions.
5457         * decl2.c (import_export_decl): Don't give external linkage to
5458         instantiations of templates with internal linkage.
5459         * parse.y (last_tree): Remove declaration.
5460         (template_type): Pass extra parameter to lookup_template_class.
5461         (self_template_type): Likewise.
5462         (structsp): Move call to reset_specialization into left_curly.
5463         (left_curly): Call reset_specialization, and begin_tree.
5464         * pt.c (saved_trees): New variable.
5465         (mangle_class_name_for_template): Change prototype.  Use
5466         additional function context to name local classes in templates
5467         correctly. 
5468         (classtype_mangled_name): Pass the context.
5469         (push_template_decl): Handle local classes and templates, and
5470         member functions for such classes.
5471         (convert_nontype_parameter): Fix handling of pointer-to-member
5472         constants. 
5473         (lookup_template_class): Handle local classes in templates.
5474         (tsubst): Likewise.  Don't assume that template instantiations
5475         have external linkage; pay attention to the template declaration. 
5476         (mark_decl_instantiated): Likewise.
5477         (begin_tree): New function.
5478         (end_tree): Likewise.
5479         
5480         * decl.c (xref_basetypes): Don't call complete_type for basetypes
5481         that involve template parameters; that can lead to infinite
5482         recursion unnecessarily.
5483
5484         * pt.c (register_specialization): Do not register specializations
5485         that aren't ready to be registered yet.
5486         (check_explicit_specialization): Handle explicit specialization of
5487         constructors and destructors.
5488         (build_template_decl): New function.
5489         (push_template_delc): Handle out-of-class specializations of
5490         member templates.
5491         
5492         * pt.c (check_explicit_specialization): Set up the template
5493         information before registering the specialization.
5494         (coerce_template_parms): Fix thinko.
5495         (tsubst): Handle specializations of member templates correctly.
5496
5497         * class.c (finish_struct_methods): Remove calls to
5498         check_explicit_specialization from here.
5499         (finish_struct): And insert them here.
5500         * cp-tree.h (perform_qualification_conversions): New function.
5501         (perform_array_to_pointer_conversion): Likewise.
5502         (begin_explicit_instantiation): Likewise.
5503         (end_explicit_instantiation): Likewise.
5504         (determine_specialization): Renamed from
5505         determine_explicit_specialization. 
5506         (comp_template_parms): New function.
5507         (processing_explicit_instantiation): New variable.
5508         * cvt.c (perform_qualification_conversions): New function.
5509         (perform_array_to_pointer_conversion): Likewise.
5510         * decl.c (duplicate_decls): Don't consider template functions
5511         alike unless they have the same parameters.  Refine handling of
5512         instantiation/specialization mismatches.
5513         (start_decl): Don't call pushdecl for template specializations,
5514         since they don't affect overloading.
5515         (start_function): Likewise
5516         (grokfndecl): Call check_explicit_specialization a little later.
5517         Don't call duplicate_decls for memberm template specializations.
5518         (grokdeclarator): Don't update template_count for classes that are
5519         themselves specializations.  Remove use of `2' as parameter to
5520         grokfndecl since that value isn't used.
5521         * lex.c (cons_up_default_function): Save and restore
5522         processing_explicit_instantiation around calls to grokfield.
5523         * parse.y (finish_member_template_decl): New function.
5524         (component_decl_1): Use it.
5525         (fn.def2): Likewise.
5526         (template_arg_list_opt): New nonterminal.       
5527         (template_type): Use it.
5528         (self_template_type): Likewise.
5529         (template_id): Likewise.
5530         (object_template_id): Likewise.
5531         (notype_template_declarator): Likwise.
5532         (begin_explicit_instantiation): Likewise.
5533         (end_explicit_instantiation): Likewise.
5534         (explicit_instantiation): Use them.
5535         * pt.c (coerce_template_parms): Add parameters.
5536         (processing_explicit_instantiation): New variable.
5537         (convert_nontype_parameter): New function.
5538         (determine_overloaded_function): Likewise.
5539         (begin_explicit_instantiation): Likewise.
5540         (end_explicit_instantiation): Likewise.
5541         (retrieve_specialization): Likewise.
5542         (register_specialization): Likewise.
5543         (processing_explicit_specialization): Removed.
5544         (determine_specialization): Handle specializations of member
5545         functions of template class instantiations.
5546         (check_explicit_specialization): Refine to conform to standard.
5547         (comp_template_parms): New function.
5548         (coerce_template_parms): Call convert_nontype_parameter.
5549         (tsubst): Refine handling of member templates.  Use
5550         register_specialization. 
5551         (instantiate_template): Use retrieve_specialization.
5552         (do_decl_instantiation): Likewise.
5553         (instantiate_decl): Likewise.
5554         (type_unification): Improve handling of explict template
5555         arguments. 
5556         * tree.c (mapcar): Return error_mark_node, rather than aborting,
5557         on VAR_DECLS, FUNCTION_DECLS, and CONST_DECLS.
5558         * typeck.c (build_unary_op): Call determine_specialization, rather
5559         than determine_explicit_specialization.
5560
5561 Mon Jan 19 13:18:51 1998  Jason Merrill  <jason@yorick.cygnus.com>
5562
5563         * cvt.c (build_up_reference): A TARGET_EXPR has side effects.
5564
5565 Fri Jan 16 11:40:50 1998  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
5566
5567         * error.c (dump_decl): For enum tags, output the tag, not its value.
5568
5569 1998-01-13  Brendan Kehoe  <brendan@cygnus.com>
5570
5571         * decl.c (init_decl_processing): Only call init_rtti_processing
5572         FLAG_RTTI is set.
5573
5574 Mon Jan 12 01:35:18 1998  Jason Merrill  <jason@yorick.cygnus.com>
5575
5576         * init.c (build_new_1): Split out from build_new.
5577         (build_new): Just return a NEW_EXPR.
5578         * expr.c (cplus_expand_expr): Handle NEW_EXPR.
5579
5580         * decl2.c (get_temp_regvar): Tweak.
5581
5582         * cp-tree.h (TREE_CALLS_NEW): Comment out.
5583         * class.c (resolves_to_fixed_type_p): Remove use.
5584         * method.c (build_opfncall): Likewise.
5585         * call.c (build_new_op): Likewise.
5586
5587 Wed Jan  7 23:47:13 1998  Jason Merrill  <jason@yorick.cygnus.com>
5588
5589         * exception.cc (__eh_alloc, __eh_free): New fns.
5590         (__cp_push_exception, __cp_pop_exception): Use them.
5591         (__uncatch_exception): Call terminate here if no exception.
5592         * except.c (build_terminate_handler): New fn.
5593         (expand_start_catch_block): Use it.
5594         (expand_exception_blocks): Likewise.
5595         (alloc_eh_object): New fn.
5596         (expand_throw): Use it.  Protect exception init with terminate.
5597         * typeck.c (build_modify_expr): Remove code that ignores trivial 
5598         methods.
5599
5600 Mon Dec 22 11:36:27 1997  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5601  
5602         * call.c (add_builtin_candidate): Add default case in enumeration
5603         switch.
5604         (build_new_op): Likewise.
5605         (convert_like): Likewise.
5606         * cvt.c (build_expr_type_conversion): Likewise.
5607         * tree.c (real_lvalue_p): Likewise.
5608         (lvalue_p): Likewise.
5609         (cp_tree_equal): Likewise.
5610         * typeck.c (comptypes): Likewise.
5611         (build_component_ref): Likewise.
5612         (build_function_call_real): Likewise.
5613         (build_binary_op_nodefault): Likewise.
5614         (build_unary_op): Likewise.
5615         (build_modify_expr): Likewise.
5616         * typeck2.c (initializer_constant_valid_p): Likewise.
5617
5618 Sun Dec 21 15:59:00 1997  Nick Clifton  <nickc@cygnus.com>
5619
5620         * decl2.c (lang_decode_option): Add support for -Wunknown-pragmas.
5621
5622 Thu Dec 18 14:51:50 1997  Mark Mitchell  <mmitchell@usa.net>
5623
5624         * pt.c (coerce_template_parms): Make sure to digest_init if
5625         possible.
5626
5627         * decl.c (duplicate_decls): Make the newdecl virtual if the
5628         olddecl was, just as is done with other attributes of olddecl.
5629
5630 Thu Dec 18 14:43:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
5631
5632         * typeck.c (unary_complex_lvalue): Ignore op0 when taking the 
5633         address of an OFFSET_REF.
5634
5635         * cp-tree.def: Add AGGR_INIT_EXPR.
5636         * error.c, tree.c, typeck.c: Replace uses of NEW_EXPR with
5637         AGGR_INIT_EXPR where appropriate.
5638         * expr.c (cplus_expand_expr): Likewise.  Simplify.
5639
5640         * decl2.c (finish_file): Remove call to register_exception_table.
5641
5642 Wed Dec 17 17:08:52 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
5643
5644         * pt.c (instantiate_class_template): Don't do injection when
5645         processing_template_decl is true, as pollutes current_binding_level 
5646         for base classes.
5647
5648 Wed Dec 17 21:17:39 1997  Peter Schmid <schmid@ltoi.iap.physik.tu-darmstadt.de>
5649
5650         * pt.c (maybe_fold_nontype_arg): Add prototype.
5651
5652 Tue Dec 16 10:31:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
5653
5654         * tree.c (mapcar): Handle TRY_CATCH_EXPR et al.
5655         * error.c (dump_expr): Likewise.
5656
5657 Mon Dec 15 12:22:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
5658
5659         * typeck.c (build_function_call_real): Remove "inline called before
5660         definition" pedwarn.
5661
5662         * pt.c (coerce_template_parms): Use maybe_fold_nontype_arg.
5663
5664 Sun Dec 14 22:34:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
5665
5666         * cvt.c (cp_convert_to_pointer): Fix base conversion of pm's.
5667
5668         * pt.c (type_unification_real): Change __null to type void* with 
5669         a warning.
5670
5671 Sun Dec 14 20:38:35 1997  Mark Mitchell  <mmitchell@usa.net>
5672
5673         * call.c (implicit_conversion): Don't call
5674         build_user_type_conversion_1 with a NULL expr, since it will
5675         crash. 
5676
5677         * pt.c (unify): Don't try to unify array bounds if either array is
5678         unbounded.
5679
5680 Fri Dec 12 16:09:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
5681
5682         * errfn.c (cp_pedwarn, cp_pedwarn_at, cp_error_at, cp_warning_at): 
5683         Replace extern decls with casts.
5684
5685         * decl.c (expand_start_early_try_stmts): Don't mess with a sequence.
5686         Update last_parm_cleanup_insn.
5687         (store_after_parms): Remove.
5688         * cp-tree.h: Adjust.
5689
5690 Thu Dec 11 22:18:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
5691
5692         * decl2.c (comdat_linkage): Also set DECL_COMDAT.
5693         (finish_file): Check DECL_COMDAT instead of weak|one_only.
5694         (import_export_vtable): Use make_decl_one_only instead of
5695         comdat_linkage for win32 tweak.
5696         (import_export_decl): Likewise.
5697         * pt.c (mark_decl_instantiated): Likewise.
5698
5699         * decl2.c (finish_file): Lose handling of templates in pending_statics.
5700
5701 Thu Dec 11 21:12:09 1997  Jason Merrill  <jason@yorick.cygnus.com>
5702
5703         * decl2.c (finish_file): Lose call to expand_builtin_throw.
5704         * except.c (expand_builtin_throw): Remove.
5705         * cp-tree.h: Remove ptr_ptr_type_node.
5706         * decl.c: Likewise.
5707
5708 Thu Dec 11 20:43:33 1997  Teemu Torma  <tot@trema.com>
5709         
5710         * decl.c (ptr_ptr_type_node): Define.
5711         (init_decl_processing): Initialize it.
5712         * cp-tree.h: Declare it.
5713         * exception.cc (__cp_exception_info): Use __get_eh_info.
5714         (__cp_push_exception): Ditto.
5715         (__cp_pop_exception): Ditto.
5716
5717         From Scott Snyder <snyder@d0sgif.fnal.gov>:
5718         * except.c (expand_builtin_throw): Use get_saved_pc_ref instead of
5719         saved_pc.
5720         (init_exception_processing): Removed saved_pc initialization.
5721
5722 Wed Dec 10 11:04:45 1997  Jason Merrill  <jason@yorick.cygnus.com>
5723
5724         * pt.c (instantiate_decl): Defer all templates but inline functions.
5725
5726 Mon Dec  8 23:17:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
5727
5728         * init.c (expand_vec_init): Don't fold a list of parameters.
5729
5730         * decl.c (copy_args_p): Handle copy elision for types with virtual
5731         bases.
5732         * call.c (build_over_call): Likewise.
5733
5734 Sun Dec  7 22:38:12 1997  Mark Mitchell  <mmitchell@usa.net>
5735
5736         * pt.c (lookup_template_function): Copy the template arguments,
5737         not just the list containing them, to the permanent obstack.
5738
5739 Sun Dec  7 15:53:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
5740
5741         * except.c (expand_start_catch_block): suspend_momentary for the
5742         terminate handler.
5743
5744         * error.c (dump_decl): Handle LOOKUP_EXPR.
5745
5746 Sun Dec  7 15:45:07 1997  Mark Mitchell  <mmitchell@usa.net>
5747
5748         * rtti.c (build_dynamic_cast): Copy the cast-to type to the
5749         permanent obstack if we are processing a template decl.
5750         * typeck.c (build_static_cast): Likewise.
5751         (build_const_cast): Likewise.
5752         (build_reinterpret_cast): Likewise.
5753
5754         * pt.c (coerce_template_parms): Coerce some expressions, even
5755         when processing_template_decl.
5756
5757 Sun Dec  7 01:46:33 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
5758
5759         * typeck.c (build_binary_op_nodefault, pointer_diff): Symmetric
5760         handling of pointer difference expressions.
5761
5762         * typeck.c (comp_target_types): Comparison of function/method types
5763         is independent of nptrs.
5764
5765 Sun Dec  7 01:40:27 1997  Mark Mitchell  <mmitchell@usa.net>
5766
5767         * pt.c (tsubst): Avoid creating pointer to reference and
5768         reference to reference types.
5769
5770 Sat Dec  6 01:29:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
5771
5772         * parse.y (do_id): New nonterminal.
5773         (template_id): Use it.
5774
5775 Fri Dec  5 01:17:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
5776
5777         * parse.y (template_id): do_identifier for PFUNCNAMEs, too.
5778         * spew.c (yylex): Don't do_identifier here.
5779         * decl2.c (build_expr_from_tree): Revert last change.
5780
5781         * decl2.c (build_expr_from_tree): Expand the name for a method call.
5782         * parse.y (object_template_id): Don't try to take the DECL_NAME.
5783
5784 Wed Dec  3 20:02:39 1997  Jason Merrill  <jason@yorick.cygnus.com>
5785
5786         * init.c (build_new): Use a TARGET_EXPR instead of SAVE_EXPR for
5787         alloc_expr.
5788         * call.c (build_op_delete_call): Adjust.
5789
5790         * except.c (expand_end_catch_block): Lose rethrow region.
5791         (expand_start_catch_block): Likewise.
5792         (expand_end_catch_block): Don't expand_leftover_cleanups.
5793
5794 Wed Dec  3 13:24:04 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
5795
5796         * pt.c (tsubst): Remove tree_cons call (places redundant info into
5797         DECL_TEMPLATE_INSTANTIATION).   
5798
5799 Wed Dec  3 11:44:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
5800
5801         * tree.c (is_overloaded_fn): Handle getting a fn template.
5802         (really_overloaded_fn): Likewise.
5803         * error.c (dump_decl): Handle TEMPLATE_ID_EXPRs better.
5804         * pt.c (check_explicit_specialization): Tweak.
5805         (determine_explicit_specialization): Tweak.
5806
5807         * tree.c, cp-tree.h (get_target_expr): New fn.
5808
5809 Wed Dec  3 08:47:27 1997  Paul Eggert  <eggert@twinsun.com>
5810
5811         * pt.c (check_explicit_specialization): Fix misspelling in
5812         diagnostic: `preceeded'.
5813         * typeck.c (get_delta_difference): Fix misspelling in diagnostic:
5814         `conversiona'.
5815
5816 1997-12-02  Mark Mitchell  <mmitchell@usa.net>
5817
5818         * pt.c (determine_explicit_specialization): Avoid an internal
5819         error for bad specializations.
5820
5821         * method.c (build_overload_value): Handle SCOPE_REF.
5822
5823 Tue Dec  2 19:18:50 1997  Mike Stump  <mrs@wrs.com>
5824
5825         * class.c (prepare_fresh_vtable): Enable even more complex MI
5826         vtable names.
5827
5828 Tue Dec  2 01:37:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
5829
5830         * exception.cc (__check_eh_spec): Optimize a bit.
5831
5832         * exception.cc (__cp_pop_exception): Lose handler arg.
5833         * except.c (do_pop_exception): Likewise.
5834         (push_eh_cleanup): Let the cleanup mechanism supply the handler.
5835         (expand_end_catch_block): Likewise.
5836
5837 Fri Nov 28 01:58:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
5838
5839         * pt.c (check_explicit_specialization): Complain about using a 
5840         template-id for a non-specialization.
5841
5842 Fri Nov 28 12:35:19 1997  Scott Christley  <scottc@net-community.com>
5843
5844         * repo.c: Prototype rindex only if needed.
5845         * xref.c: Likewise.
5846
5847 Fri Nov 28 01:56:35 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
5848
5849         * error.c (dump_decl): Handle TEMPLATE_ID_EXPR.
5850
5851 Thu Nov 27 00:59:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
5852
5853         * typeck.c (build_const_cast): Handle references here instead of
5854         handing off to convert_to_reference.
5855
5856         * except.c: Lose Unexpected, SetTerminate, SetUnexpected,
5857         TerminateFunctionCall.
5858         (init_exception_processing): Likewise.  Terminate et al are now
5859         the fns, not ADDR_EXPRs.
5860         (various): Lose redundant assemble_external calls.
5861         (do_unwind): s/BuiltinReturnAddress/builtin_return_address_fndecl/.
5862
5863         * cp-tree.h (struct lang_decl_flags): Add comdat.
5864         (DECL_COMDAT): New macro.
5865         * decl.c (duplicate_decls): Propagate it.
5866         (cp_finish_decl): Handle it.
5867         * decl2.c (import_export_decl): Just set DECL_COMDAT on VAR_DECLs.
5868
5869         * class.c: Remove static pending_hard_virtuals.
5870         (add_virtual_function): Take pointers to pending_virtuals
5871         and pending_hard_virtuals.
5872         (finish_struct_1): Pass them.  Declare pending_hard_virtuals.
5873
5874 Wed Nov 26 20:28:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
5875
5876         * decl2.c (import_export_vtable): If we support one_only but not
5877         weak symbols, mark instantiated template vtables one_only.
5878         (import_export_decl): Likewise for tinfo functions.
5879         (finish_vtable_vardecl): Also write out vtables from explicitly 
5880         instantiated template classes.
5881         * pt.c (mark_class_instantiated): Revert last change.
5882
5883         * except.c (expand_throw): Call mark_used on the destructor.
5884
5885 Wed Nov 26 15:13:48 1997  Jeffrey A Law  (law@cygnus.com)
5886
5887         * lex.c (lang_init): Enable flag_exceptions by default if no
5888         command line switch was specified.
5889
5890 1997-11-26  Mark Mitchell  <mmitchell@usa.net>
5891
5892         * pt.c (unify): Handle `void' template parameters in
5893         specializations.
5894
5895 Wed Nov 26 01:11:24 1997  Jason Merrill  <jason@yorick.cygnus.com>
5896
5897         * rtti.c (build_dynamic_cast): Handle template case here.
5898         (build_dynamic_cast_1): Not here.
5899
5900         * typeck2.c (digest_init): Make copies where appropriate.
5901
5902         * decl2.c (delete_sanity): resolve_offset_ref.
5903
5904         * except.c: Call terminate without caching so many bits.
5905
5906         * except.c (expand_start_catch_block): Fix catching a reference
5907         to pointer.
5908
5909 Tue Nov 25 11:28:21 1997  Jason Merrill  <jason@yorick.cygnus.com>
5910
5911         * init.c (build_new): Copy size to the saveable obstack.
5912
5913         * init.c (build_new): Stick a CLEANUP_POINT_EXPR inside the
5914         TRY_CATCH_EXPR for now.
5915
5916 Mon Nov 24 12:15:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
5917
5918         * typeck.c (mark_addressable): Don't assume a FUNCTION_DECL
5919         has DECL_LANG_SPECIFIC.
5920
5921         * exception.cc (struct cp_eh_info): Add handlers field.
5922         (__cp_push_exception): Initialize it.
5923         (__cp_pop_exception): Decrement it.  Don't pop unless it's 0.
5924         (__throw_bad_exception): Remove.
5925         * except.c (call_eh_info): Add handlers field.
5926         (get_eh_handlers): New fn.
5927         (push_eh_cleanup): Increment handlers.
5928
5929 Fri Nov 21 12:22:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
5930
5931         * except.c (expand_start_eh_spec): Use the try/catch code.
5932         (expand_end_eh_spec): Likewise.  Call __check_eh_spec instead of
5933         doing everything inline.
5934         (init_exception_processing): throw_type_match now takes
5935         const void pointers.
5936         * exception.cc (__check_eh_spec): New fn.
5937         * inc/exception: Neither terminate nor unexpected return.
5938         * decl.c: Make const_ptr_type_node public.
5939         * tinfo2.cc (__throw_type_match_rtti): Take the typeinfos constly.
5940
5941         * except.c (expand_start_catch_block): We only need the rethrow
5942         region for non-sjlj exceptions.
5943         (expand_end_catch_block): Likewise.  Use outer_context_label_stack.
5944
5945 Thu Nov 20 14:40:17 1997  Jason Merrill  <jason@yorick.cygnus.com>
5946
5947         * Make-lang.in (CXX_LIB2FUNCS): Add new op new and op delete objs.
5948         (various.o): Likewise.
5949         * inc/new: Add placement deletes.  Add throw specs for default new.
5950         * new.cc (set_new_handler): Move here from libgcc2.
5951         * new1.cc (new (nothrow)): Catch a bad_alloc thrown from the handler.
5952         (new): Move from libgcc2.  Throw bad_alloc.
5953         * new2.cc: Move the rest of the op news and op deletes from libgcc2.
5954         * decl.c (init_decl_processing): Update exception specs on new and
5955         delete.
5956
5957         * method.c (build_decl_overload_real): Don't mess with global 
5958         placement delete.
5959
5960         * init.c (build_new): Check for null throw spec, not nothrow_t.
5961
5962         * decl.c (duplicate_decls): Don't complain about different exceptions
5963         from an internal declaration.
5964
5965         * call.c (build_op_delete_call): Fix check for member fns again.
5966
5967         * decl2.c (import_export_decl): Interface hackery affects
5968         virtual synthesized methods.
5969
5970 Wed Nov 19 18:24:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
5971
5972         * decl.c (start_decl): Don't just complain about a mismatched 
5973         scope, fix it.
5974
5975         * decl.c (make_implicit_typename): Handle case where t is not
5976         actually from context.
5977         * tree.c (get_type_decl): Lose identifier case.
5978         * spew.c (yylex): Lose useless call to identifer_typedecl_value.
5979         * parse.y (nonnested_type): Just use lookup_name.
5980         (complex_type_name): Just use IDENTIFIER_GLOBAL_VALUE.
5981
5982 Wed Nov 19 11:45:07 1997  Michael Tiemann  <tiemann@axon.cygnus.com>
5983
5984         * error.c (dump_function_name): Test DECL_LANG_SPECIFIC in case
5985         T was built in C language context (for example, by
5986         output_func_start_profiler).
5987
5988 Wed Nov 19 10:39:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
5989
5990         * decl.c (make_implicit_typename): New fn.
5991         (lookup_name_real): Use it.  Use current_class_type as the context.
5992
5993 Mon Nov 17 23:42:03 1997  Bruno Haible <haible@ilog.fr>
5994
5995         * pt.c (do_poplevel): Don't prohibit jumps into this contour.
5996
5997 Mon Nov 17 02:01:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
5998
5999         * friend.c (do_friend): Warn about non-template friends in templates.
6000
6001         * call.c (build_op_delete_call): Fix handling of inherited delete.
6002
6003         * search.c (dfs_record_inheritance): Ignore template type parms.
6004
6005 Sat Nov 15 00:30:51 1997  Jason Merrill  <jason@yorick.cygnus.com>
6006
6007         * call.c (build_new_op): Fix copy error.
6008         (build_op_new_call): New fn.
6009         (build_op_delete_call): New fn.
6010         * cp-tree.h: Declare them.
6011         * init.c (build_new): Use them.  Support placement delete.
6012         (build_x_delete): Use build_op_delete_call.
6013         (build_delete): Likewise.
6014         * decl2.c (delete_sanity): Likewise.
6015         (coerce_delete_type): Don't complain about placement delete.
6016
6017 Thu Nov 13 01:52:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
6018
6019         * call.c (build_new_function_call): Remove unused 'obj' parm.
6020         * cp-tree.h, typeck.c: Adjust.
6021
6022         * init.c (build_new): Make the cleanup last longer.
6023         (expand_vec_init): Call do_pending_stack_adjust.
6024
6025 Wed Nov 12 11:04:33 1997  Jason Merrill  <jason@yorick.cygnus.com>
6026
6027         * pt.c (do_type_instantiation): Fix typo.
6028         (mark_class_instantiated): If we support one_only but not weak 
6029         symbols, don't mark this as known.
6030
6031         * init.c (build_new): Handle vec delete in EH cleanup.
6032
6033 Wed Nov 12 08:11:55 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
6034
6035         * call.c (build_method_call): Call complete_type before checking
6036         for destructor.
6037
6038 Sun Nov  9 01:29:55 1997  Jim Wilson  (wilson@cygnus.com)
6039
6040         * decl.c (add_block_current_level): Delete.
6041         * init.c (build_vec_delete_1): Delete build_block and
6042         add_block_current_level calls.
6043
6044 Wed Nov 12 00:48:16 1997  Jason Merrill  <jason@yorick.cygnus.com>
6045
6046         * init.c (build_new): Handle freeing allocated memory when the
6047         constructor throws.
6048
6049         * call.c (build_new_method_call): Fix flags arg.
6050
6051         * pt.c (do_type_instantiation): Don't try to instantiate
6052         member templates.
6053         (mark_decl_instantiated): If we support one_only but not
6054         weak symbols, mark this one_only.
6055         * decl2.c (import_export_vtable): Don't defer handling of vtables
6056         if MULTIPLE_SYMBOL_SPACES.
6057
6058 Tue Nov 11 12:02:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
6059
6060         * except.c (expand_end_catch_block): Lose call to __sjpopnthrow.
6061
6062 Tue Nov 11 02:53:44 1997  Jason Merrill  <jason@lasher.cygnus.com>
6063
6064         * except.c (do_pop_exception): Return a value.
6065
6066 Mon Nov 10 20:25:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
6067
6068         * call.c (build_new_method_call): Handle getting a
6069         TEMPLATE_ID_EXPR around a TEMPLATE_DECL.  Don't look for a field
6070         if we got template parms.
6071         * typeck.c (build_x_function_call): Remember the TEMPLATE_ID_EXPR,
6072         not just the args.
6073         * decl2.c (build_expr_from_tree): Tweak last change.
6074         * pt.c (tsubst_copy): Use get_first_fn instead of TREE_VALUE.
6075         (maybe_fold_nontype_arg): Split out from tsubst_copy.
6076         * tree.c (get_first_fn): Just return a TEMPLATE_ID_EXPR.
6077
6078 Mon Nov 10 20:08:38 1997  Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
6079
6080         * pt.c (tsubst_copy): Handle explicit template arguments in 
6081         function calls.
6082         * typeck.c (build_x_function_call): Likewise.
6083         * decl2.c (build_expr_from_tree): Lookup function name if it 
6084         hasn't been done.
6085
6086         * pt.c (tsubst): Instantiate template functions properly when 
6087         template parameter does not appear in function arguments and return 
6088         type.
6089         (comp_template_args): Handle member templates required by tsubst.
6090
6091 Mon Nov 10 20:08:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
6092
6093         * decl.c (grokdeclarator): Tweak conditions for pedwarn in
6094         previous change.
6095
6096 Mon Nov 10 20:08:29 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
6097
6098         * pt.c (coerce_template_parms): Tweak error message.
6099
6100         * decl.c (grokdeclarator): If -Wreturn-type, warn everytime a
6101         return type defaults to `int', even if there are storage-class
6102         specifiers.
6103
6104 Mon Nov 10 03:04:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
6105
6106         Complete nested exception support.
6107         * except.c (do_pop_exception): Split out...
6108         (push_eh_cleanup): From here.  Handle the EH region by hand.
6109         (expand_start_catch_block): Add a new level for the catch parm.
6110         Move the rethrow region outside the two cleanup regions.
6111         Protect the initializer for the catch parm with terminate.
6112         (expand_end_catch_block): Likewise.  End the region for the eh_cleanup.
6113         * exception.cc (__cp_pop_exception): Now takes two parms.  Handle
6114         popping off the middle of the stack.
6115         * tree.c (lvalue_p, real_lvalue_p): Handle TRY_CATCH_EXPR, 
6116         WITH_CLEANUP_EXPR, and UNSAVE_EXPR.
6117         (build_cplus_new): Only wrap CALL_EXPRs.
6118         * init.c (expand_default_init): Handle a TRY_CATCH_EXPR around 
6119         the constructor call.
6120
6121 Sun Nov  9 18:00:26 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
6122
6123         * Make-lang.in (c++.distdir): Make inc subdirectory.
6124
6125 Fri Nov  7 11:57:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
6126
6127         * decl2.c (finish_file): Put back some code.
6128
6129 Thu Nov  6 11:28:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
6130
6131         * decl2.c (finish_file): Remove redundant code.
6132         * method.c (emit_thunk): Don't let the backend defer generic thunks.
6133
6134 Wed Nov  5 23:52:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
6135
6136         * except.c (call_eh_info): Split out...
6137         (push_eh_info): From here.
6138         (expand_builtin_throw): Use it.
6139         (expand_start_catch_block): Move region start back.
6140
6141 Tue Nov  4 13:45:10 1997  Doug Evans  <devans@canuck.cygnus.com>
6142
6143         * lex.c (MULTIBYTE_CHARS): #undef if cross compiling.
6144         (real_yylex): Record wide strings using target endianness, not host.
6145
6146 1997-11-03  Brendan Kehoe  <brendan@lisa.cygnus.com>
6147
6148         * repo.c (rindex): Add decl unconditionally.
6149         (get_base_filename, open_repo_file): Don't cast rindex.
6150         * xref.c (rindex): Add decl unconditionally.
6151         (index): Remove unused decl.
6152         (open_xref_file): Don't cast rindex.
6153
6154 Sun Nov  2 15:04:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
6155
6156         * class.c (build_vbase_path): Propagate the result type properly.
6157
6158 1997-11-01  Brendan Kehoe  <brendan@lisa.cygnus.com>
6159
6160         * except.c (expand_builtin_throw) [!DWARF2_UNWIND_INFO]: Replace
6161         remaining use of saved_throw_type with a call to get_eh_type.
6162
6163 1997-10-31  Brendan Kehoe  <brendan@lisa.cygnus.com>
6164
6165         * lex.c (FILE_NAME_NONDIRECTORY): Delete macro.
6166         (file_name_nondirectory): New function, doing the same as the macro.
6167         (set_typedecl_interface_info): Use it instead of the macro.
6168         (check_newline): Likewise.
6169         (handle_cp_pragma): Likewise.
6170
6171         * repo.c (get_base_filename): Cast result of rindex to char*.
6172         (open_repo_file): Likewise.
6173         * xref.c (open_xref_file): Likewise.
6174         * error.c (dump_char): Make its arg int, not char.
6175
6176         * except.c (push_eh_info): Pass the number of fields - 1 down, not
6177         the exact number of fields.
6178
6179 Fri Oct 31 01:47:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
6180
6181         Support for nested exceptions.
6182         * tinfo2.cc (__is_pointer): New fn.
6183         * exception.cc (struct cp_eh_info): Define.
6184         (__cp_exception_info, __uncatch_exception): New fns.
6185         (__cp_push_exception, __cp_pop_exception): New fns.
6186         * except.c: Lose saved_throw_{type,value,cleanup,in_catch}.
6187         Lose empty_fndecl.
6188         (init_exception_processing): Likewise.  __eh_pc is now external.
6189         (push_eh_info): New fn.
6190         (get_eh_{info,value,type,caught}): New fns.
6191         (push_eh_cleanup): Just call __cp_pop_exception.
6192         (expand_start_catch_block): Use push_eh_info.  Start the eh region
6193         sooner.
6194         (expand_end_eh_spec): Use push_eh_info.
6195         (expand_throw): Call __cp_push_exception to set up the exception info.
6196         Just pass the destructor or 0 as the cleanup.  Call __uncatch_exception
6197         when we rethrow.
6198         (expand_builtin_throw): Don't refer to empty_fndecl.
6199
6200 Thu Oct 23 02:01:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
6201
6202         * pt.c (instantiate_decl): SET_DECL_IMPLICIT_INSTANTIATION on new decl.
6203
6204 1997-10-22  Brendan Kehoe  <brendan@cygnus.com>
6205
6206         * method.c (build_template_parm_names, build_decl_overload_real):
6207         Add static to definitions.
6208         * pt.c (add_to_template_args, note_template_header,
6209         processing_explicit_specialization, type_unification_real): Likewise.
6210         ({determine,check}_explicit_specialization): Use a single string for
6211         error messages.
6212
6213 Mon Oct 20 12:06:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
6214
6215         * except.c (expand_exception_blocks): Call do_pending_stack_adust.
6216         (expand_end_catch_block): Likewise.
6217         (expand_end_eh_spec): Likewise.
6218
6219 Mon Oct 20 11:44:20 1997  Mark Mitchell  <mmitchell@usa.net>
6220
6221         * decl.c (duplicate_decls): Handle template specializations
6222         correctly. 
6223         * error.c (dump_function_name): Fix printing of specializations of
6224         member functions that are not member templates.
6225         * cp-tree.h (processing_specialization): Make global.
6226         * pt.c (processing_specialization): Likewise.
6227         * lex.c (cons_up_default_function): Save and restore
6228         processing_specialization to avoid confusion.
6229         
6230 Mon Oct 20 10:52:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
6231
6232         * decl.c (init_decl_processing): Give null_node unknown* type.
6233         * typeck.c (comp_target_types): Handle UNKNOWN_TYPE.
6234         (common_type): Likewise.
6235         * error.c (args_as_string): Recognize null_node.
6236
6237 Sun Oct 19 09:13:01 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
6238
6239         * typeck.c (rationalize_conditional_expr): Handle {MIN,MAX}_EXPR.
6240         (unary_complex_lvalue): Call it for {MIN,MAX}_EXPR.
6241
6242         * decl.c (init_decl_processing): Call using_eh_for_cleanups.
6243
6244         * Make-lang.in (g++): Include prefix.o.
6245
6246 Thu Oct 16 15:31:09 1997  Judy Goldberg <judygold@sanwafp.com>
6247
6248         * pt.c (determine_explicit_specialization): Initialize "dummy"
6249         to keep Purify quiet.
6250
6251 Thu Oct 16 00:14:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
6252
6253         * method.c (build_overload_value): Handle TEMPLATE_CONST_PARMs here.
6254         (build_overload_int): Not here.
6255
6256 Wed Oct 15 00:35:28 1997  Mike Stump  <mrs@wrs.com>
6257
6258         * class.c (build_type_pathname): Remove.
6259         (prepare_fresh_vtable): Fix problem with complex MI vtable names.
6260
6261 1997-10-14  Brendan Kehoe  <brendan@lisa.cygnus.com>
6262
6263         * parse.y (unary_expr): Give a pedwarn if someone tries to use the
6264         &&label GNU extension.
6265
6266 Tue Oct 14 12:01:00 1997  Mark Mitchell  <mmitchell@usa.net>
6267
6268         * decl.c (pushtag): Unset DECL_ASSEMBLER_NAME before setting it,
6269         so as to avoid incorrect manglings.
6270         * method.c (build_decl_overload_real): Don't mangle return types
6271         for constructors.
6272         
6273 Tue Oct 14 11:46:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
6274
6275         * cp-tree.h (scratchalloc, build_scratch_list, make_scratch_vec,
6276         scratch_tree_cons): Define as macros for now.
6277         * call.c, class.c, cvt.c, decl.c, decl2.c, except.c, expr.c, init.c, 
6278         lex.c, method.c, parse.y, pt.c, rtti.c, search.c, tree.c, typeck.c,
6279         typeck2.c: Use them and the expression_obstack variants.
6280
6281 Mon Oct 13 17:41:26 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
6282
6283         * decl.c (store_return_init): Allow classes with explicit ctors to
6284         be used with the named return values extension.
6285
6286 Fri Oct 10 12:21:11 1997  Jason Merrill  <jason@yorick.cygnus.com>
6287
6288         * pt.c (instantiate_decl): Fix previous change.
6289
6290 Thu Oct  9 12:08:21 1997  Jason Merrill  <jason@yorick.cygnus.com>
6291
6292         * pt.c (tsubst): Fix thinko.
6293         (instantiate_decl): Really use the original template.
6294
6295         * call.c (build_new_method_call): Use simple constructor_name for
6296         error messages.
6297
6298 Wed Oct  8 22:44:42 1997  Jeffrey A Law  (law@cygnus.com)
6299
6300         * method.c (build_underscore_int): Don't use ANSI specific
6301         features.
6302
6303 Wed Oct  8 00:18:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
6304
6305         * decl2.c (finish_prevtable_vardecl): Check DECL_REALLY_EXTERN
6306         for our key method; it might have been inlined by -O3.
6307
6308 Tue Oct  7 23:00:12 1997  Mark Mitchell  <mmitchell@usa.net>
6309
6310         * decl.c (make_typename_type): Do not try to call lookup_field for
6311         non-aggregate types.
6312
6313 Tue Oct  7 22:52:10 1997  Jason Merrill  <jason@yorick.cygnus.com>
6314
6315         * typeck.c (build_reinterpret_cast): Tweak.
6316
6317 Tue Oct  7 22:45:31 1997  Alexandre Oliva  <oliva@dcc.unicamp.br>
6318
6319         * typeck.c (build_reinterpret_cast): converting a void pointer
6320         to function pointer with a reinterpret_cast produces a warning
6321         if -pedantic is issued
6322
6323 Tue Oct  7 22:43:43 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
6324
6325         * typeck.c (c_expand_return): Don't warn about returning a
6326         reference-type variable as a reference.
6327
6328 Tue Oct  7 21:11:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
6329
6330         * method.c (build_static_name): Fix typo.
6331
6332 1997-10-07  Brendan Kehoe  <brendan@lisa.cygnus.com>
6333
6334         * decl.c (duplicate_decls): Make sure DECL_LANG_SPECIFIC is set on
6335         OLDDECL before we try to do DECL_USE_TEMPLATE.
6336
6337 Tue Oct  7 00:48:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
6338
6339         * decl.c (duplicate_decls): Don't warn about template instances.
6340
6341         * typeck.c (mark_addressable): Lose ancient code that unsets
6342         DECL_EXTERNAL.
6343
6344         * pt.c (do_decl_instantiation): Lose support for instantiating
6345         non-templates.
6346
6347         * call.c (build_new_function_call): Fix handling of null explicit
6348         template args.
6349         (build_new_method_call): Likewise.
6350
6351 Mon Oct  6 23:44:34 1997  Mark Mitchell  <mmitchell@usa.net>
6352
6353         * method.c (build_underscore_int): Fix typo.
6354
6355 1997-10-06  Brendan Kehoe  <brendan@lisa.cygnus.com>
6356
6357         * tree.c (print_lang_statistics): #if 0 call to
6358         print_inline_obstack_statistics until its definition is checked in.
6359
6360 Mon Oct  6 09:27:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
6361
6362         * decl2.c (finish_file): Move dump_tree_statistics to end.
6363
6364         * pt.c (instantiate_decl): Look for the original template.
6365         (tsubst): Set DECL_IMPLICIT_INSTANTIATION on partial instantiations
6366         of member templates.
6367
6368 Wed Oct  1 08:41:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
6369
6370         * Makefile.in (g++FAQ.*): New rules.
6371         (CONFLICTS): Update.
6372         * g++FAQ.texi: Moved from libg++.
6373
6374         * parse.y (PFUNCNAME): Only specify the type once.
6375
6376 1997-10-01  Brendan Kehoe  <brendan@lasher.cygnus.com>
6377
6378         * lex.c (real_yylex): Clean up the code to fully behave the way
6379         the c-lex.c parser does for complex and real numbers.
6380
6381 Tue Sep 30 08:51:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
6382
6383         * method.c (build_decl_overload_real): Reformat.
6384
6385 Tue Sep 30 00:18:26 1997  Jason Merrill  <jason@yorick.cygnus.com>
6386
6387         * method.c (synthesize_method): If at_eof, determine our linkage.
6388
6389 1997-09-29  Paul Eggert  <eggert@twinsun.com>
6390
6391         * lex.c (real_yylex): Treat `$' just like `_', except issue a
6392         diagnostic if !dollars_in_ident or if pedantic.
6393
6394         * lang-specs.h (@c++): -ansi no longer implies -$.
6395
6396         * decl2.c (lang_decode_option):
6397         -traditional and -ansi now do not mess with
6398         dollars_in_ident.
6399
6400 Mon Sep 29 19:57:51 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
6401
6402         * Makefile.in (parse.o, decl.o): Also depend on
6403         $(srcdir)/../except.h $(srcdir)/../output.h.
6404         (decl2.o): Also depend on $(srcdir)/../expr.h ../insn-codes.h
6405         $(srcdir)/../except.h $(srcdir)/../output.h.
6406         (typeck.o, init.o): Also depend on $(srcdir)/../expr.h
6407         ../insn-codes.h.
6408
6409         * call.c, cp-tree.h, decl.c, tree.c: Finish prototyping.
6410
6411         * expr.c (cplus_expand_expr): Make it static. 
6412
6413         * decl2.c, init.c, typeck.c: Include "expr.h".
6414         (expand_expr): Use proper values when calling the function.
6415
6416 Mon Sep 29 11:05:54 1997  Alexandre Oliva  <oliva@dcc.unicamp.br>
6417
6418         * lang-options.h: new -Wold-style-cast flag.
6419         * cp-tree.h (warn_old_style_cast): new variable.
6420         * decl2.c (warn_old_style_cast): ditto.
6421         (lang_decode_option): support -Wold-style-cast.
6422         (reparse_absdcl_as_casts): produce old-style-cast warning.
6423
6424 Mon Sep 29 09:20:53 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
6425
6426         * decl.c (cp_finish_decl): Allow expand_aggr_init to set
6427         TREE_USED, reset value based on already_used.
6428
6429         * init.c (expand_member_init): Revert change.
6430         
6431 Mon Sep 29 08:57:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
6432
6433         * cp-tree.h, decl.c, decl2.c, pt.c:
6434         Lose DECL_C_STATIC and DECL_PUBLIC.  Don't pretend statics are public.
6435
6436         * decl2.c (lang_decode_option): Add missing ;.
6437
6438 Sat Sep 27 16:22:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
6439
6440         * friend.c (do_friend): Disable injection for all template-derived
6441         decls.
6442         * decl2.c (lang_decode_option): Handle -fguiding-decls.
6443         * parse.y (notype_template_declarator): New nonterminal.
6444         (direct_notype_declarator): Use it.
6445         (complex_direct_notype_declarator): Likewise.
6446         (object_template_id): Accept any kind of identifier after TEMPLATE.
6447         (notype_qualified_id): Don't add template declarators here.
6448
6449 Sat Sep 27 16:21:58 1997  Mark Mitchell  <mmitchell@usa.net>
6450
6451         * call.c (add_template_candidate): Add explicit_targs parameter.
6452         (build_scoped_method_call): Use it.
6453         (build_overload_call_real): Likewise.
6454         (build_user_type_conversion_1): Likewise.
6455         (build_new_function_call): Likewise.
6456         (build_object_call): Likewise.
6457         (build_new_op): Likewise.
6458         (build_new_method_call): Likewise.
6459         (build_new_function_call): Handle TEMPLATE_ID_EXPR.
6460         (build_new_method_call): Likewise.
6461
6462         * class.c (finish_struct_methods): Add specialization pass to
6463         determine which methods were specializing which other methods.
6464         (instantiate_type): Handle TEMPLATE_ID_EXPR.
6465
6466         * cp-tree.def (TEMPLATE_ID_EXPR): New tree code.
6467
6468         * cp-tree.h (name_mangling_version): New variable.
6469         (flag_guiding_decls): Likewise.
6470         (build_template_decl_overload): New function.
6471         (begin_specialization): Likewise.
6472         (reset_specialization): Likewise.
6473         (end_specialization): Likewise.
6474         (determine_explicit_specialization): Likewise.
6475         (check_explicit_specialization): Likewise.
6476         (lookup_template_function): Likewise.
6477         (fn_type_unification): Add explicit_targs parameter.
6478         (type_unification): Likewise.
6479
6480         * decl.c (duplicate_decls): Add smarts for explicit
6481         specializations.
6482         (grokdeclarator): Handle TEMPLATE_ID_EXPR, and function
6483         specializations.
6484         (grokfndecl): Call check_explicit_specialization.
6485
6486         * decl2.c (lang_decode_option): Handle -fname-mangling-version.
6487         (build_expr_from_tree): Handle TEMPLATE_ID_EXPR.
6488         (check_classfn): Handle specializations.
6489
6490         * error.c (dump_function_name): Print specialization arguments.
6491
6492         * friend.c (do_friend): Don't call pushdecl for template 
6493         instantiations. 
6494
6495         * init.c (build_member_call): Handle TEMPLATE_ID_EXPR.
6496
6497         * lang-options.h: Add -fname-mangling-version, -fguiding-decls, 
6498         and -fno-guiding-decls.
6499
6500         * lex.c (identifier_type): Return PFUNCNAME for template function
6501         names.
6502
6503         * method.c (build_decl_overload_real): New function.
6504         (build_template_parm_names): New function.
6505         (build_overload_identifier): Use it.
6506         (build_underscore_int): New function.
6507         (build_overload_int): Use it.  Add levels for template
6508         parameters.
6509         (build_overload_name): Likewise.  Also, handle TYPENAME_TYPEs.
6510         (build_overload_nested_names): Handle template type parameters.
6511         (build_template_decl_overload): New function.
6512
6513         * parse.y (YYSTYPE): New ntype member.
6514         (nested_name_specifier): Use it.
6515         (nested_name_specifier_1): Likewise.
6516         (PFUNCNAME): New token.
6517         (template_id, object_template_id): New non-terminals.
6518         (template_parm_list): Note specializations.
6519         (template_def): Likewise.
6520         (structsp): Likewise.
6521         (fn.def2): Handle member template specializations.
6522         (component_decl_1): Likewise.
6523         (direct_notype_declarator): Handle template-ids.
6524         (component_decl_1): Likewise.
6525         (direct_notype_declarator): Handle template-ids.
6526         (primary): Handle TEMPLATE_ID_EXPR, and template-ids.
6527
6528         * pt.c (processing_specializations): New variable.
6529         (template_header_count): Likewise.
6530         (type_unification_real): New function.
6531         (processing_explicit_specialization): Likewise.
6532         (note_template_header): Likewise.
6533         (is_member_template): Handle specializations.
6534         (end_template_decl): Call reset_specialization.
6535         (push_template_decl): Handle member template specializations.
6536         (tsubst): Likewise.
6537         (tsubst_copy): Handle TEMPLATE_ID_EXPR.
6538         (instantiate_template): Handle specializations.
6539         (instantiate_decl): Likewise.
6540         (fn_type_unification): Handle explicit_targs.
6541         (type_unification): Likewise.  Allow incomplete unification
6542         without an error message, if allow_incomplete.
6543         (get_bindings): Use new calling sequence for fn_type_unification.
6544
6545         * spew.c (yylex): Handle PFUNCNAME.
6546
6547         * tree.c (is_overloaded_fn): Handle TEMPLATE_ID_EXPR.
6548         (really_overloaded_fn): Likewise.
6549         (get_first_fn): Handle function templates.
6550
6551         * typeck.c (build_x_function_call): Use really_overloaded_fn.
6552         Handle TEMPLATE_ID_EXPR.
6553         (build_x_unary_op): Likewise.
6554         (build_unary_op): Likewise.
6555         (mark_addressable): Templates whose address is taken are marked  
6556         as used. 
6557
6558 1997-09-25  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
6559
6560         * decl.c (init_decl_processing): Declare __builtin_constant_p as
6561         accepting any kind of type, not only int.
6562
6563 Fri Sep 26 00:22:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
6564
6565         * search.c (get_matching_virtual): Notice virtual bases when sorrying
6566         about covariant returns.
6567
6568         * parse.y (member_init): Also imply typename here.  Remove ancient
6569         extension for initializing base members.
6570
6571 Thu Sep 25 11:11:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
6572
6573         Handle multi-level typenames and implicit typename in base list.
6574         * parse.y (typename_sub{,[0-2]}): New rules.
6575         (structsp, rule TYPENAME_KEYWORD): Use typename_sub.
6576         (nonnested_type): New rule.
6577         (complete_type_name): Use it.
6578         (base_class.1): Use typename_sub and nonnested_type.
6579         (nested_name_specifier): Don't elide std:: here.
6580         * decl.c (make_typename_type): Handle getting a type for NAME.
6581         (lookup_name_real): Turn std:: into :: here.
6582
6583         Rvalue conversions were removed in London.
6584         * call.c (is_subseq): Don't consider lvalue transformations.
6585         (build_conv): LVALUE_CONV and RVALUE_CONV get IDENTITY_RANK.
6586         (joust): Reenable ?: kludge.
6587
6588 1997-09-22  Brendan Kehoe  <brendan@lisa.cygnus.com>
6589
6590         * decl.c (start_function): Up warning of no return type to be a
6591         pedwarn.
6592
6593 Mon Sep 22 14:15:34 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
6594
6595         * init.c (expand_member_init): Don't set TREE_USED.
6596         * decl.c (cp_finish_decl): Mark decls used if type has TREE_USED
6597         set,don't clear TREE_USED wholesale.
6598
6599 Sat Sep 20 15:31:00 1997  Jason Merrill  <jason@yorick.cygnus.com>
6600
6601         * call.c (build_over_call): Do require_complete_type before
6602         build_cplus_new.
6603
6604 Thu Sep 18 16:47:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
6605
6606         * search.c (lookup_field): Call complete_type in all cases.
6607
6608         * decl.c (finish_function): Just warn about flowing off the end.
6609
6610 Wed Sep 17 10:31:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
6611
6612         * decl.c (grokparms): Don't bash a permanent list node if we're
6613         in a function.
6614
6615 1997-09-17  Brendan Kehoe  <brendan@lisa.cygnus.com>
6616
6617         * Makefile.in (CONFLICTS): Fix s/r conflict count to 18.
6618
6619 Tue Sep 16 14:06:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
6620
6621         * call.c (build_new_op): Give better error for syntactically
6622         correct, but semantically invalid, use of undeclared template.
6623
6624         * call.c (compare_qual): Handle pmfs.
6625
6626         * decl.c (store_parm_decls): last_parm_cleanup_insn is the insn
6627         after the exception spec.
6628
6629 Mon Sep 15 11:52:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
6630
6631         * call.c (null_ptr_cst_p): Integer type, not integral type.
6632
6633         * call.c (joust): Disable warnings until they can be moved to the
6634         right place.
6635
6636 Fri Sep 12 16:11:13 1997  Per Bothner  <bothner@cygnus.com>
6637
6638         * Makefile.in, config-lang.in:  Convert to autoconf.
6639
6640 Thu Sep 11 17:14:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
6641
6642         * decl.c (lookup_name_real): Add implicit 'typename' to types from
6643         base classes.
6644
6645         * pt.c (most_specialized_class): Fix typo.
6646         (tsubst): Move constant folding to TREE_VEC case.
6647
6648 Thu Sep 11 10:08:45 1997  Mark Mitchell  <mmitchell@usa.net>
6649
6650         * pt.c (do_poplevel): Don't warn about unused local variables
6651         while processing_template_decl since we don't always know whether
6652         or not they will need constructing/destructing.
6653
6654         * pt.c (uses_template_parms): Check the values of an enumeration
6655         type to make sure they don't depend on template parms.
6656
6657         * decl.c (make_typename_type): Don't lookup the field if the
6658         context uses template parms, even if we're not
6659         processing_template_decl at the moment.
6660
6661         * pt.c (coerce_template_parms): Avoid looking at the
6662         TYPE_LANG_DECL portion of a typename type, since there won't be
6663         one. 
6664         (tsubst): Do constant folding as necessary to make sure that
6665         arguments passed to lookup_template_class really are constants. 
6666
6667 Wed Sep 10 11:21:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
6668
6669         * except.c (expand_builtin_throw): #ifndef DWARF2_UNWIND_INFO.
6670         * decl2.c (finish_file): Only register exception tables if we
6671         need to.
6672
6673         * decl.c (init_decl_processing): Add __builtin_[fs]p.
6674
6675 Tue Sep  9 19:49:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
6676
6677         * pt.c (unify): Just return 0 for a TYPENAME_TYPE.
6678
6679 Tue Sep  9 17:57:25 1997  Mark Mitchell  <mmitchell@usa.net>
6680
6681         * error.c (dump_decl): Avoid crashing when presented with a
6682         uninitialized constant, as can occur with a template parameter.
6683         (dump_expr): Make sure that there are enough levels of
6684         current_template_parms before we start diving through them.
6685
6686 1997-09-09  Brendan Kehoe  <brendan@lisa.cygnus.com>
6687
6688         * typeck.c (build_indirect_ref): Heed FLAG_VOLATILE similar to
6689         c-typeck.c.
6690
6691 Tue Sep  9 09:36:39 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
6692
6693         * except.c (expand_throw): Call build_delete for all 
6694         exception types, not just objects with destructors.
6695
6696 Mon Sep  8 02:33:20 1997  Jody Goldberg  <jodyg@idt.net>
6697
6698         * decl.c (current_local_enum): Remove static.
6699         * pt.c (tsubst_enum): Save and restore value of current_local_enum
6700         in case template is expanded in enum decl.
6701         (instantiate_class_template) : Use new tsubst_enum signature.
6702         (tsubst_expr): Likewise.
6703
6704 Mon Sep  8 01:21:43 1997  Mark Mitchell  <mmitchell@usa.net>
6705
6706         * pt.c (begin_member_template_processing): Take a function as
6707         argument, not a set of template arguments.  Use the template
6708         parameters, rather than the arguments.  Handle non-type parameters
6709         correctly.  Push a binding level for the parameters so that multiple
6710         member templates using the same parameter names can be declared.
6711         (end_member_template_processing): Pop the binding level.
6712         (push_template_decl): Mark member templates as static when
6713         appropriate. 
6714
6715         * lex.c (do_pending_inlines): Pass the function, not its template
6716         arguments, to begin_member_template_processing.
6717         (process_next_inline): Likewise.
6718         (do_pending_defargs): Likewise.
6719
6720         * error.c (dump_expr): Obtain the correct declaration for a
6721         TEMPLATE_CONST_PARM. 
6722
6723         * call.c (add_template_conv_candidate): New function.
6724         (build_object_call): Handle member templates, as done in the other
6725         build_ functions.
6726         
6727 Sat Sep  6 10:20:27 1997  Mark Mitchell  <mmitchell@usa.net>
6728
6729         * decl.c (replace_defag): Undo previous change.
6730         * lex.c (do_pending_defargs): Deal with member templates.
6731         
6732         * pt.c (is_member_template): Avoid crashing when passed a
6733         non-function argument.
6734
6735 Fri Sep  5 17:27:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
6736
6737         * class.c (grow_method): Remove check for redeclaration.
6738
6739 Fri Sep  5 01:37:17 1997  Mark Mitchell  <mmitchell@usa.net>
6740
6741         * cp-tree.h (INNERMOST_TEMPLATE_PARMS): New macro.
6742         (DECL_INNERMOST_TEMPLATE_PARMS): Likewise.
6743         (PRIMARY_TEMPLATE_P): Use it.
6744         * call.c (build_overload_call_real): Use it.
6745         * class.c (instantiate_type): Likewise.
6746         * decl.c (decls_match): Likewise.
6747         * method.c (build_overload_identifier): Likewise.
6748         * pt.c (push_template_decl): Likewise.
6749         (classtype_mangled_name): Likewise.
6750         (lookup_template_class): Likewise.
6751         
6752         * cp-tree.h (DECL_NTPARMS): Change name from DECL_NT_PARMS to
6753         DECL_NTPARMS to conform to usage elsewhere.
6754         * call.c (add_template_candidate): Likewise.
6755         * class.c (instantiate_type): Likewise.
6756         * pt.c (instantiate_template): Likewise.
6757         (get_bindings): Likewise.
6758         
6759         * class.c (grow_method): Use DECL_FUNCTION_TEMPLATE_P instead of
6760         is_member_template.
6761
6762         * pt.c (unify): Undo changes to allow multiple levels of template
6763         parameters. 
6764         (type_unification): Likewise.
6765         (fn_type_unification): Likewise.
6766         (get_class_bindings): Likewise.
6767         * cp-tree.h (Likewise).
6768         
6769         * decl.c (replace_defarg): Check that the type of the default
6770         parameter does not invlove a template type before complaining
6771         about the initialization.
6772
6773         * error.c (dump_expr): Deal with template constant parameters in
6774         member templates correctly.
6775
6776         * pt.c (is_member_template): Deal with class specializations
6777         correctly. 
6778         (tsubst): Handle "partial instantiation" of member templates
6779         correctly. 
6780
6781 Wed Sep  3 12:30:24 1997  Mark Mitchell  <mmitchell@usa.net>
6782
6783         * pt.c (type_unification): Change calling squence to allow for
6784         multiple levels of template parameters.
6785         (tsubst_expr): Likewise.
6786         (tsubst): Likewise.
6787         (tsubst_copy): Likewise.
6788         (instantiate_template): Likewise.
6789         (unify): Likewise.
6790         * call.c (build_overload_call_real): Use it.
6791         (add_builtin_candidate): Use it.
6792         (build_new_method_call): Use it.
6793         * class.c (instantiate_type): Use it.
6794         * decl.c (grokdeclarator): Use it.
6795         * decl2.c (finish_file): Use it.
6796         * method.c (build_overload_identifier): Use it.
6797         
6798         * call.c (add_template_candidate):  Add additional parameter for
6799         the function return type.  Call fn_type_unification istead of
6800         type_unification.
6801         (build_user_type_conversion_1): Handle member templates.
6802         (build_new_function_call): Likewise.
6803         (build_new_op): Likewise.
6804         (build_new_method_call): Likewise.
6805         
6806         * class.c (grow_method): Don't give an error message indicating
6807         that two member templates with the same name are ambiguous.
6808         (finish_struct): Treat member template functions just like member
6809         functions.
6810         
6811         * cp-tree.h (check_member_template): Add declaration.
6812         (begin_member_template_processing): Likewise.
6813         (end_member_template_processing): Likewise.
6814         (fn_type_unification): Likewise.
6815         (is_member_template): Likewise.
6816         (tsubst): Change prototype.
6817         (tsubst_expr): Likewise.
6818         (tsubst_copy): Likewise.
6819         (instantiate_template): Likewise.
6820         (get_bindings): Likewise.
6821
6822         * decl.c (decls_match): Handle multiple levels of template
6823         parameters. 
6824         (pushdecl): Handle template type params just like other type
6825         declarations. 
6826         (push_class_level_binding): Return immediately if the
6827         class_binding_level is NULL.
6828         (grokfndecl): If check_classfn() returns a member_template, use
6829         the result of the template, not the template itself.
6830         
6831         * decl2.c (check_member_template): New function.  Check to see
6832         that the entity declared to be a member template can be one.
6833         (check_classfn): Allow redeclaration of member template functions
6834         with different types; the new functions can be specializations or
6835         explicit instantiations.
6836         
6837         * error.c (dump_decl): Handle multiple levels of template
6838         parameters. 
6839         (dump_function_decl): Update to handle function templates.
6840
6841         * lex.c (do_pending_inlines): Set up template parameter context
6842         for member templates.
6843         (process_next_inline): Likewise.
6844
6845         * method. (build_overload_identifier): Adjust for multiple levels
6846         of template parameters.
6847         
6848         * parse.y (fn.def2): Add member templates.
6849         (component_decl_1): Likewise.
6850
6851         * pt.c (begin_member_template_processing): New function.
6852         (end_member_template_processing): Likewise.
6853         (is_member_template): Likewise.
6854         (fn_type_unification): Likewise.
6855         (current_template_parms): Return a vector of all the template
6856         parms, not just the innermost level of parms.
6857         (push_template_decl): Deal with the possibility of member
6858         templates. 
6859         (lookup_template_class): Likewise.
6860         (uses_template_parms): Likewise.
6861         (tsubst): Modify processing to TEMPLATE_TYPE_PARM and
6862         TEMPLATE_CONST_PARM to deal with multiple levels of template
6863         arguments.   Add processing of TEMPLATE_DECL to produce new
6864         TEMPLATE_DECLs from old ones.
6865         (do_decl_instantiation): Handle member templates.
6866
6867         * search.c (lookup_fnfields_1): Handle member template conversion
6868         operators. 
6869
6870         * tree.c (cp_tree_equal): Check the levels, as well as the
6871         indices, of TEMPLATE_CONST_PARMs.
6872
6873         * typeck.c (comptypes): Check the levels, as well as the indices,
6874         fo TEMPLATE_TYPE_PARMs.
6875         (build_x_function_call): Treat member templates like member
6876         functions. 
6877         
6878 Wed Sep  3 11:09:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
6879
6880         * typeck.c (c_expand_return): Always convert_for_initialization
6881         before checking for returning a pointer to local.
6882
6883         * pt.c (type_unification): If strict and the function parm doesn't
6884         use template parms, just compare types.
6885
6886 Wed Sep  3 10:35:49 1997  Klaus Espenlaub  <kespenla@student.informatik.uni-ulm.de>
6887
6888         * method.c (build_overloaded_value): Replace direct call
6889         to the floating point emulator with REAL_VALUE_TO_DECIMAL macro.
6890
6891 Wed Sep  3 00:02:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
6892
6893         * typeck.c (convert_arguments): Don't arbitrarily choose the first
6894         of a set of overloaded functions.
6895
6896 Tue Sep  2 12:09:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
6897
6898         * lex.c (real_yylex): Don't elide __FUNCTION__.
6899
6900         * method.c (build_overload_value): Add in_template parm.
6901         (build_overload_int): Likewise.
6902         (build_overload_identifier): Pass it.
6903
6904         * decl.c (duplicate_decls): Don't bash a previous template
6905         definition with a redeclaration.
6906
6907         * pt.c (unify): float doesn't match double.
6908
6909         * pt.c (do_type_instantiation): Handle getting a _TYPE or a
6910         TYPE_DECL.  Handle getting non-template types.
6911         * parse.y (explicit_instantiation): Use typespec instead of
6912         aggr template_type.
6913
6914 Tue Sep  2 10:27:08 1997  Richard Henderson  <rth@cygnus.com>
6915
6916         * typeck.c (build_ptrmemfunc1): Clean up ptr->int cast warnings.
6917
6918 Mon Sep  1 13:19:04 1997  Eugene Mamchits <eugin@ips.ras.ru>
6919
6920         * call.c (add_builtin_candidate): Add missing TREE_TYPE.
6921         (compare_ics): Likewise.
6922
6923 Mon Sep  1 13:19:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
6924
6925         * call.c (joust): Warn about choosing one conversion op over
6926         another because of 'this' argument when the other return type is
6927         better.
6928         (source_type): New fn.
6929
6930         * call.c (build_new_op): Strip leading REF_BIND from first operand
6931         to builtin operator.
6932
6933         * decl2.c (mark_vtable_entries): Mark abort_fndecl as used when we
6934         use its RTL.
6935
6936 Thu Aug 28 09:45:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
6937
6938         * call.c (null_ptr_cst_p): Remove support for (void*)0.
6939
6940 Wed Aug 27 02:03:34 1997  Jeffrey A Law  (law@cygnus.com)
6941
6942         * typeck.c (expand_target_expr): Make definition match declaration.
6943
6944         * class.c (get_basefndecls): Make definition match declaration.
6945
6946 Mon Aug 25 14:30:02 1997  Jason Merrill  <jason@yorick.cygnus.com>
6947
6948         * input.c (sub_getch): Eventually give up and release the input file.
6949
6950         * decl.c (cp_finish_decl): If #p i/i, put inline statics in the
6951         right place.
6952
6953         * call.c (joust): Tweak message.
6954
6955 Sat Aug 23 18:02:59 1997  Mark Mitchell  <mmitchell@usa.net>
6956
6957         * error.c (type_as_string): Put const/volatile on template type
6958         parameters where appropriate.
6959
6960 Sat Aug 23 17:47:22 1997  Jeffrey A Law  (law@cygnus.com)
6961
6962         * call.c (strictly_better): Make arguments unsigned ints.
6963
6964 Thu Aug 21 18:48:44 1997  Jason Merrill  <jason@yorick.cygnus.com>
6965
6966         * lex.c (real_yylex): Refer to __complex instead of complex.
6967
6968 Thu Aug 21 22:25:46 1997  J"orn Rennecke <amylaar@cygnus.co.uk>
6969
6970         * lex.c (real_yylex): Don't use getc directly.
6971
6972 Wed Aug 20 17:25:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
6973
6974         * call.c (is_subseq): Don't try to be clever.
6975
6976 Wed Aug 20 03:13:36 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
6977
6978         * parse.y, pt.c: Include "except.h".
6979         * call.c, class.c, class.h, cp-tree.h, cvt.c, decl.c, decl2.c,
6980         error.c, except.c, expr.c, friend.c, g++spec.c, init.c, input.c,
6981         lex.c, lex.h, method.c, parse.y, pt.c, repo.c, rtti.c, search.c,
6982         sig.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c: Finish
6983         prototyping.
6984
6985 Wed Aug 20 01:34:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
6986
6987         * decl2.c (mark_vtable_entries): Instead of replacing pure
6988         virtuals with a reference to __pure_virtual, copy the decl and
6989         change the RTL.
6990
6991 Tue Aug 19 02:26:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
6992
6993         * pt.c (lookup_nested_type_by_name): Handle typedef wierdness.
6994
6995         * typeck2.c (my_friendly_abort): Report bugs to egcs-bugs@cygnus.com.
6996
6997         * pt.c (instantiate_class_template): Call repo_template_used
6998         before finish_prevtable_vardecl.
6999
7000         * call.c (is_subseq): New fn.
7001         (compare_ics): Use it.
7002
7003         * repo.c (finish_repo): Don't crash on no args.
7004
7005         * parse.y (named_complex_class_head_sans_basetype): Handle
7006         explicit global scope.
7007         * decl2.c (handle_class_head): New fn.
7008
7009         * pt.c (unify): Add CONST_DECL case.
7010
7011 Thu Aug 14 10:05:13 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7012
7013         * rtti.c (permanent_obstack): Fix decl to not be a pointer.
7014
7015         * cp-tree.h (report_type_mismatch): Add prototype.
7016         * call.c (build_overload_call_real): Remove erroneous fourth
7017         argument to report_type_mismatch.
7018         (build_user_type_conversion_1): Remove erroneous second arg to
7019         tourney.
7020         (build_new_function_call): Likewise.
7021         (build_object_call): Likewise.
7022         (build_new_op): Likewise.
7023         (build_new_method_call): Likewise.
7024
7025 Wed Aug 13 19:19:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
7026
7027         * error.c (dump_decl): Don't bother processing a function with no
7028         DECL_LANG_SPECIFIC.
7029
7030         * method.c (emit_thunk): Call init_function_start in the macro case.
7031
7032 Wed Aug 13 10:46:19 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
7033
7034         * decl2.c (DEFAULT_VTABLE_THUNKS): Define to be 0 if not
7035         defined and used to set flag_vtable_thunks.
7036
7037 Tue Aug 12 20:13:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
7038
7039         * parse.y: Don't clear the inlines from their obstack until they've 
7040         all been processed.
7041
7042         * decl.c (duplicate_decls): Don't complain about exception
7043         specification mismatch if flag_exceptions is off.
7044
7045 Mon Aug 11 15:01:56  1997  Marc Lehmann <pcg@goof.com>
7046
7047         * Make-lang.in (c++.distclean): Remove g++.c on make distclean.
7048
7049 Sun Aug 10 12:06:09 1997  Paul Eggert  <eggert@twinsun.com>
7050
7051         * cp-tree.h: Replace STDIO_PROTO with PROTO in include files.
7052         * cvt.c, error.c, except.c, expr.c, friend.c, init.c, rtti.c:
7053         Include <stdio.h> before include files that formerly used STDIO_PROTO. 
7054
7055         * decl.c, g++spec.c, lex.c, method.c, repo.c:
7056         Include "config.h" first, as per autoconf manual.
7057
7058 Fri Aug  8 11:47:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
7059
7060         * decl.c (duplicate_decls): Tweak wording.
7061         * lex.c (do_pending_defargs): Don't die if we see a default arg
7062         that isn't a DEFAULT_ARG.
7063         * error.c (dump_expr): Handle DEFAULT_ARG.
7064
7065         * decl2.c (lang_decode_option): Handle -fhandle-exceptions.
7066         * lang-options.h: Add -fhandle-exceptions.
7067
7068         * class.c (build_vtable): vtables are artificial.
7069         (prepare_fresh_vtable): Likewise.
7070
7071 Wed Aug  6 11:02:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
7072
7073         * cvt.c (ocp_convert): After converting to the target type, set
7074         LOOKUP_NO_CONVERSION.
7075
7076         * call.c (joust): Warn about potentially confusing promotion rules
7077         with -Wsign-promo.
7078         * cp-tree.h, lang-options.h, decl2.c: Support -Wsign-promo.
7079
7080 Tue Aug  5 15:15:07 1997  Michael Meissner  <meissner@cygnus.com>
7081
7082         * exception.cc: Declare __terminate_func with noreturn attribute.
7083
7084 Fri Aug  1 03:18:15 1997  Jason Merrill  <jason@yorick.cygnus.com>
7085
7086         * parse.y: Break out eat_saved_input, handle errors.
7087         (function_try_block): Use compstmt instead of compstmt_or_error.
7088
7089 Thu Jul 31 17:14:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
7090
7091         * tree.c (build_cplus_new): Don't set TREE_ADDRESSABLE.
7092
7093 Fri Jul  4 01:45:16 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
7094
7095         * Make-lang.in (cplib2.txt, cplib2.ready): Instead of checking for
7096         existence of cc1plus check whether $(LANGUAGES) contains C++.
7097
7098 Wed Jul 30 13:04:21 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
7099
7100         * method.c (do_build_copy_constructor): When copying an anonymous
7101         union member loop around to handle nested anonymous unions.  Use
7102         the offset of the member relative to the outer structure, not the
7103         union.
7104
7105 Tue Jul 29 21:17:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
7106
7107         * call.c (resolve_args): New fn.
7108         (build_new_function_call): Use it.
7109         (build_object_call): Likewise.
7110         (build_new_method_call): Likewise.
7111
7112 Mon Jul 28 16:02:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
7113
7114         * call.c (build_over_call): tsubst all default parms from templates.
7115
7116 Wed Jul 23 13:36:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
7117
7118         * decl.c (struct cp_function): Add static_labelno.
7119         (push_cp_function_context): Save it.
7120         (pop_cp_function_context): Restore it.
7121
7122 Tue Jul 22 14:43:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
7123
7124         * typeck.c (build_component_ref_1): Convert from reference.
7125
7126 Tue Jul 22 11:06:23 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7127
7128         * parse.y (current_declspecs, prefix_attributes): Initialize to
7129         NULL_TREE.
7130
7131         * parse.y (initdcl0): Make sure CURRENT_DECLSPECS is non-nil
7132         before we try to force it to be a TREE_LIST.
7133         (decl): Make sure $1.t is non-nil.
7134
7135 Sun Jul 20 11:53:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
7136
7137         * pt.c (uses_template_parms): Handle template first-parse codes.
7138
7139         * decl.c (cp_finish_decl): Only warn about user-defined statics.
7140
7141 Fri Jul 18 17:56:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
7142
7143         * pt.c (unify): Handle BOOLEAN_TYPE.
7144
7145         * cp-tree.h: Lose PARM_DEFAULT_FROM_TEMPLATE.
7146         * pt.c (tsubst): Don't set it.
7147         * call.c (build_over_call): Use uses_template_parms.
7148
7149 Thu Jul 17 18:06:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
7150
7151         * method.c (build_overload_nested_name): Use static_labelno
7152         instead of var_labelno.
7153         (build_qualified_name): New fn.
7154         (build_overload_name): Split out from here.
7155         (build_static_name): Use build_qualified_name.
7156         * decl.c (cp_finish_decl): Statics in extern inline functions 
7157         have comdat linkage.
7158         (start_function): Initialize static_labelno.
7159
7160 Thu Jul 17 11:20:17 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
7161
7162         * class.c (finish_struct_methods): add check of warn_ctor_dtor_privacy
7163         before "all member functions in class [] are private"
7164
7165 Wed Jul 16 23:47:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
7166
7167         * lex.c (do_scoped_id): convert_from_reference.
7168         * init.c (build_offset_ref): Likewise.
7169
7170 Wed Jul 16 12:34:29 1997  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
7171
7172         * error.c (dump_expr): Check TREE_OPERAND before dump_expr_list.
7173
7174 Mon Jul 14 03:23:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
7175
7176         * typeck.c (get_member_function_from_ptrfunc): Promote index
7177         before saving it.
7178
7179 Sun Jul 13 00:11:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
7180
7181         * tree.c (layout_basetypes): Move non-virtual destructor warning.
7182         * decl.c (xref_basetypes): Remove non-virtual destructor warning.
7183
7184 Sat Jul 12 12:47:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
7185
7186         * decl.c (grokdeclarator): Call add_defarg_fn for the function
7187         type, too.
7188         * lex.c (add_defarg_fn): Adjust.
7189         (do_pending_defargs): Adjust.  Don't skip the first parm.
7190
7191 Fri Jul 11 01:39:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
7192
7193         * decl.c (build_enumerator): Global enumerators are also readonly.
7194
7195         * rtti.c (build_dynamic_cast_1): Renamed from build_dynamic_cast.
7196         (build_dynamic_cast): Call it and convert_from_reference.
7197
7198         * lex.c (add_defarg_fn): New fn.
7199         (snarf_defarg): Don't add to defarg_types.
7200         (do_pending_defargs): Lose defarg_types.  All fns we process now
7201         have defargs.
7202         * decl.c (grokfndecl): Call add_defarg_fn.
7203
7204         * Makefile.in (CONFLICTS): Expect 18 s/r conflicts.
7205         * cp-tree.def: Add DEFAULT_ARG.
7206         * spew.c (yylex): Call snarf_defarg as appropriate.
7207         * parse.y: New tokens DEFARG and DEFARG_MARKER.
7208         (defarg_again, pending_defargs, defarg, defarg1): New rules.
7209         (structsp): Use pending_defargs.
7210         (parms, full_parm): Use defarg.
7211         * lex.c (init_lex): Initialize inline_text_firstobj.
7212         (do_pending_inlines): Never pass the obstack to feed_input.
7213         (process_next_inline): Call end_input instead of restore_pending_input.
7214         (clear_inline_text_obstack, reinit_parse_for_expr, do_pending_defargs,
7215         finish_defarg, feed_defarg, snarf_defarg, maybe_snarf_defarg): New fns.
7216         * input.c (end_input): New fn.
7217         (sub_getch): At the end of some fed input, just keep returning EOF
7218         until someone calls end_input.
7219         Remove 'obstack' field from struct input_source.
7220         * decl.c (grokparms): Handle DEFAULT_ARG.
7221         (replace_defarg): New fn.
7222         * cp-tree.h (DEFARG_LENGTH, DEFARG_POINTER): New macros.
7223
7224 Wed Jul  9 13:44:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
7225
7226         * call.c (implicit_conversion): If nothing else works, try binding
7227         an rvalue to a reference.
7228
7229 Wed Jul  9 13:04:38 1997  Geoffrey Noer  <noer@cygnus.com>
7230
7231         * decl.c (init_decl_processing): fix Jun 30 patch -- move
7232         ifndef for Cygwin32 to include SIGSEGV.
7233
7234 Thu Jul  3 01:44:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
7235
7236         * class.c (finish_struct_1): Only complain about pointers without
7237         copy stuff if there are any constructors.
7238
7239         * rtti.c (build_dynamic_cast): Call complete_type on the types.
7240
7241         * decl.c (grokfndecl): If the function we chose doesn't actually
7242         match, die.
7243
7244         * decl2.c (grokclassfn): Don't specify 'const int' for the
7245         artificial destructor parm.
7246
7247         * pt.c (type_unification): If we are called recursively, nothing 
7248         decays.
7249
7250 Mon Jun 30 17:53:21 1997  Geoffrey Noer  <noer@cygnus.com>
7251
7252         * decl.c (init_decl_processing): Stop trying to catch signals
7253         other than SIGABRT since the Cygwin32 library doesn't support
7254         them correctly yet.  This fixes a situation in which g++ causes
7255         a hang on SIGSEGVs and other such signals in our Win32-hosted
7256         tools.
7257
7258 Mon Jun 30 14:50:01 1997  Jason Merrill  <jason@yorick.cygnus.com>
7259
7260         * tree.c (mapcar, case CALL_EXPR): Handle all the parse node data.
7261
7262 Fri Jun 27 15:18:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
7263
7264         * typeck2.c (store_init_value): Always return the value if our 
7265         type needs constructing.
7266
7267         * method.c (hack_identifier): Convert class statics from
7268         reference, too.
7269
7270 Thu Jun 26 11:44:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
7271
7272         * Make-lang.in (cplib2.ready): Add $(LANGUAGES) dependency.
7273
7274 Thu Jun 19 16:49:28 1997  Mike Stump  <mrs@cygnus.com>
7275
7276         * typeck.c (c_expand_return): Make sure we clean up temporaries at
7277         the end of return x;
7278
7279 Thu Jun 19 12:28:43 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7280
7281         * lex.c (check_for_missing_semicolon): Also check for CV_QUALIFIER.
7282
7283 Tue Jun 17 18:35:57 1997  Mike Stump  <mrs@cygnus.com>
7284
7285         * except.c (expand_builtin_throw): Add support
7286         -fno-sjlj-exceptions -fPIC exception handling on the SPARC.
7287
7288 Mon Jun 16 01:24:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
7289
7290         * repo.c (extract_string): Null-terminate.
7291
7292         * cp-tree.h (TI_SPEC_INFO): New macro.
7293         (CLASSTYPE_TI_SPEC_INFO): New macro.
7294         * pt.c (push_template_decl): Correctly determine # of template parms 
7295         for partial specs.
7296
7297         * call.c (compare_ics): Really fix 'this' conversions.
7298
7299         * pt.c (do_decl_instantiation): Don't crash on explicit inst of
7300         non-template fn.
7301
7302         * pt.c (push_template_decl): Complain about mismatch in # of
7303         template parms between a class template and a member template.
7304
7305 Sun Jun 15 02:38:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
7306
7307         * method.c (synthesize_method): You can't call
7308         function_cannot_inline_p after finish_function.
7309         * decl.c (finish_function): Turn on flag_inline_functions and turn
7310         off DECL_INLINE before handing a synthesized method to the
7311         backend.
7312
7313 Thu Jun 12 17:35:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
7314
7315         * method.c (synthesize_method): Remove July 30 change to never set
7316         DECL_INLINE if at_eof.
7317
7318 Thu Jun 12 15:25:08 1997  Mike Stump  <mrs@cygnus.com>
7319
7320         * xref.c (GNU_xref_member): Ensure that the node has a
7321         decl_lang_specific part before checking DECL_FRIEND_P.
7322
7323 Thu Jun 12 12:36:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
7324
7325         * pt.c (instantiate_class_template): Diagnose non-class types used
7326         as bases.
7327
7328 Wed Jun 11 17:33:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
7329
7330         * typeck.c (build_conditional_expr): Use convert_for_initialization
7331         instead of convert_and_check.
7332
7333 Wed Jun 11 12:31:33 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7334
7335         * parse.y (typespec): Don't pedwarn for typeof.
7336
7337 Tue Jun 10 00:22:09 1997  Jason Merrill  <jason@yorick.cygnus.com>
7338
7339         * repo.c (finish_repo): Only check changes if we would write a
7340         repo file.
7341
7342         * call.c (compare_ics): Fix handling of 'this' conversions.
7343
7344         * pt.c (do_decl_instantiation): Support static data too.  Rename
7345         from do_function_instantiation.
7346         * cp-tree.h: Adjust.
7347         * parse.y: Adjust.
7348
7349         * repo.c (extract_string): New fn.
7350         (get_base_filename): Use it.
7351         (init_repo): Compare old args with current args.
7352
7353 Mon Jun  9 14:25:30 1997  Mike Stump  <mrs@cygnus.com>
7354
7355         * Makefile.in, Make-lang.in: Protect C-ls with a comment
7356         character, idea from Paul Eggert <eggert@twinsun.com>.
7357
7358 Mon Jun  9 01:52:03 1997  Jason Merrill  <jason@yorick.cygnus.com>
7359
7360         * typeck.c (c_expand_return): Be more persistent in looking for
7361         returned temps.
7362
7363         * cvt.c (build_up_reference): Use NOP_EXPR for switching from
7364         pointer to reference.
7365
7366         * class.c (build_vbase_path): Don't do anything if PATH has no steps.
7367
7368 Sun Jun  8 03:07:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
7369
7370         * init.c (build_member_call, build_offset_ref):
7371         Use do_scoped_id instead of do_identifier.
7372
7373         * cvt.c (convert): Remove bogosity.
7374
7375 Sat Jun  7 20:50:17 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7376
7377         * cvt.c (build_up_reference): Do checks of ARGTYPE and
7378         TARGET_TYPE before trying to use get_binfo.
7379
7380 Fri Jun  6 17:36:39 1997  Jason Merrill  <jason@yorick.cygnus.com>
7381
7382         * cvt.c (build_up_reference): Call get_binfo to get access control.
7383
7384         * decl2.c (import_export_decl): If we don't support weaks, leave
7385         statics undefined.
7386
7387 Fri Jun  6 15:55:49 1997  Mike Stump  <mrs@cygnus.com>
7388
7389         * except.c (expand_builtin_throw): Add support for machines that
7390         cannot access globals after throw's epilogue when
7391         -fno-sjlj-exceptions is used.
7392
7393 Thu Jun  5 16:28:43 1997  Jason Merrill  <jason@yorick.cygnus.com>
7394
7395         * parse.y: 'std::' becomes '::'.
7396         * lex.c (real_yylex): Remove 'namespace' warning.
7397         * init.c (build_member_call): Ignore 'std::'.
7398         (build_offset_ref): Likewise.
7399         * decl2.c (do_using_directive): Ignore 'using namespace std;'.
7400         (do_toplevel_using_decl): Ignore 'using std::whatever'.
7401         * decl.c (push_namespace): Just sorry.
7402         (pop_namespace): Nop.
7403         (init_decl_processing): Declare std namespace.
7404
7405 Tue Jun  3 18:08:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
7406
7407         * search.c (push_class_decls): A name which ambiguously refers to
7408         several instantiations of the same template just refers to the
7409         template.
7410
7411 Tue Jun  3 12:30:40 1997  Benjamin Kosnik  <bkoz@cirdan.cygnus.com>
7412
7413         * decl.c (build_enumerator): fix problem with unsigned long
7414         enumerated values being smashed to ints, causing overflow
7415         when computing next enumerated value. (for enum values around
7416         MAX_VAL).
7417
7418 Mon Jun  2 17:40:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
7419
7420         * typeck.c (build_component_ref): Only call mark_used on a decl.
7421
7422 Thu May 29 15:54:17 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7423
7424         * typeck.c (build_c_cast): Make the check for a ptr to function
7425         more specific before possible default_conversion call.
7426
7427 Thu May 29 13:02:06 1997  Mike Stump  <mrs@cygnus.com>
7428
7429         * except.c (expand_exception_blocks): Simplify and fix and make
7430         sure we don't end a region in a sequence, as expand_end_bindings
7431         doesn't like it.
7432
7433 Wed May 28 17:08:03 1997  Mike Stump  <mrs@cygnus.com>
7434
7435         * except.c (init_exception_processing): Mark terminate as not
7436         returning so that the optimizer can optimize better.
7437
7438 Tue May 27 19:49:19 1997  Mike Stump  <mrs@cygnus.com>
7439
7440         * cvt.c (convert): Don't do any extra work, if we can avoid it
7441         easily.
7442
7443 Tue May 27 18:21:47 1997  Mike Stump  <mrs@cygnus.com>
7444
7445         * *.[chy]: Change cp_convert to ocp_convert, change convert to
7446         cp_convert.  convert is now reserved for the backend, and doesn't
7447         have the semantics a frontend person should ever want.
7448
7449 Fri May 23 10:58:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
7450
7451         * lang-specs.h: Define __EXCEPTIONS if exceptions are enabled.
7452         Lose -traditional support.
7453
7454 Thu May 22 15:41:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
7455
7456         * rtti.c (get_tinfo_var): Use TYPE_PRECISION (sizetype).
7457
7458         * parse.y (self_reference): Do it for templates, too.
7459         * class.c (pushclass): Don't overload_template_name; the alias
7460         generated by build_self_reference serves the same purpose.
7461
7462         * tree.c (list_hash): Make static, take more args.
7463         (list_hash_lookup): Likewise.
7464         (list_hash_add): Make static.
7465         (list_hash_canon): Lose.
7466         (hash_tree_cons): Only build a new node if one isn't already in the
7467         hashtable.
7468         (hash_tree_chain): Use hash_tree_cons.
7469         * cp-tree.h: Adjust.
7470         * decl.c (grokfndecl): Just check IDENTIFIER_GLOBAL_VALUE instead
7471         of calling lookup_name.
7472
7473 Wed May 21 18:24:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
7474
7475         * pt.c (instantiate_class_template): TYPE_VALUES for an enum
7476         doesn't refer to the CONST_DECLs.
7477
7478 Tue May 20 21:09:32 1997  Bob Manson  <manson@charmed.cygnus.com>
7479
7480         * rtti.c (get_tinfo_var): Either INT_TYPE_SIZE or 32, whichever
7481         is bigger.
7482         (expand_class_desc): Convert the last argument to a sizetype.
7483
7484 Tue May 20 13:55:57 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7485
7486         * gxx.gperf (__complex, __complex__, __imag, __imag__, __real,
7487         __real__): Add reswords.
7488         * hash.h: Regenerate.
7489         * lex.h (rid): Add RID_COMPLEX.
7490         (RID_LAST_MODIFIER): Set to RID_COMPLEX.
7491         * lex.c (init_lex): Add building of RID_COMPLEX.
7492         (real_yylex): General cleanup in line with what c-lex.c also has,
7493         sans the cruft for traditional; add handling of SPEC_IMAG, complex
7494         types, and imaginary numeric constants.
7495         * parse.y (REALPART, IMAGPART): Add tokens.
7496         (unary_expr): Add REALPART and IMAGPART rules.
7497         * cp-tree.h (complex_{integer,float,double,long}_type_node): Declare.
7498         * decl.c (complex_{integer,float,double,long}_type_node): Define
7499         types.
7500         (init_decl_processing): Set up the types.
7501         (grokdeclarator): Add handling of RID_COMPLEX.  Set and use
7502         DEFAULTED_INT instead of EXPLICIT_INT when we default to int type.
7503         * call.c (build_new_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
7504         * cvt.c (cp_convert): Handle COMPLEX_TYPE.
7505         * error.c (dump_type_prefix, dump_type, dump_type_suffix): Add
7506         COMPLEX_TYPE case.
7507         * method.c (build_overload_name): Add handling of the different
7508         COMPLEX_TYPEs, prefixing them with `J'.
7509         * pt.c (process_template_parm): Don't let them use a COMPLEX_TYPE
7510         as a template parm.
7511         (uses_template_parms, tsubst, unify): Add COMPLEX_TYPE case.
7512         * tree.c (lvalue_p): Add REALPART_EXPR and IMAGPART_EXPR cases.
7513         (mapcar): Handle COMPLEX_CST.
7514         * typeck.c (build_binary_op_nodefault): Handle COMPLEX_TYPE.
7515         (common_type): Add code for complex types.
7516         (build_unary_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
7517         (convert_for_assignment): Likewise.
7518         (mark_addressable): Add REALPART_EXPR and IMAGPART_EXPR cases.
7519
7520 Mon May 19 12:26:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
7521
7522         * pt.c (tsubst): Don't pass the MINUS_EXPR for an array domain to
7523         tsubst_expr, as it might try to do overload resolution.
7524
7525 Sat May 17 10:48:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
7526
7527         * pt.c (instantiate_class_template): Oops.
7528
7529 Fri May 16 14:23:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
7530
7531         * cp-tree.def: Add TAG_DEFN.
7532         * pt.c (tsubst_enum): New fn.
7533         (instantiate_class_template): Use it.
7534         (tsubst_expr): Support TAG_DEFN.
7535         (tsubst): Support local enums.
7536         (tsubst_copy): Likewise.
7537         * decl.c (finish_enum): Likewise.
7538         (start_enum): If this is a local enum, switch to permanent_obstack.
7539
7540 Wed May 14 19:08:28 1997  Mike Stump  <mrs@cygnus.com>
7541
7542         * decl.c (store_parm_decls): Set last_parm_cleanup_insn here.
7543         (finish_function): Put the base init code for constructors just
7544         after the parm cleanup insns.
7545         (struct cp_function): Add last_parm_cleanup_insn.
7546         (push_cp_function_context): Likewise.
7547         (pop_cp_function_context): Likewise.
7548         
7549 Tue May 13 15:51:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
7550
7551         * pt.c (tsubst_copy): Handle BIT_NOT_EXPR.
7552
7553 Wed May  7 11:17:59 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7554
7555         * method.c (emit_thunk) [ASM_OUTPUT_MI_THUNK]: Build up the RTL
7556         for THUNK_FNDECL before we switch to temporary allocation.
7557
7558 Mon May  5 14:46:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
7559
7560         * call.c (build_new_op): Handle null arg2 for ?:.
7561
7562 Thu May  1 18:26:37 1997  Mike Stump  <mrs@cygnus.com>
7563
7564         * except.c (expand_exception_blocks): Ensure that we flow through
7565         the end of the exception region for the exception specification.
7566         Move exception region for the exception specification in, so that
7567         it doesn't protect the parm cleanup.  Remove some obsolete code.
7568         * decl.c (store_parm_decls): Likewise.
7569         (finish_function): Likewise.
7570
7571 Tue Apr 29 15:38:54 1997  Jason Merrill  <jason@yorick.cygnus.com>
7572
7573         * init.c (build_new): Fix nothrow handling.
7574
7575 Tue Apr 29 14:29:50 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7576
7577         * init.c (emit_base_init): Don't warn about the initialization
7578         list for an artificial member.
7579
7580 Fri Apr 25 17:47:59 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7581
7582         * expr.c (do_case): Handle !START case for the error msg.
7583
7584 Fri Apr 25 11:55:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
7585
7586         * decl2.c, lang-options.h: New option -Weffc++.
7587         * class.c, decl.c, init.c, typeck.c: Move Effective C++ warnings
7588         to -Weffc++.
7589
7590         * decl2.c (finish_prevtable_vardecl): Change NO_LINKAGE_HEURISTICS
7591         to MULTIPLE_SYMBOL_SPACES.
7592
7593 Wed Apr 23 18:06:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
7594
7595         * method.c (emit_thunk, generic case): Set current_function_is_thunk.
7596
7597         * method.c (emit_thunk, macro case): Set up DECL_RESULT.
7598
7599         * typeck.c (c_expand_return): Don't complain about returning void
7600         to void in an artificial function.
7601         * method.c (make_thunk): Change settings of READONLY/VOLATILE, 
7602         don't set DECL_RESULT, set DECL_ARTIFICIAL.
7603         (emit_thunk, generic code): Also set up DECL_LANG_SPECIFIC. 
7604
7605 Wed Apr 23 14:43:06 1997  Mike Stump  <mrs@cygnus.com>
7606
7607         * init.c (init_decl_processing): Add supoprt for setjmp/longjmp based
7608         exception handling.
7609         * except.c (init_exception_processing): Likewise.
7610         (expand_end_catch_block): Likewise.
7611         (expand_exception_blocks): Likewise.
7612         (expand_throw): Likewise.
7613         * exception.cc (__default_terminate): Likewise.
7614
7615         * init.c (perform_member_init): Use new method of expr level
7616         cleanups, instead of cleanups_this_call and friends.
7617         (emit_base_init): Likewise.
7618         (expand_aggr_vbase_init_1): Likewise.
7619         (expand_vec_init): Likewise.
7620         * decl.c (cp_finish_decl): Likewise.
7621         (expand_static_init): Likewise.
7622         (store_parm_decls): Likewise.
7623         (cplus_expand_expr_stmt): Likewise.
7624         * decl2.c (finish_file): Likewise.
7625         
7626         * Make-lang.in (exception.o): Ok to compile with -O now.
7627
7628         * decl.c (maybe_build_cleanup_1): We no longer have to unsave, as
7629         we know it will be done later by the backend.
7630
7631         * decl2.c (lang_f_options): Remove support for short temps.
7632         * lang-options.h: Likewise.
7633         
7634 Wed Apr 23 04:12:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
7635
7636         * tree.c (varargs_function_p): New fn.
7637         * method.c (emit_thunk): Replace broken generic code with code to
7638         generate a heavyweight thunk function.
7639
7640 Tue Apr 22 02:45:18 1997  Jason Merrill  <jason@yorick.cygnus.com>
7641
7642         * pt.c (process_template_parm): pedwarn about floating-point parms.
7643
7644         * decl.c (grokdeclarator): inline no longer implies static.
7645
7646         * spew.c (yylex): Always return the TYPE_DECL if we got a scope.
7647
7648 Mon Apr 21 15:42:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
7649
7650         * class.c (check_for_override): The signature of an overriding
7651         function is not changed.
7652
7653         * call.c (build_over_call): Move setting of conv into the loop.
7654         Note: this change, along with the related changes of the 18th thru
7655         the 20th of April, fix an infinite loop problem in conversions.
7656
7657 Sun Apr 20 16:24:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
7658
7659         * call.c (build_user_type_conversion_1): Really ignore rvalue
7660         conversions when looking for a REFERENCE_TYPE.
7661
7662         * cvt.c (build_up_reference): Eviscerate, use build_unary_op.
7663         * cp-tree.h (TREE_REFERENCE_EXPR): #if 0.
7664         * typeck.c (decay_conversion): Don't set TREE_REFERENCE_EXPR.
7665         (build_unary_op): Likewise.
7666         * call.c (build_over_call): See through a CONVERT_EXPR around the
7667         ADDR_EXPR for on a temporary.
7668         * typeck.c (c_expand_return): See through a CONVERT_EXPR around
7669         the ADDR_EXPR for a local variable.
7670
7671 Fri Apr 18 12:11:33 1997  Jason Merrill  <jason@yorick.cygnus.com>
7672
7673         * call.c (build_user_type_conversion_1): If we're trying to
7674         convert to a REFERENCE_TYPE, only consider lvalue conversions.
7675         (build_new_function_call): Print candidates.
7676         (implicit_conversion): Try a temp binding if the lvalue conv is BAD.
7677         (reference_binding): Binding a temporary of a reference-related type
7678         is BAD.
7679
7680 Thu Apr 17 14:37:22 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7681
7682         * inc/typeinfo (type_info::before): Add cv-qualifier-seq.
7683         * tinfo2.cc (type_info::before): Likewise.
7684
7685 Mon Apr 14 12:38:17 1997  Jason Merrill  <jason@yorick.cygnus.com>
7686
7687         * call.c (implicit_conversion): Oops.
7688
7689 Fri Apr 11 02:18:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
7690
7691         * call.c (implicit_conversion): Try to find a reference conversion
7692         before binding a const reference to a temporary.
7693
7694 Wed Apr  2 12:51:36 1997  Mike Stump  <mrs@cygnus.com>
7695
7696         * exception.cc (__default_unexpected): Call terminate by default,
7697         so that if the user overrides terminate, the correct function will
7698         be called.
7699         
7700 Wed Mar 19 14:14:45 1997  Mike Stump  <mrs@cygnus.com>
7701
7702         * parse.y (left_curly): Avoid trying to use any fields of
7703         error_mark_node, as there aren't any.
7704
7705 Thu Mar 13 16:33:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
7706
7707         * lex.c (do_identifier): Avoid breaking on overloaded methods
7708         as default arguments.
7709
7710 Wed Mar 12 13:55:10 1997  Hans-Peter Nilsson  <Hans-Peter.Nilsson@axis.se>
7711
7712         * call.c (add_template_candidate): Initialize the variable "dummy".
7713
7714 Mon Mar 10 15:13:14 1997  Brendan Kehoe  <brendan@canuck.cygnus.com>
7715
7716         * decl.c (start_decl): Make sure TYPE isn't an error_mark_node
7717         before we try to use TYPE_SIZE and TREE_CONSTANT on it.
7718
7719 Fri Mar  7 13:19:36 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7720
7721         * cp-tree.h (comp_ptr_ttypes, more_specialized): Add decl.
7722         (debug_binfo): Delete decl, not needed.
7723
7724         * tree.c (fnaddr_from_vtable_entry, function_arg_chain,
7725         promotes_to_aggr_type): Delete fns.
7726         * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY,
7727         SET_FNADDR_FROM_VTABLE_ENTRY, FUNCTION_ARG_CHAIN,
7728         PROMOTES_TO_AGGR_TYPE): Delete alternates to #if 1.
7729
7730         * decl.c (pending_invalid_xref{,_file,_line}): Delete unused vars.
7731
7732         * friend.c (is_friend_type): Delete fn.
7733         * cp-tree.h (is_friend_type): Delete decl.
7734
7735         * decl.c (original_result_rtx, double_ftype_double,
7736         double_ftype_double_double, int_ftype_int, long_ftype_long,
7737         float_ftype_float, ldouble_ftype_ldouble, last_dtor_insn): Make static.
7738         * typeck.c (original_result_rtx, warn_synth): Delete extern decls.
7739
7740         * decl.c (push_overloaded_decl{,_top_level}): Make static, adding
7741         fwd decls.
7742         * cp-tree.h (push_overloaded_decl{,_top_level}): Delete decls.
7743
7744         * decl.c (pushdecl_nonclass_level): #if 0, unused.
7745         * cp-tree.h (pushdecl_nonclass_level): #if 0 decl.
7746
7747         * lex.c (reinit_lang_specific): #if 0, unused.
7748         * cp-tree.h (reinit_lang_specific): #if 0 decl.
7749
7750         * decl.c (revert_static_member_fn): Make static, adding fwd decl.
7751         * cp-tree.h (revert_static_member_fn): Delete decl.
7752
7753         * class.c (root_lang_context_p): Delete fn.
7754         * cp-tree.h (root_lang_context_p): Delete decl.
7755
7756         * decl.c (set_current_level_tags_transparency): #if 0, unused.
7757         * cp-tree.h (set_current_level_tags_transparency): #if 0 decl.
7758
7759         * lex.c (set_vardecl_interface_info): Make static.
7760         * cp-tree.h (set_vardecl_interface_info): Delete decl.
7761
7762         * call.c (find_scoped_type): Make static.
7763         * cp-tree.h (find_scoped_type): Delete decl.
7764
7765         * search.c (convert_pointer_to_vbase): Make static.
7766         * cp-tree.h (convert_pointer_to_vbase): Delete decl.
7767
7768         * decl.c (const_ptr_type_node): Likewise.
7769         * cp-tree.h (const_ptr_type_node): Delete decl.
7770
7771         * typeck.c (common_base_type): Make static.
7772         * cp-tree.h (common_base_types): Delete erroneous decl.
7773
7774         * pt.c (classtype_mangled_name): Make static.
7775         * cp-tree.h (classtype_mangled_name): Delete decl.
7776
7777         * lex.c (check_newline): Make static.
7778         * cp-tree.h (check_newline): Delete decl.
7779
7780         * typeck.c (build_x_array_ref): Delete fn, same idea as
7781         grok_array_decl.
7782         * cp-tree.h (build_x_array_ref): Delete decl.
7783
7784         * lex.c (copy_decl_lang_specific): Delete fn, same idea as
7785         copy_lang_decl.
7786         * cp-tree.h (copy_decl_lang_specific): #if 0 decl.
7787
7788         * class.c (build_vtable_entry): Make static.
7789         * cp-tree.h (build_vtable_entry): Delete decl.
7790
7791         * class.c (build_vbase_pointer): Make static.
7792         * cp-tree.h (build_vbase_pointer): Delete decl.
7793
7794         * sig.c (build_sptr_ref): Add forward decl and make static.
7795         * cp-tree.h (build_sptr_ref): Delete decl.
7796
7797         * call.c (build_new_method_call): Add forward decl and make static.
7798         * cp-tree.h (build_new_method_call): Delete decl.
7799
7800         * call.c (build_object_call): Make static.
7801         * class.c (check_for_override, complete_type_p, mark_overriders):
7802         Likewise.
7803         * decl.c (cp_function_chain): Likewise.
7804         * lex.c (set_typedecl_interface_info, reinit_parse_for_block):
7805         Likewise.
7806         * pt.c (comp_template_args, get_class_bindings, push_tinst_level):
7807         Likewise.
7808         * tree.c (build_cplus_array_type_1): Likewise.
7809         * typeck.c (comp_ptr_ttypes_{const,real,reinterpret}): Likewise.
7810         (comp_target_parms): Likewise.
7811
7812         * init.c (build_builtin_call): Make static.
7813         * cp-tree.h (build_builtin_call): Delete decl.
7814
7815         * typeck.c (binary_op_error): Delete decl.
7816         * cp-tree.h (binary_op_error): Likewise.
7817
7818 Thu Mar  6 16:13:52 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7819
7820         * call.c (build_method_call): Compare against error_mark_node
7821         directly, rather than the ERROR_MARK tree code.
7822         * cvt.c (cp_convert): Likewise.
7823         * decl.c (print_binding_level): Likewise.
7824         (duplicate_decls): Likewise.
7825         (grokdeclarator): Likewise.
7826         (grokdeclarator): Likewise.
7827         * init.c (expand_aggr_init_1): Likewise.
7828         (decl_constant_value): Likewise.
7829         * method.c (build_opfncall): Likewise.
7830         (hack_identifier): Likewise.
7831         * typeck.c (build_modify_expr): Likewise.
7832
7833         * typeck.c (build_c_cast): Don't decl TYPE as register tree.
7834
7835 Sun Mar  2 02:54:36 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
7836
7837         * pt.c (unify): Strip NOP_EXPR wrappers before unifying integer values.
7838
7839         * pt.c (coerce_template_parms): Add new error message.
7840
7841         * method.c (build_overload_value): Implement name mangling for
7842         floating-point template arguments.
7843
7844         * method.c (build_overload_int, icat, dicat): Fix mangling of template
7845         arguments whose absolute value doesn't fit in a signed word.
7846
7847 Mon Mar  3 12:14:54 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7848
7849         * friend.c: New file; put all of the friend stuff in here.
7850         * init.c: Instead of here.
7851         * Makefile.in (CXX_OBJS): Add friend.o.
7852         (friend.o): Add dependencies.
7853         * Make-lang.in (CXX_SRCS): Add $(srcdir)/cp/friend.c.
7854
7855 Sun Mar  2 11:04:43 1997  Jason Merrill  <jason@yorick.cygnus.com>
7856
7857         * call.c (build_scoped_method_call): Complain if the scope isn't a
7858         base.
7859
7860 Wed Feb 26 11:31:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
7861
7862         * parse.y (left_curly): Don't crash on erroneous type.
7863
7864         * init.c (build_delete): Fix type of ref.
7865
7866 Tue Feb 25 12:41:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
7867
7868         * search.c (get_vbase_1): Renamed from get_vbase.
7869         (get_vbase): Wrapper, now non-static.
7870         (convert_pointer_to_vbase): Now static.
7871
7872         * call.c (build_scoped_method_call): Accept a binfo for BASETYPE.
7873         * init.c (build_delete): Pass one.
7874         (build_partial_cleanup_for): Use build_scoped_method_call.
7875         * decl.c (finish_function): Pass a binfo.
7876
7877 Mon Feb 24 15:00:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
7878
7879         * call.c (build_over_call): Only synthesize non-trivial copy ctors.
7880
7881         * typeck.c (build_c_cast): Lose other reference to flag.
7882
7883         * call.c (build_field_call): Don't look for [cd]tor_identifier.
7884         * decl2.c (delete_sanity): Remove meaningless use of
7885         LOOKUP_HAS_IN_CHARGE.
7886         * decl.c (finish_function): Use build_scoped_method_call instead
7887         of build_delete for running vbase dtors.
7888         * init.c (build_delete): Call overload resolution code instead of
7889         duplicating it badly.
7890
7891 Thu Feb 20 15:12:15 1997  Jason Merrill  <jason@yorick.cygnus.com>
7892
7893         * call.c (build_over_call): Call mark_used before trying to elide
7894         the call.
7895
7896         * decl.c (implicitly_declare): Don't set DECL_ARTIFICIAL.
7897
7898 Wed Feb 19 11:18:53 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7899
7900         * typeck.c (build_modify_expr): Always pedwarn for a cast to
7901         non-reference used as an lvalue.
7902
7903 Wed Feb 19 10:35:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
7904
7905         * cvt.c (cp_convert_to_pointer): Convert from 0 to a pmf properly.
7906
7907 Tue Feb 18 15:40:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
7908
7909         * parse.y (handler): Fix template typo.
7910
7911 Sun Feb 16 02:12:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
7912
7913         * error.c (lang_decl_name): New fn.
7914         * tree.c (lang_printable_name): Use it.
7915
7916 Fri Feb 14 16:57:05 1997  Mike Stump  <mrs@cygnus.com>
7917
7918         * g++spec.c: Include config.h so that we can catch bzero #defines
7919         from the config file.
7920
7921 Tue Feb 11 13:50:48 1997  Mike Stump  <mrs@cygnus.com>
7922
7923         * new1.cc: Include a declaration for malloc, to avoid warning, and
7924         avoid lossing on systems that require one (ones that define malloc
7925         in xm.h).
7926
7927 Mon Feb 10 22:51:13 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
7928
7929         * decl2.c (max_tinst_depth): New variable.
7930         (lang_decode_option): Parse "-ftemplate-depth-NN" command line
7931         option.
7932         * pt.c (max_tinst_depth): Variable moved.
7933         * lang-options.h: Declare "-ftemplate-depth-NN" command line option
7934         as legal.
7935
7936 Fri Feb  7 15:43:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
7937
7938         * decl.c (xref_basetypes): Allow a base class that depends on
7939         template parms to be incomplete.
7940
7941         * decl2.c (build_expr_from_tree): Support typeid(type).
7942         * rtti.c (get_typeid): Support templates.
7943         (expand_si_desc, expand_class_desc): Fix string length.
7944         (expand_ptr_desc, expand_attr_desc, expand_generic_desc): Likewise.
7945
7946 Tue Feb  4 11:28:24 1997  Jason Merrill  <jason@yorick.cygnus.com>
7947
7948         * pt.c (unify, case TEMPLATE_CONST_PARM): Use cp_tree_equal.
7949
7950         * pt.c (tsubst): Put it back for -fno-ansi-overloading.
7951
7952 Mon Feb  3 18:41:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
7953
7954         * pt.c (tsubst, case FUNCTION_DECL): Lose obsolete code that
7955         smashes together template and non-template decls of the same
7956         signature.
7957
7958 Thu Jan 30 19:18:00 1997  Jason Merrill  <jason@yorick.cygnus.com>
7959
7960         * pt.c (tsubst): Don't recurse for the type of a TYPENAME_TYPE.
7961
7962 Wed Jan 29 11:40:35 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7963
7964         * decl.c (duplicate_decls): Next route, pedwarn about different
7965         exceptions if -pedantic *or* olddecl !DECL_IN_SYSTEM_HEADER.
7966
7967 Tue Jan 28 20:43:29 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
7968
7969         * cp-tree.h (HAS_DEFAULT_IMPLEMENTATION): Delete macro.
7970         (struct lang_type): Delete has_default_implementation member.
7971         Increase dummy to 21.
7972         * decl.c (start_method): Delete usage.
7973
7974         * cp-tree.h (build_call, null_ptr_cst_p, in_function_p,
7975         store_after_parms, start_decl_1, auto_function): Add decls.
7976         (get_arglist_len_in_bytes, declare_implicit_exception,
7977         have_exceptions_p, make_type_decl, typedecl_for_tag,
7978         store_in_parms, pop_implicit_try_blocks, push_exception_cleanup,
7979         build_component_type_expr, cplus_exception_name,
7980         {make,clear}_anon_parm_name, dont_see_typename): Removed decls.
7981         * call.c (build_this): Make static.
7982         (is_complete): Likewise.
7983         (implicit_conversion): Likewise.
7984         (reference_binding): Likewise.
7985         (standard_conversion): Likewise.
7986         (strip_top_quals): Likewise.
7987         (non_reference): Likewise.
7988         (build_conv): Likewise.
7989         (user_harshness): Likewise.
7990         (rank_for_ideal): Likewise.
7991         * decl.c (start_decl_1): Delete forward decl.
7992         (push_decl_level): Make static.
7993         (resume_binding_level): Make static.
7994         (namespace_bindings_p): Make static.
7995         (declare_namespace_level): Make static.
7996         (lookup_name_real): Make static.
7997         (duplicate_decls): Make static.  Take register off NEWDECL and
7998         OLDDECL parm decls.
7999         * decl2.c (get_sentry): Make static.
8000         (temp_name_p): Delete fn.
8001         * except.c (auto_function): Delete decl.
8002         * lex.c (handle_{cp,sysv}_pragma): Make static.
8003         (handle_sysv_pragma) [HANDLE_SYSV_PRAGMA]: Add forward decl.
8004         * method.c (do_build_{copy_constructor,assign_ref}): Make static.
8005         * pt.c (tsubst_expr_values): Make static.
8006         * rtti.c (combine_strings): Delete decl.
8007
8008 Tue Jan 28 16:40:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
8009
8010         * pt.c (push_template_decl): Handle getting a typedef.
8011
8012         * call.c (build_new_function_call): Complain about void arg.
8013
8014 Tue Jan 28 15:25:09 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
8015
8016         * decl.c (duplicate_decls): Give pedwarn of different exceptions
8017         if -pedantic, instead of olddecl !DECL_IN_SYSTEM_HEADER.
8018
8019 Mon Jan 27 19:21:29 1997  Mike Stump  <mrs@cygnus.com>
8020
8021         * except.c (expand_throw): Don't expand the cleanup tree here,
8022         since we are not going to write the rtl out.  Fixes problem with
8023         -g -O on SPARC.
8024
8025 Mon Jan 27 16:24:35 1997  Sean McNeil  <sean@mcneil.com>
8026
8027         * Make-lang.in: Add $(exeext) as necessary.
8028
8029 Mon Jan 27 13:20:39 1997  Mike Stump  <mrs@cygnus.com>
8030
8031         * parse.y (handler_seq): Must have at least one catch clause.
8032
8033 Sat Jan 25 12:00:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
8034
8035         * call.c (add_builtin_candidate): Restore ?: hack.
8036
8037         * decl.c (grok_op_properties): More warnings.
8038
8039 Sat Jan 25 08:50:03 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
8040
8041         * decl.c (duplicate_decls): On second thought, do it as a pedwarn
8042         still but only if !DECL_IN_SYSTEM_HEADER (olddecl).
8043
8044         * decl.c (duplicate_decls): Scale back to a warning, and only do
8045         'em if -pedantic.
8046
8047 Fri Jan 24 17:52:54 1997  Mike Stump  <mrs@cygnus.com>
8048
8049         * decl.c (duplicate_decls): pedwarn mismatched exception
8050         specifications.
8051
8052 Thu Jan 23 18:18:54 1997  Mike Stump  <mrs@cygnus.com>
8053
8054         * call.c (build_new_method_call): Don't display the invisible
8055         argument for controlling virtual bases.
8056
8057 Thu Jan 23 16:48:10 1997  Mike Stump  <mrs@cygnus.com>
8058
8059         * new: Add nothrow new and delete, bad_alloc and throw specifications
8060         for delete.
8061         * decl.c (init_decl_processing): Add throw specification for delete.
8062         * new.cc (nothrow): Define.
8063         * lex.c (real_yylex): Removing warning that throw and friends are
8064         keywords.
8065         * new1.cc (operator new (size_t sz, const nothrow_t&)): Define.
8066         * new2.cc (operator new[] (size_t sz, const nothrow_t&): Define.
8067         * Make-lang.in: Add new{1,2}.{cc,o}.
8068
8069 Thu Jan 23 16:39:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
8070
8071         * lex.c (cons_up_default_function): Fix return type of synth op=.
8072
8073         * init.c (emit_base_init): Add warnings for uninitialized members
8074         and bases.
8075
8076         * decl.c (xref_basetypes): Add warning for non-polymorphic type
8077         with destructor used as base type.
8078
8079         * decl.c (grok_op_properties): Add warning for op= returning void.
8080         * typeck.c (c_expand_return): Add warning for op= returning anything
8081         other than *this.
8082
8083         * class.c (finish_struct_1): Add warning for class with pointers
8084         but not copy ctor or copy op=.
8085
8086         * cp-tree.h (TI_PENDING_TEMPLATE_FLAG): New macro.
8087         * pt.c (add_pending_template): Use it instead of LANG_FLAG_0.
8088         (instantiate_template): If -fexternal-templates, add this
8089         instantiation to pending_templates.
8090
8091         * decl2.c (copy_assignment_arg_p): Disable old hack to support
8092         Booch components.
8093
8094 Tue Jan 21 18:32:04 1997  Mike Stump  <mrs@cygnus.com>
8095
8096         * cvt.c (cp_convert): Pedwarn enum to pointer conversions.
8097
8098 Mon Jan 20 17:59:51 1997  Jason Merrill  <jason@yorick.cygnus.com>
8099
8100         * call.c (standard_conversion): Handle getting references.  Tack
8101         on RVALUE_CONV here.  Do it for non-class types, too.
8102         (reference_binding): Pass references to standard_conversion.
8103         (implicit_conversion): Likewise.
8104         (add_builtin_candidate): Disable one ?: kludge.
8105         (convert_like): Handle RVALUE_CONVs for non-class types.
8106         (joust): Disable the other ?: kludge.
8107
8108 Mon Jan 20 14:53:13 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
8109
8110         * decl.c (init_decl_processing): Add code to build up common
8111         function types beforehand, to avoid creation then removal of
8112         things already in the hash table.
8113
8114 Mon Jan 20 14:43:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
8115
8116         * decl.c (finish_function): Also zero out DECL_INCOMING_RTL for
8117         the arguments.
8118
8119         * error.c (dump_expr, TEMPLATE_CONST_PARM): Don't require
8120         current_template_parms.
8121
8122 Fri Jan 17 10:25:42 1997  Jason Merrill  <jason@yorick.cygnus.com>
8123
8124         * search.c (lookup_field): Don't return a function, check want_type.
8125
8126 Thu Jan 16 18:14:35 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
8127
8128         * init.c (build_new): Make sure PLACEMENT has a type.
8129
8130 Thu Jan 16 17:40:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
8131
8132         * init.c (build_new): Support new (nothrow).
8133
8134 Wed Jan 15 12:38:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
8135
8136         * pt.c (instantiate_decl): Also do push_to_top_level before setting
8137         up DECL_INITIAL.
8138
8139         * cp-tree.h (PARM_DEFAULT_FROM_TEMPLATE): New macro.
8140         * pt.c (tsubst): Defer instantiation of default args.
8141         * call.c (build_over_call): Until here.
8142
8143 Wed Jan 15 10:08:10 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
8144
8145         * search.c (lookup_field): Make sure we have an
8146         IDENTIFIER_CLASS_VALUE before we try to return it.
8147
8148 Thu Jan  9 07:19:01 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
8149
8150         * call.c (build_method_call): Delete unused var PARM.
8151         (build_overload_call_real): Likewise.
8152         (build_object_call): Delete unused var P.
8153         (build_new_op): Likewise.
8154         * decl.c (builtin_type_tdescs_{arr, len, max}): #if 0 out static
8155         var definitions, which are never used.
8156         (shadow_tag): Delete unused var FN.
8157         * expr.c (cplus_expand_expr): Delete unused var ORIGINAL_TARGET.
8158         * init.c (build_new): Delete unused var ALLOC_TEMP.
8159         * method.c (hack_identifier): Delete unused var CONTEXT.
8160         (do_build_copy_constructor): Delete unused var NAME.
8161         (synthesize_method): Delete unused var BASE.
8162         * pt.c (lookup_template_class): Delete unused var CODE_TYPE_NODE.
8163         * rtti.c (build_headof): Delete unused var VPTR.
8164         (get_typeid): Delete unused var T.
8165         * typeck.c (build_conditional_expr): Delete unused vars ORIG_OP1
8166         and ORIG_OP2.
8167         (build_ptrmemfunc): Delete unused vars U and NINDEX.
8168         * typeck2.c (build_functional_cast): Delete unused var BINFO.
8169
8170 Wed Jan  8 13:09:54 1997  Jason Merrill  <jason@yorick.cygnus.com>
8171
8172         * search.c (lookup_field): Use IDENTIFIER_CLASS_VALUE to look up
8173         things in a type being defined.
8174         * decl.c (finish_enum): Reverse the values so that they are in
8175         the correct order.
8176
8177         * pt.c (instantiate_class_template): Don't initialize
8178         BINFO_BASETYPES until the vector is filled out.
8179         (unify): Don't abort on conflicting bindings, just fail.
8180         (instantiate_decl): Do push_tinst_level before any tsubsting.
8181
8182         * method.c (build_overload_value): Handle getting a
8183         TEMPLATE_CONST_PARM for a pointer.
8184
8185 Tue Jan  7 14:00:58 1997  Jason Merrill  <jason@yorick.cygnus.com>
8186
8187         * init.c (expand_member_init): Don't give 'not a base' error for
8188         templates.
8189
8190         * pt.c (instantiate_decl): Call import_export_decl later.
8191
8192         * pt.c (instantiate_class_template): Return a value.
8193
8194         * parse.y (extension): New rule for __extension__.
8195         (extdef, unary_expr, decl, component_decl): Use it.
8196
8197 Tue Jan  7 09:20:28 1997  Mike Stump  <mrs@cygnus.com>
8198
8199         * class.c (base_binfo): Remove unused base_has_virtual member.
8200         (finish_base_struct): Likewise.
8201         (finish_struct_1): Likewise.
8202
8203 Tue Dec 31 20:25:50 1996  Mike Stump  <mrs@cygnus.com>
8204
8205         * search.c (expand_upcast_fixups): Fix bogus code generation
8206         problem where the generated code uses the wrong index into the
8207         runtime built vtable on the stack.  Old code could clobber random
8208         stack values.
8209
8210 Tue Dec 31 15:16:56 1996  Mike Stump  <mrs@cygnus.com>
8211
8212         * init.c (perform_member_init): Make sure the partial EH cleanups
8213         live on the function_obstack.
8214
8215 Fri Dec 27 10:31:40 1996  Paul Eggert  <eggert@twinsun.com>
8216
8217         * Make-lang.in (g++spec.o): Don't use $< with an explicit target;
8218         this isn't portable to some versions of `make' (e.g. Solaris 2.5.1).
8219
8220 Tue Dec 24 10:24:03 1996  Jeffrey A Law  (law@cygnus.com)
8221
8222         * decl.c (grokvardecl): Avoid ANSI style initialization.
8223
8224 Sun Dec 22 04:22:06 1996  Jason Merrill  <jason@yorick.cygnus.com>
8225
8226         * pt.c (tsubst): Tweak arg types for a FUNCTION_TYPE.
8227
8228 Fri Dec 20 17:09:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
8229
8230         * pt.c (instantiate_class_template): Call grok_{ctor,op}_properties.
8231
8232 Fri Dec 20 12:17:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8233
8234         * g++spec.c (lang_specific_driver): Put missing hyphen in front of
8235         arguments we compare against.  Start the count of I at 1, not 0,
8236         since argv[0] is still the command.
8237
8238 Thu Dec 19 11:53:57 1996  Stan Shebs  <shebs@andros.cygnus.com>
8239
8240         * lang-specs.h: Accept .cp as an C++ extension.
8241
8242 Mon Dec 16 22:43:31 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8243
8244         * cp-tree.h (ptr_reasonably_similar): Add decl.
8245
8246 Thu Dec 12 15:00:35 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8247
8248         * decl.c (grokvardecl): Change SPECBITS parm to be the SPECBITS_IN
8249         pointer.  New local SPECBITS with the parm's value.
8250         (grokdeclarator): Pass &specbits down.
8251
8252         * parse.y (expr_no_commas): Make sure $$ is not an error_mark_node
8253         before we try to do C_SET_EXP_ORIGINAL_CODE on it.
8254
8255         * search.c (envelope_add_decl): Check that the CLASSTYPE_CID of
8256         CONTEXT is not 0 before we try to use TYPE_DERIVES_FROM.
8257
8258         * decl.c (cplus_expand_expr_stmt): Only expand the expr if EXP is
8259         not an error_mark_node.
8260
8261 Sat Dec  7 17:20:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
8262
8263         * cp-tree.h (TYPE_MAIN_DECL): Use TYPE_STUB_DECL.
8264         * *.c: Use TYPE_MAIN_DECL instead of TYPE_NAME where appropriate.
8265         
8266 Fri Dec  6 14:40:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
8267
8268         * decl.c (grokdeclarator): When giving an anonymous struct a name,
8269         replace TYPE_NAME instead of TYPE_IDENTIFIER (so TYPE_STUB_DECL is
8270         not affected).
8271
8272         * typeck2.c (build_m_component_ref): If component is a pointer
8273         to data member, resolve the OFFSET_REF now.
8274
8275         * call.c (convert_like): Don't go into infinite recursion.
8276
8277         * pt.c (coerce_template_parms): Use tsubst_expr for non-type args.
8278
8279         * class.c (finish_struct_1): Set DECL_ARTIFICIAL on the vptr.
8280         * tree.c (layout_basetypes): And on the vbase ptr.
8281
8282 Thu Dec  5 02:11:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
8283
8284         * decl.c (BOOL_TYPE_SIZE): Define in terms of POINTER_SIZE or
8285         CHAR_TYPE_SIZE so bool is always the same size as another type.
8286
8287         * decl.c (pushtag): Set DECL_IGNORED_P for DWARF, too.
8288
8289 Tue Dec  3 23:18:37 1996  Jason Merrill  <jason@yorick.cygnus.com>
8290
8291         * decl2.c (grok_x_components): Remove synthesized methods from
8292         TYPE_METHODS of an anonymous union, complain about member
8293         functions.
8294         * decl.c (shadow_tag): Wipe out memory of synthesized methods in
8295         anonymous unions.
8296         (finish_function): Just clear the DECL_RTL of our arguments.
8297
8298 Fri Nov 29 21:54:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
8299
8300         * decl2.c (finish_file): Emit DWARF debugging info for static data
8301         members.
8302
8303         * pt.c (tsubst): If t is a stub decl, return the stub decl for type.
8304
8305 Wed Nov 27 14:47:15 1996  Bob Manson  <manson@charmed.cygnus.com>
8306
8307         * typeck.c (build_component_ref): Don't die if COMPONENT isn't a
8308         IDENTIFIER_NODE.
8309
8310 Wed Nov 27 16:05:19 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
8311
8312         * Make-lang.in (g++-cross$(exeext)): Fix typo.
8313
8314 Wed Nov 27 08:14:00 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8315
8316         Make the g++ driver now be a standalone program, rather than one
8317         that tries to run the gcc driver after munging up the options.
8318         * Make-lang.in (g++.c, g++spec.o): New rules.
8319         (g++.o): New rule, based on gcc.o with -DLANG_SPECIFIC_DRIVER
8320         added.
8321         (g++$(exeext)): New rule, based on xgcc rule.
8322         (g++-cross$(exeext)): Now just copies g++$(exeext) over.
8323         * g++spec.c: New file.
8324         * g++.c: Removed file.
8325
8326 Tue Nov 26 19:01:09 1996  Mike Stump  <mrs@cygnus.com>
8327
8328         * cvt.c (build_up_reference): Arrange for any temporary values
8329         that have been keep in registers until now to be put into memory.
8330
8331 Mon Nov 25 15:16:41 1996  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8332
8333         * Make-lang.in (c++.stage[1234]): Depend upon stage[1-4]-start, so
8334         that make -j3 bootstrap works better.
8335
8336 Sun Nov 24 02:09:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
8337
8338         * decl.c (pushtag): Do pushdecl for anon tags.
8339
8340 Thu Nov 21 16:30:24 1996  Jason Merrill  <jason@yorick.cygnus.com>
8341
8342         * typeck.c (c_expand_return): Fix logic.
8343         (unary_complex_lvalue): Avoid unused warning on address of INIT_EXPR.
8344
8345 Wed Nov 20 18:47:31 1996  Bob Manson  <manson@charmed.cygnus.com>
8346
8347         * g++.c (main): Make sure arglist has a final NULL entry.  Add
8348         PEXECUTE_LAST to the flags passed to pexecute, as otherwise
8349         stdin/stdout of the invoked program are redirected to
8350         nowheresville.
8351
8352 Tue Nov 19 16:12:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
8353
8354         * decl.c (implicitly_declare): Set DECL_ARTIFICIAL.
8355
8356 Tue Nov 19 15:48:19 1996  Mike Stump  <mrs@cygnus.com>
8357
8358         * init.c (resolve_offset_ref): Handle obj.vfn better.
8359         * typeck.c (build_component_ref): Set TREE_TYPE on result from
8360         build_vfn_ref.
8361
8362 Tue Nov 19 13:14:33 1996  Mike Stump  <mrs@cygnus.com>
8363
8364         * typeck.c (convert_for_assignment): Also handle anachronistic
8365         implicit conversions from (::*)() to cv void*.
8366         * cvt.c (cp_convert_to_pointer): Likewise.
8367
8368 Mon Nov 18 17:05:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
8369
8370         * lex.c (handle_cp_pragma): Fix bogus warning.
8371
8372 Mon Nov 18 16:10:43 1996  Mike Stump  <mrs@cygnus.com>
8373
8374         * cvt.c (cp_convert_to_pointer): Avoid thinking a POINTER_TYPE
8375         (METHOD_TYPE) is a TYPE_PTRMEMFUNC_P.
8376
8377 Thu Nov 14 23:18:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
8378
8379         * class.c (finish_struct_1): Support DWARF2_DEBUG.
8380         * search.c (dfs_debug_mark): Likewise.
8381         * decl2.c (finish_vtable_vardecl): Likewise.
8382         * decl.c (pushtag, finish_enum): Likewise.
8383         * lex.c (check_newline): Use debug_* instead of calling *out
8384         functions directly.
8385
8386 Thu Nov 14 15:21:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8387
8388         * Make-lang.in (cplib2.ready): Add else clause to avoid problems
8389         on some picky hosts.
8390
8391 Wed Nov 13 12:32:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
8392
8393         * class.c (finish_struct_1): A class has a non-trivial copy
8394         constructor if it has virtual functions.
8395
8396         * cvt.c (cp_convert): Always call a constructor.
8397
8398         * call.c (reference_binding): Still tack on a REF_BIND
8399         for bad conversions.
8400         (build_user_type_conversion_1): Propagate ICS_BAD_FLAG.
8401
8402         * typeck.c (convert_arguments): Pass LOOKUP_ONLYCONVERTING.
8403         (c_expand_return): Likewise.
8404         * typeck2.c (digest_init): Likewise for { }.
8405         * init.c (expand_aggr_init_1): Keep the CONSTRUCTOR handling.
8406         * cvt.c (cp_convert): Handle failure better.
8407
8408 Wed Nov 13 11:51:20 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8409
8410         * g++.c (main): Also set PEXECUTE_SEARCH, to make the invocation
8411         of GCC be path-relative. 
8412
8413 Wed Nov 13 11:27:16 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
8414
8415         * Make-lang.in (g++-cross): G++-cross doesn't need version.o, but
8416         it does need choose-temp.o and pexecute.o.
8417
8418 Wed Nov 13 07:53:38 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8419
8420         * g++.c (error) [!HAVE_VPRINTF]: Put error back for the only time
8421         that we still use it.
8422         (P_tmpdir, R_OK, W_OK, X_OK) [__MSDOS__]: Delete unnecessary macros.
8423
8424 Wed Nov 13 02:00:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
8425
8426         * init.c (expand_default_init): Avoid calling constructors to 
8427         initialize reference temps.
8428
8429         * cvt.c (convert_to_reference): Fix.
8430
8431 Tue Nov 12 19:10:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
8432
8433         * cvt.c (cp_convert): Simplify for flag_ansi_overloading.
8434         (convert_to_reference): Likewise.
8435         * typeck.c (convert_for_initialization): Likewise.
8436         * init.c (expand_default_init): Likewise.
8437         (expand_aggr_init_1): Likewise.
8438         * cp-tree.h (CONV_NONCONVERTING): Lose.
8439         * typeck.c (build_c_cast): Lose allow_nonconverting parm.
8440         * *.c: Adjust.
8441         * call.c (build_user_type_conversion_1): Assume LOOKUP_ONLYCONVERTING.
8442
8443 Tue Nov 12 16:29:04 1996  Brendan Kehoe  <brendan@canuck.cygnus.com>
8444
8445         * pt.c (tsubst_expr): Reverse args to expand_start_catch_block.
8446
8447 Tue Nov 12 15:26:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
8448
8449         * init.c (expand_aggr_init_1): Don't crash on non-constructor
8450         TARGET_EXPR.
8451
8452 Tue Nov 12 14:00:50 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8453
8454         * g++.c: Include gansidecl.h.
8455         (VPROTO, PVPROTO, VA_START): Delete.
8456         (choose_temp_base_try, choose_temp_base, perror_exec,
8457         run_dos) [__MSDOS__]: Delete fns.
8458         (pfatal_with_name): Delete fn.
8459         (temp_filename): Declare like in gcc.c.
8460         (pexecute, pwait, choose_temp_base): Declare from gcc.c.
8461         (error_count, signal_count): Define.
8462         (error): Delete both definitions.
8463         (PEXECUTE_{FIRST,LAST,SEARCH,VERBOSE}): Define from gcc.c.
8464         (pfatal_pexecute): Add fn from gcc.c.
8465         (main): Rename local VERBOSE var to VERBOSE_FLAG.  Rewrite the
8466         code to use the pexecute stuff also used by gcc.c.
8467         (MIN_FATAL_STATUS): Define.
8468         * Make-lang.in (g++): Add dependency on and linking with
8469         choose-temp.o and pexecute.o.
8470
8471         * cp-tree.h: Include gansidecl.h.
8472         (STDIO_PROTO): Delete #undef/#define.
8473         * cvt.c (NULL): Delete #undef/#define.
8474         * expr.c (NULL): Likewise.
8475         * init.c (NULL): Likewise.
8476         * rtti.c (NULL): Likewise.
8477         * xref.c (NULL): Likewise.
8478
8479         * cp-tree.h (build_user_type_conversion): Add prototype.
8480         * call.c (build_user_type_conversion): Delete prototype.  Correct
8481         decl of FLAGS arg to be an int.
8482         * cvt.c (build_user_type_conversion): Likewise.
8483
8484 Tue Nov 12 12:16:20 1996  Jason Merrill  <jason@yorick.cygnus.com>
8485
8486         * cp-tree.def: Add TRY_BLOCK and HANDLER.
8487         * except.c (expand_start_catch_block): Support templates.
8488         * parse.y (try_block, handler_seq): Likewise.
8489         * pt.c (tsubst_expr): Support TRY_BLOCK and HANDLER.
8490
8491 Mon Nov 11 13:57:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
8492
8493         * pt.c (current_template_args): New fn.
8494         (push_template_decl): Use it.
8495         * decl.c (grokdeclarator): Use it.
8496
8497         * decl2.c (build_expr_from_tree): Dereference ref vars.
8498
8499         * decl.c (grokdeclarator): Generalize handling of TYPENAME_TYPEs in
8500         the decl-specifier-seq.
8501
8502         * decl.c (grok_op_properties): Don't force the type of a conversion
8503         op to be complete.  Don't warn about converting to the same type
8504         for template instantiations.
8505
8506         * decl2.c (finish_file): Don't call instantiate_decl on synthesized
8507         methods.
8508
8509 Mon Nov 11 13:20:34 1996  Bob Manson  <manson@charmed.cygnus.com>
8510
8511         * typeck.c (get_delta_difference): Remove previous bogusness.
8512         Don't give errors if force is set.
8513
8514 Fri Nov  8 17:38:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
8515
8516         * decl2.c (finish_file): Don't emit debug info.
8517         * decl.c (pushdecl): Lose obsolete code.
8518         (grokdeclarator): Still do the long long thing after complaining.
8519         * search.c (note_debug_info_needed): Don't do anything if we're in a 
8520         template.
8521         * method.c (synthesize_method): For non-local classes,
8522         push_to_top_level first.
8523
8524 Fri Nov  8 11:52:28 1996  Bob Manson  <manson@charmed.cygnus.com>
8525
8526         * typeck.c (get_delta_difference): Add no_error parameter.
8527         (build_ptrmemfunc): Call get_delta_difference with no_error set;
8528         we don't want error messages when converting unrelated
8529         pointer-to-member functions.
8530
8531 Thu Nov  7 11:16:24 1996  Mike Stump  <mrs@cygnus.com>
8532
8533         * error.c (dump_expr): Improve the wording on error messages that
8534         involve pointer to member functions.
8535
8536 Tue Nov  5 17:12:05 1996  Mike Stump  <mrs@cygnus.com>
8537
8538         * cvt.c (cp_convert_to_pointer): Move code for conversions from
8539         (::*)() to void* or (*)() up a bit, so that we can convert from
8540         METHOD_TYPEs as well.
8541
8542 Tue Nov  5 14:54:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
8543
8544         * rtti.c (get_tinfo_fn): Make sure 'type' is permanent.
8545         There are no 'member' types.
8546         (get_tinfo_fn_dynamic): Diagnose typeid of overloaded fn.
8547         (build_x_typeid): Handle errors.
8548
8549 Mon Nov  4 17:43:12 1996  Mike Stump  <mrs@cygnus.com>
8550
8551         * typeck.c (convert_for_assignment): Handle anachronistic implicit
8552         conversions from (::*)() to void* or (*)().
8553         * cvt.c (cp_convert_to_pointer): Likewise.
8554         (cp_convert_to_pointer_force): Remove cp_convert_to_pointer
8555         conversions from here.
8556         * decl2.c (lang_decode_option): Add -W{no-,}pmf-conversions.
8557         * lang-options.h: Likewise.
8558         * decl2.c (warn_pmf2ptr): Define.
8559         * cp-tree.h: Declare it.
8560         * typeck2.c (digest_init): Allow pmfs down into
8561         convert_for_initialization.
8562
8563 Sun Nov  3 09:43:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
8564
8565         * typeck.c (c_expand_return): Fix for returning overloaded fn.
8566
8567 Fri Nov  1 08:53:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
8568
8569         * cp-tree.h (DIRECT_BIND): Change from INDIRECT_BIND.
8570         * decl.c (grok_reference_init): Pass DIRECT_BIND.
8571         * cvt.c (build_up_reference): Don't mark 'this' addressable.  Use
8572         DIRECT_BIND.
8573         * call.c (convert_like): Don't pass INDIRECT_BIND.
8574         * typeck.c (convert_arguments): Likewise.
8575         * typeck.c (mark_addressable): Allow &this if flag_this_is_variable.
8576
8577 Thu Oct 31 17:08:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
8578
8579         * typeck.c (mark_addressable): Support TARGET_EXPR, unify with
8580         similar code in build_up_ref.
8581         * cvt.c (build_up_reference): Drastically simplify.
8582
8583 Mon Oct 28 12:45:05 1996  Jeffrey A Law  (law@cygnus.com)
8584
8585         * typeck.c (signed_or_unsigned_type): If the given type already
8586         as the correct signedness, then just return it.
8587
8588         * typeck.c ({un,}signed_type): If can't do anything, call
8589         signed_or_unsigned_type.
8590
8591 Thu Oct 24 14:21:59 1996  Bob Manson  <manson@charmed.cygnus.com>
8592
8593         * decl2.c (copy_assignment_arg_p): Don't buy the farm if
8594         current_class_type is NULL.
8595
8596 Wed Oct 23 00:43:10 1996  Jason Merrill  <jason@gerbil.cygnus.com>
8597
8598         * class.c (finish_struct_1): Avoid empty structs by adding a field
8599         so layout_type gets the mode right.
8600
8601         * typeck.c (c_expand_return): Drastically simplify.
8602
8603 Mon Oct 21 22:34:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
8604
8605         * typeck.c (decay_conversion): Handle overloaded methods.
8606
8607 Fri Oct 18 16:03:48 1996  Jason Merrill  <jason@yorick.cygnus.com>
8608
8609         * call.c (build_over_call): A TARGET_EXPR has side-effects.
8610
8611 Thu Oct 17 11:31:59 1996  Mike Stump  <mrs@cygnus.com>
8612
8613         * cvt.c (convert_to_pointer_force): Add code to support pointer to
8614         member function to pointer to function conversions.
8615         * init.c (resolve_offset_ref): Add code to allow faked up objects,
8616         ignoring them if they are not used, and giving an error, if they
8617         are needed.
8618         * typeck.c (get_member_function_from_ptrfunc): Fold e1 to improve
8619         code, and so that we can give an error, if we needed an object,
8620         and one was not provided.
8621         (build_c_cast): Don't call default_conversion when we want to
8622         convert to pointer to function from a METHOD_TYPE.
8623
8624 Mon Oct 14 00:28:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
8625
8626         * Make-lang.in (cplib2.ready): Fix logic.
8627
8628         * decl.c (shadow_tag): Only complain about non-artificial function
8629         members.
8630
8631         * class.c (finish_struct_1): Add synthesized methods to TYPE_METHODS.
8632
8633 Fri Oct 11 16:12:40 1996  Jason Merrill  <jason@yorick.cygnus.com>
8634
8635         * expr.c (cplus_expand_expr): Pre-tweak call_target like
8636         expand_inline_function would.
8637
8638         * pt.c (mark_decl_instantiated): If extern_p, call
8639         mark_inline_for_output.
8640
8641 Thu Oct 10 15:58:08 1996  Mike Stump  <mrs@cygnus.com>
8642
8643         * typeck.c (unary_complex_lvalue): Add code to handle intermediate
8644         pmd conversions.
8645
8646         * typeck.c (get_delta_difference): Fix wording, as we can be used
8647         for pointer to data members.
8648
8649 Tue Oct  8 12:43:51 1996  Bob Manson  <manson@charmed.cygnus.com>
8650
8651         * pt.c (tsubst): If the function decl isn't a member of this
8652         template, return a copy of the decl (including copying the
8653         lang-specific part) so we don't hose ourselves later.
8654
8655 Thu Oct  3 16:24:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
8656
8657         * class.c (finish_struct): Remove DWARF-specific tag handling.
8658         * decl.c (pushtag): Likewise.
8659         (finish_function): Always clear DECL_ARGUMENTS on function decls with
8660         no saved RTX.
8661         * decl2.c (finish_file): Emit DWARF debugging info for static data
8662         members.
8663
8664 Wed Oct  2 21:58:01 1996  Bob Manson  <manson@charmed.cygnus.com>
8665
8666         * decl.c (duplicate_decls): Make sure the old DECL_LANG_SPECIFIC
8667         isn't the same as the new one before we whack it.
8668
8669 Mon Sep 30 13:38:24 1996  Jason Merrill  <jason@yorick.cygnus.com>
8670
8671         * class.c, cp-tree.h, cvt.c, decl.c, decl2.c, gxx.gperf, hash.h,
8672         lex.c, method.c, parse.y, typeck.c, typeck2.c: Remove
8673         warn_traditional and warn_strict_prototypes; remove ancient
8674         'overload' code; remove references to flag_traditional.
8675
8676 Mon Sep 30 12:58:40 1996  Mike Stump  <mrs@cygnus.com>
8677
8678         * input.c (sub_getch): Handle 8-bit characters in string literals.
8679
8680 Sun Sep 29 03:12:01 1996  Jason Merrill  <jason@yorick.cygnus.com>
8681
8682         * tree.c (mapcar): Handle CONSTRUCTORs.
8683         (copy_to_permanent): Handle expression_obstack properly.
8684
8685         * Make-lang.in (cplib2.txt): Also depend on the headers.
8686
8687         * rtti.c (get_tinfo_var): Don't assume that POINTER_SIZE ==
8688         INT_TYPE_SIZE.
8689         (expand_class_desc): Use USItype for offset field.
8690         * tinfo.h (struct __class_type_info): Likewise.
8691
8692         * method.c (build_overload_int): TYPE_PRECISION should be applied
8693         to types.
8694
8695 Sat Sep 28 14:44:50 1996  Jason Merrill  <jason@yorick.cygnus.com>
8696
8697         * call.c (build_new_op): A COND_EXPR involving void must be a
8698         builtin.
8699
8700 Fri Sep 27 16:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
8701
8702         * typeck.c (build_x_component_ref): New fn.
8703         (build_object_ref): Use it.
8704         * parse.y (primary): Use it.
8705         * decl2.c (build_expr_from_tree): Use it.
8706         * cp-tree.h: Declare it.
8707
8708         * decl.c (start_decl): variable-sized arrays cannot be initialized.
8709         * error.c (dump_type_suffix): Handle variable arrays.
8710
8711 Fri Sep 27 13:14:05 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8712
8713         * Make-lang.in (exception.o): Put back compiling it with -fPIC.
8714
8715 Fri Sep 27 03:00:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
8716
8717         * decl.c (lookup_name_real): Don't try to look up anything in a
8718         TYPENAME_TYPE.
8719
8720         * tinfo2.cc (__throw_type_match_rtti): Oops.
8721
8722 Thu Sep 26 22:11:05 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8723
8724         * Make-lang.in (exception.o): Use -fno-PIC for now.
8725
8726 Thu Sep 26 10:59:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
8727
8728         * rtti.c (build_dynamic_cast): Pass tinfo fns rather than
8729         calling them.
8730         (get_tinfo_fn_dynamic): Extracted from build_typeid.
8731         * tinfo2.cc (__dynamic_cast): Adjust.
8732         
8733         * rtti.c (build_typeid): Use resolves_to_fixed_type_p.
8734         (build_x_typeid): Likewise.
8735
8736         * parse.y: Call build_x_typeid instead of build_typeid.
8737         * cp-tree.def: Add TYPEID_EXPR.
8738         * pt.c (tsubst_copy): Handle typeid.
8739         * decl2.c (build_expr_from_tree): Likewise.
8740         * rtti.c (build_x_typeid): Throw bad_typeid from here.
8741         (build_typeid): Not here.
8742         * cp-tree.h: Declare build_x_typeid.
8743
8744 Wed Sep 25 17:26:16 1996  Jason Merrill  <jason@yorick.cygnus.com>
8745
8746         * call.c (convert_like): Pull out constant values.
8747
8748         * tree.c (mapcar): Use build_cplus_array_type, not build_array_type.
8749
8750 Wed Sep 25 17:28:53 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
8751
8752         * decl.c (init_decl_processing): Create short int types before
8753         creating size_t in case a machine description needs to use
8754         unsigned short for size_t.
8755
8756 Tue Sep 24 18:18:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
8757
8758         * Make-lang.in (exception.o): Turn off pic.
8759
8760         * tinfo2.cc (__throw_type_match_rtti): Fix cv-variants of the same
8761         type, multi-level ptr conversions.
8762
8763         * rtti.c (call_void_fn): Renamed and genericized from throw_bad_cast.
8764         (throw_bad_cast): Use it.
8765         (throw_bad_typeid): New fn.
8766         (build_typeid): Throw bad_typeid as needed.
8767         Use build_call.
8768         (synthesize_tinfo_fn): Handle functions and arrays before checking
8769         for cv-quals.
8770
8771         * Remove .h from standard C++ headers, add new.h, move into inc
8772         subdirectory.
8773
8774         * exception*: Remove pointer from object, constructors.  Add
8775         default exception::what that uses type_info::name.  Add
8776         __throw_bad_typeid.
8777
8778         * init.c (build_new): Don't add a cookie to new (void *) T[2].
8779
8780 Mon Sep 23 15:21:53 1996  Jason Merrill  <jason@yorick.cygnus.com>
8781
8782         * Make-lang.in: Building C++ code depends on cc1plus.
8783
8784 Mon Sep 23 12:38:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8785
8786         * decl.c (struct saved_scope): Declare PROCESSING_TEMPLATE_DECL as
8787         a HOST_WIDE_INT, not a tree.
8788
8789 Mon Sep 23 12:36:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
8790
8791         * exception.cc: Don't include <stdlib.h>.
8792
8793         * Make-lang.in (c++.clean): Remove cplib2.*.
8794
8795 Mon Sep 23 09:42:19 1996  Doug Evans  <dje@canuck.cygnus.com>
8796
8797         * parse.y (component_decl_1, component_costructor_declarator case):
8798         Pass attributes/prefix_attributes in tree list.
8799
8800 Mon Sep 23 01:18:50 1996  Jason Merrill  <jason@yorick.cygnus.com>
8801
8802         * tinfo{,2}.cc: #include <stddef.h> instead of <stdlib.h>.
8803
8804 Sun Sep 22 05:31:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
8805
8806         * lex.c (do_identifier): Don't do deferred lookup in a template
8807         header.
8808
8809         * typeck2.c (store_init_value): Oops.
8810
8811         * new.{h,cc}, exception.{h,cc}, typeinfo.h, tinfo{2.cc,.cc,.h}: 
8812         New files for C++ lang-support library.
8813         * Make-lang.in (CXX_EXTRA_HEADERS): Define.
8814         (CXX_LIB2FUNCS): Define.
8815         And rules for building the C++ lang-support code.
8816         * config-lang.in (headers): Define.
8817         (lib2funcs): Define.
8818
8819 Sat Sep 21 19:17:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
8820
8821         * decl2.c (build_expr_from_tree): If CONSTRUCTOR has a type, call
8822         digest_init.
8823         * pt.c (tsubst_copy): Compute type for CONSTRUCTOR.
8824         * typeck2.c (store_init_value): Check for initializing pmf with { }
8825         here.
8826         (process_init_constructor): Not here.
8827
8828 Thu Sep 19 16:41:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
8829
8830         * pt.c (begin_template_parm_list): Increment
8831         processing_template_decl here.
8832         (end_template_parm_list): Not here.
8833         (process_template_parm): No need to add 1 to it now.
8834         * *.c: Use processing_template_decl instead of current_template_parms
8835         to check for being in a template.
8836
8837         * pt.c (uses_template_parms): Handle SCOPE_REF.  Fix CONSTRUCTOR.
8838         (tsubst_copy): Handle CONSTRUCTOR.
8839         (instantiate_decl): Set up context properly for variables.
8840         * decl2.c (build_expr_from_tree): Handle CONSTRUCTOR.
8841         * class.c (finish_struct): Reverse CLASSTYPE_TAGS.
8842
8843 Wed Sep 18 13:30:20 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8844
8845         * lex.c (enum tree_node_kind) [GATHER_STATISTICS]: Put the enum back.
8846
8847 Wed Sep 18 04:24:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
8848
8849         * method.c (make_thunk): Call comdat_linkage before setting the
8850         TREE_CODE.
8851
8852         * decl2.c (comdat_linkage): Use make_decl_one_only.
8853         (import_export_decl): Likewise.
8854         * decl.c (init_decl_processing): Check supports_one_only instead of
8855         SUPPORTS_WEAK.
8856
8857 Sat Sep 14 08:34:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
8858
8859         * decl2.c (grokfield): Tighten checking for access decls.
8860
8861         * decl.c (make_typename_type): Resolve references to
8862         current_class_type.  Set CLASSTYPE_GOT_SEMICOLON.
8863         (lookup_name_real): Types that depend on a template parameter get
8864         an implicit 'typename' unless they're in the current scope.
8865         (start_decl_1): We don't care about incomplete types that depend
8866         on a template parm.
8867         (grokdeclarator): Resolve 'typename's in the type specifier that
8868         refer to members of the current scope.
8869
8870         * call.c (build_over_call): Remove 'inline called before
8871         definition' diagnostic.
8872         (build_method_call): Likewise.
8873         * decl.c (duplicate_decls): Downgrade 'used before declared
8874         inline' to a warning, only with -Winline.
8875
8876 Fri Sep 13 17:31:40 1996  Stan Shebs  <shebs@andros.cygnus.com>
8877
8878         * mpw-make.sed: Fix include paths, add @DASH_C_FLAG@ to compile.
8879
8880 Wed Sep 11 22:38:13 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
8881
8882         * call.c (build_method_call): When calling a signature
8883         default implementation, as in other cases, let instance_ptr simply
8884         be instance.
8885
8886 Wed Sep 11 22:14:44 1996  Mike Stump  <mrs@cygnus.com>
8887
8888         * parse.y (simple_stmt): Cleanup and use do_poplevel ().
8889
8890 Wed Sep 11 22:10:48 1996  Mike Stump  <mrs@cygnus.com>
8891
8892         * except.c (expand_start_catch_block): Add a pushlevel so that -g
8893         works on hppa and SPARC.
8894
8895 Wed Sep 11 10:18:06 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8896
8897         * typeck.c (build_indirect_ref): Catch PTR being an error_mark_node.
8898
8899 Mon Sep  9 19:51:14 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
8900
8901         * call.c (build_over_call): Check first whether DECL_CONTEXT exists
8902         before testing whether it's a signature.
8903
8904 Sun Sep  8 16:06:57 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
8905
8906         * call.c (build_new_method_call): Don't complain about signature
8907         pointers and references not being an aggr type.
8908         (build_this): If a signature pointer or reference was passed in,
8909         just return it.
8910         (build_new_method_call): If instance is a signature pointer, set
8911         basetype to the signature type of instance.
8912         * sig.c (build_signature_method_call): Deleted basetype and
8913         instance parameters, they can be found as the DECL_CONTEXT of
8914         function and as the first argument passed in.
8915         * cp-tree.h: Changed declaration of build_signature_method_call.
8916         * call.c (build_method_call): Deleted first two arguments in call
8917         of build_signature_method_call.
8918         (build_over_call): Added call to build_signature_method_call.
8919
8920 Thu Sep  5 16:51:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
8921
8922         * typeck.c (build_c_cast): Don't tack a non_lvalue_expr onto a
8923         target_expr.
8924
8925 Thu Sep  5 10:05:38 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8926
8927         * cvt.c (convert_to_reference): Use %#T, not %#D, for error.
8928
8929 Wed Sep  4 17:16:09 1996  Bob Manson  <manson@charmed.cygnus.com>
8930
8931         * except.c (expand_start_try_stmts): Move to except.c in the backend.
8932         (expand_end_try_stmts): Remove.
8933
8934         * init.c (perform_member_init): Use add_partial_entry () instead
8935         of directly manipulating lists.
8936         (emit_base_init): Ditto.
8937
8938 Wed Sep  4 12:14:36 1996  Mike Stump  <mrs@cygnus.com>
8939
8940         * except.c (expand_exception_blocks): Always make sure USE and
8941         CLOBBER insns that came at the end still do, the backend relies
8942         upon this.
8943
8944 Wed Sep  4 07:44:48 1996  Jason Merrill  <jason@yorick.cygnus.com>
8945
8946         * call.c (build_over_call): We can only use a TARGET_EXPR of the
8947         right type.
8948
8949 Tue Sep  3 19:26:05 1996  Jason Merrill  <jason@yorick.cygnus.com>
8950
8951         * cvt.c (convert_to_reference): Revert last change, don't complain
8952         about temp without target decl.
8953
8954 Tue Sep  3 10:22:56 1996  Mike Stump  <mrs@cygnus.com>
8955
8956         * decl.c (grokdeclarator): Don't core dump when void() is given.
8957
8958 Tue Sep  3 02:38:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
8959
8960         * decl.c (copy_args_p): Don't crash.
8961
8962 Fri Aug 30 14:26:57 1996  Mike Stump  <mrs@cygnus.com>
8963
8964         * pt.c (tsubst): And support template args inside the exception
8965         specification.
8966
8967         * pt.c (tsubst): Add support for exception specifications in
8968         template functions.
8969
8970 Fri Aug 30 10:01:55 1996  Mike Stump  <mrs@cygnus.com>
8971
8972         * cp-tree.def (DECL_STMT): Eliminate the throw spec field, only 3
8973         fields now.
8974         * cp-tree.h (start_decl): Eliminate the throw spec parameter.
8975         (start_function): Likewise.
8976         (start_method): Likewise.
8977         (grokfield): Likewise.
8978         (make_call_declarator): Add throw spec parameter.
8979         (set_quals_and_spec): Add routine.
8980         * lex.c (set_quals_and_spec): Likewise.
8981         * decl.h (grokdeclarator): Eliminate the throw spec parameter.
8982         * decl.c (shadow_tag): Eliminate the throw spec parameter to
8983         grokdeclarator.
8984         (groktypename): Likewise.
8985         (start_decl): Eliminate the throw spec parameter.  Eliminate the
8986         throw spec parameter to grokdeclarator.  Eliminate the throw spec
8987         field in DECL_STMT.
8988         (cp_finish_decl): Eliminate the throw spec field in DECL_STMT.
8989         (grokfndecl): Remove useless set of raises.
8990         (grokdeclarator): Eliminate the throw spec parameter.  Eliminate
8991         the throw spec parameter to start_decl.  Pull the throw spec out
8992         of the call declarator.
8993         (grokparms): Eliminate the throw spec parameter to grokdeclarator.
8994         (start_function): Eliminate the throw spec parameter.  Eliminate
8995         the throw spec parameter to grokdeclarator.
8996         (start_method): Likewise.
8997         * decl2.c (grokfield): Likewise.
8998         (grokbitfield): Eliminate the throw spec parameter to grokdeclarator.
8999         (grokoptypename): Likewise.
9000         (finish_file): Eliminate the throw spec parameter to
9001         start_function.  Add throw spec to make_call_declarator.
9002         * except.c (init_exception_processing): Add throw spec to
9003         make_call_declarator.  Eliminate the throw spec parameter to
9004         start_decl.
9005         (expand_start_catch_block): Eliminate the throw spec parameter to
9006         grokdeclarator.
9007         (expand_builtin_throw): Add throw spec to make_call_declarator.
9008         Eliminate the throw spec parameter to start_function.
9009         (start_anon_func): Likewise.
9010         * lex.c (make_call_declarator): Add throw spec parameter.
9011         (set_quals_and_spec): New routine.
9012         (cons_up_default_function): Add throw spec to make_call_declarator.
9013         Eliminate the throw spec parameter to grokfield.
9014         * method.c (synthesize_method): Eliminate the throw spec parameter
9015         to start_function.
9016         * pt.c (process_template_parm): Eliminate the throw spec parameter
9017         to grokdeclarator.
9018         (tsubst): Add throw spec to make_call_declarator.
9019         (tsubst_expr): Eliminate the throw spec parameter to start_decl.
9020         (do_function_instantiation): Eliminate the throw spec parameter to
9021         grokdeclarator.  Eliminate the throw spec parameter to
9022         start_function.
9023         * rtti.c (synthesize_tinfo_fn): Eliminate the throw spec parameter
9024         to start_function.
9025         * parse.y (datadef): Remove non-winning optimization.
9026         (decl): Likewise.
9027         (fndef): Remove ambiguous error productions uncovered by grammer
9028         fixing.
9029         (constructor_declarator): Add exception_specification_opt here.
9030         (component_constructor_declarator): Likewise.
9031         (direct_after_type_declarator): Likewise.
9032         (complex_direct_notype_declarator): Likewise.
9033         (direct_abstract_declarator): Likewise.
9034         (fn.def1): Remove exception_specification_opt.
9035         (fn.def2): Likewise.
9036         (condition): Likewise.
9037         (initdcl0): Likewise.
9038         (initdcl): Likewise.
9039         (notype_initdcl0): Likewise.
9040         (nomods_initdcl0): Likewise.
9041         (component_decl_1): Likewise.
9042         (component_declarator): Likewise.
9043         (after_type_component_declarator0): Likewise.
9044         (after_type_component_declarator): Likewise.
9045         (notype_component_declarator): Likewise.
9046
9047 Wed Aug 28 01:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
9048
9049         * call.c (build_over_call): Also use an INIT_EXPR when
9050         initializing anything from an rvalue.
9051
9052         * call.c (build_over_call): Call stabilize_reference when building
9053         an INIT_EXPR instead of calling the copy ctor.
9054
9055         * call.c (joust): Extend the previous change to all comparisons.
9056
9057         * decl2.c, method.c, lex.c: Use MAKE_DECL_ONE_ONLY and 
9058         NO_LINKAGE_HEURISTICS.
9059
9060         * decl2.c (finish_file): Emit any statics that weren't already.
9061
9062         * typeck.c (build_static_cast): Implement.
9063         * tree.c (build_cplus_new): Handle getting a TARGET_EXPR.
9064         * decl.c (grokparms): Use can_convert_arg instead of
9065         implicit_conversion directly.
9066         (copy_args_p): New fn.
9067         * cvt.c (convert_to_reference): Don't complain about temp with
9068         static_cast.
9069         (build_up_reference): Handle TARGET_EXPRs.
9070         * call.c (build_over_call): Elide unnecessary temps.
9071         (can_convert*): Use new overloading code.
9072
9073 Tue Aug 27 13:12:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
9074
9075         * call.c: Move TYPE_PTR*_MACROS ...
9076         * cp-tree.h: To here.
9077         * typeck.c (build_reinterpret_cast): Implement.
9078
9079         * call.c (add_builtin_candidate): Use TYPE_PTROB_P instead of
9080         ptr_complete_ob.
9081         (joust): If we're comparing a function to a builtin and the worst
9082         conversion for the builtin is worse than the worst conversion for the
9083         function, take the function.
9084
9085         * typeck.c (build_const_cast): Implement.
9086         (comp_ptr_ttypes_const): Like comp_ptr_ttypes, for const_cast.
9087         (comp_ptr_ttypes_reinterpret): Like cpt, for reinterpret_cast.
9088
9089 Tue Aug 27 13:14:58 1996  Bob Manson  <manson@charmed.cygnus.com>
9090
9091         * rtti.c (build_dynamic_cast): Don't try to dereference exprtype
9092         too early. Make sure we explode if exprtype turns out to be a
9093         NULL_TREE when it shouldn't be.
9094
9095 Tue Aug 27 10:56:21 1996  Mike Stump  <mrs@cygnus.com>
9096
9097         * cp-tree.h: New routine make_call_declarator.
9098         * lex.c (make_call_declarator): Define it.
9099         * except.c (init_exception_processing): Use it.
9100         (expand_builtin_throw): Likewise.
9101         (start_anon_func): Likewise.
9102         * decl2.c (finish_file): Likewise.
9103         * lex.c (cons_up_default_function): Likewise.
9104         * parse.y: Likewise.
9105         * pt.c (tsubst): Likewise.
9106         
9107 Mon Aug 26 17:40:03 1996  Mike Stump  <mrs@cygnus.com>
9108
9109         * decl2.c (groktypefield): Remove unused code.
9110
9111 Mon Aug 26 17:00:33 1996  Mike Stump  <mrs@cygnus.com>
9112
9113         * gxx.gperf: Change TYPE_QUAL into CV_QUALIFIER.
9114         * parse.y: Likewise.  Change maybe_type_qual into maybe_cv_qualifier.
9115         Change type_quals into cv_qualifiers.  Change nonempty_type_quals into
9116         nonempty_cv_qualifiers.
9117         * hash.h: Rebuild.
9118         
9119         * lex.c (make_pointer_declarator): Change type_quals into
9120         cv_qualifiers.
9121         (make_reference_declarator): Likewise.
9122         
9123 Thu Aug 22 01:09:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
9124
9125         * decl.c (start_function): Only check interface_* for templates
9126         with flag_alt_external_templates.
9127
9128         * call.c (build_new_op): Check for comparison of different enum types.
9129         (build_over_call): Fix arg # output.
9130
9131         * typeck.c (build_component_ref): Handle pre-found TYPE_DECL.
9132
9133 Wed Aug 21 00:13:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
9134
9135         * call.c (build_new_op): Check for erroneous args.
9136
9137         * call.c (build_new_method_call): Add missing args to cp_error.
9138
9139         * tree.c (error_type): Dont print reference-to-array.
9140
9141         * typeck.c (convert_for_assignment): Don't say contravariance for
9142         removing const.
9143
9144 Tue Aug 20 13:23:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
9145
9146         * call.c (build_over_call): Diagnose bad convs for `this'.
9147
9148         * lex.c (cons_up_default_function): Set DECL_ARTIFICIAL
9149         on _ctor_arg.
9150
9151         * call.c (convert_like): Handle bad convs.
9152         (build_over_call): Handle bad convs better.
9153
9154         * decl2.c: -fansi-overloading is now the default.
9155
9156         * call.c (build_new_method_call): Check for erroneous args.
9157
9158         * pt.c (instantiate_class_template): Propagate
9159         TYPE_USES_MULTIPLE_INHERITANCE.
9160
9161 Tue Aug 20 13:09:57 1996  Mike Stump  <mrs@cygnus.com>
9162
9163         * call.c (enforce_access): Add static to routine.
9164
9165 Sun Aug 18 14:35:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
9166
9167         * call.c (build_user_type_conversion_1): Fix bad handling.
9168         (compare_ics): Likewise.
9169
9170 Sat Aug 17 21:54:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
9171
9172         * call.c (standard_conversion): Oops.
9173
9174 Sat Aug 17 16:28:11 1996  Geoffrey Noer  <noer@cygnus.com>
9175
9176         * g++.c: Update test for win32 (&& ! cygwin32).
9177
9178 Sat Aug 17 03:45:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
9179
9180         * typeck.c (comp_ptr_ttypes_real): Handle OFFSET_TYPEs properly.
9181         (ptr_reasonably_similar): New fn.
9182         * call.c (BAD_RANK): New rank.
9183         (ICS_BAD_FLAG): New macro.
9184         (standard_conversion): Handle almost-right pointer conversions.
9185         (reference_binding): Handle bad rvalue bindings.
9186         (add_*_candidate): Stuff.
9187         (build_over_call): Pass bad conversions to convert_for_initialization.
9188         (compare_ics): Handle bad convs.
9189         (joust): Likewise.
9190
9191 Fri Aug 16 15:02:19 1996  Bob Manson  <manson@charmed.cygnus.com>
9192
9193         * init.c (expand_vec_init): Use ptrdiff_type_node instead of
9194         integer_type_node when computing pointer offsets.
9195
9196 Fri Aug 16 01:28:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
9197
9198         * tree.c (lvalue_type): New fn.
9199         (error_type): New fn.
9200         * call.c (op_error): Use error_type.
9201         (add_conv_candidate): Use lvalue_type.
9202         (add_builtin_candidates): Likewise.
9203         * error.c (args_as_string): Use error_type.
9204
9205 Thu Aug 15 17:27:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
9206
9207         * pt.c (instantiate_decl): Evaluate DECL_INITIAL of a VAR_DECL here.
9208         (tsubst): Not here.
9209
9210         * decl.c (init_decl_processing): With -ansi, __null's type is the
9211         signed integral type with the same number of bits as a pointer.
9212         Introduce a new variable null_node for it.
9213         * cp-tree.h: Adjust.
9214         * call.c (null_ptr_cst_p): Adjust.
9215
9216 Thu Aug 15 17:09:54 1996  Mike Stump  <mrs@cygnus.com>
9217
9218         * except.c (do_unwind): Mark %i7 as used on the SPARC so we can
9219         optimize.
9220
9221 Thu Aug 15 01:36:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
9222
9223         * decl2.c (import_export_decl): Ignore #pragma interface for tinfo
9224         fns of classes without virtual functions.
9225
9226         * call.c (add_function_candidate): Handle `this' specially.
9227         (compare_ics): Likewise.
9228
9229 Tue Aug 13 12:16:10 1996  Jason Merrill  <jason@yorick.cygnus.com>
9230
9231         * typeck.c (build_conditional_expr): Fix handling of __null.
9232
9233         * decl2.c (comdat_linkage): New fn.
9234         (import_export_vtable): Use it.
9235         (import_export_decl): Use it.
9236         * method.c (make_thunk): Use it.
9237
9238 Mon Aug 12 00:09:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
9239
9240         * pt.c (end_template_decl): If we don't actually have parms, return.
9241         * parse.y (template_header): Accept 'template <>'.
9242
9243         * errfn.c: Allow 5 args.
9244
9245 Sun Aug 11 15:20:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
9246
9247         * tree.c (make_temp_vec): New fn.
9248         * pt.c (push_template_decl): Handle partial specs.
9249         (instantiate_class_template): Likewise.
9250         (more_specialized): Use get_bindings.
9251         (more_specialized_class): New fn.
9252         (get_class_bindings): New fn.
9253         (most_specialized_class): New fn.
9254         (do_function_instantiation): List candidates for ambiguous case.
9255         * decl.c (duplicate_decls): Lose reference to DECL_TEMPLATE_MEMBERS.
9256         (shadow_tag): Call push_template_decl for partial specializations.
9257         * parse.y: Likewise.
9258         * cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Replaces
9259         DECL_TEMPLATE_MEMBERS.
9260         * call.c (print_z_candidates): Reduce duplication.
9261
9262 Fri Aug  9 14:36:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
9263
9264         * decl2.c (lang_decode_option): Allow -fansi-overloading.
9265
9266 Thu Aug  8 17:04:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
9267
9268         * pt.c (get_bindings): New fn.
9269         (most_specialized): Likewise.
9270         (do_function_instantiation): Use them.
9271         (add_maybe_template): New fn.
9272         * cp-tree.h (DECL_MAYBE_TEMPLATE): New macro.
9273         * call.c (build_new_op): Handle guiding decls.
9274         (build_new_function_call): Likewise.
9275         * decl2.c (finish_file): Likewise.
9276
9277         * decl2.c (mark_used): Do synthesis here.
9278         * call.c (build_method_call): Not here.
9279         (build_over_call): Or here.
9280         * typeck.c (build_function_call_real): Or here.
9281         * tree.c (bot_manip): Call mark_used on functions used in default
9282         args.
9283
9284 Thu Aug  8 17:48:16 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
9285
9286         * decl2.c (import_export_vtable): Delete code that disabled vtable
9287         heuristic on systems with ASM_OUTPUT_EXTERNAL.
9288
9289 Wed Aug  7 12:44:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
9290
9291         * typeck.c (build_x_function_call): Handle static call context
9292         better.
9293
9294         * decl.c (finish_function): Set the DECL_CONTEXT of the result to
9295         the function, not its outer block.
9296
9297         * call.c (build_field_call): Pass fields on to build_opfncall
9298         regardless of TYPE_OVERLOADS_CALL_EXPR.
9299         (build_method_call): Pass on to build_new_method_call sooner.
9300
9301         * typeck.c (build_ptrmemfunc): Just return what instantiate_type
9302         gives us.
9303         * class.c (instantiate_type): Don't put a POINTER_TYPE to
9304         METHOD_TYPE on an expression.  Also make a copy of rhs instead of
9305         modifying it.
9306
9307 Tue Aug  6 12:58:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
9308
9309         * call.c (compare_ics): Handle qual_conv after lvalue_conv.
9310         (add_builtin_candidate): Don't take enums for ++.
9311         (build_new_method_call): Handle non-aggregates and field calls.
9312         Move new overloading code from...
9313         * cvt.c: Here.
9314
9315         * decl.c (grokparms): Don't check default args in templates.
9316
9317 Mon Aug  5 17:17:06 1996  Jason Merrill  <jason@yorick.cygnus.com>
9318
9319         * cvt.c (build_new_op): Fix args to build_unary_op.
9320         (add_builtin_candidates): Don't call type_promotes_to on float.
9321
9322         * decl.c (grokparms): Check the type of the default arg.
9323
9324         * cvt.c (build_new_op): Pass non-overloaded cases on rather than
9325         returning NULL_TREE.
9326
9327         * typeck.c (build_x_binary_op): Avoid doing extra work.
9328         (build_x_unary_op): Likewise.
9329         (build_x_conditional_expr): Likewise.
9330         * cvt.c (build_over_call): Return.
9331         (add_builtin_candidate): Fix MEMBER_REF.
9332         (build_new_op): Likewise.
9333
9334 Mon Aug  5 17:07:47 1996  Mike Stump  <mrs@cygnus.com>
9335
9336         * method.c (build_overload_name): Put bug fix into code but leave
9337         disabled for now so we can be bug compatible with older releases
9338         that do repeats incorrectly.  In the future, we can enable it.
9339
9340 Mon Aug  5 13:46:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
9341
9342         * cvt.c (convert_like): Don't call build_cplus_new twice.
9343
9344         * call.c, cp-tree.h, cvt.c, decl2.c, init.c, method.c, pt.c, typeck.c:
9345         Control new overloading code with -fansi-overloading.
9346
9347 Sun Aug  4 15:29:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
9348
9349         * cvt.c (build_over_call): Call build_cplus_new.
9350         * call.c (build_method_call): Likewise.
9351         * typeck.c (build_function_call_real): Likewise.
9352         (build_conditional_expr): If both operands are TARGET_EXPRs, wrap
9353         the COND_EXPR in a TARGET_EXPR so they use the same slot.
9354
9355         * cvt.c (build_up_reference): Propagate INDIRECT_BIND to 
9356         recursive calls.
9357         * typeck.c (complete_type): Propagate
9358         TYPE_NEEDS_{CONSTRUCTING,DESTRUCTOR}.
9359
9360 Sat Aug  3 14:05:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
9361
9362         * cvt.c (joust): More ?: kludging.  Sigh.
9363         (build_over_call): Don't try to synthesize global fns.
9364
9365         * search.c (lookup_conversions): Use binfo marking.
9366
9367 Sat Aug  3 12:33:42 1996  Bob Manson  <manson@charmed.cygnus.com>
9368
9369         * search.c (build_mi_matrix): Use the correct value of cid
9370         when determining the new mi_size.
9371
9372 Sat Aug  3 01:27:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
9373
9374         * cvt.c (add_builtin_candidates): Do consider type conversion ops
9375         for the first parms of += et al.
9376         (strip_top_quals): New fn.
9377         (reference_binding): Use it instead of TYPE_MAIN_VARIANT.
9378         (implicit_conversion): Likewise.
9379         (add_builtin_candidates): Be careful about arrays.
9380         (build_new_method_call): Handle vtable optimization.
9381
9382 Fri Aug  2 01:26:59 1996  Jason Merrill  <jason@yorick.cygnus.com>
9383
9384         * cp-tree.h (LOOKUP_NO_TEMP_BIND): New flag.
9385         * cvt.c (reference_binding): Use it.
9386         (implicit_conversion): Use it.
9387         (add_builtin_candidate, COND_EXPR): Use it.
9388
9389         * cvt.c (build_new_function_call): Check for error args.
9390
9391         * typeck.c (comptypes): Just check DERIVED_FROM_P, not UNIQUELY.
9392
9393         * gxx.gperf: Add __null.
9394         * hash.h: Regenerate.
9395         * lex.h: Add RID_NULL.
9396         * lex.c (init_lex): Create null_pointer_node here, stick it in
9397         RID_NULL.
9398         * decl.c (init_decl_processing): Still set its type here.
9399         * cvt.c (cp_convert_to_pointer): Don't produce null_pointer_node.
9400         (convert_to_pointer_force): Likewise.
9401         (null_ptr_cst_p): Check for null_pointer_node; only accept (void*)0
9402         if (! pedantic).
9403         * call.c (convert_harshness): Use null_ptr_cst_p.
9404         * typeck.c (convert_for_assignment): Likewise.  Don't produce
9405         null_pointer_node.
9406
9407         * error.c (args_as_string): Handle lists of actual args, too.
9408         * cvt.c (null_ptr_cst): Support (void*)0 for now.
9409         (build_user_type_conversion_1): Improve diagnostics.
9410         (build_new_function_call): Likewise.
9411         (build_object_call): Likewise.
9412         (build_new_method_call): Likewise.  Move call before def diagnostic...
9413         (build_over_call): Here.
9414
9415         * cvt.c (build_new_method_call): Don't complain about no match if
9416         LOOKUP_SPECULATIVELY.
9417         (build_over_call): Fix 'this' for virtual fn.
9418         (build_new_method_call): Add diagnostic.
9419
9420 Thu Aug  1 16:45:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
9421
9422         * cvt.c (add_function_candidate): Expect 'this' and 'in_chrg' for
9423         constructors to be passed in.
9424         (build_over_call): Likewise.
9425         (build_user_type_conversion_1): Pass them in.
9426         (convert_like): Likewise.
9427         (build_object_call): Handle overloaded conversions.
9428         (build_over_call): Pass the right args to build_vfn_ref.
9429         (standard_conversion): Fix pmf convs.
9430         (joust): Handle comparing statics and non-statics.
9431         (build_new_method_call): New fn.
9432         * call.c (build_method_call): Call it if NEW_OVER.
9433
9434 Thu Aug  1 16:06:14 1996  Mike Stump  <mrs@cygnus.com>
9435
9436         * lex.c (do_identifier): Don't use %O on IDENTIFIER_OPNAME_Ps, use
9437         %D instead.
9438
9439 Thu Aug  1 15:24:02 1996  Mike Stump  <mrs@cygnus.com>
9440
9441         * except.c (expand_throw): Use maybe_build_cleanup_and_delete
9442         instead of just maybe_build_cleanup so that we deallocate the
9443         thrown object.
9444
9445 Thu Aug  1 15:18:00 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9446
9447         * decl2.c (finish_prevtable_vardecl): Make non-static for pt.c's use.
9448         * cp-tree.h (finish_prevtable_vardecl): Add decl.
9449
9450 Thu Aug  1 11:53:51 1996  Bob Manson  <manson@charmed.cygnus.com>
9451
9452         * pt.c (instantiate_class_template): Call complete_type. Also, if
9453         we're at the end of the file and we just instantiated a template
9454         class with a vtable, call finish_prevtable_vardecl.
9455
9456         * error.c (dump_decl): Don't explode (or explode more gracefully
9457         as appropriate) if the object being dumped has a null type.
9458         (dump_expr): Likewise.
9459
9460         * search.c (build_mi_matrix): Ensure that mi_size is large enough,
9461         by counting the number of nodes that we'll need before allocating
9462         the array.
9463         (lookup_fnfields): Fix comment.
9464         (breadth_first_search): Fix comment.
9465
9466 Wed Jul 31 09:57:05 1996  Jason Merrill  <jason@yorick.cygnus.com>
9467
9468         * pt.c (instantiate_class_template): Propagate TYPE_PACKED and
9469         TYPE_ALIGN.
9470         * class.c (finish_struct): Call cplus_decl_attributes here.
9471         (finish_struct_1): Not here.
9472         * cp-tree.h: Adjust.
9473
9474         * pt.c (type_unification): New parameter STRICT.
9475         (unify): If STRICT, don't allow cv addition or base deduction.
9476         * call.c, class.c, cvt.c, cp-tree.h: Adjust.
9477
9478 Tue Jul 30 13:06:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
9479
9480         * search.c (get_template_base{_recursive}): New fns.
9481         * pt.c (more_specialized): New fn.
9482         (do_function_instantiation): Use it.
9483         (unify): Handle base deduction.
9484         * cvt.c (joust): Use more_specialized.
9485         Don't arbitrarily choose between non-builtin candidates.
9486         (build_over_call): Call require_complete_type.
9487
9488         * decl.c (start_function): Statics are static even in a #pragma
9489         interface file.
9490
9491         * decl2.c (import_export_vtable): Disable vtable heuristic on
9492         systems with ASM_OUTPUT_EXTERNAL.
9493
9494         * cvt.c (compare_ics): Fix comparison of PMEM_CONV and BASE_CONV.
9495         (standard_conversion): No std conv to enum type.
9496
9497         * cvt.c (standard_conversion): Fix order of args to DERIVED_FROM_P
9498         for ptm's.
9499
9500         * cvt.c (reference_binding): Bind directly to a base subobject of
9501         a class rvalue.
9502
9503         * cvt.c (build_new_op): Enforce access control.
9504
9505 Tue Jul 30 09:22:53 1996  Bob Manson  <manson@charmed.cygnus.com>
9506
9507         * typeck2.c (process_init_constructor): When scanning the
9508         union for a named field, skip things that aren't FIELD_DECLs.
9509
9510         * method.c (synthesize_method): Don't scan fndecl's rtl if
9511         we're at the end of the file; just assume the function can't
9512         be inlined.
9513
9514 Mon Jul 29 15:48:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
9515
9516         * cvt.c (build_builtin_candidate): Stick a dummy conversion in if
9517         it failed.
9518
9519         * cvt.c (build_user_type_conversion_1): Handle overloaded
9520         conversion ops.
9521
9522         * cvt.c (add_builtin_candidates): Don't consider type conversion
9523         operators for the first parameter of operator=.
9524
9525 Mon Jul 29 15:33:55 1996  Bob Manson  <manson@charmed.cygnus.com>
9526
9527         * typeck.c (complete_type): Only call layout_type if we're not
9528         expanding a template.
9529
9530 Mon Jul 29 14:40:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
9531
9532         * cvt.c (compare_ics): Oops.
9533
9534         * cvt.c (op_error): Oops.
9535
9536         * cp-tree.def: Add RVALUE_CONV, rename EXACT_CONV to IDENTITY_CONV.
9537         * cvt.c: Add IDENTITY_RANK before others.  Use real_lvalue_p.
9538         (build_conv): Use them.
9539         (implicit_conversion): Use them.
9540         (convert_like): Handle them.
9541         (build_new_op): Handle builtin COND_EXPR again.
9542         (add_builtin_candidates): Strip cv-quals.  Fix oops.  Include enums
9543         in lists of types for COND_EXPR.
9544         (add_builtin_candidate): Add enum candidates for COND_EXPR.
9545
9546 Mon Jul 29 12:05:40 1996  Bob Manson  <manson@charmed.cygnus.com>
9547
9548         * typeck.c (build_modify_expr): Always attempt to build a call to
9549         the assignment operator, even if we're using a default one.
9550         (convert_for_initialization): Call complete_type.
9551
9552 Mon Jul 29 11:25:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
9553
9554         * cvt.c (reference_binding): A REF_BIND gets the reference type.
9555         (implicit_conversion): Likewise.
9556         (convert_like): Likewise.
9557         (compare_ics): Likewise.
9558         (compare_qual): Likewise.
9559         (print_z_candidates): Handle no candidates.
9560         (build_new_op): Don't handle builtin COND_EXPR for now.
9561
9562 Sat Jul 27 11:27:47 1996  Stan Shebs  <shebs@andros.cygnus.com>
9563
9564         * cvt.c (build_builtin_candidate): Init local var in an ANSI way.
9565
9566 Fri Jul 26 01:07:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
9567
9568         * cvt.c (joust): If the candidates are the same, arbitrarily pick one.
9569
9570         * cvt.c (build_builtin_candidate): Oops.
9571         (build_new_op): Oops.
9572
9573         * method.c (build_opfncall): Pass COND_EXPR on.
9574         * cvt.c (build_builtin_candidate): Reorganize, support COND_EXPR.
9575         (add_builtin_candidate{,s}): Likewise.
9576         (add_builtin_candidates): Likewise.
9577         (print_z_candidates, op_error, build_new_op): Likewise.
9578         (type_decays_to): New fn.
9579         * lex.c (init_lex): Just say ?: for COND_EXPR.
9580
9581 Thu Jul 25 09:33:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
9582
9583         * typeck.c (complete_type): Call layout_type rather than building
9584         a new array type.
9585
9586         * cvt.c (add_builtin_candidate): Pointer arithmetic candidates
9587         only use ptrdiff_t.
9588
9589 Wed Jul 24 12:45:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
9590
9591         * cvt.c: Always compile the new overloading code (but don't use it).
9592         (implicit_conversion): Add a BASE_CONV when converting to
9593         the same class type.
9594         (convert_like): Handle BASE_CONV.
9595
9596 Tue Jul 23 12:46:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
9597
9598         * cvt.c (build_new_op): Support {MAX,MIN}_EXPR.
9599         (add_builtin_candidate): Likewise.
9600
9601         NEW_OVER changes:
9602         * typeck.c (build_x_function_call): Try an operator function
9603         whenever we call an object of class type.
9604         * method.c (build_opfncall): Pass CALL_EXPRs through.
9605         * cvt.c (implicit_conversion): Do const-ref case first.
9606         (add_conv_candidate, build_object_call, op_error): New fns.
9607         (ptr_complete_ob, TYPE_PTROB_P): void is not an object type.
9608         ({add,build}_builtin_candidate{,s}, print_z_candidates): Display 
9609         builtin candidates.
9610         (build_new_op): Handle CALL_EXPR.  Don't try to decay void.
9611         Fall back on preincrement handling.  Use op_error.  
9612         Handle warn_synth.
9613         (convert_like): Pass INDIRECT_BIND.  Don't try to do anything with 
9614         an error_mark_node.
9615         (build_over_call): Handle PROMOTE_PROTOTYPES and ellipsis promotions
9616         properly.
9617
9618 Mon Jul 22 16:21:55 1996  Bob Manson  <manson@charmed.cygnus.com>
9619
9620         * pt.c (tsubst_expr): Handle CONTINUE_STMT.
9621
9622 Mon Jul 22 15:38:58 1996  Mike Stump  <mrs@cygnus.com>
9623
9624         * typeck.c (build_component_ref_1): Use build_component_ref
9625         instead of open coding it here.
9626
9627 Mon Jul 22 12:18:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
9628
9629         * g++.c (main): Don't link with -lg++.
9630
9631         NEW_OVER changes:
9632         * cvt.c (convert_to_reference): Don't use convert_from_refeence on
9633         result of build_type_conversion.
9634         (cp_convert): Only call build_method_call for ctors if
9635         build_type_conversion failed.
9636         (ptr_complete_ob): New function.
9637         (TYPE_PTR{,OB,MEM}_P): New macros.
9638         ({add,build}_builtin_candidate{,s}): New functions.
9639         (print_z_candidates): Handle builtins.
9640         (build_user_type_conversion_1): Don't use conversion fns for 
9641         converting to a base type.
9642         (build_user_type_conversion_1): Set ICS_USER_FLAG on AMBIG_CONVs.
9643         (build_user_type_conversion): Use convert_from_reference.
9644         (build_new_op): New function.
9645         (build_over_call): Fix handling of methods.
9646         (compare_ics): Handle AMBIG_CONV properly.
9647         * typeck2.c: Increment abort count.
9648         * method.c (build_opfncall): Forward most requests to build_new_op.
9649         * cp-tree.h (IS_OVERLOAD_TYPE): Tweak.
9650
9651 Fri Jul 19 17:59:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9652
9653         * error.c (dump_expr, case CONSTRUCTOR, case CAST_EXPR): Take out
9654         invalid second argument to dump_expr_list.
9655
9656 Fri Jul 19 14:04:05 1996  Mike Stump  <mrs@cygnus.com>
9657
9658         * decl.c (lookup_name_real): Make sure we do obj->X::i correctly.
9659
9660 Thu Jul 18 14:48:23 1996  Bob Manson  <manson@charmed.cygnus.com>
9661
9662         * decl2.c (import_export_vtable): ASM_OUTPUT_EXTERNAL, not
9663         ASSEMBLE_EXTERNAL.
9664
9665 Mon Jul 15 17:48:43 1996  Mike Stump  <mrs@cygnus.com>
9666
9667         * typeck2.c (process_init_constructor): New pedwarn for using { }
9668         to initialize a pointer to member function.
9669         * typeck.c (build_ptrmemfunc1): Avoid use of digest_init so that
9670         we can avoid the new error.
9671
9672 Mon Jul 15 15:42:03 1996  Mike Stump  <mrs@cygnus.com>
9673
9674         * typeck.c (build_ptrmemfunc1): New function to hide details of
9675         pointer to member functions better.
9676
9677 Mon Jul 15 14:23:02 1996  Mike Stump  <mrs@cygnus.com>
9678
9679         * init.c (resolve_offset_ref): Resolve OFFSET_REFs that are
9680         methods into the actual method, as we know the implied object is
9681         not used.
9682
9683 Mon Jul 15 13:08:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9684
9685         * parse.y (maybecomma_warn): Only emit the pedwarn if we're not
9686         inside a system header.
9687
9688 Fri Jul 12 16:30:05 1996  Bob Manson  <manson@charmed.cygnus.com>
9689
9690         * call.c (build_method_call): Call complete_type on the
9691         instance type.
9692
9693 Thu Jul 11 17:16:40 1996  Mike Stump  <mrs@cygnus.com>
9694
9695         * typeck.c (build_component_ref): Always build up an OFFSET_REF
9696         for obj_ptr->func so that we can know which object to use in a
9697         method call.
9698
9699 Wed Jul 10 19:36:37 1996  Mike Stump  <mrs@cygnus.com>
9700
9701         * typeck.c (build_ptrmemfunc): Remove sorry, now we can cast
9702         around things.  Also improve maintainability.
9703
9704 Wed Jul 10 18:20:11 1996  Bob Manson  <manson@charmed.cygnus.com>
9705
9706         * decl.c (grokdeclarator): Check for overflow when evaluating an
9707         array dimension.
9708
9709 Wed Jul 10 17:26:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
9710
9711         * cvt.c (cp_convert): Don't check for ambiguity with constructor
9712         if NEW_OVER.
9713
9714         * typeck.c (build_x_function_call): Pass function overload
9715         questions to new overloading code if NEW_OVER.
9716         * init.c (expand_aggr_init_1): Only check for type conversion ops
9717         if we're doing copy-initialization (i.e. LOOKUP_ONLYCONVERTING).
9718         Don't check for ambiguity with constructor if NEW_OVER.
9719         * cvt.c (convert_to_reference): Dereference the result of a type
9720         conversion operator.
9721         (build_conv): Propagate ICS_USER_FLAG.
9722         (implicit_conversion): Call instantiate_type.
9723         Pass LOOKUP_ONLYCONVERTING instead of LOOKUP_NORMAL.
9724         (add_function_candidate): Fix cv-quals on argtype.
9725         (print_z_candidates): New function.
9726         (build_new_function_call): Call it.
9727         (build_user_type_conversion_1): If LOOKUP_ONLYCONVERTING, don't
9728         consider non-converting constructors.
9729         Call print_z_candidates.
9730         Return an AMBIG_CONV for an ambiguous conversion.
9731         (build_user_type_conversion): Handle AMBIG_CONV.
9732         (convert_like): Fix test for building TARGET_EXPR.
9733         Call instantiate_type.
9734         Handle AMBIG_CONV and LVALUE_CONV.
9735         (build_over_call): Handle 0 args and ellipsis.
9736         * cp-tree.def: Add AMBIG_CONV.
9737
9738 Tue Jul  9 17:48:48 1996  Mike Stump  <mrs@cygnus.com>
9739
9740         * decl.c (lookup_name_real): If we find mem in obj when parsing
9741         `obj->mem', make sure we return the right value.
9742
9743 Tue Jul  9 16:11:28 1996  Bob Manson  <manson@charmed.cygnus.com>
9744
9745         * search.c (get_base_distance): Call complete_type.
9746
9747 Tue Jul  9 12:46:34 1996  Mike Stump  <mrs@cygnus.com>
9748
9749         * decl.c (store_bindings): Make static.
9750
9751 Mon Jul  8 16:42:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
9752
9753         * init.c (expand_aggr_init_1): Don't check type conversions if
9754         NEW_OVER.
9755
9756         * cvt.c (z_candidate): Put back template field.
9757         (add_function_candidate): Set it.
9758         (add_template_candidate): Likewise.
9759         (joust): Use it.
9760         (compare_qual): Handle references and pointers to members.
9761         (compare_ics): Handle reference bindings.
9762
9763         * decl.c (duplicate_decls): Propagate DECL_ONE_ONLY.
9764
9765 Mon Jul  8 16:18:56 1996  Bob Manson  <manson@charmed.cygnus.com>
9766
9767         * call.c (compute_conversion_costs): Call complete_type.
9768
9769         * tree.c (vec_binfo_member): Use comptypes instead of comparing
9770         pointers, so we can handle template parameters.
9771
9772 Fri Jul  5 16:51:53 1996  Bob Manson  <manson@charmed.cygnus.com>
9773
9774         * cvt.c (cp_convert_to_pointer): We have to call complete_type
9775         here; let's make it explicit instead of a side effect of an
9776         error check.
9777
9778 Wed Jul  3 16:29:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
9779
9780         * cvt.c (z_candidate): Remove template field.
9781         (reference_binding): Handle binding to temporary.
9782         (implicit_conversion): Likewise.
9783         (add_function_candidate): Handle artificial constructor parms.
9784         Handle functions with too few parms.
9785         (add_template_candidate): New function.
9786         (build_user_type_conversion_1): Handle constructors.
9787         (convert_like): Likewise.
9788         (build_over_call): Likewise.
9789         (build_new_function_call): Support templates.
9790         (compare_ics): Fix reference, inheritance handling.
9791
9792 Mon Jul  1 22:58:18 1996  Bob Manson  <manson@charmed.cygnus.com>
9793
9794         * decl.c: Add signed_size_zero_node.
9795         (init_decl_processing): Build it.
9796         * class.c (prepare_fresh_vtable): Use it instead of size_zero_node
9797         when we're trying to make a negative delta.
9798
9799 Mon Jul  1 17:56:19 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9800
9801         Stop doing this damn index==strchr variable name confusion.
9802         * class.c (add_virtual_function): Change local var INDEX to be
9803         named IDX.
9804         (add_method): Likewise.
9805         * lex.c (print_parse_statistics): Likewise.
9806         * search.c (make_memoized_table_entry): Likewise.
9807         (lookup_fnfields_here): Likewise.
9808         (lookup_field): Likewise.
9809         (lookup_fnfields): Likewise.
9810         (get_baselinks): Likewise.
9811         * sig.c (build_signature_table_constructor): Likewise.
9812         (build_signature_method_call): Likewise.
9813         * typeck.c (build_x_array_ref): Change INDEX parm to be named IDX.
9814         (get_member_function_from_ptrfunc): Likewise.
9815         (build_ptrmemfunc): Change local var INDEX to be IDX.
9816         (c_expand_start_case): Likewise.
9817
9818 Sat Jun 29 14:05:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
9819
9820         * cvt.c (cp_convert_to_pointer): Move user-defined type conversion
9821         handling to before extraction of TYPE_PTRMEMFUNC_FN_TYPE.
9822         (convert_to_reference): Use build_type_conversion to convert to
9823         the reference type directly.
9824         (standard_conversion): Fix void* case, non-conversions.
9825         (reference_binding): Fix expr == 0 case, non-conversions.
9826         (convert_like): Support REF_BIND.
9827         (compare_qual): Split out from compare_ics.
9828         (compare_ics): Use it, handle icses with only a qual_conv.
9829
9830         * init.c (expand_vec_init): Don't crash if decl is NULL.
9831
9832 Fri Jun 28 11:52:51 1996  Stan Shebs  <shebs@andros.cygnus.com>
9833
9834         * mpw-config.in: New file, configury for Mac MPW.
9835         * mpw-make.sed: New file, makefile editing for MPW.
9836
9837 Thu Jun 27 15:18:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
9838
9839         * pt.c (instantiate_class_template): Call repo_template_used.
9840
9841         * search.c (lookup_conversions): Only lookup conversions in
9842         complete types.
9843
9844 Thu Jun 27 12:59:53 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9845
9846         * cp-tree.def: Renamed from tree.def, to avoid confusion with
9847         gcc's tree.def.
9848         * cp-tree.h, lex.c: Include cp-tree.def.
9849         * Makefile.in (CXX_TREE_H): Reference cp-tree.def.
9850
9851 Wed Jun 26 18:29:47 1996  Bob Manson  <manson@charmed.cygnus.com>
9852
9853         * init.c (build_vec_delete_1): Call complete_type.
9854
9855 Mon Jun 24 17:17:32 1996  Mike Stump  <mrs@cygnus.com>
9856
9857         * except.c (start_anon_func): Make sure anonymous functions are
9858         never external.
9859
9860 Fri Jun 21 15:10:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
9861
9862         * decl.c (finish_function): If function_depth > 1, set nested.
9863
9864         * decl2.c (grokbitfield): Revert Bob's change.
9865         * class.c (finish_struct_1): Fix handling of named bitfield widths.
9866
9867 Thu Jun 20 23:35:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
9868
9869         * pt.c (add_pending_template): Handle types.
9870         (lookup_template_class): With -fexternal-templates, just add the class
9871         to pending_templates instead of instantiating it now.
9872         * decl2.c (finish_file): Handle types in pending_templates.
9873
9874 Thu Jun 20 14:08:40 1996  Bob Manson  <manson@charmed.cygnus.com>
9875
9876         * decl2.c (grokbitfield): Handle constant decls appropriately.
9877         Give an appropriate error message now instead of spewing core
9878         later.
9879
9880 Thu Jun 20 13:01:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
9881
9882         * decl2.c: Don't turn on thunks by default for now.
9883
9884 Wed Jun 19 11:37:04 1996  Jason Merrill  <jason@yorick.cygnus.com>
9885
9886         * typeck.c (complete_type): Handle error_mark_node.
9887         (common_type, OFFSET_TYPE): Handle template_type_parms.
9888
9889 Tue Jun 18 10:02:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
9890
9891         * pt.c (instantiate_decl): If at_eof, call import_export_decl
9892         regardless of DECL_INLINE.
9893
9894         * typeck.c (mark_addressable): Set TREE_ADDRESSABLE on CONSTRUCTORs.
9895
9896         * class.c (finish_struct_bits): Copy TYPE_SIZE.
9897
9898         * rtti.c (build_dynamic_cast): Support templates.
9899         * tree.def: Support DYNAMIC_CAST_EXPR.
9900         * pt.c (tsubst_copy): Likewise.
9901         * decl2.c (build_expr_from_tree): Likewise.
9902
9903 Mon Jun 17 15:23:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
9904
9905         * typeck.c (build_static_cast): Support templates.
9906         (build_const_cast): Likewise.
9907         * tree.def: Support CONST/STATIC_CAST_EXPR.
9908         * pt.c (tsubst_copy): Likewise.
9909         * decl2.c (build_expr_from_tree): Likewise.
9910
9911 Sun Jun 16 12:33:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
9912
9913         * decl2.c (finish_vtable_vardecl): Don't trust
9914         TREE_SYMBOL_REFERENCED for vtables of local classes.
9915
9916 Fri Jun 14 18:13:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
9917
9918         * pt.c (tsubst_copy): Handle operator T.
9919
9920 Wed Jun 12 17:52:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
9921
9922         * init.c (build_delete): Move creation of PARMS inside test of
9923         TYPE_HAS_DESTRUCTOR, since it's never used outside of that block.
9924
9925 Tue Jun 11 15:09:18 1996  Bob Manson  <manson@charmed.cygnus.com>
9926
9927         * typeck.c (build_conditional_expr): Don't assume that
9928         the arguments to ?: are always pointers or records.
9929
9930 Tue Jun 11 13:56:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
9931
9932         * decl2.c (import_export_decl): Still emit static/weak/comdat
9933         copies of inline template functions with -fno-implicit-templates.
9934
9935 Tue Jun 11 11:42:13 1996  Bob Manson  <manson@charmed.cygnus.com>
9936
9937         * init.c (build_delete): Determine the complete basetype
9938         path to the destructor we're calling.
9939
9940 Fri Jun  7 15:30:10 1996  Bob Manson  <manson@charmed.cygnus.com>
9941
9942         * decl.c (build_enumerator): Always copy the INTEGER_CST used to
9943         initialize the enum, because we really and truly don't know where
9944         it came from.
9945         (start_enum): Don't copy integer_zero_node because
9946         build_enumerator will do it.
9947
9948 Fri Jun  7 11:11:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
9949
9950         * decl.c (finish_function): Do access control on base destructors.
9951
9952         * pt.c (tsubst, case FUNCTION_DECL): Set up
9953         IDENTIFIER_GLOBAL_VALUE for member functions so pushdecl doesn't
9954         hose us.
9955
9956 Fri Jun  7 10:37:33 1996  Mike Stump  <mrs@cygnus.com>
9957
9958         * cvt.c (build_up_reference): If we have already extended the
9959         lifetime of the temporary, don't try it again.
9960         * typeck.c (c_expand_return): Don't try and convert the return
9961         value twice when we want a reference, once is enough.
9962         
9963 Tue Jun  4 15:41:45 1996  Jason Merrill  <jason@yorick.cygnus.com>
9964
9965         * pt.c (tsubst_expr, case DECL_STMT): Don't pass
9966         LOOKUP_ONLYCONVERTING at all for now.
9967
9968         * search.c (add_conversions): Put the conversion function in
9969         TREE_VALUE, the basetype in TREE_PURPOSE.
9970         * cvt.c (build_type_conversion): Adjust.
9971         * cvt.c (build_expr_type_conversion): Adjust.
9972         * call.c (user_harshness): Adjust.
9973
9974 Mon Jun  3 15:30:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
9975
9976         * method.c (emit_thunk): Pretend this is a FUNCTION_DECL for the
9977         backend's benefit.
9978
9979 Mon Jun 10 18:58:19 1996  Mike Stump  <mrs@cygnus.com>
9980
9981         * except.c (expand_start_catch_block): Add a dummy region, if we
9982         get an error, so that we can avoid core dumping later.
9983
9984 Fri May 31 14:56:13 1996  Mike Stump  <mrs@cygnus.com>
9985
9986         * cp-tree.h (OFFSET_REF): Remove.
9987         * tree.def (CP_OFFSET_REF): Rename to OFFSET_REF.
9988         * expr.c (cplus_expand_expr): Cleanup callers of expand_expr.
9989         * init.c (expand_aggr_init_1): Likewise.
9990         (build_new): Likewise.
9991         * typeck.c (expand_target_expr): Likewise.
9992
9993 Fri May 31 14:22:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
9994
9995         * typeck.c (build_modify_expr): Don't use TREE_VALUE on a
9996         TARGET_EXPR.
9997
9998 Wed May 29 17:04:33 1996  Mike Stump  <mrs@cygnus.com>
9999
10000         * cvt.c (build_up_reference): Redo how and when temporaries are
10001         created.
10002         * decl.c (grok_reference_init): Don't try and be smart about
10003         running cleanups.
10004
10005 Wed May 29 16:02:08 1996  Mike Stump  <mrs@cygnus.com>
10006
10007         * cvt.c (build_up_reference): Add NULL_TREE to all calls to build
10008         (TARGET_EXPR...), now that it has 4 arguments.
10009         * tree.c (build_cplus_new): Likewise.
10010
10011 Thu May 23 16:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
10012
10013         * error.c (dump_expr, case CAST_EXPR): Handle T() properly.
10014
10015         * pt.c (instantiate_decl): Don't call push/pop_cp_function_context.
10016         * decl.c (struct saved_scope): Remove named_labels,
10017         {base,member}_init_list.
10018         (maybe_push_to_top_level): Don't set them.  Call
10019         push_cp_function_context if appropriate.
10020         (pop_from_top_level): Likewise.
10021
10022         * method.c (do_build_assign_ref): Remove obsolete check of
10023         TYPE_HAS_ASSIGN_REF (basetype).
10024
10025         * decl.c (grokfndecl): Diagnose user definition of
10026         implicitly-declared methods.
10027
10028 Thu May 23 12:13:08 1996  Bob Manson  <manson@charmed.cygnus.com>
10029
10030         * method.c (do_build_copy_constructor): Add code to give
10031         meaningful error messages instead of crashing.
10032         (do_build_assign_ref): Don't synthesize assignment operators for
10033         classes containing reference or const members.
10034
10035         * class.c (struct base_info): Remove cant_synth_copy_ctor
10036         and cant_synth_asn_ref.
10037         (finish_base_struct): Remove the code that tries to conditionalize
10038         synthesis of copy constructors & assignment operators based on
10039         access permissions. Instead, let it fail when it tries to
10040         synthesize the copy constructor. This will give meaningful error
10041         messages instead of silently generating code to perform a bitcopy.
10042
10043 Wed May 22 11:45:19 1996  Bob Manson  <manson@charmed.cygnus.com>
10044
10045         * lex.c (real_yylex): Remove old-n-crufty #if 0 code for
10046         determining types for constant values.
10047
10048         * decl.c (struct named_label_list): Use instead of stuffing
10049         random items into a TREE_LIST node.
10050         (named_label_uses): Use the new struct.
10051         (poplevel): Likewise.
10052         (lookup_label): Likewise.
10053         (define_label): Add an error message to tell the user the line
10054         where the goto is located in addition to the destination of the
10055         goto.
10056         (init_decl_processing): Use NULL instead of NULL_TREE to initialize
10057         named_label_uses.
10058         (finish_function): Likewise.
10059         
10060         (start_decl): Complain about defining a static data member
10061         in a different type from which it was declared.
10062
10063 Wed May 22 09:33:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
10064
10065         * cvt.c (build_expr_type_conversion): Adjust.
10066
10067 Tue May 21 11:21:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
10068
10069         * call.c (build_method_call): Always convert 'this' to the
10070         appropriate type.
10071
10072         * search.c (add_conversions): Put the conversion function in
10073         TREE_VALUE, the type in TREE_PURPOSE.
10074         * cvt.c (build_type_conversion): Adjust.
10075         * call.c (user_harshness): Adjust.
10076
10077         * method.c (emit_thunk): Call temporary_allocation and
10078         permanent_allocation around the ASM_OUTPUT_MI_THUNK case, too.
10079
10080         * tree.c (build_cplus_array_type): Handle tweaking of
10081         TYPE_MAIN_VARIANT here.
10082         * typeck.c (common_type): Not here.
10083
10084         * typeck.c (complete_type): Only try to complete an array type if
10085         it has a domain.
10086
10087 Mon May 20 14:55:59 1996  Jason Merrill  <jason@yorick.cygnus.com>
10088
10089         * decl.c (grokvardecl): Call complete_type.
10090         (grokdeclarator): Call complete_type for PARM_DECLs.
10091
10092 Fri May 17 16:41:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
10093
10094         * pt.c (instantiate_class_template): Re-set
10095         CLASSTYPE_GOT_SEMICOLON after calling finish_struct_1.
10096
10097 Fri May 17 14:56:55 1996  Mike Stump  <mrs@cygnus.com>
10098
10099         * cp-tree.h (cp_expand_decl_cleanup): Remove, the backend is now
10100         smart enough to do it right.
10101         * tree.c (cp_expand_decl_cleanup): Likewise.
10102         * decl.c (cp_finish_decl): Use expand_decl_cleanup instead of
10103         cp_expand_decl_cleanup.
10104         (store_parm_decls): Likewise.
10105         (hack_incomplete_structures): Likewise.
10106         * except.c (push_eh_cleanup): Likewise.
10107
10108 Fri May 17 13:13:51 1996  Mike Stump  <mrs@cygnus.com>
10109
10110         * expr.c (expand_expr, cond UNSAVE_EXPR): Move from the C++
10111         frontend to the backend where it belongs.
10112         * tree.c (unsave_expr): Likewise.
10113         (unsave_expr_now): Likewise.
10114         * tree.def (UNSAVE_EXPR): Likewise.
10115         * cp-tree.h (unsave_expr): Likewise.
10116         (unsave_expr_now): Likewise.
10117
10118 Fri May 17 11:02:41 1996  Mike Stump  <mrs@cygnus.com>
10119
10120         * init.c (emit_base_init): Make sure the partial EH cleanups live
10121         on the function_obstack.
10122
10123 Thu May 16 15:29:33 1996  Bob Manson  <manson@charmed.cygnus.com>
10124
10125         * expr.c (do_case): Don't try to dereference null TREE_TYPEs
10126         when checking for pointer types.
10127
10128 Thu May 16 13:38:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
10129
10130         * pt.c (instantiate_class_template): Remove obsolete check for
10131         access declarations.
10132
10133 Thu May 16 13:34:15 1996  Mike Stump  <mrs@cygnus.com>
10134
10135         * call.c (build_overload_call): Simplify calls to
10136         build_overload_call by removing last parameter.
10137         (build_method_call): Likewise.
10138         * cp-tree.h: Likewise.
10139         * method.c (build_opfncall): Likewise.
10140         * typeck.c (build_x_function_call): Likewise.
10141
10142 Thu May 16 13:15:43 1996  Mike Stump  <mrs@cygnus.com>
10143
10144         * call.c (default_parm_conversions): Factor out common code.
10145         (build_method_call): Use it.
10146         (build_overload_call_real): Use it.
10147
10148 Wed May 15 14:46:14 1996  Mike Stump  <mrs@cygnus.com>
10149
10150         * call.c (build_method_call): Allow implicit & on METHOD_TYPEs,
10151         but pedwarn as the code is bogus.
10152         * typeck.c (decay_conversion): Likewise.
10153         (build_function_call_real): Use build_addr_func instead of
10154         default_conversion.  Don't allow pointer-to-method functions down
10155         here.
10156         (build_unary_op): Use real pointer-to-member functions instead of
10157         fake ones.
10158         (build_ptrmemfunc): Use build_addr_func instead of build_unary_op.
10159         (convert_for_assignment): Removed some obsolete code.
10160         * decl2.c (reparse_absdcl_as_expr): Pass current_class_ref to
10161         build_x_function_call instead of current_class_ptr.  Only call
10162         digest_init once on an initializer, we do this just checking
10163         TREE_TYPE.
10164         (build_expr_from_tree): Pass current_class_ref to
10165         build_x_function_call instead of current_class_ptr.
10166         * init.c (build_member_call): Likewise.
10167         * pase.y: Likewise.
10168         * error.c (dump_expr): Handle OFFSET_REFs better.
10169         * pt.c (unify): Handle pointer-to-member functions better.
10170         * decl.c (finish_function): Clear out current_class_ref just like
10171         we do for current_class_ptr.
10172
10173         * typeck.c (get_delta_difference): Handle virtual bases better.
10174
10175 Tue May 14 16:37:37 1996  Jason Merrill  <jason@yorick.cygnus.com>
10176
10177         * sig.c (build_signature_table_constructor): Use the delta for
10178         the original basetype for this virtual function with thunks.
10179         (build_signature_method_call): We still need to adjust 'this'
10180         with thunks.
10181
10182 Tue May 14 16:27:25 1996  Mike Stump  <mrs@cygnus.com>
10183
10184         * call.c (build_addr_func): New routine.  Used to get the `real'
10185         address of a function or a method.  Needed to avoid getting a
10186         pointer-to-member function.
10187         (build_call): New routine to build CALL_EXPRs.
10188         (build_method_call): Use it.
10189         * cvt.c (convert_to_aggr): Likewise.
10190         * typeck.c (build_function_call_real): Likewise.
10191         * sig.c (build_signature_table_constructor): Use build_addr_func.
10192         * cp-tree.h (build_call, build_addr_func): Declare them.
10193
10194 Tue May 14 12:47:47 1996  Mike Stump  <mrs@cygnus.com>
10195
10196         * cp-tree.h (LOOKUP_AGGR): Remove, unused.
10197         * parse.y: Remove uses of LOOKUP_AGGR.
10198
10199 Tue May 14 12:07:51 1996  Mike Stump  <mrs@cygnus.com>
10200
10201         * *.[chy]: Rename current_class_decl to current_class_ptr, and
10202         C_C_D to current_class_ref.
10203
10204 Mon May 13 16:55:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
10205
10206         * call.c (convert_harshness): Tighten up pointer conversions.
10207
10208 Sat May 11 04:33:50 1996  Doug Evans  <dje@canuck.cygnus.com>
10209
10210         * decl2.c (finish_vtable_vardecl): Surround DECL_ONE_ONLY with ifdef.
10211         (finish_file): Likewise.
10212
10213 Fri May 10 11:09:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
10214
10215         * cvt.c (convert_fn_ptr): We don't use thunks for pmfs.
10216
10217         * method.c (emit_thunk): Set flag_omit_frame_pointer in default
10218         code.
10219
10220 Thu May  9 18:18:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
10221
10222         * decl2.c: Turn on thunks by default where supported.
10223
10224 Tue May  7 20:39:57 1996  Mike Stump  <mrs@cygnus.com>
10225
10226         * cp-tree.h (build_overload_call_maybe): Removed.
10227         * call.c (build_overload_call_real): Invert meaning of last arg to
10228         be require_complete.
10229         (build_overload_call): Likewise.
10230         * typeck.c (build_x_function_call): Use build_overload_call_real
10231         instead of build_overload_call_maybe.
10232
10233 Mon May  6 01:23:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
10234
10235         * decl2.c (finish_file): Don't try to emit functions that haven't
10236         been compiled.
10237
10238 Fri May  3 09:30:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
10239
10240         * decl2.c (finish_vtable_vardecl): Oops.
10241
10242         * decl.c (maybe_push_to_top_level): Do save previous_class_*.
10243         Also store the bindings from previous_class_values.
10244         (pop_from_top_level): Restore them.
10245
10246 Thu May  2 21:56:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
10247
10248         * decl2.c (finish_vtable_vardecl): Only write out vtable if its
10249         symbol has been referenced.
10250         (finish_file): Re-join synthesis/vtable loop with inline emission
10251         loop, disable inlining when an inline is output.
10252
10253 Thu May  2 17:20:02 1996  Mike Stump  <mrs@cygnus.com>
10254
10255         * except.c (init_exception_processing): Setup saved_in_catch.
10256         (push_eh_cleanup): Reset __eh_in_catch.
10257         (expand_start_catch_block): Set __eh_in_catch.
10258
10259 Thu May  2 16:21:17 1996  Mike Stump  <mrs@cygnus.com>
10260
10261         * except.c (push_eh_cleanup): Add tracking for whether or not we
10262         have an active exception object.
10263         (expand_builtin_throw): Use it to make sure a rethrow without an
10264         exception object is caught.
10265
10266 Thu May  2 11:26:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
10267
10268         * decl.c (maybe_push_to_top_level): Clear out class-level bindings
10269         cache.
10270
10271 Wed May  1 11:26:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
10272
10273         * decl2.c (finish_file): Also use sentries for vars with
10274         DECL_ONE_ONLY or DECL_WEAK set (should any such happen to be
10275         created).
10276
10277         * lex.c (handle_cp_pragma): Disable #pragma
10278         interface/implementation if SUPPORTS_ONE_ONLY > 1.
10279
10280 Tue Apr 30 11:25:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
10281
10282         * method.c (emit_thunk): Wrap default case in
10283         temporary/permanent_allocation.
10284
10285         * method.c (make_thunk): Use DECL_ONE_ONLY.
10286         (emit_thunk): Call assemble_end_function.
10287
10288 Mon Apr 29 15:38:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
10289
10290         * decl2.c (import_export_vtable): Use DECL_ONE_ONLY.
10291         (import_export_decl): Likewise.
10292         (finish_prevtable_vardecl): Disable vtable hack if
10293         SUPPORTS_ONE_ONLY > 1.
10294
10295 Mon Apr 29 14:32:47 1996  Mike Stump  <mrs@cygnus.com>
10296
10297         * typeck.c (build_modify_expr): PREINCREMENT_EXPR and
10298         PREDECREMENT_EXPRs take two arguments, not one.
10299
10300 Mon Apr 29 00:27:53 1996  Jason Merrill  <jason@yorick.cygnus.com>
10301
10302         * class.c (build_vtable_entry): Don't build thunks for abstract
10303         virtuals.
10304
10305         * lex.c (real_yylex): Fix handling of __PRETTY_FUNCTION__ like C
10306         frontend.
10307
10308 Sat Apr 27 16:45:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
10309
10310         * class.c (set_rtti_entry): Use size_zero_node.
10311         (build_vtable): Likewise.
10312
10313 Sat Apr 27 14:48:57 1996  Jason Merrill  <jason@phydeaux.cygnus.com>
10314
10315         * class.c (finish_struct_1): Pass size_zero_node to set_rtti_entry.
10316         (prepare_fresh_vtable): Likewise.
10317
10318 Fri Apr 26 13:14:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
10319
10320         * method.c (emit_thunk): Call mark_used on the target function.
10321
10322         * call.c (build_method_call): Don't warn about pending templates.
10323
10324 Thu Apr 25 14:55:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
10325
10326         * decl2.c (finish_file): Fix list walking logic.
10327
10328         * typeck2.c (check_for_new_type): Only warn if -pedantic.
10329
10330 Wed Apr 24 15:41:15 1996  Bob Manson  <manson@charmed.cygnus.com>
10331
10332         * class.c (finish_struct_1): Remove old code for
10333         dont_allow_type_definitions.
10334         * cp-tree.h: Likewise.
10335         * spew.c: Make sure cp-tree.h is included before parse.h, so the
10336         definition of flagged_type_tree is found before it is used.
10337         * lex.c: Likewise.
10338         * parse.y: Added the ftype member to the type union, and changed a
10339         number of rules to use it instead of ttype. Added calls to
10340         check_for_new_type() as appropriate.
10341         * typeck2.c (check_for_new_type): New function for checking
10342         if a newly defined type appears in the specified tree.
10343         * cp-tree.h: Add new type flagged_type_tree. Add a prototype
10344         for check_for_new_type().
10345
10346 Wed Apr 24 00:36:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
10347
10348         * decl2.c (finish_file): Only use a sentry if the decl is public.
10349
10350         * pt.c (tsubst_expr, DECL_STMT): If we don't have an initializer,
10351         don't pass LOOKUP_ONLYCONVERTING.
10352
10353 Tue Apr 23 17:18:47 1996  Bob Manson  <manson@charmed.cygnus.com>
10354
10355         * typeck.c (common_type): Fix the ARRAY_TYPE case so it
10356         properly keeps track of const and volatile type modifiers.
10357
10358 Tue Apr 23 10:52:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
10359
10360         * tree.c (cp_tree_equal): C++ version of simple_cst_equal.
10361         * pt.c (comp_template_args): Use it.
10362
10363         * rtti.c (get_tinfo_fn, build_dynamic_cast, expand_*_desc): Call
10364         assemble_external for artificial function decls.
10365
10366         * decl.c (cp_finish_decl): Oops.
10367
10368 Mon Apr 22 17:28:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
10369
10370         * decl2.c (import_export_decl): Put static data member templates
10371         into common storage, or make them weak, depending on whether they
10372         are dynamically or statically initialized.
10373         (get_sentry): New function.
10374         (finish_file): Do import_export_decl for static data members before
10375         building the init/fini functions.  Don't init/fini a variable that's
10376         EXTERNAL.  Use a sentry for variables in common.  Fix mismatching
10377         push/pop_temp_slots.
10378         * decl.c (cp_finish_decl): If DECL_NOT_REALLY_EXTERN, do the
10379         expand_static_init thang.
10380         * method.c (get_id_2): New function.
10381
10382 Mon Apr 22 15:32:45 1996  Bob Manson  <manson@charmed.cygnus.com>
10383
10384         * parse.y (empty_parms): Make sure we use C++-style prototypes
10385         when we're declaring member functions.
10386
10387 Sun Apr 21 10:08:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
10388
10389         * Makefile.in (CONFLICTS): 16 s/r conflicts.
10390         * parse.y (self_template_type): New nonterminal.
10391
10392 Thu Apr 18 08:56:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
10393
10394         * decl.c (make_typename_type): Handle getting a TYPE_DECL for a
10395         name.
10396         * parse.y (base_class.1): Allow 'typename foo::bar'.
10397
10398         * lex.c (check_newline): Remove #pragma code that plays with the
10399         input stream, since we now deal with tokens.  Clear nextchar when
10400         we're done.
10401         (handle_cp_pragma): Use real_yylex.
10402         (handle_sysv_pragma): Don't do skipline here.  Only call real_yylex
10403         in one place.
10404
10405         * lex.c (check_for_missing_semicolon): Handle SELFNAME.
10406
10407         * lex.c (handle_cp_pragma): Fix "#pragma implementation".
10408
10409 Wed Apr 17 16:51:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
10410
10411         * parse.y: New token SELFNAME for potential constructor.
10412         * spew.c (yylex): Handle it.
10413         * lex.c (identifier_type): Produce it.
10414
10415         * parse.y (complete_type_name): In :: case, don't push class binding.
10416         (complex_type_name): Likewise.
10417
10418 Wed Apr 17 15:02:40 1996  Mike Stump  <mrs@cygnus.com>
10419
10420         * typeck.c (build_reinterpret_cast): Handle pointer to member
10421         functions.
10422
10423 Wed Apr 17 12:28:26 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10424
10425         * lex.c (handle_cp_pragma): New function, with decl, doing the cc1plus
10426         pragmas.
10427         (check_newline): Put the vtable/unit/implementation/interface pragma
10428         code into handle_cp_pragma, replacing it with a call.
10429         (handle_sysv_pragma): Give int return type, and take FINPUT and TOKEN
10430         args.  Get the next token after handling the pragma token.
10431
10432 Wed Apr 17 10:28:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
10433
10434         * cvt.c (cp_convert_to_pointer): Avoid doing base analysis on pmfs.
10435         (convert_to_pointer_force): Likewise.
10436
10437         * init.c (build_new): Fix array new without -fcheck-new.
10438
10439 Tue Apr 16 13:44:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
10440
10441         * cp-tree.h, call.c, class.c, decl.c, parse.y, pt.c, rtti.c,
10442         tree.c: Lose TYPE_NESTED_NAME.
10443
10444         * parse.y (nested_name_specifier_1): Don't treat non-identifiers
10445         as identifiers.
10446
10447         * tree.def: Add VEC_INIT_EXPR.
10448         * expr.c (cplus_expand_expr): Handle it.
10449         * init.c (build_new): Use it instead of the RTL_EXPR nastiness and
10450         the extra file-scope symbol nastiness.
10451
10452 Mon Apr 15 16:21:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
10453
10454         * method.c (make_thunk): Thunks are static.
10455         (emit_thunk): Use ASM_OUTPUT_MI_THUNK if it's defined.
10456
10457         * decl2.c (mark_vtable_entries): Emit thunks as needed.
10458         (finish_file): Don't emit them here.
10459
10460 Sun Apr 14 11:34:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
10461
10462         * rtti.c (build_dynamic_cast): Handle null pointers.
10463         (ifnonnull): New function.
10464
10465 Fri Apr 12 09:08:27 1996  Bob Manson  <manson@charmed.cygnus.com>
10466
10467         * call.c (build_method_call): Remember the original basetype we
10468         were called with. Give an error message instead of trying
10469         (incorrectly) to call a non-static member function through a
10470         non-inherited class.
10471
10472         * search.c (expand_upcast_fixups): Mark the new fixup as
10473         DECL_ARTIFICIAL.
10474
10475 Thu Apr 11 03:57:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
10476
10477         * init.c (build_new): Use a TARGET_EXPR for alloc_expr.
10478
10479         * class.c (set_rtti_entry): Fix for thunks.
10480
10481         * decl2.c (import_export_decl): Still emit typeinfo fns for
10482         cv-variants of builtin types.
10483
10484         * rtti.c (expand_class_desc): Set up base_info_type_node here.
10485         (init_rtti_processing): Instead of here.
10486
10487 Wed Apr 10 14:17:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
10488
10489         * rtti.c (init_rtti_processing): Do init regardless of -frtti.
10490         (build_typeid): Only complain about taking dynamic typeid without
10491         -frtti.
10492
10493         * decl2.c: flag_rtti defaults to 1.
10494
10495         * rtti.c (get_tinfo_var): The general class case is now smaller.
10496         (init_rtti_processing): Pack the latter three fields of base_info
10497         into 32 bits.
10498
10499 Wed Apr 10 13:50:14 1996  Mike Stump  <mrs@cygnus.com>
10500
10501         * init.c (expand_member_init): Don't dump if name is NULL_TREE.
10502
10503 Wed Apr 10 12:56:02 1996  Mike Stump  <mrs@cygnus.com>
10504
10505         * search.c (make_memoized_table_entry): Undefer the pop, if necessary.
10506         (push_memoized_context): Split out code to undefer pop_type_level to
10507         (clear_memoized_cache): here.
10508         (pop_memoized_context): We can only handle one layer of deferral of
10509         pop_type_level so clear the cache, if there was a previous level.
10510
10511 Tue Apr  9 23:06:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
10512
10513         * rtti.c (init_rtti_processing): Build up base_info_type_node.
10514         (expand_class_desc): Use one pointer to an array of base_info
10515         structs, passed using a CONSTRUCTOR.
10516
10517 Tue Apr  9 14:20:57 1996  Mike Stump  <mrs@cygnus.com>
10518
10519         * class.c (build_vbase_path): Remove block extern for
10520         flag_assume_nonnull_objects here.
10521         (build_vfn_ref): Split out functionality into build_vtbl_ref.
10522         (build_vtbl_ref): New routine.
10523         (build_vtable): Set up rtti info here.
10524         (add_virtual_function): Note in CLASSTYPE_RTTI the best
10525         place where we can get the rtti pointers from to avoid having to
10526         search around for a place.
10527         (finish_base_struct): Likewise.
10528         (finish_struct_1): Likewise.  Never create totally new vtables
10529         with totally new vtable pointers for rtti.  Disable code to layout
10530         vtable pointers better until we want to break binary
10531         compatibility.
10532         * rtti.c (build_headof_sub): New routine to convert down to a
10533         sub-object that has an rtti pointer in the vtable.
10534         (build_headof): Use it.  Also, use build_vtbl_ref now to be more
10535         maintainable.
10536         (build_dynamic_cast): Make sure we have saved it, if we need to.
10537         * search.c (dfs_init_vbase_pointers): Disable code that deals with
10538         a more efficient vtable layout, enable later.
10539         * call.c (flag_assume_nonnull_objects): Moved declaration to
10540         * cp-tree.h: here.  Declare build_vtbl_ref.
10541         * pt.c (instantiate_class_template): Use NULL_TREE instead of 0 in
10542         function calls that want a tree.
10543
10544 Tue Apr  9 12:10:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
10545
10546         * rtti.c (build_dynamic_cast): Handle downcasting to X* given
10547         other X subobjects in the most derived type.  Ack.
10548
10549         * rtti.c (build_dynamic_cast): No need to strip cv-quals here,
10550         get_typeid will do it for us.
10551         (get_typeid_1): Break out call-building for expand_*_desc to use.
10552         (get_typeid): Call it.
10553         (expand_*_desc): Likewise.
10554         * decl.c (init_decl_processing): Don't set TYPE_BUILT_IN on char *
10555         and void *.
10556         (init_decl_processing): Lose builtin_type_tdescs lossage.
10557         * decl2.c (finish_vtable_vardecl): Remove obsolete code.
10558
10559 Mon Apr  8 17:23:23 1996  Bob Manson  <manson@charmed.cygnus.com>
10560
10561         * pt.c (tsubst): When calling set_nested_typename, use
10562         TYPE_NESTED_NAME (current_class_type) instead of
10563         current_class_name.
10564
10565         * decl.c (pushdecl): Likewise.
10566         (pushdecl_class_level): Likewise.
10567         (grokdeclarator): Use NULL_TREE instead of 0 in the call to
10568         set_nested_typename.
10569
10570 Sun Apr  7 10:44:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
10571
10572         * rtti.c (synthesize_tinfo_fn): Handle arrays.
10573
10574         * cp-tree.h (DECL_REALLY_EXTERN): New macro.
10575
10576 Sat Apr  6 13:56:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
10577
10578         * rtti.c (throw_bad_cast): Use entry point __throw_bad_cast.
10579         (init_rtti_processing): Lose bad_cast_type.
10580         (build_dynamic_cast): Use throw_bad_cast.
10581
10582         * rtti.c (synthesize_tinfo_fn): Handle enums and pmfs.
10583
10584         * decl2.c (finish_file): Don't synthesize artificial functions
10585         that are external and not inline.
10586
10587         * rtti.c (get_tinfo_fn): If at_eof, call import_export_decl.
10588
10589         * decl2.c (finish_file): Handle having new inlines added to
10590         saved_inlines by synthesis.
10591
10592         * rtti.c (get_bad_cast_node): Don't require <typeinfo>.
10593
10594 Fri Apr  5 17:02:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
10595
10596         RTTI rewrite to initialize nodes as needed, not require that
10597         users #include <typeinfo>, complete functionality and reduce wasted 
10598         space.
10599         * rtti.c (init_rtti_processing): New fn.
10600         (build_typeid): The vtable entry is now a function.
10601         (get_tinfo_var): New fn.
10602         (get_tinfo_fn): Likewise.
10603         (get_typeid): Use it.
10604         (build_dynamic_cast): Declare and use entry point __dynamic_cast.
10605         (build_*_desc): Rename to expand_*_desc and rewrite to use entry
10606         points __rtti_*.
10607         (add_uninstantiated_desc, get_def_to_follow, build_t_desc): Lose.
10608         (synthesize_tinfo_fn): New fn.
10609         * method.c (build_t_desc_overload): Lose.
10610         (build_overload_with_type): More generic.
10611         * decl.c (init_decl_processing): Call init_rtti_processing.
10612         * class.c (set_rtti_entry): Use get_tinfo_fn.
10613         * decl2.c (mark_vtable_entries): Mark the rtti function.
10614         (finish_prevtable_vardecl): Don't build_t_desc.
10615         (import_export_decl): Handle tinfo functions.
10616         (finish_file): Likewise.
10617         * typeck.c (inline_conversion): New fn.
10618         (build_function_call_real): Use it.
10619         * cp-tree.h: Add decls.
10620
10621         * method.c (hack_identifier): Also convert component_refs from
10622         references.
10623
10624         * lex.c (cons_up_default_function): Use the type, not the name, in
10625         declspecs.
10626
10627         * decl2.c (import_export_vtable): Fix weak vtables.
10628
10629 Fri Apr  5 13:30:17 1996  Bob Manson  <manson@charmed.cygnus.com>
10630
10631         * search.c (get_base_distance_recursive): Fix access checks for
10632         protected bases.
10633
10634 Fri Apr  5 11:02:06 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10635
10636         * call.c (unary_complex_lvalue): Delete unneeded decl, it's in
10637         cp-tree.h.
10638         (convert_harshness): Add prototypes wrapped by PROTO.
10639         * decl2.c (grok_function_init): Likewise.
10640         (do_toplevel_using_decl): Change to void return type.
10641         * class.c (build_vtable_entry): Remove decl of make_thunk.
10642         (merge_overrides): Fix order of arg definitions.
10643         (finish_vtbls): Likewise.
10644         (fixup_vtable_deltas): Likewise.
10645         (modify_all_direct_vtables): Likewise.
10646         (modify_all_indirect_vtables): Likewise.
10647         * search.c (get_base_distance_recursive): Likewise.
10648         (get_abstract_virtuals_1): Likewise.
10649         (fixup_virtual_upcast_offsets): Likewise.
10650         (lookup_fnfields_1): Add prototypes wrapped by PROTO.
10651         * init.c (perform_member_init): Fix order of arg definitions.
10652         (expand_aggr_init_1): Add prototypes wrapped by PROTO.
10653         * cp-tree.h (make_thunk): Add decl.
10654         (overload_template_name, push_template_decl): Add decls.
10655         (do_toplevel_using_decl): Change to void return type.
10656         (vec_binfo_member): Add decl.
10657
10658 Thu Apr  4 13:33:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10659
10660         * typeck.c (mark_addressable, convert_for_assignment,
10661         convert_for_initialization, pointer_int_sum, pointer_diff,
10662         unary_complex_lvalue): Add prototypes wrapped by PROTO.
10663         (convert_sequence): #if 0 fn decl, since definition also is.
10664
10665 Thu Apr  4 11:00:53 1996  Mike Stump  <mrs@cygnus.com>
10666
10667         * rtti.c (build_dynamic_cast): Make sure we strip qualifiers on
10668         cast to pointer types for type searching.
10669
10670 Wed Apr  3 17:10:57 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10671
10672         * typeck.c (get_delta_difference): Use cp_error, not error, in the
10673         case where BINFO == 0.
10674
10675 Wed Apr  3 12:01:02 1996  Mike Stump  <mrs@cygnus.com>
10676
10677         * call.c (build_method_call): Fix wording of error messages so
10678         constructors come out right.
10679
10680 Tue Apr  2 16:06:59 1996  Bob Manson  <manson@charmed.cygnus.com>
10681
10682         * decl.c (push_overloaded_decl): Don't warn about hidden
10683         constructors when both the type and the function are declared
10684         in a system header file.
10685
10686 Mon Apr  1 09:03:13 1996  Bob Manson  <manson@charmed.cygnus.com>
10687
10688         * class.c (finish_struct_1): Propagate the TYPE_PACKED
10689         flag for the type to the type's fields.
10690
10691 Sat Mar 30 12:14:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10692
10693         * parse.y (complex_parmlist, ELLIPSES): Take out ARM-based warning.
10694
10695 Fri Mar 29 15:51:36 1996  Bob Manson  <manson@charmed.cygnus.com>
10696
10697         * class.c (base_info, finish_base_struct): Replace 
10698         needs_virtual_dtor with base_has_virtual.
10699
10700         (finish_struct_1): Remove the old code that tried to make default
10701         destructors virtual. Use base_has_virtual when checking if we need
10702         to add a vtable entry for the rtti code.
10703
10704 Fri Mar 29 14:02:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
10705
10706         * pt.c (push_template_decl): Complain about template decl with
10707         inappropriate declaration.
10708
10709 Fri Mar 29 12:15:35 1996  Bob Manson  <manson@charmed.cygnus.com>
10710
10711         * typeck.c (build_x_unary_op): Remove bogus check for taking
10712         the address of a member function.
10713
10714 Fri Mar 29 11:56:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
10715
10716         * parse.y (constructor_declarator): Only push the class if
10717         we are not already in the class.
10718
10719 Fri Mar 29 09:41:02 1996  Jeffrey A. Law  <law@cygnus.com>
10720
10721         * method.c (emit_thunk): Remove current_call_is_indirect nonsense.
10722         Add additional argument to INIT_CUMULATIVE_ARGS.
10723
10724 Thu Mar 28 16:41:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
10725
10726         * decl.c (shadow_tag): Fix error about anon union with methods.
10727
10728         * parse.y (self_reference): Only generate a self-reference if this
10729         is a non-template class.
10730         (opt.component_decl_list): Only use it if it was generated.
10731
10732         * parse.y (component_decl_1): Use constructor_declarator.
10733         (fn.def2): Likewise.
10734         (notype_component_declarator0): Likewise.
10735
10736 Thu Mar 28 15:11:35 1996  Bob Manson  <manson@charmed.cygnus.com>
10737
10738         * typeck.c (build_x_unary_op): Add checks for taking the address
10739         of a TARGET_EXPR or of a member function, and give appropriate
10740         warnings.
10741
10742 Thu Mar 28 14:49:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
10743
10744         * pt.c (process_template_parm): Allow template type parms to be
10745         used as types for template const parms.
10746
10747 Wed Mar 27 15:51:19 1996  Mike Stump  <mrs@cygnus.com>
10748
10749         * init.c (expand_vec_init): Ensure the eh cleanups are on the
10750         function_obstack.
10751
10752 Wed Mar 27 10:14:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
10753
10754         * decl.c (lookup_name_real): Be even more picky about the
10755         ambiguous lookup warning.
10756         (grokdeclarator): Tweak SCOPE_REF constructor declarators here.
10757         * parse.y (constructor_declarator): Rather than here.
10758
10759         * parse.y (constructor_declarator): New nonterminal.
10760         (fn.def1): Use it.
10761         (explicit_instantiation): Likewise.
10762
10763 Tue Mar 26 13:41:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
10764
10765         Add implicit declaration of class name at class scope.
10766         * decl.c (lookup_name_real): Restrict pedwarn about ambiguous lookup.
10767         * parse.y (self_reference): New nonterminal.
10768         (opt.component_decl_list): Use it.
10769         (fn.def1): Add nested_name_specifier type_name cases.
10770         * class.c (build_self_reference): New function.
10771         (finish_struct): Handle access_default later, move self-reference
10772         decl to the end.
10773         * pt.c (lookup_template_class): Handle getting a TYPE_DECL.
10774         * cp-tree.h: Adjust.
10775
10776         * pt.c (do_function_instantiation): Separate handling of member
10777         functions and non-member functions properly.
10778
10779 Mon Mar 25 14:23:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
10780
10781         * pt.c (process_template_parm): Improve error for 'volatile class K'.
10782
10783         * class.c (finish_struct_1): Check the right slot for destructors.
10784
10785         * decl.c (start_enum): Complain about enum templates.
10786
10787 Mon Mar 25 13:25:31 1996  Mike Stump  <mrs@cygnus.com>
10788
10789         * init.c (resolve_offset_ref): Offset pointers to member data by one.
10790         * typeck.c (unary_complex_lvalue): Likewise.
10791
10792 Mon Mar 25 13:30:42 1996  Bob Manson  <manson@charmed.cygnus.com>
10793
10794         * typeck.c (c_expand_return): Check for a returned local
10795         array name, similar to the check for an ADDR_EXPR.
10796
10797 Mon Mar 25 13:07:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
10798
10799         * decl.c (cp_finish_decl): Don't build cleanups for static
10800         variables here.
10801
10802 Fri Mar 22 17:57:55 1996  Mike Stump  <mrs@cygnus.com>
10803
10804         * typeck.c (build_modify_expr): Fix error messages to be more
10805         accurate.
10806         * cp-tree.h (assop_as_string): Parallel to op_as_string, but for
10807         assignment operators.
10808         * error.c (assop_as_string): Likewise.  Add support for `%Q' for
10809         assignment operators.
10810
10811 Fri Mar 22 13:48:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
10812
10813         * decl.c (grokdeclarator): Call bad_specifiers for typedefs.  Also
10814         give an error if initialized.  Pedwarn about nested type with the
10815         same name as its enclosing class.
10816
10817         * pt.c (tsubst, case TYPE_DECL): Set DECL_CONTEXT.
10818
10819         * typeck.c (require_complete_type): Be sure to instantiate the
10820         MAIN_VARIANT of the type.
10821
10822         * decl2.c (finish_file): Instantiate pending templates before
10823         processing static constructors and destructors.
10824
10825         * pt.c (instantiate_decl): Don't instantiate functions at toplevel
10826         unless at_eof.
10827
10828 Fri Mar 22 09:30:17 1996  Bob Manson  <manson@beauty.cygnus.com>
10829
10830         * decl2.c (delete_sanity): If error_mark_node is passed
10831         in as an expression, quit while we're ahead.
10832
10833         * decl.c (grokdeclarator): Give an error message if `friend'
10834         is combined with any storage class specifiers.
10835
10836 Wed Mar 20 14:51:55 1996  Jason Merrill  <jason@yorick.cygnus.com>
10837
10838         * parse.y (named_complex_class_head_sans_basetype): Don't crash on
10839         definition of nonexistent nested type.
10840
10841         * error.c (dump_decl, case TYPE_DECL): Fix decision for whether or
10842         not to say 'typedef'.
10843
10844 Wed Mar 20 00:11:47 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10845
10846         * cp-tree.h (struct lang_type): Make search_slot a tree, not a char*.
10847         * search.c (dfs_walk, dfs_init_vbase_pointers,
10848         expand_upcast_fixups): Remove cast of CLASSTYPE_SEARCH_SLOT.
10849         (dfs_find_vbases): Remove cast for CLASSTYPE_SEARCH_SLOT init.
10850
10851 Tue Mar 19 17:56:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
10852
10853         * except.c (build_throw): Support minimal parse.
10854         * pt.c (tsubst_copy): Support THROW_EXPR.
10855         * decl2.c (build_expr_from_tree): Likewise.
10856
10857         * pt.c (mangle_class_name_for_template): Always allocate
10858         scratch_firstobj.
10859
10860 Tue Mar 19 16:34:31 1996  Bob Manson  <manson@beauty.cygnus.com>
10861
10862         * cvt.c (cp_convert_to_pointer): Give an appropriate error
10863         when trying to cast from an incomplete type.
10864
10865 Tue Mar 19 16:00:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
10866
10867         * pt.c (instantiate_class_template): Don't bother setting up
10868         CLASSTYPE_TAGS explicitly, as the nested types will add
10869         themselves.
10870
10871 Tue Mar 19 15:48:43 1996  Bob Manson  <manson@beauty.cygnus.com>
10872
10873         * decl.c (shadow_tag): Remove old error check for usage of
10874         an enum without a previous declaration.
10875         (xref_tag): Add error message about usage of enums without a
10876         previous declaration.
10877
10878 Tue Mar 19 09:21:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
10879
10880         * lex.c (do_identifier): Only do name consistency check if we're
10881         parsing.
10882
10883         * pt.c (push_template_decl): Don't crash if we get a member defn
10884         that doesn't match.
10885
10886         * decl.c (xref_tag_from_type): New function to do an xref without
10887         always having to figure out code_type_node.
10888         * cp-tree.h: Declare it.
10889         * pt.c (instantiate_class_template): Use it for friend classes.
10890         (lookup_template_class): Use it.
10891
10892         * typeck2.c (build_functional_cast): Pull out a single parm before
10893         passing it to build_c_cast.
10894
10895 Tue Mar 19 09:07:15 1996  Bob Manson  <manson@beauty.cygnus.com>
10896
10897         * expr.c (do_case): Give an error message if a pointer is
10898         given as a case value.
10899
10900 Mon Mar 18 21:57:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
10901
10902         * typeck.c (build_c_cast): Don't pull single TEMPLATE_DECL out of
10903         an overload list.
10904
10905         * lex.c (cons_up_default_function): Really, now, interface hackery
10906         does not apply to synthesized methods.
10907
10908 Mon Mar 18 18:20:57 1996  Mike Stump  <mrs@cygnus.com>
10909
10910         * call.c (build_method_call): Ctors and dtors now have special names
10911         with respect to lookups.
10912         * class.c (add_method): Likewise.
10913         (grow_method): Likewise.
10914         (finish_struct_methods): Likewise.
10915         (warn_hidden): Likewise.
10916         (finish_struct_1): Likewise.
10917         * cvt.c (convert_to_reference): Likewise.
10918         (convert_to_aggr): Likewise.
10919         (cp_convert): Likewise.
10920         * decl2.c (check_classfn): Likewise.
10921         * init.c (expand_member_init): Likewise.
10922         (expand_default_init): Likewise.
10923         (expand_aggr_init_1): Likewise.
10924         (build_offset_ref): Likewise.
10925         (build_new): Likewise.
10926         (build_delete): Likewise.
10927         * lex.c (do_inline_function_hair): Likewise.
10928         * search.c (lookup_field_1): Likewise.
10929         (lookup_fnfields_here): Likewise.
10930         (lookup_field): Likewise.
10931         (lookup_fnfields): Likewise.
10932         (get_virtual_destructor): Likewise.
10933         (dfs_debug_mark): Likewise.
10934         (dfs_pushdecls): Likewise.
10935         (dfs_compress_decls): Likewise.
10936         * tree.c (layout_basetypes): Likewise.
10937         * typeck.c (build_component_ref): Likewise.
10938         (build_x_function_call): Likewise.
10939         (build_modify_expr): Likewise.
10940         (convert_for_initialization): Likewise.
10941         (build_functional_cast): Likewise.
10942         * cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Likewise.
10943         (CTOR_NAME): New.
10944         (DTOR_NAME): New.
10945         * decl.c (ctor_identifier): New.
10946         (dtor_identifier): New.
10947         (init_decl_processing): Set them.
10948
10949 Mon Mar 18 18:00:51 1996  Mike Stump  <mrs@cygnus.com>
10950
10951         * typeck.c (build_component_ref): Don't get confused by fields whose
10952         context has no type name, like pointer to member functions.
10953
10954 Mon Mar 18 13:19:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
10955
10956         * decl.c (grokdeclarator): Handle typedef without declarator.
10957
10958         * pt.c (tsubst): Handle SCOPE_REF in declarator.
10959
10960         * parse.y (bad_parm): Catch another case of missing `typename'.
10961
10962         * lex.c (yyprint): Handle TYPE_DECLs.
10963
10964         * decl.c (start_function): Don't try to be clever.
10965
10966         * lex.c: Lose compiler_error_with_decl.
10967         * typeck2.c: Lose error_with_aggr_type.
10968         (incomplete_type_error): Use cp_* instead of old functions.
10969         (readonly_error): Likewise.
10970         * typeck.c (convert_arguments): Likewise.
10971         * search.c (lookup_nested_field): Likewise.
10972         * method.c (make_thunk): Likewise.
10973         * decl.c (grokparms): Likewise.
10974         * cp-tree.h: Update.
10975
10976         * tree.c (min_tree_cons): Call copy_to_permanent for the purpose
10977         and value.
10978
10979 Mon Mar 18 11:25:52 1996  Bob Manson  <manson@beauty.cygnus.com>
10980
10981         * method.c (build_opfncall): When deleting a pointer to an
10982         array, build a new pointer to the tree past any ARRAY_TYPE
10983         nodes.
10984
10985 Mon Mar 18 10:11:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
10986
10987         * decl.c (lookup_name_real): Initialize local var TYPE to NULL_TREE.
10988
10989 Fri Mar 15 11:03:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
10990
10991         * pt.c (instantiate_decl): Only call import_export_decl if at_eof
10992         and ! DECL_INLINE.
10993
10994         * decl.c (finish_function): Don't set nested based on
10995         hack_decl_function_context.
10996         * parse.y (function_try_block): Check for nested function.
10997         (pending_inlines): Likewise.
10998
10999         * decl2.c (build_expr_from_tree): If a unary op already has a
11000         type, just return it.
11001
11002         * decl2.c (finish_prevtable_vardecl): Use ADJUST_VTABLE_LINKAGE.
11003
11004         * decl2.c (walk_vtables): vardecl_fn returns int; return 1 if it does.
11005         (finish_file): Check the return value of walk_vtables.
11006         (finish_prevtable_vardecl): Return int.
11007         (finish_vtable_vardecl): Likewise.
11008         (prune_vtable_vardecl): Likewise.
11009         * lex.c (set_vardecl_interface_info): Likewise.
11010         * cp-tree.h: Adjust return types.
11011
11012         * class.c (delete_duplicate_fields_1): Don't complain about
11013         duplicate nested types if they're the same type.
11014         (finish_struct): Remove check for duplicate.
11015         * decl2.c (grokfield): Don't check for typedef of anonymous type.
11016
11017 Thu Mar 14 10:00:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
11018
11019         * cp-tree.h: Lose SIGNATURE_GROKKING_TYPEDEF.
11020
11021         * decl.c (grokdeclarator): Lose special handling of class-level
11022         typedef.  Lose SIGNATURE_GROKKING_TYPEDEF.  Set
11023         SIGNATURE_HAS_OPAQUE_TYPEDECLS later.
11024
11025         * cvt.c (convert_pointer_to_real): Retain cv-quals in conversion.
11026
11027         * pt.c (tsubst_copy): Strip cv-quals from destructor name types.
11028
11029         * search.c (compute_access): Fix handling of anonymous union
11030         members.
11031         * class.c (finish_struct_anon): Propagate TREE_{PRIVATE,PROTECTED}
11032         from anonymous unions to their members.
11033
11034         * typeck.c (build_x_function_call): For static member functions,
11035         hand off to build_member_call.
11036
11037 Wed Mar 13 14:03:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
11038
11039         * typeck.c (build_component_ref): Handle OFFSET_REFs.
11040
11041         * init.c (expand_vec_init): Fix init == 0 case.
11042
11043 Tue Mar 12 14:36:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
11044
11045         * init.c (build_new): Pedwarn about init and array new.
11046         (expand_vec_init): Handle lists, use convert_for_initialization.
11047
11048         * typeck.c (convert_for_initialization): Pass LOOKUP_NO_CONVERSION
11049         when converting to an aggregate type.
11050         * cvt.c (cp_convert): Pass it through.
11051
11052         * typeck.c (build_conditional_expr): Handle user-defined
11053         conversions to slightly different types.
11054
11055         * decl.c (grokdeclarator): Force an array type in a parm to be
11056         permanent.
11057
11058         * decl2.c (do_using_directive): Sorry.
11059         (do_namespace_alias): Likewise.
11060         * lex.c (real_yylex): Warn about using the `namespace' keyword.
11061
11062 Sun Mar 10 22:26:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
11063
11064         * parse.y (datadef): Move call to note_list_got_semicolon up.
11065
11066 Fri Mar  8 11:47:26 1996  Mike Stump  <mrs@cygnus.com>
11067
11068         * tree.c (unsave_expr): Don't unsave, UNSAVE_EXPRs.
11069
11070 Fri Mar  8 11:29:06 1996  Mike Stump  <mrs@cygnus.com>
11071
11072         * decl.c (cp_finish_decl): The exception regions have to be
11073         nested, not overlapping.  We start the exception region for a
11074         decl, after it has been fully built, and all temporaries for it
11075         have been cleaned up.
11076
11077 Thu Mar  7 17:46:06 1996  Mike Stump  <mrs@cygnus.com>
11078
11079         * tree.c (vec_binfo_member): Don't core dump if we have no bases.
11080
11081 Thu Mar  7 14:11:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
11082
11083         * tree.def: Add RETURN_INIT.
11084         * pt.c (instantiate_decl): Handle RETURN_INIT.
11085         * decl.c (store_return_init): Handle minimal_parse_mode.
11086
11087         * tree.c (cp_build_type_variant): Just return an error_mark_node.
11088         * decl.c (make_typename_type): Don't try to get the file and line
11089         of an identifier.
11090         * typeck.c (comptypes): Handle TYPENAME_TYPE.
11091
11092 Wed Mar  6 18:47:50 1996  Per Bothner  <bothner@kalessin.cygnus.com>
11093
11094         * decl.c (poplevel): Make sure we clear out and restore old local
11095         non-VAR_DECL values by default when they go out of scope.
11096
11097 Wed Mar  6 09:57:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
11098
11099         * method.c (build_overload_value): Use DECL_ASSEMBLER_NAME in
11100         referring to addresses of variables and functions.
11101
11102         * error.c (dump_expr): Support SIZEOF_EXPR.
11103
11104         * init.c (do_friend): Use the return value of check_classfn.
11105
11106         * typeck.c (convert_arguments): Call complete_type.
11107
11108         * method.c (hack_identifier): After giving an error, set value to
11109         error_mark_node.
11110
11111 Tue Mar  5 16:00:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
11112
11113         * tree.c (hack_decl_function_context): Kludge around DECL_CONTEXT
11114         lossage for local classes.
11115         * cp-tree.h: Declare it.
11116         * decl.c (lookup_name_real): Evil, painful hack for local classes.
11117         (grokfndecl): Set DECL_CLASS_CONTEXT and DECL_NO_STATIC_CHAIN here.
11118         Use hack_decl_function_context.
11119         (grokdeclarator): Don't set DECL_NO_STATIC_CHAIN here.
11120         (start_function): Use hack_decl_function_context.
11121         (finish_function): Likewise.
11122         * method.c (synthesize_method): Likewise.
11123         * lex.c (process_next_inline): Likewise.
11124         (do_pending_inlines): Likewise.
11125         * decl2.c (finish_file): Unset DECL_STATIC_FUNCTION_P when we're
11126         done with it.
11127
11128 Mon Mar  4 22:38:39 1996  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
11129
11130         * sig.c (build_signature_pointer_or_reference_type): Align
11131         signature pointers/references on 8-byte boundaries so they can be
11132         grabbed 2 words at a time on a Sparc.
11133
11134 Tue Mar  5 10:21:01 1996  Jason Merrill  <jason@yorick.cygnus.com>
11135
11136         * method.c (hack_identifier): Requiring a static chain is now a
11137         hard error.
11138         * decl.c (grokdeclarator): Set DECL_NO_STATIC_CHAIN on nested
11139         functions.
11140
11141 Mon Mar  4 20:03:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
11142
11143         * init.c (build_offset_ref): Call complete_type.
11144
11145         * decl.c (pop_from_top_level): Always pop previous_class_type.
11146
11147         * parse.y: Handle multiple decls in a for-init-statement.
11148         * pt.c (tsubst_expr): Likewise.
11149
11150         * pt.c (tsubst): Use tsubst_expr for the second operand of an
11151         ARRAY_REF.
11152
11153         * decl.c (maybe_push_to_top_level): Don't save previous_class_type.
11154         (poplevel_class): Set it here.
11155         (pop_from_top_level): Pop it here if we're returning to class scope.
11156         * class.c (pushclass): Don't set it here.
11157
11158         * decl.c (maybe_push_to_top_level): Save current_template_parms,
11159         and clear it if !pseudo.
11160         (pop_from_top_level): Restore it.
11161
11162         * decl2.c (finish_file): Push the dummy each time we walk the list
11163         of vtables.
11164
11165         * error.c (dump_expr): Support LOOKUP_EXPR and actually do
11166         something for CAST_EXPR.
11167         
11168 Mon Feb 19 14:49:18 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
11169
11170         * cvt.c (cp_convert): Warn about implicit conversion of the
11171         address of a function to bool, as it is always true.
11172
11173 Fri Feb 23 23:06:01 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
11174
11175         * typeck.c (c_expand_return): Fix warning for local externs returned.
11176
11177 Mon Mar  4 15:03:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
11178
11179         * tree.c (mapcar): Propagate const and volatile properly.
11180
11181         * typeck.c (complete_type): Be sure to instantiate the
11182         MAIN_VARIANT of the type.
11183
11184         * method.c (synthesize_method): Class interface hackery does not
11185         apply to synthesized methods.
11186
11187 Mon Mar  4 14:05:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
11188
11189         * pt.c (comp_template_args): Use comptypes rather than just
11190         checking for TEMPLATE_TYPE_PARM equivalence.
11191
11192         * typeck.c (build_x_function_call): Call complete_type before
11193         checking TYPE_OVERLOADS_CALL_EXPR.
11194
11195 Mon Mar  4 18:48:30 1996  Manfred Hollstein   <manfred@lts.sel.alcatel.de>
11196
11197         * g++.c (main): Check also for new define ALT_LIBM.
11198
11199 Fri Mar  1 13:09:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
11200
11201         * pt.c (instantiate_class_template): If we don't have a pattern
11202         yet, that's OK.
11203         (coerce_template_parms): If we see a local class, bail.
11204
11205         * decl.c (grok_reference_init): Make sure there's a type before
11206         checking its code.
11207
11208         * pt.c (do_function_instantiation): Avoid crashing on invalid decls.
11209         (push_template_decl): Likewise.
11210
11211         * parse.y (named_class_head): Set
11212         CLASSTYPE_TEMPLATE_SPECIALIZATION here if we have basetypes.
11213
11214         * decl.c (xref_tag): Diagnose redeclaration of template
11215         type-parameter name.
11216
11217         * error.c (dump_type): Handle anonymous template type parms.
11218
11219         * pt.c (instantiate_template): Use TYPE_MAIN_DECL instead of
11220         TYPE_STUB_DECL.
11221         (coerce_template_parms): Likewise.
11222
11223 Thu Feb 29 16:26:01 1996  Mike Stump  <mrs@cygnus.com>
11224
11225         * class.c (instantiate_type, case {ARRAY,INDIRECT}_REF,
11226         case ADDR_EXPR): Don't modify rhs if a subinstantiation fails.
11227
11228 Thu Feb 29 08:20:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
11229
11230         * pt.c (instantiate_template): Take the MAIN_VARIANT of the type
11231         before trying to get its STUB_DECL.
11232         (coerce_template_parms): Likewise.
11233
11234         * parse.y (template_type_parm): If they didn't use 'class',
11235         pretend they did after giving an error.
11236
11237         * pt.c (coerce_template_parms): Diagnose use of local class.
11238
11239         * decl.c (grok_reference_init): Use instantiate_type.
11240
11241         * error.c (dump_expr): Handle TEMPLATE_DECLs.
11242
11243         * parse.y (named_class_head): Diagnose mismatching types and tags.
11244
11245         * decl.c (pushdecl): Type decls and class templates clash with
11246         artificial type decls, not hide them.
11247
11248         * decl.c (redeclaration_error_message): Diagnose redefinition of
11249         templates properly.
11250         (duplicate_decls): Diagnose disallowed overloads for template
11251         functions, too.
11252
11253         * decl.c (start_decl): Call complete_type before checking for a
11254         destructor.
11255
11256         * pt.c (tsubst): Use tsubst_expr on the elts of a VEC.
11257
11258         * decl.c (xref_tag): A TEMPLATE_TYPE_PARM is a match.
11259
11260 Wed Feb 28 09:28:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
11261
11262         * decl.c (grok_op_properties): Don't check for operator++(int) in
11263         a template.
11264
11265         * tree.c (perm_manip): Return a copy of variable and function
11266         decls with external linkage.
11267
11268         * tree.def: Change some of the min tree codes to type "1".
11269         * pt.c (uses_template_parms): Handle 'e's, return 1 for LOOKUP_EXPRs.
11270         * method.c (build_overload_int): Emit something arbitrary for
11271         anything but an INTEGER_CST if we're in a template.
11272
11273         * decl.c (cp_finish_decl): Call complete_type before deciding
11274         whether or not to lay out the decl.
11275
11276         * lex.c (do_identifier): Check for DECL_INITIAL before using it.
11277
11278 Tue Feb 27 16:35:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
11279
11280         * typeck2.c (build_x_arrow): Call complete_type.
11281
11282         * pt.c (add_pending_template): Broken out.
11283         (lookup_template_class): If -fexternal-templates, call it for all
11284         the methods of implemented types.
11285         (instantiate_class_template): Instead of instantiating them here.
11286         (instantiate_decl): Handle -fexternal-templates earlier.
11287
11288 Tue Feb 27 15:51:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11289
11290         * search.c, lex.c, decl.c, class.c, cp-tree.h: Don't wrap the
11291         memoized lookup stuff inside GATHER_STATISTICS.
11292
11293 Tue Feb 27 10:38:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
11294
11295         * decl.c (start_decl): Complain about array of incomplete type
11296         here.
11297         (grokdeclarator): Not here.
11298
11299         * parse.y (template_parm): Expand full_parm inline so we can set
11300         the rule's precedence.
11301
11302         * pt.c (tsubst_expr): If we're in a template, just do tsubst_copy.
11303         (tsubst): tsubst_expr the DECL_INITIAL of FIELD_DECLs.
11304         * decl2.c (grokbitfield): Don't check for integer constant here.
11305         * class.c (finish_struct_1): Check here.
11306
11307         * decl.c (define_label): Make the min decl go on permanent_obstack.
11308
11309         * pt.c (unify): Don't handle CONST_DECLs.
11310         (uses_template_parms): Don't check DECL_INITIAL on a CONST_DECL.
11311         (tsubst_copy): Likewise.
11312
11313         * lex.c (do_identifier): Do pull the DECL_INITIAL out of a
11314         CONST_DECL for a template parm.
11315
11316 Mon Feb 26 12:48:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
11317
11318         * decl.c (grokdeclarator): Complain about array of incomplete type
11319         here.
11320         (start_decl_1): Not here.
11321
11322         * pt.c (tsubst): Handle pointer-to-function declarators.
11323
11324         * method.c (hack_identifier): If pedantic, diagnose local class
11325         methods that require a static chain.
11326
11327         * decl.c (grok_op_properties): No longer static.
11328         * cp-tree.h: Declare it.
11329         * pt.c (tsubst): Call it for operators.
11330         Use tsubst_copy for TREE_VECs.
11331
11332         * parse.y (template_arg): The expr has precedence like '>'.
11333
11334 Fri Feb 23 14:51:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
11335
11336         * pt.c (coerce_template_parms): Don't coerce an expression using
11337         template parms.
11338         (uses_template_parms): Also check DECL_INITIAL in CONST_DECLs.
11339         (tsubst): Don't use build_index_2_type if the max_value uses template
11340         parms.
11341         * method.c (build_overload_int): Emit something arbitrary for an
11342         expression using template parms.
11343
11344         * parse.y (template_close_bracket): New non-terminal to catch use
11345         of '>>' instead of '> >' in template class names.
11346         (template_type): Use it.
11347         * Makefile.in (CONFLICTS): Causes one more r/r conflict.
11348
11349         * tree.def: Add CAST_EXPR.
11350         * typeck2.c (build_functional_cast): Use CAST_EXPR instead of
11351         CONVERT_EXPR for minimal_parse_mode.
11352         * typeck.c (build_c_cast): Likewise.
11353         * pt.c (tsubst_copy): Likewise.
11354         * decl2.c (build_expr_from_tree): Likewise.
11355         * error.c (dump_expr): Likewise.
11356
11357 Fri Feb 23 10:36:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11358
11359         * except.c (SetTerminate, SetUnexpected): Put back global vars.
11360         (init_exception_processing): Put back decl/init of
11361         set_unexpected_fndecl and set_terminate_fndecl, needed to get the
11362         fns from libstdc++.
11363
11364         * decl.c (struct binding_level): Delete ACCEPT_ANY bitfield.
11365         (declare_uninstantiated_type_level, uninstantiated_type_level_p):
11366         Delete unused fns.
11367         * cp-tree.h (declare_uninstantiated_type_level,
11368         uninstantiated_type_level_p): Delete prototypes.
11369
11370 Thu Feb 22 19:36:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
11371
11372         * pt.c (tsubst_expr): Add default return.
11373
11374 Thu Feb 22 16:47:24 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11375
11376         * error.c (fndecl_as_string): Delete unused arg CNAME.
11377         * sig.c (build_signature_table_constructor,
11378         build_signature_method_call): Fix calls.
11379
11380         * class.c (the_null_vtable_entry): Delete var definition.
11381         (init_class_processing): Delete tree the_null_vtable_entry init.
11382         * decl.c (no_print_{functions, builtins}): Declare as static.
11383         (__tp_desc_type_node): #if 0 var definition.
11384         (init_type_desc): #if 0 init of __tp_desc_type_node.
11385         (vb_off_identifier): Move var decl into init_decl_processing.
11386         (current_function_assigns_this): Declare as static.
11387         (int_ftype_ptr_ptr_int, void_ftype_ptr_int_int): Delete var decls.
11388         (init_decl_processing): Delete init of void_ftype_ptr_ptr_int.
11389         Move decls of string_ftype_ptr_ptr and int_ftype_string_string here.
11390         * decl2.c (delete_sanity): Delete definition/mod of local var ELT_SIZE.
11391         * init.c (BI_header_type, BI_header_size): Declare as static.
11392         * pt.c (template_classes): Delete unused var.
11393         (add_pending_template): Delete decl for non-existent fn.
11394         (lookup_template_class): Delete vars CODE and TAG_CODE.
11395         (instantiate_template): Delete unused var TARGS.
11396         * cp-tree.h (vb_off_identifier, current_function_assigns_this):
11397         Delete decls.
11398         (__tp_desc_type_node): #if 0 var decl.
11399         (fndecl_as_string): Fix prototype.
11400
11401 Thu Feb 22 15:56:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
11402
11403         * tree.def: Add GOTO_STMT.
11404         * pt.c (tsubst_expr): Support goto and labels.
11405         * decl.c (define_label): Support minimal parsing.
11406         * parse.y (simple_stmt): Likewise.
11407
11408 Thu Feb 22 15:30:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11409
11410         * xref.c (GNU_xref_member): Only define/set var I if
11411         XREF_SHORT_MEMBER_NAMES is defined, to match when it's actually
11412         used.
11413         (GNU_xref_end_scope): Delete unused fifth arg TRNS.
11414         (GNU_xref_end): Fix call.
11415         * decl.c (poplevel, poplevel_class, finish_method): Fix calls.
11416         * cp-tree.h (GNU_xref_end_scope): Fix prototype.
11417
11418         * tree.c (build_exception_variant): Delete unused vars I, A, T,
11419         T2, and CNAME.
11420         (layout_vbasetypes): Delete unused var NONVIRTUAL_VAR_SIZE.
11421         (mapcar): Delete unused var CODE.
11422         (build_cplus_new): Delete unused arg WITH_CLEANUP_P.
11423         (break_out_cleanups): Fix call.
11424         (bot_manip): Likewise.
11425         * call.c (build_method_call): Likewise.
11426         * cvt.c (build_up_reference, convert_to_reference, cp_convert):
11427         Likewise.
11428         * typeck.c (unary_complex_lvalue, build_modify_expr,
11429         convert_for_initialization): Likewise.
11430         * typeck2.c (build_functional_cast): Likewise.
11431         * cp-tree.h (build_cplus_new): Fix prototype.
11432
11433         * repo.c (open_repo_file): Delete unused var Q.
11434         (repo_compile_flags, repo_template_declared,
11435         repo_template_defined, repo_class_defined, repo_inline_used,
11436         repo_vtable_used, repo_tinfo_used): #if 0 unused fns.
11437         (repo_get_id, repo_vtable_used): Declare as static. 
11438         * cp-tree.h (mark_{decl,class}_instantiated, finish_repo): Add
11439         prototypes.
11440
11441 Thu Feb 22 14:53:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
11442
11443         * parse.y (pending_inlines): Add function_try_block case.
11444
11445         * pt.c (unify): Fix for template const parms.
11446
11447 Thu Feb 22 13:24:15 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11448
11449         * lex.c (extract_interface_info): Delete forward decl.
11450         (default_copy_constructor_body, default_assign_ref_body): Delete
11451         decls for non-existent functions.
11452         (synth_firstobj, inline_text_firstobjs): Delete unused vars.
11453         (init_lex): Delete setting them.
11454         (cons_up_default_function): Delete unused vars FUNC_BUF,
11455         FUNC_LEN, and COMPLEX.  Delete code setting COMPLEX.  Delete old
11456         #if 0'd synth code.
11457         (toplevel, expression_obstack): Delete unused extern decls.
11458         (tree_node_kind): Delete unused enum.
11459         (tree_node_counts, tree_node_sizes): Wrap with #ifdef
11460         GATHER_STATISTICS.
11461         (tree_node_kind_names): Delete unused extern decl.
11462         (synth_obstack): Delete unused var.
11463         (init_lex): Don't set it.
11464         (init_parse): Add decl before use.
11465         (reduce_count): Only define #ifdef GATHER_STATISTICS && REDUCE_LENGTH.
11466         (current_unit_{name, language}): Delete unused vars. 
11467         (check_newline): Don't bother setting them, just accept the #pragma.
11468         * cp-tree.h (init_repo, peek_yylex): Add prototypes.
11469         (current_unit_{name, language}): Delete decls.
11470
11471         * search.c: Wrap all of the memoized functions, macros, and
11472         variables inside #ifdef GATHER_STATISTICS.
11473         (lookup_field, lookup_fnfields): Likewise.
11474         (init_search_processing): Likewise.
11475         (reinit_search_statistics): Wrap whole function.
11476         * lex.c (reinit_lang_specific): Wrap call to reinit_search_statistics.
11477
11478         * decl.c (finish_function): Only call pop_memoized_context if
11479         GATHER_STATISTICS is defined.
11480         (start_function): Likewise for push_memoized_context.
11481         * class.c (pushclass, popclass): Likewise.
11482
11483         * cp-tree.h (CLASSTYPE_MTABLE_ENTRY): Move definition from here...
11484         * search.c (CLASSTYPE_MTABLE_ENTRY): ... to here.
11485
11486         * cvt.c (cp_convert): Delete unused local var FORM.
11487         * cp-tree.h (can_convert, can_convert_arg, real_lvalue_p): Add
11488         prototypes.
11489
11490 Thu Feb 22 13:19:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
11491
11492         * pt.c (do_poplevel): Oops; really return what we get from
11493         poplevel this time.
11494
11495 Thu Feb 22 11:41:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11496
11497         * cp-tree.h (is_aggr_type): Add prototype.
11498
11499         * cp-tree.h ({push,pop}_cp_function_context): Add decls.
11500         * method.c ({push,pop}_cp_function_context): Delete decls.
11501         * except.c (start_eh_unwinder, end_eh_unwinder): Declare as void.
11502         (SetUnexpected, SetTerminate): Delete unused vars.
11503         (init_exception_processing): Don't set SetUnexpected or
11504         SetTerminate.  Don't set SET_UNEXPECTED_FNDECL or SET_TERMINATE_FNDECL.
11505         (output_exception_table_entry): Delete unused array LABEL.
11506         (expand_internal_throw): Delete unused var PARAMS.
11507         (expand_start_catch_block): Delete unused var CLEANUP.
11508         (emit_exception_table): Delete unused var EH_NODE_DECL.
11509         (expand_builtin_throw): Delete unused vars UNWIND_AND_THROW and
11510         GOTO_UNWIND_AND_THROW.  Don't set them.
11511         (end_eh_unwinder): Add top decl.
11512         (pop_rtl_from_perm): Delete unused decl of PERMANENT_OBSTACK.
11513         (exception_section, push_rtl_perm, do_function_call,
11514         lang_interim_eh, push_eh_cleanup, eh_outer_context,
11515         expand_end_eh_spec, end_eh_unwinder): Declare as static.
11516         (saved_pc, saved_throw_type, saved_throw_value, saved_cleanup,
11517         throw_used): Likewise.
11518         * cp-tree.h (expand_end_eh_spec): Delete prototype.
11519
11520         * search.c (dfs_mark, dfs_mark_vtable_path,
11521         dfs_unmark_vtable_path, dfs_mark_new_vtable,
11522         dfs_unmark_new_vtable, dfs_clear_search_slot,
11523         dfs_search_slot_nonempty_p, bfs_markedp, bfs_unmarkedp,
11524         bfs_marked_vtable_pathp, bfs_unmarked_vtable_pathp,
11525         bfs_marked_new_vtablep, bfs_unmarked_new_vtablep): #if 0 unused
11526         functions.
11527         (n_fields_searched, n_calls_lookup_field, n_calls_lookup_field_1,
11528         n_calls_lookup_fnfields, n_calls_lookup_fnfields_1,
11529         n_calls_get_base_type, n_outer_fields_searched, n_contexts_saved):
11530         Only define #ifdef GATHER_STATISTICS.
11531         (reinit_search_statistics): Only init some vars if GATHER_STATISTICS
11532         is defined.
11533         (vbase_decl): Delete var definition.
11534         (init_search): Delete old decl.
11535         (init_vbase_pointers): Delete building of VBASE_DECL, since it's
11536         never actually used.
11537         (expand_indirect_vtbls_init): Delete init of VBASE_DECL.
11538         (get_base_distance_recursive): Delete unused fourth arg
11539         BASETYPE_PATH.  Fix call .
11540         (get_base_distance): Fix call.
11541         (push_class_decls): Delete unused var ID.
11542         (make_memoized_table_entry): Declare as static.
11543         (breadth_first_search): Declare as static.
11544         (tree_has_any_destructor_p): Declare as static.
11545         (pop_class_decls): Delete unused arg pop_class_decls.
11546         * class.c (popclass): Fix call to pop_class_decls.
11547         * cp-tree.h (make_memoized_table_entry, breadth_first_search,
11548         tree_has_any_destructor_p): Delete prototypes.
11549
11550         * rtti.c (build_ptmf_desc): Delete unused arg TYPE.
11551         (build_t_desc): Fix call.  Delete unused vars ELEMS and TT.
11552         (build_dynamic_cast): Delete unused local vars TMP1 and RETVAL.
11553         (build_user_desc): Delete unused var T.
11554         (build_class_desc): Delete unused vars T and OFF.
11555         (build_t_desc): Delete unused var NAME_STRING.
11556         (build_headof): Make static.
11557         (get_bad_cast_node): Likewise.
11558         (get_def_to_follow): Likewise.
11559         * cp-tree.h (init_type_desc): Add prototype.
11560         (build_headof): Remove prototype.
11561
11562 Thu Feb 22 00:54:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
11563
11564         * pt.c (tsubst): Only look for matching decls at file scope for
11565         non-member functions.
11566
11567         * call.c (build_scoped_method_call): Handle scoped destructor
11568         calls in templates.
11569
11570         * decl.c (*_top_level): Also save previous_class_values.
11571
11572         * pt.c (tsubst_expr): Support do {} while loops.
11573         * parse.y (simple_stmt): Likewise.
11574         * tree.def: Likewise.
11575
11576         * method.c (build_overload_identifier): For a class nested in a
11577         template class, don't mangle in the template parms from our
11578         context.
11579
11580         * lex.c, cp-tree.h: Remove support for template instantiations in
11581         the pending_inlines code.
11582         * pt.c: Remove dead functions and unused arguments.
11583         (uses_template_parms): TYPENAME_TYPEs always use template parms.
11584         * parse.y: Stop passing anything to end_template_decl.
11585         * tree.c (print_lang_statistics): Only print tinst info #ifdef
11586         GATHER_STATISTICS.
11587
11588 Wed Feb 21 16:57:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11589
11590         * init.c (expand_recursive_init{,_1}): Delete decls. 
11591         (sort_member_init): Delete unused var INIT.
11592         (emit_base_init): Delete unused var X.
11593         (build_offset_ref): Delete unused var CNAME.
11594         (sort_member_init): Delete unused var FIELDS_TO_UNMARK.
11595         (emit_base_init): Delete unused local var BASE.  Delete extern
11596         decl of IN_CHARGE_IDENTIFIER.
11597         (build_delete): Delete unused local var VIRTUAL_SIZE.
11598
11599         * init.c (build_vec_delete): Delete unused third arg ELT_SIZE.
11600         (build_delete): Fix call.
11601         * decl2.c (delete_sanity): Likewise.
11602         * cp-tree.h (build_vec_delete): Update prototype.
11603
11604         * typeck.c (common_base_type): Delete unused var TMP.
11605         (build_binary_op): Delete local var ARGS_SAVE.
11606         (build_array_ref): Delete unused var ITYPE.
11607         (c_expand_return): Delete unused var USE_TEMP.
11608
11609         * typeck.c (compexcepttypes): Delete unused arg STRICT.
11610         (comptypes): Fix calls.
11611         * decl.c (duplicate_decls): Likewise.
11612         * cp-tree.h (compexcepttypes): Delete extra arg.
11613
11614         * decl2.c (check_classfn): Delete unused second arg CNAME.
11615         * decl.c (start_decl, grokfndecl): Fix calls.
11616         * init.c (do_friend): Likewise.
11617         * cp-tree.h (check_classfn): Update prototype.
11618
11619         * cp-tree.h (signature_error, import_export_vtable,
11620         append_signature_fields, id_in_current_class, mark_used,
11621         copy_assignment_arg_p): Add decls.
11622         * decl2.c (mark_used): Delete decl.
11623
11624         * class.c (n_*): Wrap with #ifdef GATHER_STATISTICS.
11625
11626         * class.c (get_vtable_entry): Diable unused function.
11627         (doing_hard_virtuals): Delete unused static global var.
11628         (finish_struct_1): Don't init DOING_HARD_VIRTUALS.
11629         (prepare_fresh_vtable): Delete unused vars PATH and RESULT.
11630         (overrides): Delete unused vars RETTYPE and BASE_RETTYPE.
11631         (modify_one_vtable): Delete unused var OLD_RTTI.
11632         (finish_struct_anon): Delete unused vars OFFSET and X.
11633         (finish_struct_bits): Delete unused var METHOD_VEC.
11634         (get_basefndecls): Delete unused var PURPOSE.  Delete unused
11635         for-scope local variable METHODS.
11636
11637         * call.c (user_harshness): Delete unused/unneeded arg PARM.
11638         (ideal_candidate): Delete unused args BASETYPE and PARMS.
11639         (build_method_call): Delete unused args passed into ideal_candidate.
11640         (build_overload_call_real): Likewise.  Delete unused var OVERLOAD_NAME.
11641         * cp-tree.h (synthesize_method): Add decl.
11642
11643         * decl.c (note_level_for_for): Give void return type.
11644         (pushdecl_nonclass_level): Likewise.
11645         (finish_function): Delete unused vars VFIELDS and ALLOCATED_THIS.
11646         (poplevel): Delete unused var IMPLICIT_TRY_BLOCK.
11647         (suspend_binding_level): Delete unused var LEVEL.
11648         (duplicate_decls): Delete unused var CTYPE.
11649         (duplicate_decls): Delete unused var PREVIOUS_C_DECL.
11650         (init_decl_processing): Delete unused vars FLOAT_ENDLINK and
11651         PTR_ENDLINK.
11652         (grokdeclarator): Delete unused var C.
11653         (grokdeclarator): Delete unused var SIZE_VARIES.
11654         (grokparms): Delete unused var SAW_VOID.
11655         (start_function): Delete unused var OLDDECL.
11656         (cplus_expand_expr_stmt): Delete unused var
11657         REMOVE_IMPLICIT_IMMEDIATELY. 
11658
11659         * cp-tree.h (pushdecl_nonclass_level): Fix prototype.
11660
11661         * Makefile.in (CONFLICTS): Update to 12 shift/reduce.
11662
11663 Wed Feb 21 00:06:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
11664
11665         * tree.c (build_min): Set TREE_COMPLEXITY to lineno.
11666         (build_min_nt): Likewise.
11667         * pt.c (do_pushlevel): Emit line note.
11668         (do_poplevel): Return what we get from poplevel.
11669         (tsubst_expr): Set lineno from TREE_COMPLEXITY in stmt nodes.
11670         * parse.y: Use do_pushlevel and do_poplevel.
11671         * cp-tree.h: Declare do_poplevel.
11672         
11673         * cp-tree.h: Declare at_eof.
11674         * decl.c (cp_finish_decl): Pass it to rest_of_decl_compilation.
11675         * decl2.c (import_export_decl): Renamed from import_export_inline.
11676         (finish_file): Call it to do interface handling for statics.
11677         * pt.c (tsubst_copy): Call mark_used on variables and functions
11678         used here.
11679
11680         * decl2.c (finish_file): Don't emit statics we can't generate.
11681         * pt.c (instantiate_decl): Don't set interface on instantiations
11682         we can't generate.
11683
11684         * cp-tree.h (struct tinst_level): Change 'classname' to 'decl'.
11685         * tree.c (print_lang_statistics): Print max template depth.
11686         * pt.c (push_tinst_level): Dump entire instantiation context.
11687         (instantiate_class_template): Use it and pop_tinst_level.
11688         (instantiate_decl): Likewise.
11689
11690         * call.c class.c cp-tree.h decl.c decl2.c error.c lex.c method.c
11691         pt.c ptree.c tree.def: Remove all traces of UNINSTANTIATED_P_TYPE.
11692
11693 Tue Feb 20 18:21:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
11694
11695         * call.c class.c cp-tree.h cvt.c decl.c decl2.c error.c expr.c
11696         init.c lex.c method.c parse.y pt.c repo.c search.c spew.c tree.c
11697         tree.def typeck.c typeck2.c xref.c: Massive, systemic changes for
11698         the new template implementation.
11699
11700 Tue Feb 20 17:14:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11701
11702         * decl2.c (check_cp_case_value): Use STRIP_TYPE_NOPS.
11703
11704 Thu Feb 15 18:44:42 1996  Mike Stump  <mrs@cygnus.com>
11705
11706         * decl.c (cp_finish_decl): Delay emitting the debug information for
11707         a typedef that has been installed as the canonical typedef, if the
11708         type has not yet been defined.
11709
11710 Thu Feb 15 09:39:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
11711
11712         * decl2.c (grokfield): Still call pop_nested_class for access decls.
11713
11714 Wed Feb 14 17:30:04 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11715
11716         * decl.c (lookup_label): Call label_rtx.
11717
11718         * decl.c (make_binding_level): New function.
11719         (pushlevel, pushlevel_class): Call it instead of explicit
11720         duplicate calls to xmalloc.
11721
11722         * decl.c (init_decl_processing): Delete useless build_pointer_type
11723         call.
11724
11725         * decl.c (float_ftype_float, ldouble_ftype_ldouble): Add definitions.
11726         (sizet_ftype_string): Delete variable.
11727         (init_decl_processing): Add built-in functions fabsf, fabsl,
11728         sqrtf, sqrtl, sinf, sin, sinl, cosf, cos, cosl.  New local
11729         variable strlen_ftype, used for strlen.
11730
11731 Wed Feb 14 16:21:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
11732
11733         * decl.c (push_to_top_level): Start from current_binding_level
11734         again for now; the stl hacks depend on g++ being broken in this
11735         way, and it'll be fixed in the template rewrite.
11736
11737         * tree.def: Add USING_DECL.
11738         * decl2.c (do_class_using_decl): Implement.
11739         (grokfield): Pass access decls off to do_class_using_decl instead of
11740         grokdeclarator.
11741         * error.c (dump_decl): Handle USING_DECLs.
11742         * decl.c (grokdeclarator): Remove code for handling access decls.
11743         * class.c (finish_struct_1): Adjust accordingly, treat using-decls
11744         as access decls for now.
11745         (finish_struct): Don't check USING_DECLs for other uses of the name.
11746
11747         * search.c (get_matching_virtual): Use cp_error_at.
11748
11749 Wed Feb 14 10:36:58 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11750
11751         * typeck.c (comptypes): Default COMP_TYPE_ATTRIBUTES to 1, to
11752         match c-typeck.c.
11753         (self_promoting_args_p): Move the check that TYPE is non-nil
11754         before trying to look at its main variant.
11755         (unsigned_type, signed_type): Add checking of DI/SI/HI/QI nodes.
11756
11757         * cp-tree.h (DECL_WAITING_FRIENDS, SET_DECL_WAITING_FRIENDS):
11758         Delete macros.
11759         * init.c (xref_friend, embrace_waiting_friends): Delete functions.
11760         (do_friend): Delete call to xref_friend.
11761         * class.c (finish_struct_1): Delete call to embrace_waiting_friends.
11762
11763         * typeck.c (convert_sequence): #if 0 unused function.
11764
11765         * cp-tree.h (DECL_IN_MEMORY_P): New macro w/ the check that used to
11766         be in decl_in_memory_p.
11767         (decl_in_memory_p): Delete decl.
11768         * expr.c (decl_in_memory_p): Delete fn.
11769         * typeck.c (mark_addressable): Use DECL_IN_MEMORY_P.
11770
11771         * decl.c (cp_finish_decl): Use DECL_IN_MEMORY_P.
11772
11773 Tue Feb 13 12:51:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
11774
11775         * class.c (finish_struct_1): Check for a pure-specifier on a
11776         non-virtual function here.
11777
11778         * decl2.c (grok_function_init): Don't check whether the function
11779         is virtual here.
11780         (grokfield): Don't call check_for_override here.
11781
11782         * decl.c (push_to_top_level): Start from inner_binding_level,
11783         check class_shadowed in class levels.
11784
11785 Mon Feb 12 17:46:59 1996  Mike Stump  <mrs@cygnus.com>
11786
11787         * decl.c (resume_level): Ignore things that don't have names, instead
11788         of core dumping.
11789
11790 Mon Feb 12 15:47:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11791
11792         * decl2.c (grokfield): Set DECL_VINDEX properly for FUNCTION_DECLs.
11793
11794 Sat Feb 10 17:59:45 1996  Jason Merrill  <jason@yorick.cygnus.com>
11795
11796         * class.c (finish_struct_1): Set DECL_VINDEX properly on a
11797         synthesized dtor.
11798
11799         * parse.y (complete_type_name): Bind global_scope earlier.
11800         (complex_type_name): Likewise.
11801         (qualified_type_name): Remove.
11802
11803 Thu Feb  8 15:15:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
11804
11805         * decl.c (grokfndecl): Move code that looks for virtuals in base
11806         classes...
11807         * class.c (check_for_override): ... to a new function.
11808         (finish_struct_1): Call it.
11809
11810         * cp-tree.h: Declare warn_sign_compare.
11811
11812         * typeck.c (build_binary_op_nodefault): Check warn_sign_compare
11813         rather than extra_warnings to decide whether to warn about
11814         comparison of signed and unsigned.
11815
11816         * decl2.c (lang_decode_option): Handle warn_sign_compare.  -Wall
11817         implies -Wsign-compare.  -Wall doesn't imply -W.
11818
11819 Wed Feb  7 15:27:57 1996  Mike Stump  <mrs@cygnus.com>
11820
11821         * typeck.c (build_component_ref): Fix to handle anon unions in base
11822         classes as well.
11823
11824 Wed Feb  7 14:29:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11825
11826         * class.c (resolves_to_fixed_type_p): Delete code dealing with
11827         a WITH_CLEANUP_EXPR, since we don't generate them any more.
11828         * cvt.c (build_up_reference): Likewise.
11829         * decl.c (grok_reference_init): Likewise.
11830         (cp_finish_decl): Likewise.
11831         * error.c (dump_expr): Likewise.
11832         * tree.c (real_lvalue_p): Likewise.
11833         (lvalue_p): Likewise.
11834         (build_cplus_new): Likewise.
11835         (unsave_expr_now): Likewise.
11836         * typeck.c (unary_complex_lvalue, build_modify_expr,
11837         c_expand_return): Likewise.
11838
11839 Tue Feb  6 13:39:22 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11840
11841         Make the C++ front-end pay attention to attributes for structures.
11842         * class.c (finish_struct): New argument ATTRIBUTES, passed down into
11843         finish_struct_1.
11844         (finish_struct_1): New argument ATTRIBUTES; call cplus_decl_attributes.
11845         Take out old round_up_size use and setting the DECL_ALIGN possibly
11846         using it.  Take out setting of TYPE_ALIGN to round_up_size, which
11847         can override what the attribute set.
11848         * cp-tree.h (finish_struct): Update prototype.
11849         * parse.y (template_instantiate_once): Pass a NULL_TREE for the
11850         attributes to finish_struct.
11851         (structsp): For a CLASS decl, add maybe_attribute to rule and pass that
11852         value down into finish_struct.
11853         * Makefile.in (CONFLICTS): Switch to 7 shift/reduce conflicts.
11854
11855 Tue Feb  6 13:12:15 1996  Per Bothner  <bothner@kalessin.cygnus.com>
11856
11857         * decl.c (poplevel):  Re-word dead for local handling.
11858         (pushdecl):  Remove useless DECL_DEAD_FOR_LOCAL test.
11859         (cp_finish_decl):  If is_for_scope, check for duplicates so
11860         we can disable is_for_scope.  Otherwise, preserve_temp_slots.
11861
11862         * lex.c (do_identifier):  Use global binding in preference of
11863         dead for local variable.
11864
11865 Mon Feb  5 17:46:46 1996  Mike Stump  <mrs@cygnus.com>
11866
11867         * init.c (initializing_context): Handle anon union changes, the
11868         context where fields of anon unions can be initialized now has to be
11869         found by walking up the TYPE_CONTEXT chain.
11870
11871 Fri Feb  2 14:54:04 1996  Doug Evans  <dje@charmed.cygnus.com>
11872
11873         * decl.c (start_decl): #ifdef out code to set DECL_COMMON
11874         if ASM_OUTPUT{,_ALIGNED}_BSS is defined.
11875         (obscure_complex_init): If bss is supported, always set
11876         DECL_INITIAL to error_mark_node.
11877
11878 Thu Feb  1 16:19:56 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11879
11880         * init.c (is_friend): Make sure there's a context before we see if
11881         it's an aggr type.
11882
11883 Thu Feb  1 15:44:53 1996  Mike Stump  <mrs@cygnus.com>
11884
11885         * init.c (is_friend): Classes are not friendly with nested classes.
11886
11887 Thu Feb  1 15:27:37 1996  Doug Evans  <dje@charmed.cygnus.com>
11888
11889         * lex.c (check_newline): Pass last character read to HANDLE_PRAGMA,
11890         and record its result.
11891
11892 Thu Feb  1 09:27:01 1996  Mike Stump  <mrs@cygnus.com>
11893
11894         * class.c (finish_struct_anon): Switch around code to not move anon
11895         union elements around, nor mess up their contexts, nor offsets,
11896         instead we now build up the right number of COMPONENT_REFs for all
11897         the anon unions that may be present at build_component_ref time.
11898         * typeck.c (lookup_anon_field): New routine to handle field lookup
11899         on fields without names.  We find them, based upon their unique type
11900         instead.
11901         * typeck.c (build_component_ref): Allow FIELD_DECL components.
11902         Handle finding components in anonymous unions, and ensure that a
11903         COMPONENT_REF is built for each level as necessary.
11904
11905 Tue Jan 30 18:18:23 1996  Mike Stump  <mrs@cygnus.com>
11906
11907         * cvt.c (build_up_reference): Make the INDIRECT_BIND case come after
11908         code that ensures that copy ctors are used if appropriate.
11909
11910 Tue Jan 30 17:35:14 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11911
11912         * init.c (build_vec_delete): Only give an error if base isn't an
11913         error_mark_node.
11914
11915 Mon Jan 29 17:09:06 1996  Mike Stump  <mrs@cygnus.com>
11916
11917         * spew.c (do_aggr): `new struct S;' isn't a forward declaration.
11918         (yylex): If we see `new', keep slurping.
11919
11920 Thu Jan 25 18:31:36 1996  Mike Stump  <mrs@cygnus.com>
11921
11922         * class.c (finish_struct_1): Move code for handling anon unions...
11923         (finish_struct_anon): to here.  Fixup so that we do the offset
11924         calculations right, and so that the fields are physically moved to
11925         the containers's chain.
11926
11927 Thu Jan 25 18:27:37 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11928
11929         * decl.c (grokdeclarator): Avoid trying to get an operand off an
11930         identifier node.
11931
11932 Wed Jan 24 11:25:30 1996  Jim Wilson  <wilson@chestnut.cygnus.com>
11933
11934         * typeck.c (pointer_int_sum): Use TYPE_PRECISION (sizetype) not
11935         POINTER_SIZE to agree with expr.c.
11936
11937 Thu Jan 25 13:01:23 1996  Mike Stump  <mrs@cygnus.com>
11938
11939         * search.c (lookup_field): Don't report ambiguities if protect is 0,
11940         instead return NULL_TREE.
11941
11942 Wed Jan 24 13:01:26 1996  Mike Stump  <mrs@cygnus.com>
11943
11944         * class.c (finish_struct_1): Call warn_hidden if we want warnings
11945         about overloaded virtual functions.
11946         (warn_hidden): New routine to warn of virtual functions that are
11947         hidden by other virtual functions, that are not overridden.
11948         (get_basefndecls): New routine, used by warn_hidden.
11949         (mark_overriders): New routine, used by warn_hidden.
11950         * search.c (get_matching_virtual): Remove old warning that just
11951         isn't very useful.
11952
11953 Tue Jan 23 12:26:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11954
11955         * decl.c (output_builtin_tdesc_entries): #if 0 the function definition.
11956
11957         * typeck.c (null_ptr_cst_p): Delete unused fn.
11958         (build_function_call_maybe): Delete unused fn.
11959
11960         * expr.c (extract_init): #if 0 the code after unconditional return 0
11961         for now.
11962
11963         Delete old cadillac code.
11964         * edsel.c: Remove file.
11965         * Make-lang.in (CXX_SRCS): Take edsel.c off the list.
11966         * Makefile.in (CXX_OBJS): Delete edsel.o.
11967         (edsel.o): Delete rule.
11968         * cp-tree.h (flag_cadillac): Delete var decl.
11969         * lang-options.h: Delete "-fcadillac" and "-fno-cadillac".
11970         * decl2.c (flag_cadillac): Delete var definition.
11971         (lang_decode_option): Delete handling of -fcadillac and -fno-cadillac.
11972         (grokfield): Delete code depending on flag_cadillac.
11973         (finish_anon_union): Likewise.
11974         * class.c (finish_struct_1): Likewise.
11975         (pushclass): Likewise.
11976         (popclass): Likewise.
11977         (push_lang_context): Likewise.
11978         (pop_lang_context): Likewise.
11979         * decl.c (init_decl_processing): Likewise.
11980         (start_decl): Likewise.
11981         (cp_finish_decl): Likewise.
11982         (xref_tag): Likewise.
11983         (finish_enum): Likewise.
11984         (start_function): Likewise.
11985         (finish_function): Likewise.
11986         (finish_stmt): Likewise.
11987         * lex.c (lang_init): Likewise.
11988         (check_newline): Likewise.
11989
11990         * lex.c (do_pending_inlines): Delete synthesized method kludge.
11991
11992         Delete defunct, ancient garbage collection implementation.
11993         * rtti.c: New file with the RTTI stuff from gc.c.
11994         * gc.c: Removed file (moved the remaining stuff into rtti.c).
11995         * Makefile.in (CXX_OBJS): Replace gc.o with rtti.o.
11996         (rtti.o): New rule, replacing gc.o.
11997         * Make-lang.in (CXX_SRCS): Replace gc.c with rtti.c.
11998         * cp-tree.h: Delete gc-related fn decls.
11999         (DECL_GC_OFFSET): Delete macro.
12000         (flag_gc): Delete extern decl.
12001         * decl.c (current_function_obstack_index): Delete var decl.
12002         (current_function_obstack_usage): Delete var decl.
12003         (start_function): Delete clearing of current_function_obstack_index
12004         and current_function_obstack_usage.
12005         (init_decl_processing): Delete code relying on -fgc.
12006         Delete call to init_gc_processing.
12007         (cp_finish_decl): Delete calls to build_static_gc_entry and
12008         type_needs_gc_entry.  Delete gc code setting DECL_GC_OFFSET.
12009         (store_parm_decls): Delete -fgc calls to cp_expand_decl_cleanup
12010         and to expand_expr of a __gc_main call.
12011         (maybe_gc_cleanup): Delete var decl.
12012         (finish_function): Delete call to expand_gc_prologue_and_epilogue.
12013         * decl2.c (flag_gc): Delete var decl.
12014         (lang_f_options): Delete offering of -fgc.
12015         (lang_decode_option): Delete -fgc and -fno-gc handling.
12016         (get_temp_regvar): Delete gc code.
12017         * init.c (build_new): Delete gc code.
12018         * lex.c (init_lex): Delete checking of flag_gc.
12019
12020         * typeck.c (convert_arguments): Delete gc code.
12021         (build_component_addr): Delete -fgc warning.
12022         (build_modify_expr): Delete gc code.
12023
12024         * decl2.c (build_push_scope): Delete fn.
12025         * cp-tree.h (build_push_scope): Delete decl.
12026
12027         * search.c (clear_search_slots): Delete fn.
12028         * cp-tree.h (clear_search_slots): Delete decl.
12029
12030         * search.c (tree_needs_constructor_p): Delete fn.
12031         * cp-tree.h (tree_needs_constructor_p): Delete decl.
12032
12033         * tree.c (id_cmp): Delete fn.
12034
12035         * tree.c (set_fnaddr_from_vtable_entry): Delete fn.
12036         * cp-tree.h (set_fnaddr_from_vtable_entry): Delete decl.
12037
12038         * tree.c (decl_value_member): Delete fn.
12039         * cp-tree.h (decl_value_member): Delete decl.
12040
12041         * tree.c (list_hash_lookup_or_cons): Delete fn.
12042         * cp-tree.h (list_hash_lookup_or_cons): Delete decl.
12043
12044         * method.c (cplus_exception_name): Delete fn.
12045         (EXCEPTION_NAME_{PREFIX, LENGTH}): Delete macros.
12046
12047         * spew.c (shift_tokens): Delete fn.
12048
12049 Mon Jan 22 17:49:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
12050
12051         * except.c (init_exception_processing): Pass 1 to needs_pop in calls
12052         to cp_finish_decl.
12053         * parse.y: Likewise.
12054
12055 Mon Jan 22 17:34:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12056
12057         * tree.c (build_cplus_staticfn_type): Delete function definition;
12058         never used.
12059         * cp-tree.h (build_cplus_staticfn_type): Delete decl.
12060
12061         * tree.c (virtual_member): Delete function definition; never used.
12062         * cp-tree.h (virtual_member): Delete decl.
12063
12064 Fri Jan 19 18:03:14 1996  Mike Stump  <mrs@cygnus.com>
12065
12066         * typeck.c (build_component_ref): Handle getting vbase pointers
12067         out of complex multiple inheritance better.
12068
12069 Fri Jan 19 16:27:40 1996  Mike Stump  <mrs@cygnus.com>
12070
12071         * typeck.c (build_object_ref): Make sure we use the real type, not
12072         any reference type.
12073
12074 Fri Jan 19 16:01:47 1996  Mike Stump  <mrs@cygnus.com>
12075
12076         * tree.c (build_exception_variant): Don't create new types if we
12077         don't have to, also build new types on the right obstack.
12078
12079 Fri Jan 19 14:09:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
12080
12081         * decl.c (store_bindings): Split out from push_to_top_level.
12082         (push_to_top_level): Call it for b->type_shadowed on class binding
12083         levels.
12084
12085 Fri Jan 19 13:53:14 1996  Mike Stump  <mrs@cygnus.com>
12086
12087         * search.c (expand_upcast_fixups): Fix so that offsets stored in
12088         vbase_offsets are always right.  Fixes a problem where virtual base
12089         upcasting and downcasting could be wrong during conversions on this
12090         during virtual function dispatch at ctor/dtor time when dynamic
12091         vtable fixups for deltas are needed.  This only sounds easier than
12092         it is.  :-)
12093         (fixup_virtual_upcast_offsets): Change to reflect new calling
12094         convention for expand_upcast_fixups.
12095
12096 Fri Jan 19 12:23:08 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12097
12098         * decl2.c (grokbitfield): Strip the NOPs from WIDTH before we
12099         check that it's usable as the bitfield width.
12100
12101 Wed Jan 17 21:22:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12102
12103         * decl2.c (grokfield): Call cplus_decl_attributes with the attrlist.
12104         Pass a null tree to grokdeclarator for its ATTRLIST arg, since it's
12105         only ever used for functions in it.
12106
12107 Wed Jan 17 12:10:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
12108
12109         * parse.y (qualified_type_name): Use the TYPE_DECL, not the type.
12110         (nested_type): Likewise.
12111         (nested_name_specifier): Use lastiddecl.
12112
12113         * decl.c (grokdeclarator): Adjust accordingly.
12114         * init.c (expand_member_init): Likewise.
12115         * parse.y (base_class): Likewise.
12116         * typeck2.c (build_functional_cast): Likewise.
12117
12118         * typeck2.c (build_functional_cast): Fill in name after we've
12119         checked for non-aggr type.
12120
12121 Wed Jan 17 10:18:01 1996  Mike Stump  <mrs@cygnus.com>
12122
12123         * decl2.c (warn_pointer_arith): Default to on.
12124
12125 Tue Jan 16 12:45:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
12126
12127         * lex.c (is_rid): New function.
12128         * decl.c (grokdeclarator): Diagnose reserved words used as
12129         declarator-ids.
12130
12131 Tue Jan 16 11:39:40 1996  Jason Merrill  <jason@yorick.cygnus.com>
12132
12133         * tree.c (get_decl_list): Don't lose cv-quals.
12134
12135         * decl.c (grokdeclarator): Fix SCOPE_REF handling and diagnose
12136         typespecs used as declarator-ids.
12137
12138 Tue Jan 16 11:09:42 1996  Mike Stump  <mrs@cygnus.com>
12139
12140         * decl.c (poplevel): When poping a level, don't give a warning for
12141         any subblocks that already exist.
12142
12143 Tue Jan 16 00:25:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
12144
12145         * typeck.c (build_object_ref): Finish what I started.
12146
12147         * parse.y (qualified_type_name): Don't check TYPE_BUILT_IN.
12148
12149         * decl2.c (constructor_name_full): Handle TEMPLATE_TYPE_PARMs.
12150
12151         * decl.c (grokdeclarator): Also accept TEMPLATE_TYPE_PARM as a
12152         scope.
12153
12154 Mon Jan 15 16:19:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
12155
12156         * decl.c (xref_tag): Handle passing a type in directly.
12157
12158         * parse.y (qualified_type_name): Pull out the type.
12159         (nested_type): Likewise.
12160         Take types directly instead of as identifiers.
12161         * call.c (build_scoped_method_call): Take types directly instead of
12162         as identifiers.
12163         * decl.c (xref_basetypes): Likewise.
12164         * init.c (expand_member_init): Likewise.
12165         (build_member_call): Likewise.
12166         (build_offset_ref): Likewise.
12167         * typeck2.c (build_scoped_ref): Likewise, remove bogus code.
12168         * method.c (do_build_assign_ref): Likewise.
12169         * decl.c (grokdeclarator): Handle a type appearing as the
12170         declarator-id for constructors.
12171         * method.c (do_build_copy_constructor): current_base_init_list now
12172         uses the types directly, not their names.
12173         * init.c (sort_base_init): Likewise.
12174         (expand_member_init): Likewise.
12175         * init.c (is_aggr_type): New function, like is_aggr_typedef.
12176
12177 Mon Jan 15 08:45:01 1996  Jeffrey A Law  <law@cygnus.com>
12178
12179         * tree.c (layout_basetypes): Call build_lang_field_decl instead
12180         of build_lang_decl if first arg is a FIELD_DECL.
12181
12182 Thu Jan 11 14:55:07 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12183
12184         * decl.c (cp_finish_decl): Only clear TREE_USED if DECL_NAME is
12185         non-empty.
12186         * except.c (expand_start_catch_block): Set TREE_USED to avoid
12187         warnings about the catch handler.
12188
12189 Mon Jan  8 17:35:12 1996  Jason Merrill  <jason@yorick.cygnus.com>
12190
12191         * typeck.c (build_modify_expr): Use a COMPOUND_EXPR instead of
12192         expand_target_expr.
12193
12194 Thu Jan  4 12:30:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12195
12196         Fix access control to use trees rather than integers.
12197         * class.c (access_{default, public, protected, private,
12198         default_virtual, public_virtual, private_virtual}_node): Add
12199         definitions.
12200         (init_class_processing): Do creation of those nodes.
12201         * cp-tree.h (access_type): Delete enum decl.
12202         (access_{default, public, protected, private, default_virtual,
12203         public_virtual, private_virtual}_node): Add decls.
12204         (compute_access): Change return type.
12205         * search.c (compute_access): Have tree return type, instead of enum.
12206         (lookup_field): Declare THIS_V and NEW_V to be tree nodes.
12207         * lex.c (real_yylex): Use yylval.ttype for giving the value of the
12208         access_* node for each of RID_{PUBLIC, PRIVATE, PROTECTED}.
12209         * parse.y (VISSPEC): Make ttype rather than itype.
12210         (base_class_access_list): Likewise.
12211         * *.[cy]: Change all refs of `access_public' to `access_public_node',
12212         etc.
12213         * call.c (build_method_call): Make ACCESS be a tree.
12214         * class.c (alter_access, finish_struct_1, filter_struct): Likewise.
12215         * cvt.c (convert_to_aggr): Likewise.
12216         * init.c (build_offset_ref, resolve_offset_ref, build_delete):
12217         Likewise.
12218         * method.c (hack_identifier): Likewise.
12219         * typeck.c (build_component_ref_1, build_component_ref): ): Likewise.
12220
12221 Thu Jan  4 11:02:20 1996  Mike Stump  <mrs@cygnus.com>
12222
12223         * typeck.c (pointer_int_sum, pointer_diff): Make code agree with C
12224         frontend, and make it more consistent with respect to
12225         warn_pointer_arith.
12226
12227 Tue Jan  2 00:13:38 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
12228
12229         * decl.c (pushdecl): Check for duplicate parameter names.
12230
12231 Wed Jan  3 09:25:48 1996  Mike Stump  <mrs@cygnus.com>
12232
12233         * decl.c (expand_static_init): Call assemble_external for atexit.
12234
12235 Wed Jan  3 07:55:19 1996  Mike Stump  <mrs@cygnus.com>
12236
12237         * except.c (do_unwind): Remove some generated dead code.
12238         (eh_outer_context): New routine, factor out some common code from
12239         expand_builtin_throw and end_eh_unwinder.  Add code to do return
12240         address masking for the PA.
12241         (expand_builtin_throw): Use eh_outer_context instead of open coding
12242         it here.
12243         (end_eh_unwinder): Likewise.
12244
12245 Tue Jan  2 17:00:56 1996  Mike Stump  <mrs@cygnus.com>
12246
12247         * except.c (expand_throw): Call assemble_external for __empty, if we
12248         use it.
12249
12250 Thu Dec 28 11:13:15 1995  Mike Stump  <mrs@cygnus.com>
12251
12252         * except.c (expand_builtin_throw): Use RETURN_ADDR_OFFSET instead of
12253         NORMAL_RETURN_ADDR_OFFSET.
12254         (end_eh_unwinder): Likewise.
12255
12256 Wed Dec 27 22:18:16 1995  Mike Stump  <mrs@cygnus.com>
12257
12258         * gc.c (build_dynamic_cast): Make sure we don't cast away const
12259         when dealing with references, and make sure we handle dynamic
12260         casting to a cv qualified reference.
12261
12262 Thu Dec 21 23:50:35 1995  Mike Stump  <mrs@cygnus.com>
12263
12264         * except.c (struct eh_context): New structure top hold eh context
12265         information.
12266         (push_eh_context): New routine.
12267         (pop_eh_context): Likewise.
12268         * decl.c (push_cp_function_context): Use them.
12269         (pop_cp_function_context): Likewise.
12270
12271 Wed Dec 20 12:42:51 1995  Jason Merrill  <jason@yorick.cygnus.com>
12272
12273         * decl2.c (finish_file): Also prune uninteresting functions in the
12274         inline emission loop.
12275
12276 Wed Dec 20 02:32:07 1995  Jeffrey A Law  <law@cygnus.com>
12277
12278         * sig.c (build_signature_table_constructor): Mark functions
12279         in the signature as referenced.
12280
12281 Tue Dec 19 22:36:56 1995  Jason Merrill  <jason@yorick.cygnus.com>
12282
12283         * decl2.c (finish_file): Do all the vtable/synthesis stuff before
12284         the inline emission stuff.
12285
12286 Mon Dec 18 15:51:33 1995  Jason Merrill  <jason@yorick.cygnus.com>
12287
12288         * cp-tree.h, decl2.c (flag_weak): New flag to control the use of
12289         weak symbols.   
12290         * lang-options.h: Add -f{no-,}weak.
12291         * decl.c (init_decl_processing): If the target does not support weak
12292         symbols, don't use them.
12293         * decl2.c, pt.c: s/SUPPORTS_WEAK/flag_weak/.
12294
12295 Sun Dec 17 21:13:23 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
12296
12297         * init.c (expand_member_init): warning for base init after members.
12298
12299 Fri Dec 15 15:32:18 1995  Jason Merrill  <jason@yorick.cygnus.com>
12300
12301         * cvt.c (build_expr_type_conversion): Don't convert to a reference
12302         type.
12303
12304 Thu Dec 14 16:05:58 1995  Mike Stump  <mrs@cygnus.com>
12305
12306         * method.c (report_type_mismatch): Improve wording for volatile
12307         mismatches.
12308
12309 Thu Dec 14 14:16:26 1995  Mike Stump  <mrs@cygnus.com>
12310
12311         * init.c (expand_aggr_init_1): Use expand_aggr_init_1 instead of
12312         expand_assignment, as the later doesn't handle things that have
12313         copy constructors well.  The compiler would do bitwise copying,
12314         instead of ctor calling in some cases.
12315
12316 Wed Dec 13 17:05:54 PST 1995  Paul Eggert  <eggert@twinsun.com>
12317
12318         * g++.c (my_strerror): Return "cannot access" if errno is 0.
12319         (pfatal_with_name, perror_exec): Don't assume that
12320         the returned value from my_strerror contains no '%'s.
12321         (concat): Remove.
12322         (sys_nerror): Declare only if HAVE_STRERROR is not defined.
12323
12324 Wed Dec 13 16:22:38 1995  Jason Merrill  <jason@yorick.cygnus.com>
12325
12326         Lose CLASSTYPE_METHODS/DECL_NEXT_METHOD chain; make
12327         TYPE_METHODS/TREE_CHAIN mean what they used to. 
12328         * decl2.c (constructor_name_full): Refer to CLASSTYPE_METHOD_VEC
12329         instead of TYPE_METHODS.
12330         * decl.c (duplicate_decls): Lose references to DECL_NEXT_METHOD.
12331         * tree.c (tree_copy_lang_decl_for_deferred_output): Likewise.
12332         * cp-tree.h (CLASSTYPE_METHODS): Lose.
12333         (CLASSTYPE_METHOD_VEC): Point to lang_spec->methods instead of
12334         TYPE_METHODS.
12335         (struct lang_decl): Lose next_method field.
12336         (DECL_NEXT_METHOD): Lose.
12337         * class.c (finish_struct_methods): Don't mess with TYPE_METHODS.
12338         (finish_struct): Just use TYPE_METHODS; we don't need fn_fields
12339         anymore.
12340         (finish_struct_methods): Don't mess with the TREE_CHAINs in
12341         fn_fields.
12342
12343         * search.c (add_conversions): Don't use TREE_CHAIN to traverse method
12344         vector.
12345
12346         * call.c (build_method_call): Synthesize here even when not inlining.
12347         * typeck.c (build_function_call_real): Likewise.
12348
12349 Wed Dec 13 15:02:39 1995  Ian Lance Taylor  <ian@cygnus.com>
12350
12351         * cp/lex.c (check_newline): If DBX_DEBUGGING_INFO and write_symbols
12352         == DBX_DEBUG, call dbxout_start_new_source_file and
12353         dbxout_resume_previous_source_file when appropriate.
12354
12355 Tue Dec 12 20:38:55 1995  Mike Stump  <mrs@cygnus.com>
12356
12357         * except.c (start_anon_func): Push to the top level.
12358         (end_anon_func): Pop from the top level.
12359
12360 Mon Dec 11 18:56:14 1995  Mike Stump  <mrs@cygnus.com>
12361
12362         * cp-tree.h (build_cleanup): New routine to build cleanups.
12363         * decl.c (expand_static_init): Use build_cleanup to build a cleanup
12364         call at ctor time and use atexit to run it later.
12365         * decl2.c (build_cleanup): New routine, taken from finish_file.
12366         (finish_file): Use build_cleanup instead, and don't put function
12367         local statics in global dtor list.
12368         
12369 Wed Dec  6 14:34:29 1995  Mike Stump  <mrs@cygnus.com>
12370
12371         * except.c (expand_throw): Ensure that we have cleanups, if we try
12372         and expand cleanups.
12373
12374 Wed Dec  6 11:48:21 1995  Mike Stump  <mrs@cygnus.com>
12375
12376         * except.c (expand_throw): Add logic to manage dynamic cleanups for
12377         the EH object.
12378         (expand_end_catch_block): Use the magic of expand_goto, instead of
12379         emit_jump so that we get the cleanup for any catch clause parameter
12380         and the cleanup for the exception object.  Update to reflect label
12381         changes.
12382         (push_eh_cleanup): New routine to register a cleanup for an
12383         exception object.
12384         (empty_fndecl): Used to default cleanup actions to
12385         nothing.
12386         (init_exception_processing): Setup empty_fndecl.  Setup
12387         saved_cleanup.
12388         (expand_start_catch_block): Update to reflect label changes.  Call
12389         push_eh_object to register the cleanup for the EH object.
12390         (start_anon_func): New routine to start building lambda expressions
12391         from trees.
12392         (end_anon_func): New routine to end them.
12393         (struct labelNode): Change so that we can use tree labels, or rtx
12394         labels.
12395         (saved_cleanup): Object to check for dynamic cleanups for the
12396         exception handling object.
12397         (push_label_entry): Change so that we can use tree labels, or rtx
12398         labels.
12399         (pop_label_entry): Likewise.
12400         (top_label_entry): Likewise.
12401         (expand_start_all_catch): Use tree label instead of rtx label, so
12402         that we can get the magic of expand_goto.
12403         (expand_end_all_catch): Update to reflect label changes.
12404
12405         * class.c (build_vfn_ref): Remove building_cleanup logic, as we now
12406         use UNSAVE_EXPRs.
12407         typeck.c (get_member_function_from_ptrfunc): Remove remnants of
12408         building_cleanup logic, as we now use UNSAVE_EXPRs.
12409         * cp-tree.h (unsave_expr): Declare it.
12410         * decl.c (building_cleanup): Remove.
12411         (maybe_build_cleanup): Remove building_cleanup logic, and use
12412         UNSAVE_EXPR instead.
12413
12414 Sun Dec  3 01:34:58 1995  Mike Stump  <mrs@cygnus.com>
12415
12416         * gc.c (build_t_desc): Update error message to say <typeinfo>.
12417
12418 Thu Nov 30 12:30:05 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
12419
12420         * decl.c (pushdecl): Only warn about shadowing a local variable if
12421         warn_shadow is true.
12422
12423 Sun Nov 26 16:06:55 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
12424
12425         * typeck.c (build_binary_op_nodefault): Added warning about
12426         comparisons between different enum types with -Wall, unless
12427         -fenum-int-equiv set.
12428
12429 Wed Nov 22 15:44:02 1995  Mike Stump  <mrs@cygnus.com>
12430
12431         * class.c (finish_struct_1): Skip down to the inner type in
12432         multidimensional arrays.  Ensures ctors will be made for types that
12433         need constructing.
12434
12435 Wed Nov 22 14:19:22 1995  Mike Stump  <mrs@cygnus.com>
12436
12437         * decl.c (last_dtor_insn): New to track the last compiler generated
12438         insn in a dtor.
12439         (store_parm_decls): Set it.
12440         (finish_function): Use it to see if the dtor is empty.  Avoid doing
12441         vtable setup all the time, if we can.
12442         (struct cp_function): Add last_dtor_insn.
12443         (push_cp_function_context): Save it.
12444         (pop_cp_function_context): Restore it.
12445
12446 Wed Nov 22 11:52:19 1995  Paul Russell  <Rusty.Russell@adelaide.maptek.com.au>
12447
12448         * typeck.c (build_unary_op): Set TREE_NO_UNUSED_WARNING to avoid
12449         warnings.
12450
12451 Tue Nov 21 17:15:23 1995  Mike Stump  <mrs@cygnus.com>
12452
12453         * typeck.c (expand_target_expr): Make sure targets get put into the
12454         current temp_slot_level, so that the free_temp_slots call will reuse
12455         them.
12456
12457 Tue Nov 21 13:32:03 1995  Mike Stump  <mrs@cygnus.com>
12458
12459         * class.c (finish_struct_1): Delay delta fixups for virtual bases
12460         until after we have done the hard virtuals, to avoid a bogus `every
12461         virtual function must have a unique final overrider' for virtual
12462         functions that are only overridden by hard virtuals.
12463
12464 Thu Nov  9 13:35:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
12465
12466         * pt.c (do_function_instantiation): Don't try to find a file-scope
12467         template for a member function.
12468
12469 Tue Nov 14 06:20:35 1995  Mike Stump  <mrs@cygnus.com>
12470
12471         * g++.c (main): Add handling of -nodefaultlibs.
12472
12473 Mon Nov 13 15:45:34 1995  Mike Stump  <mrs@cygnus.com>
12474
12475         * cp-tree.h (INDIRECT_BIND): Add a way for the frontend to
12476         distinguish between direct bindings of reference variables, and
12477         indirect bindings of reference variables.
12478         * cvt.c (build_up_reference): Use it.
12479         * typeck.c (convert_arguments): Use it to indicate this is an
12480         indirect binding.
12481         * decl.c (cp_finish_decl): Ensure that we reuse stack slots as fast
12482         as they are unused.
12483         (expand_static_init): Likewise.
12484         (cplus_expand_expr_stmt): Likewise.
12485         * decl2.c (finish_file): Likewise.
12486         * init.c (perform_member_init): Likewise.
12487         (emit_base_init): Likewise.
12488         (expand_aggr_vbase_init_1): Likewise.
12489
12490 Fri Nov 10 09:18:09 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
12491
12492         * decl.c (push_namespace): Rewrite to use build_lang_decl, so we
12493         get a DECL_LANG_SPECIFIC node.
12494         * cp-tree.h (lang_decl_flags): Add new member `level'.
12495         (NAMESPACE_LEVEL): Don't use decl.arguments, instead use the
12496         decl_flags level member.
12497
12498 Mon Nov  6 18:36:13 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
12499
12500         * call.c (build_method_call): Make sure instance has a
12501         TYPE_LANG_SPECIFIC node before we dive into it.  
12502
12503 Sat Nov  4 20:01:52 1995  Jason Molenda  <crash@phydeaux.cygnus.com>
12504
12505         * method.c (make_thunk): use TREE_SET_CODE to set thunk's tree code.
12506
12507 Thu Nov  2 17:56:57 1995  Mike Stump  <mrs@cygnus.com>
12508
12509         * decl.c (duplicate_decls): When smashing decls, smash staticness in
12510         the usual way.
12511
12512 Thu Nov  2 16:44:02 1995  Mike Stump  <mrs@cygnus.com>
12513
12514         * decl.c (poplevel): Handle the merging of subblocks of cleanups
12515         when finishing blocks that have already been created (usually due to
12516         the fixup goto code).  Fixes bad debugging information.
12517
12518 Wed Nov  1 12:33:53 1995  Jason Merrill  <jason@yorick.cygnus.com>
12519
12520         * method.c (hack_identifier): Don't abort when we get a TREE_LIST
12521         that's not a list of overloaded functions.
12522
12523 Wed Nov  1 11:38:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
12524
12525         * decl2.c (mark_vtable_entries): Check DECL_LANG_SPECIFIC on fn
12526         before trying to use DECL_ABSTRACT_VIRTUAL_P.
12527
12528 Tue Oct 31 11:56:55 1995  Jason Merrill  <jason@yorick.cygnus.com>
12529
12530         * decl2.c (mark_used): New function for hooking into setting of
12531         TREE_USED on decls.
12532         * call.c (build_method_call): Use it.
12533         * class.c (instantiate_type): Likewise.
12534         * init.c (build_offset_ref): Likewise.  Don't call assemble_external
12535         for all like-named functions.
12536         * method.c (hack_identifier): Likewise.
12537         (emit_thunk): Don't call assemble_external.
12538         (make_thunk): Create thunk as a FUNCTION_DECL so that it
12539         gets the right mode and ENCODE_SECTION_INFO works.
12540         
12541         * parse.y: Use mark_used.  Pass operator names to do_identifier.
12542         * lex.c (do_identifier): Handle operator names.
12543
12544         * decl2.c (grokclassfn): Tweak __in_chrg attributes.
12545
12546 Thu Oct 26 16:45:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
12547
12548         * errfn.c: Include stdio.h.
12549         (cp_sprintf): Take out decl of sprintf, and cast sprintf to errorfn*.
12550
12551 Wed Oct 25 18:58:41 1995  Mike Stump  <mrs@cygnus.com>
12552
12553         * typeck2.c (digest_init): Always convert initializers to the
12554         right type.
12555
12556 Wed Oct 25 13:25:24 1995  Mike Stump  <mrs@cygnus.com>
12557
12558         * init.c (member_init_ok_or_else): Don't allow member initializers
12559         for indirect members, as it is invalid.
12560
12561 Wed Oct 25 11:35:28 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
12562
12563         * decl.c (grokdeclarator): Don't allow `friend signed ()'.
12564
12565 Fri Oct 20 10:30:59 1995  Mike Stump  <mrs@cygnus.com>
12566
12567         * parse.y (for.init.statement): Catch compound statements inside for
12568         initializations, if we're being pedantic.
12569
12570 Fri Oct 20 10:03:42 1995  Mike Stump  <mrs@cygnus.com>
12571
12572         * decl.c (lookup_tag): Return NULL_TREE if we don't find what we are
12573         looking for.
12574
12575 Thu Oct 19 14:26:10 1995  Mike Stump  <mrs@cygnus.com>
12576
12577         * error.c (dump_expr): Don't core dump when a boolean expression is
12578         used as a default argument.
12579
12580 Thu Oct 19 10:36:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
12581
12582         * class.c (finish_struct_bits): Check aggregate_value_p instead of
12583         RETURN_IN_MEMORY.
12584
12585 Wed Oct 18 18:12:32 1995  Jason Merrill  <jason@yorick.cygnus.com>
12586
12587         * class.c (finish_struct_bits): Also set TREE_ADDRESSABLE on a
12588         BLKmode type that would otherwise be returned in registers.
12589
12590 Mon Oct 16 12:32:19 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
12591
12592         * g++.c (WITHLIBC): New macro.
12593         (main): Declare saw_libc.  Use WITHLIBC if `-lc' was used; set
12594         saw_libc and pass it at the end if it was set.
12595
12596 Wed Oct 11 16:30:34 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
12597
12598         * parse.y (fn.def1): Call split_specs_attrs in
12599         declmods notype_declarator case.