OSDN Git Service

Add NIOS2 support. Code from SourceyG++.
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog-1998
1 Tue Dec 22 15:09:25 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2
3         * Makefile.in (cvt.o): Depend on toplev.h.
4
5         * cp-tree.h (check_template_shadow, pod_type_p): Add prototypes.
6
7         * cvt.c: Include toplev.h.
8
9         * except.c (get_eh_caught, get_eh_handlers): Hide prototypes and
10         definitions.
11
12         * init.c (expand_vec_init): Initialize variable `itype'.
13
14         * lex.c (yyerror): Cast the argument passed to a ctype function to
15         an unsigned char.
16
17         * method.c (build_mangled_C9x_name): Wrap prototype and definition
18         in "HOST_BITS_PER_WIDE_INT >= 64".
19
20         * typeck.c (build_binary_op): Mark parameter `convert_p' with
21         ATTRIBUTE_UNUSED.
22
23 1998-12-22  Mark Mitchell  <mark@markmitchell.com>
24
25         * cp-tree.h (TYPE_RAISES_EXCEPTIONS): Improve documentation.
26         * tree.c (build_exception_variant): Don't crash on empty throw
27         specs.
28
29 1998-12-18  DJ Delorie  <dj@cygnus.com>
30
31         * cvt.c (convert_to_reference): Check for both error_mark_node
32         and NULL_NODE after call to convert_for_initialization.
33
34 1998-12-17  Jason Merrill  <jason@yorick.cygnus.com>
35
36         * error.c (interesting_scope_p): New fn.
37         (dump_simple_decl): Use it.
38         (dump_expr, case CONSTRUCTOR): Force a & for a PMF.
39         (dump_expr, case OFFSET_REF): Print ->* if appropriate.
40
41 1998-12-16  Mark Mitchell  <mark@markmitchell.com>
42
43         * class.c (resolve_address_of_overloaded_function): Do conversion
44         to correct type here, rather than ...
45         (instantiate_type): Here.
46
47         * cp-tree.h (DECL_TEMPLATE_PARM_P): New macro.
48         (DECL_TEMPLATE_TEMPLATE_PARM_P): Use it.
49         (decl_template_parm_p): Remove.
50         * decl.c (pushdecl): Don't set DECL_CONTEXT for a template
51         parameter.
52         * lex.c (do_identifier): Use DECL_TEMPLATE_PARM_P.
53         * pt.c (push_inline_template_parms_recursive): Set it.
54         (decl_template_parm_p): Remove.
55         (check_template_shadow): Use DECL_TEMPLATE_PARM_P.
56         (process_template_parm): Set it.
57
58 Wed Dec 16 16:33:58 1998  Dave Brolley  <brolley@cygnus.com>
59
60         * lang-specs.h (default_compilers): Pass -MD, -MMD and -MG to cc1plus
61         if configured with cpplib.
62
63 1998-12-15  Mark Mitchell  <mark@markmitchell.com>
64
65         * decl.c (poplevel): Make sure ns_binding is initialized.
66
67         * decl.c (finish_function): Undo inadvertent change in previous
68         patch.
69
70 1998-12-14  Mark Mitchell  <mark@markmitchell.com>
71
72         * class.c (pushclass): Tweak handling of class-level bindings.
73         (resolve_address_of_overloaded_function): Update pointer-to-member
74         handling.
75         (instantiate_type): Likewise.
76         * cvt.c (cp_convert_to_pointer): Likewise.
77         * decl.c (pop_binding): Take the DECL to pop, not just the name.
78         Deal with `struct stat' hack.
79         (binding_level): Add to documentation.
80         (push_binding): Clear BINDING_TYPE.
81         (add_binding): New function.
82         (push_local_binding): Use it.
83         (push_class_binding): Likewise.
84         (poplevel): Adjust calls to pop_binding.
85         (poplevel_class): Likewise.
86         (pushdecl): Adjust handling of TYPE_DECLs; add bindings for hidden
87         declarations to current binding level.
88         (push_class_level_binding): Likewise.
89         (push_overloaded_decl): Adjust handling of OVERLOADs in local
90         bindings.
91         (lookup_namespace_name): Don't crash when confronted with a
92         TEMPLATE_DECL.
93         (lookup_name_real): Do `struct stat' hack in local binding
94         contexts.
95         (build_ptrmemfunc_type): Adjust documentation.
96         (grokdeclarator): Don't avoid building real array types when
97         processing templates unless really necessary.
98         (finish_method): Adjust calls to pop_binding.
99         * decl2.c (reparse_absdcl_as_expr): Recursively call ourselves,
100         not reparse_decl_as_expr.
101         (build_expr_from_tree): Deal with a template-id as the function to
102         call in a METHOD_CALL_EXPR.
103         * pt.c (convert_nontype_argument): Tweak pointer-to-member handling.
104         (maybe_adjust_types_For_deduction): Don't do peculiar things with
105         METHOD_TYPEs here.
106         (resolve_overloaded_unification): Handle COMPONENT_REFs.  Build
107         pointer-to-member types where necessary.
108         * tree.c (build_cplus_array_type_1): Don't avoid building real
109         array types when processing templates unless really necessary.
110         (build_exception_variant): Compare the exception lists correctly.
111
112 1998-12-13  Mark Mitchell  <mark@markmitchell.com>
113
114         * cp-tree.def (CPLUS_BINDING): Update documentation.
115         * cp-tree.h (LOCAL_BINDING_P): New macro.
116         (lang_identifier): Rename local_value to bindings.
117         (tree_binding): Make `scope' of type `void*', not `tree'.
118         (BINDING_SCOPE): Update documentation.
119         (IDENTIFIER_LOCAL_VALUE): Remove.
120         (IDENTIFIER_CLASS_VALUE): Document.
121         (IDENTIFIER_BINDING): New macro.
122         (IDENTIFIER_VALUE): Likewise.
123         (TIME_IDENTIFIER_TIME): Likewise.
124         (TIME_IDENTIFIER_FILEINFO): Likewise.
125         (IMPLICIT_TYPENAME_P): Likewise.
126         (set_identifier_local_value): Remove.
127         (push_local_binding): New function.
128         (push_class_binding): Likewise.
129         * class.c (pushclass): Update comments; use push_class_binding.
130         * decl.c (set_identifier_local_value_with_scope): Remove.
131         (set_identifier_local_value): Likewise.
132         (push_binding): New function.
133         (pop_binding): Likewise.
134         (binding_level): Update documentation.  Remove shadowed.
135         (BINDING_LEVEL): New macro.
136         (free_binding_nodes): New variable.
137         (poplevel): Adjust for new name-lookup scheme.  Don't mess up
138         BLOCK_VARs when doing for-scope extension.  Remove effectively
139         dead code.
140         (pushlevel_class): Tweak formatting.
141         (poplevel_class): Adjust for new name-lookup scheme.
142         (print_binding_level): Likewise.
143         (store_bindings): Likewise.
144         (pushdecl): Likewise.
145         (pushdecl_class_level): Likewise.
146         (push_class_level_binding): Likewise.
147         (push_overloaded_decl): Update comments.  Adjust for new
148         name-lookup scheme.
149         (lookup_name_real): Likewise.
150         (lookup_name_current_level): Likewise.
151         (cp_finish_decl): Likewise.
152         (require_complete_types_for_parms): Likewise.  Remove misleading
153         #if 0'd code.
154         (grok_parms): Likewise.  Don't call
155         require_complete_types_for_parms here.
156         (grok_ctor_properties): Don't treat templates as copy
157         constructors.
158         (grop_op_properties): Or as assignment operators.
159         (start_function): Document.  Adjust for new name-lookup scheme.
160         (finish_function): Likewise.
161         * decl2.c (do_local_using_decl): Use push_local_binding.
162         * lex.c (begin_definition_of_inclass_inline): New function, split
163         out from ...
164         (do_pending_inlines): Here, and ...
165         (process_next_inline): Here.
166         (get_time_identifier): Use TIME_IDENTIFIER_* macros.
167         (init_filename_times): Likewise.
168         (extract_interface_info): Likewise.
169         (ste_typedecl_interface_info): Likewise.
170         (check_newline): Likewise.
171         (dump_time_statistics): Likewise.
172         (handle_cp_pragma): Likewise.
173         (do_identifier): Adjust for new name-lookup scheme.
174         * parse.y (function_try_block): Return ctor_initializer_opt value.
175         (fndef): Use it.
176         (fn.defpen): Pass appropriate values to start_function.
177         (pending_inline): Use functor_try_block value, and pass
178         appropriate values to finish_function.
179         * pt.c (is_member_template): Update documentation; remove handling
180         of FUNCTION_DECLs.  As per name, this function should deal only in
181         TEMPLATE_DECLs.
182         (decl_template_parm_p): Change name of olddecl parameter to decl.
183         (check_template_shadow): Adjust for new name-lookup scheme.
184         (lookup_template_class): Likewise.
185         (tsubst_decl): Tweak so as not to confuse member templates with
186         copy constructors and assignment operators.
187         (unify): Handle UNION_TYPEs.
188         * ptree.c (print_lang_identifier): Adjust for new name-lookup scheme.
189         (lang_print_xnode): Adjust for new name-lookup scheme.
190         * typeck.c (mark_addressable): Likewise.
191         (c_expand_return): Likewise.
192
193 1998-12-08  Jason Merrill  <jason@yorick.cygnus.com>
194
195         * decl.c (grokdeclarator): Allow field with same name as class
196         in extern "C".
197
198         * decl.c (lookup_name_real): Don't limit field lookup to types.
199         * class.c (check_member_decl_is_same_in_complete_scope): No error
200         if icv and x are the same.
201         * lex.c (do_identifier): Tweak error message.
202
203 1998-12-10  Mark Mitchell  <mark@markmitchell.com>
204
205         * decl.c (start_enum): Use push_obstacks, not
206         end_temporary_allocation.
207         (finish_enum): Call pop_obstacks.
208
209 1998-12-10  Mark Mitchell  <mark@markmitchell.com>
210
211         * class.c (instantiate_type): Return error_mark_node rather than
212         junk.
213
214 1998-12-09  Mark Mitchell  <mark@markmitchell.com>
215
216         * cp-tree.h (most_specialized_instantiation): New function.
217         (print_candidates): Likewise.
218         * class.c (validate_lhs): Remove.
219         (resolve_address_of_overloaded_function): New function, split out
220         and then substantially reworked, from ...
221         (instantiate_type): Use it.  Simplify.
222         * cvt.c (convert_to_reference): Complain when caller has indicated
223         that's the right thing to do.  Don't crash if instantiate_type
224         fails.
225         * pt.c: Substitute `parameters' for `paramters' throughout.
226         (print_candidates): Don't make it static.
227         (most_specialized_instantiation): Split out from ...
228         (most_specialized): Here.
229
230 Wed Dec  9 15:33:01 1998  Dave Brolley  <brolley@cygnus.com>
231
232         * lex.c (lang_init_options): Initialize cpplib.
233         * decl2.c (parse_options,cpp_initialized): Removed.
234         (lang_decode_option): Move initialization of cpplib to
235         lang_init_options.
236
237 1998-12-09  Mark Mitchell  <mark@markmitchell.com>
238
239         * decl.c (grokdeclarator): Update the name of the TEMPLATE_DECL, as
240         well as the TYPE_DECL, when a typedef name is assigned to a
241         previously anonymous type.
242
243 1998-12-08  Andrew MacLeod  <amacleod@cygnus.com>
244
245         * cp/except.c (call_eh_info): Use __start_cp_handler instead of
246         __cp_eh_info for getting the eh info pointer.  Add table_index to
247         field list.
248         (push_eh_cleanup): Don't increment 'handlers' data field.
249         (process_start_catch_block): Don't set the 'caught' field.
250
251         * cp/exception.cc (CP_EH_INFO): New macro for getting the
252         exception info pointer within library routines.
253         (__cp_eh_info): Use CP_EH_INFO.
254         (__start_cp_handler): Get exception info pointer, set caught field,
255         and increment the handlers field.  Avoids this being done by handlers.
256         (__uncatch_exception, __check_eh_spec): Use CP_EH_INFO macro.
257         (uncaught_exception): Use CP_EH_INFO macro.
258
259 Tue Dec  8 10:48:21 1998  Jeffrey A Law  (law@cygnus.com)
260
261         * Make-lang.in (cxxmain.o): Depend on $(DEMANGLE_H), not demangle.h
262
263 Mon Dec  7 17:56:06 1998  Mike Stump  <mrs@wrs.com>
264
265         * lex.c (check_newline): Add support for \ as `natural'
266         characters in file names in #line to be consistent with #include
267         handling.  We support escape processing in the # 1 "..." version of
268         the command.  See also support in cp/lex.c.
269
270 1998-12-07  Zack Weinberg  <zack@rabi.phys.columbia.edu>
271
272         * cp/decl2.c: s/data/opts/ when initializing cpp_reader
273         structure.
274
275 1998-12-07  Jason Merrill  <jason@yorick.cygnus.com>
276
277         * decl.c (build_typename_type): Set DECL_ARTIFICIAL.
278
279         * error.c (dump_simple_decl): Also print namespace context.
280         (dump_function_decl): Likewise.
281
282         * decl2.c (ambiguous_decl): Don't print old value if it's
283         error_mark_node.
284
285         * decl.c (lookup_name_real): Fix handling of local types shadowed
286         by a non-type decl.  Remove obsolete code.
287         * cp-tree.h (DECL_FUNCTION_SCOPE_P): New macro.
288
289         * lang-options.h: Add -fpermissive.
290         * decl2.c: Likewise.
291         * cp-tree.h: Add flag_permissive.
292         * decl.c (init_decl_processing): If neither -fpermissive or -pedantic
293         were specified, set flag_pedantic_errors.
294         * call.c (build_over_call): Turn dropped qualifier messages
295         back into pedwarns.
296         * cvt.c (convert_to_reference): Likewise.
297         * typeck.c (convert_for_assignment): Likewise.
298
299 1998-12-05  Jason Merrill  <jason@yorick.cygnus.com>
300
301         * decl2.c (coerce_new_type): Use same_type_p.
302         (coerce_delete_type): Likewise.
303
304         * call.c (check_dtor_name): Return 1, not error_mark_node.
305
306 1998-12-04  Jason Merrill  <jason@yorick.cygnus.com>
307
308         * lex.c (handle_cp_pragma): Disable #pragma interface/implementation
309         if MULTIPLE_SYMBOL_SPACES.
310
311         * pt.c (check_template_shadow): New fn.
312         * decl2.c (grokfield): Use it.
313         * decl.c (pushdecl): Likewise.
314         (pushdecl_class_level): Likewise.
315         (start_method): Likewise.
316         (xref_tag): Don't try to use 't' if we're defining.
317
318         * call.c (check_dtor_name): Just return an error_mark_node.
319         * pt.c (lookup_template_class): Complain about using non-template here.
320         * parse.y (apparent_template_type): Not here.
321
322         * pt.c (check_explicit_specialization): Complain about specialization
323         with C linkage.
324
325         * lang-options.h: Add -f{no-,}implicit-inline-templates.
326
327         * pt.c (convert_nontype_argument): Don't assume that any integer
328         argument is intended to be a constant-expression.
329
330 1998-12-03  Mark Mitchell  <mark@markmitchell.com>
331
332         * class.c (handle_using_decl): Fix comment.  Don't lookup
333         constructors in base classes.
334         (validate_lhs): Fix typo in comment.
335         * search.c (lookup_field_1): Don't return a USING_DECL.
336
337         * cp-tree.h (DECL_ACCESS): Improve documentation.
338
339         * decl.c (expand_static_init): Don't set the initialization-done
340         flag until the initialization is done.
341
342 1998-12-02  Mark Mitchell  <mark@markmitchell.com>
343
344         * decl2.c (validate_nonmember_using_decl): Complain about using
345         declarations for class members.
346
347 1998-11-29  Jason Merrill  <jason@yorick.cygnus.com>
348
349         * typeck2.c (process_init_constructor): Use same_type_p.
350
351         * decl.c (check_tag_decl): Don't warn about null decl inside a
352         class.
353
354         * pt.c (unify, case OFFSET_TYPE): Pass down 'strict' rather than
355         UNIFY_ALLOW_NONE.
356         (convert_nontype_argument): Use TYPE_PTRMEMFUNC_FN_TYPE.
357         (resolve_overloaded_unification): Strip baselinks.
358
359 Fri Nov 27 13:07:23 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
360
361         * g++spec.c: Don't prototype xmalloc.
362
363 1998-11-25  Jason Merrill  <jason@yorick.cygnus.com>
364
365         * except.c (expand_throw): Use TYPE_PTR_P to check for pointers.
366
367         * decl.c (check_tag_decl): Do complain about null friend decl at
368         file scope.
369
370 1998-11-25  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
371
372         * lex.c (make_lang_type): Clear the whole struct lang_type, not
373         only the first multiple of sizeof (int).
374
375 1998-11-24  Jason Merrill  <jason@yorick.cygnus.com>
376
377         * decl.c (start_decl): An explicit specialization of a static data
378         member is only a definition if it has an initializer.
379
380         * except.c (expand_throw): Use cp_finish_decl for the throw temp.
381         * cvt.c (build_up_reference): Pass DIRECT_BIND down into
382         cp_finish_decl.
383         * init.c (expand_default_init): Check for DIRECT_BIND instead of
384         DECL_ARTIFICIAL.
385
386         * call.c (build_over_call): Use build_decl.
387
388         * except.c (expand_throw): Just use convert, not
389         build_reinterpret_cast.
390
391         * lex.c (handle_generic_pragma): Use token_buffer.
392
393         * decl.c (check_tag_decl): Don't complain about null friend decl.
394
395 1998-11-24  Dave Pitts  <dpitts@cozx.com>
396
397         * Make-lang.in (DEMANGLER_PROG): Move the output arguments to the
398         first position.
399         * lex.c (check_newline): Use ISALPHA.
400         (readescape): Use ISGRAPH.
401         (yyerror): Use ISGRAPH.
402
403 1998-11-24  Nathan Sidwell  <nathan@acm.org>
404
405         * search.c (get_abstract_virtuals): Do not use initial
406         CLASSTYPE_ABSTRACT_VIRTUALS.
407         * typeck2.c (abstract_virtuals_error): Show location of abstract
408         declaration.
409         * call.c (build_new_method_call): Use
410         CLASSTYPE_ABSTRACT_VIRTUAL, rather than recalculate.
411         * class.c (finish_struct_bits): Don't bother working out whether
412         get_abstract_virtuals will do anything, just do it.
413
414 1998-11-24  Graham  <grahams@rcp.co.uk>
415
416         * typeck.c (build_component_ref): Remove unused statement.
417
418 1998-11-24  Jason Merrill  <jason@yorick.cygnus.com>
419
420         * class.c (add_method): Catch invalid overloads.
421
422         * class.c (add_method): Build up OVERLOADs properly for conversion ops.
423         * search.c (lookup_conversions): Handle getting real OVERLOADs.
424         (add_conversions): Likewise.  Revert last change.
425         * call.c (add_conv_candidate): Pass totype to add_candidate instead
426         of fn.  Don't add a new candidate if the last one was for the same
427         type.
428         (print_z_candidates): Handle getting a type as a function.
429         (joust): If we got two conversion candidates to the same type,
430         just pick one.
431         (build_object_call): Lose 'templates'.
432         (build_user_type_conversion_1): Handle getting real OVERLOADs.
433
434 1998-11-23  Jason Merrill  <jason@yorick.cygnus.com>
435
436         * typeck2.c (process_init_constructor): If there are elements
437         that don't have initializers and they need to have constructors
438         run, supply them with initializers.
439
440         * class.c (finish_struct_1): A class with a 0-width bitfield is
441         still empty.
442
443 1998-11-23  Mark Mitchell  <mark@markmitchell.com>
444
445         * pt.c (instantiate_class_template): Don't try to figure out what
446         specialization to use for a partial instantiation.  Correct
447         typos in a couple of comments.  Avoid calling uses_template_parms
448         multiple times.
449
450 1998-11-23  Benjamin Kosnik  <bkoz@cygnus.com>
451
452         * method.c (process_overload_item): Add call to
453         build_mangled_C9x_name for intTI_type_nodes.
454         (build_mangled_C9x_name): Add prototype, define.
455         * decl.c (init_decl_processing): Add names for
456         TImode_type_node.
457
458 1998-11-23  Jason Merrill  <jason@yorick.cygnus.com>
459
460         * parse.y (named_class_head): Update CLASSTYPE_DECLARED_CLASS.
461
462         * class.c (finish_struct_1): Set things up for 0-width bitfields
463         like we do for others.
464
465         * decl.c (check_tag_decl): New fn.
466         (shadow_tag): Split out from here.
467         * decl2.c (grok_x_components): Call it.
468
469 1998-11-22  Jason Merrill  <jason@yorick.cygnus.com>
470
471         * decl.c: Lose warn_about_return_type.
472         (grokdeclarator): Always complain about implicit int, except for
473         `main () { ... }'.
474
475         * decl.c (tag_name): New fn.
476         (xref_tag): Complain about using typedef-name after class-key.
477
478         * init.c (expand_vec_init): Also keep going if from_array.
479
480         * tree.c (is_overloaded_fn): Also handle the output of
481         build_offset_ref.
482
483         * decl.c (grokdeclarator): Use constructor_name when comparing
484         field name against enclosing class.
485         * class.c (finish_struct_anon): Likewise.
486
487 1998-11-22  Mark Mitchell  <mark@markmitchell.com>
488
489         * decl.c (poplevel): Remove code to handle KEEP == 2.
490         (finish_function): Don't confuse BLOCK-order when
491         processing a destructor.
492
493 1998-11-21  Jason Merrill  <jason@yorick.cygnus.com>
494
495         * decl.c (require_complete_types_for_parms): Call layout_decl
496         after we've completed the type.
497
498 1998-11-21  Martin von Löwis  <loewis@informatik.hu-berlin.de>
499
500         * decl2.c (validate_nonmember_using_decl): Allow using templates
501         from the global namespace.
502
503 1998-11-21  Jason Merrill  <jason@yorick.cygnus.com>
504
505         Handle specifying template args to member function templates.
506         * tree.c (build_overload): Always create an OVERLOAD for a template.
507         * search.c (add_conversions): Handle finding an OVERLOAD.
508         * decl2.c (check_classfn): Likewise.
509         * lex.c (identifier_type): See through a baselink.
510         * parse.y (do_id): Don't call do_identifier if we got a baselink.
511         * class.c (instantiate_type, case TREE_LIST): Recurse.
512
513         * decl.c (grokdeclarator): Allow a boolean constant for array
514         bounds, odd as that sounds.
515
516         * pt.c (unify): Be more strict about non-type parms, except for
517         array bounds.
518         (UNIFY_ALLOW_INTEGER): New macro.
519
520 1998-11-19  Manfred Hollstein  <manfred@s-direktnet.de>
521
522         * Make-lang.in (mandir): Replace all uses of $(mandir) by $(man1dir).
523
524 1998-11-19  Jason Merrill  <jason@yorick.cygnus.com>
525
526         * semantics.c (begin_class_definition): Call
527         maybe_process_partial_specialization before push_template_decl.
528         Don't call push_template_decl for a specialization.
529         * search.c (lookup_field): Do return a member template class.
530         * decl2.c (handle_class_head): Handle member template classes.
531
532         * decl.c (grokdeclarator): A parm type need not be complete.
533
534         * pt.c (convert_nontype_argument): Fix thinko.
535
536 1998-11-18  Mark Mitchell  <mark@markmitchell.com>
537
538         * cp-tree.h (PTRMEM_CST_CLASS): Fix typo.
539         (global_delete_fndecl): New variable.
540         * decl.c (global_delete_fndecl): Define it.
541         (init_decl_processing): Set it.
542         * init.c (build_builtin_delete_call): Use it.
543         * tree.c (mapcar): Recursively call mapcar for the type of EXPR
544         nodes.
545
546 1998-11-18  Jason Merrill  <jason@yorick.cygnus.com>
547
548         * decl.c (cplus_expand_expr_stmt): Always complain about unresolved
549         type.
550
551         * tree.c (lvalue_p_1): An INDIRECT_REF to a function is an lvalue.
552         * call.c (build_object_call): Also support references to functions.
553         * typeck.c (convert_for_initialization): Don't decay a function
554         if the target is a reference to function.
555
556         * search.c (add_conversions): Get all the overloads from a class.
557
558         * decl.c (grok_ctor_properties): Complain about any constructor
559         that will take a single arg of the class type by value.
560
561         * typeck2.c (build_functional_cast): Can't create objects of
562         abstract classes this way.
563         * cvt.c (ocp_convert): Likewise.
564
565         * decl.c (grokfndecl): Member functions of local classes are not
566         public.
567
568 1998-11-18  Mark Mitchell  <mark@markmitchell.com>
569
570         * Make-lang.in (cc1plus): Add dependency on hash.o.
571
572 1998-11-18  Jason Merrill  <jason@yorick.cygnus.com>
573
574         * search.c (get_abstract_virtuals): Complain about virtuals with
575         no final overrider.
576         * typeck2.c (abstract_virtuals_error): Remove handling for virtuals
577         with no final overrider.
578         * class.c (override_one_vtable): Don't set DECL_ABSTRACT_VIRTUAL_P
579         on virtuals with no final overrider.
580
581         * lex.c (reinit_parse_for_block): Add a space after the initial ':'.
582
583         * class.c (finish_struct_1): Don't remove zero-width bit-fields until
584         after layout_type.
585
586         * friend.c (do_friend): Don't set_mangled_name_for_decl.
587
588         * class.c (finish_struct_anon): Complain about non-fields.
589         * decl2.c (build_anon_union_vars): Likewise.
590
591         * decl.c (grokdeclarator): Normal data members can't have the same
592         name as the class, either.
593         * class.c (finish_struct_anon): Neither can members of an
594         anonymous union.
595
596 1998-11-17  Mark Mitchell  <mark@markmitchell.com>
597
598         * cp-tree.h (TYPE_ALIAS_SET): Document language-dependent uses.
599         (TYPE_BINFO): Likewise.
600         (IS_AGGR_TYPE): Tweak.
601         (SET_IS_AGGR_TYPE): New macro.
602         (CLASS_TYPE_P): Tweak.
603         (lang_type): Group mark bitfields together.  Remove linenum.
604         (CLASSTYPE_SOURCE_LINE): Remove macro.
605         (CLASSTYPE_MARKED_N): New macro.
606         (SET_CLASSTYPE_MARKED_N): Likewise.
607         (CLEAR_CLASSTYPE_MARKED_N): Likewise.
608         (CLASS_TYPE_MARKED_*): Use them.
609         (SET_CLASSTYPE_MARKED_*): Likewise.
610         (CLEAR_CLASSTYPE_MARKED_*): Likewise.
611         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Likewise.
612         (TYPE_TEMPLATE_INFO): Handle TEMPLATE_TEMPLATE_PARMs as well.
613         (TYPENAME_TYPE_FULLNAME): Use TYPE_BINFO rather than CLASSTYPE_SIZE.
614         * class.c (class_cache_obstack): New variable.
615         (class_cache_firstobj): Likewise.
616         (finish_struct): Don't set CLASSTYPE_SOURCE_LINE.
617         (pushclass): Free the cache, when appropriate.
618         (popclass): Tidy.
619         (maybe_push_cache_obstack): Use class_cache_obstack.
620         * decl.c (include hash.h).
621         (typename_hash): New function.
622         (typename_compare): Likewise.
623         (build_typename_type): Check the hash table to avoid creating
624         duplicates.
625         (build_ptrmemfunc_type): Use SET_IS_AGGR_TYPE.
626         (grokdeclarator): Use CLASS_TYPE_P.
627         (xref_basetypes): Likewise.
628         (start_function): Likewise.  Don't put current_class_ref on the
629         permanent obstack.
630         * error.c (dump_type_real): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO
631         and TYPE_TI_ARGS.
632         * lex.c (note_got_semicolon): Use CLASS_TYPE_P.
633         (make_lang_type): Don't create TYPE_LANG_SPECIFIC and associated
634         fields for types other than class types.  Do clear TYPE_ALIAS_SET
635         for types other than class types, though.
636         * method.c (build_overload_identifier): Use CLASS_TYPE_P and
637         TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
638         * pt.c (process_template_parm): Don't set
639         CLASSTYPE_GOT_SEMICOLON.
640         (lookup_template_class): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
641         Coerce arguments on the momentary obstack.
642         (for_each_template_parm): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
643         (instantiate_class_template): Calculate template arguments on the
644         momentary obstack.  Tidy.
645         (tsubst_template_arg_vector): Use make_temp_vec.
646         (tsubst_aggr_type): Put template arguments on the momentary
647         obstack.
648         (tsubst_decl): Likewise.
649         (tsubst): Copy the array bounds index to the permanent obstack
650         before building index types.  Use new macros.
651         (unify): Use new macros.
652         (do_type_instantiation): Likewise.
653         * search.c (lookup_fnfields_1): Use new macros.
654         (dfs_pushdecls): Build envelopes on the cache obstack.
655         (dfs_compress_decls): Use new macros.
656         (push_class_decls): Build on the cache obstack.
657         * semantics.c (finish_typeof): Don't set CLASSTYPE_GOT_SEMICOLON.
658         * sign.c (build_signature_pointer_or_reference_type): Use
659         SET_IS_AGGR_TYPE.
660         * tree.c (make_binfo): Check CLASS_TYPE_P.
661         (copy_template_template_parm): Adjust.
662         (make_temp_vec): Use push_expression_obstack.
663         * typeck.c (complete_type): Use new macros.
664         (comptypes): Likewise.
665
666 1998-11-17  Jason Merrill  <jason@yorick.cygnus.com>
667
668         * pt.c (tsubst): Add diagnostics for invalid array, reference
669         and pointer to member types.
670
671 1998-11-16  Jason Merrill  <jason@yorick.cygnus.com>
672
673         * typeck2.c (my_friendly_abort): Don't fatal twice in a row.
674
675         * typeck.c (c_expand_start_case): Use build_expr_type_conversion.
676         Simplify.
677
678         * parse.y (structsp): Fix cut-and-paste error.
679
680         * init.c (build_new): Complain about non-integral size.
681
682         * parse.y (unary_expr): Complain about defining types in sizeof.
683
684         * typeck.c (expr_sizeof): Complain about sizeof an overloaded fn.
685
686         * rtti.c (build_x_typeid): Complain about typeid without
687         including <typeinfo>.
688         (get_typeid): Likewise.  Complain about typeid of incomplete type.
689         (get_tinfo_fn_dynamic): Likewise.
690         (get_typeid_1): Not static anymore.
691         * except.c (build_eh_type_type): Use get_typeid_1.
692
693         * rtti.c (build_dynamic_cast_1): Give errors for dynamic_cast to
694         ambiguous or private bases.  Fix warning for reference cast.
695
696 1998-11-16  Mark Mitchell  <mark@markmitchell.com>
697
698         * cp-tree.h (DECL_TEMPLATE_INSTANTIATED): New macro.
699         * decl.c (duplicate_decls): Remove special-case code to deal with
700         template friends, and just do the obvious thing.
701         * pt.c (register_specialization): Tweak for clarity, and also to
702         clear DECL_INITIAL for an instantiation before it is merged with a
703         specialization.
704         (check_explicit_specialization): Fix indentation.
705         (tsubst_friend_function): Handle both definitions in friend
706         declaration and outside friend declarations.
707         (tsubst_decl): Don't clear DECL_INITIAL for an instantiation.
708         (regenerate_decl_from_template): Tweak accordingly.
709         (instantiate_decl): Likewise.
710
711 1998-11-16  Jason Merrill  <jason@yorick.cygnus.com>
712
713         * decl.c (cplus_expand_expr_stmt): Promote warning about naked
714         member function reference to error.
715         * cvt.c (ocp_convert): Complain about converting an overloaded
716         function to void.
717
718         * init.c (build_offset_ref): Just return a lone static member
719         function.
720
721         * decl.c (cp_finish_decl): Only complain about real CONSTRUCTORs,
722         not internal ones.
723
724         * typeck.c (build_binary_op_nodefault): Improve error handling.
725
726         * decl.c (grokfndecl): Complain about making 'main' a template.
727
728         * typeck.c (string_conv_p): Don't convert from wchar_t[] to char*.
729
730         * call.c (build_method_call): Handle a BIT_NOT_EXPR around a
731         TYPE_DECL in a template.
732
733 1998-11-15  Jason Merrill  <jason@yorick.cygnus.com>
734
735         * typeck2.c (my_friendly_abort): Add URL in the other case, too.
736
737         * decl.c (struct cp_function): Add named_label_uses.
738         (push_cp_function_context): Save it.
739         (pop_cp_function_context): Restore it.
740         (define_label): Also complain about jumping into the scope of
741         non-POD objects that don't have constructors.
742         * tree.c (pod_type_p): New fn.
743
744         * pt.c (instantiate_class_template): Clear TYPE_BEING_DEFINED sooner.
745         * rtti.c (synthesize_tinfo_fn): Call import_export_decl here.
746         (get_tinfo_fn): Not here.
747         * repo.c (repo_get_id): Abort if we get called for an incomplete
748         type.
749
750 1998-11-13  Mark Mitchell  <mark@markmitchell.com>
751
752         * except.c (expand_throw): Make sure first argument to
753         __cp_push_exception is of type `void*' to avoid spurious error
754         messages.
755
756 1998-11-11  Jason Merrill  <jason@yorick.cygnus.com>
757
758         * pt.c (try_one_overload): Take orig_targs again.  Only check for
759         mismatches against them; we don't care what a previous call found.
760         (resolve_overloaded_unification): Adjust.
761
762         * search.c (lookup_field): Don't return anything for a non-type
763         field from a dependent type.
764         * decl.c (grokdeclarator): Resolve SCOPE_REFs of the current class
765         in an array declarator.
766         (start_decl): Push into the class before looking for the field.
767
768 1998-11-08  Mark Mitchell  <mark@markmitchell.com>
769
770         * method.c (build_overload_value): Handle REFERENCE_TYPE.
771
772 1998-11-08  Martin von Löwis  <loewis@informatik.hu-berlin.de>
773
774         * decl.c (grokdeclarator): Allow namespace-scoped members if they
775         are friends.
776
777 1998-11-08  Jason Merrill  <jason@yorick.cygnus.com>
778
779         * pt.c (tsubst_decl): Don't mess with the global value of an
780         un-mangled DECL_ASSEMBLER_NAME.
781
782 1998-11-03  Christopher Faylor  <cgf@cygnus.com>
783
784         * decl.c (init_decl_processing): Remove CYGWIN conditional
785         since CYGWIN is now able to deal with trapping signals.
786
787 Sat Nov  7 15:48:02 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
788
789         * cp-tree.h: Don't include gansidecl.h.
790         * exception.cc: Include gansidecl.h (since we don't include config.h)
791         * g++spec.c: Don't include gansidecl.h.
792
793 1998-11-06  Mark Mitchell  <mark@markmitchell.com>
794
795         * cp-tree.h (lang_decl_flags): Add defined_in_class.  Decrease
796         size of dummy.
797         (DECL_DEFINED_IN_CLASS_P): New macro.
798         (TEMPLATE_PARMS_FOR_INLINE): Document.
799         (check_static_variable_definition): New function.
800         * decl.c (cp_finish_decl): Set DECL_DEFINED_IN_CLASS_P, if
801         appropriate.
802         (check_static_variable_definition): Split out from ...
803         (grokdeclarator): Here.
804         * pt.c (check_default_tmpl_args): New function, split out from ...
805         (push_template_decl_real): Here.
806         (instantiate_template): Fix comment.
807
808 1998-11-04  Mark Mitchell  <mark@markmitchell.com>
809
810         * cp-tree.h (CP_TYPE_CONST_P): Make {0,1}-valued.
811         (CP_TYPE_VOLATILE_P): Likewise.
812         (CP_TYPE_RESTRICT_P): Likewise.
813
814 1998-11-03  Mark Mitchell  <mark@markmitchell.com>
815
816         * pt.c (tsubst): Use build_index_type, not build_index_2_type.
817
818 1998-11-02  Jason Merrill  <jason@yorick.cygnus.com>
819
820         * class.c (instantiate_type): Be more helpful.
821
822         * decl2.c (import_export_decl): Call import_export_class.
823
824         * cp-tree.h (EMPTY_CONSTRUCTOR_P): Check !TREE_HAS_CONSTRUCTOR.
825         * decl2.c (build_expr_from_tree): Propagate TREE_HAS_CONSTRUCTOR.
826         * pt.c (tsubst_copy): Likewise.
827
828 1998-11-02  Mark Mitchell  <mark@markmitchell.com>
829
830         * init.c (expand_vec_init): Fix off-by-one error.
831
832 1998-11-02  Alexandre Oliva  <oliva@dcc.unicamp.br>
833
834         * parse.y (apparent_template_type): New type.
835         (named_complex_class_head_sans_basetype): Use it.
836         * Makefile.in (CONFLICTS): One new conflict.
837         * parse.c: Regenerated.
838
839 1998-11-01  Mark Mitchell  <mark@markmitchell.com>
840
841         * cp-tree.h (COMPARE_STRICT): New macro.
842         (COMPARE_BASE): Likewise.
843         (COMPARE_RELAXED): Likewise.
844         (COMPARE_REDECLARATION): Likewise.
845         (same_type_p): Likewise.
846         (same_or_base_type_p): Likewise.
847         * call.c (standard_conversion): Use them, in place of comptypes
848         with numeric arguments.
849         (reference_binding): Likewise.
850         (convert_like): Likewise.
851         (build_over_call): Likewise.
852         (is_subseq): Likewise.
853         (is_properly_derived_from): Likewise.
854         (compare_ics): Likewise.
855         (joust): Likewise.
856         * class.c (delete_duplicate_fields_1): Likewise.
857         (resolves_to_fixed_type_p): Likewise.
858         (instantiate_type): Likewise.  Remove #if 0'd code.
859         * decl.c (decls_match): Likewise.  Use COMPARE_REDECLARATION here.
860         (pushdecl): Likewise.
861         (lookup_name_real): Likewise.
862         (grokdeclarator): Likewise.  Check for illegal array declarations.
863         (grokparms): Likewise.
864         (grok_op_properties): Likewise.
865         * decl2.c (check_classfn): Likewise.
866         * friend.c (is_friend): Likewise.
867         (make_friend_class): Likewise.
868         * init.c (expand_aggr_init): Likewise.
869         (expand_vec_init): Likewise.
870         * pt.c (is_member_template_class): Remove declaration.
871         (is_specialization_of): Use COMPARE_* and new macros.
872         (comp_template_parms): Likewise.
873         (convert_nontype_argument): Likewise.
874         (coerce_template_template_parms): Likewise.
875         (template_args_equal): Likewise.
876         (lookup_template_class): Likewise.
877         (type_unification_real): Likewise.
878         (unify): Likewise.
879         (get_bindings_real): Likewise.
880         * search.c (covariant_return_p): Likewise.
881         (get_matching_virtual): Likewise.
882         * sig.c (match_method_types): Likewise.
883         * tree.c (vec_binfo_member): Likewise.
884         (cp_tree_equal): Likewise.
885         * typeck.c (common_type): Likewise.
886         (comp_array_types): Likewise.  Get issues involving unknown array
887         bounds right.
888         (comptypes): Update comments.  Use new flags.
889         (comp_target_types): Use new macros.
890         (compparms): Likewise.
891         (comp_target_parms): Likewise.
892         (string_conv_p): Likewise.
893         (build_component_ref): Likewise.
894         (build_indirect_ref): Likewise.
895         (build_conditional_expr): Likewise.
896         (build_static_cast): Likewise.
897         (build_reinterpret_cast): Likewise.
898         (build_const_cast): Likewise.
899         (build_modify_expr): Likewise.
900         (convert_for_assignment): Likewise.
901         (comp_ptr_ttypes_real): Likewise.
902         (ptr_reasonably_similar): Likewise.
903         (comp_ptr_ttypes_const): Likewise.
904
905 1998-10-31  Jason Merrill  <jason@yorick.cygnus.com>
906
907         * rtti.c (build_dynamic_cast_1): Fix cut-and-paste error.
908
909 1998-10-30  Mark Mitchell  <mark@markmitchell.com>
910
911         * decl2.c (delete_sanity): Pass integer_zero_node, not
912         integer_two_node, to build_vec_delete.
913         * init.c (build_array_eh_cleanup): Remove.
914         (expand_vec_init_try_block): New function.
915         (expand_vec_init_catch_clause): Likewise.
916         (build_vec_delete_1): Don't deal with case that auto_delete_vec
917         might be integer_two_node anymore.
918         (expand_vec_init): Rework for initialization-correctness and
919         exception-correctness.
920         * typeck2.c (process_init_constructor): Make mutual exclusivity
921         of cases more obvious.
922
923 1998-10-29  Jason Merrill  <jason@yorick.cygnus.com>
924
925         * decl.c (lookup_name_real): OK, only warn if not lexing.
926         Simplify suggested fix.
927
928         * cp-tree.h (IDENTIFIER_MARKED): New macro.
929         * search.c (lookup_conversions): Use breadth_first_search.
930         (add_conversions): Avoid adding two conversions to the same type.
931         (breadth_first_search): Work with base binfos, rather
932         than binfos and base indices.
933         (get_virtual_destructor): Adjust.
934         (tree_has_any_destructor_p): Adjust.
935         (get_matching_virtual): Adjust.
936
937         * pt.c (push_template_decl_real): Generalize check for incorrect
938         number of template parms.
939         (is_member_template_class): #if 0.
940
941 1998-10-29  Richard Henderson  <rth@cygnus.com>
942
943         * Makefile.in (cc1plus): Put CXX_OBJS, and thence @extra_cxx_objs@,
944         last.
945
946 1998-10-28  Zack Weinberg  <zack@rabi.phys.columbia.edu>
947
948         * lex.c: Call check_newline from lang_init always.  After
949         calling cpp_start_read, set yy_cur and yy_lim to read from the
950         cpplib token buffer.
951
952 1998-10-28  Jason Merrill  <jason@yorick.cygnus.com>
953
954         * class.c (instantiate_type): Don't consider templates for a normal
955         match.
956
957         * class.c (finish_struct_1): Don't complain about non-copy
958         assignment ops in union members.
959
960         * class.c (build_vtable): Don't pass at_eof to import_export_vtable.
961         (prepare_fresh_vtable): Likewise.
962         (finish_struct_1): Don't call import_export_class.
963         * decl2.c (finish_vtable_vardecl): Do import/export stuff.
964         (finish_prevtable_vardecl): Lose.
965         (finish_file): Don't call it.
966         * pt.c (instantiate_class_template): Likewise.
967         * cp-tree.h: Remove it.
968
969         * init.c (build_delete): Reset TYPE_HAS_DESTRUCTOR here.
970         * decl.c (finish_function): Not here.
971         (start_function): Do set DECL_INITIAL.
972
973         * pt.c (push_template_decl_real): Complain about default template
974         args for enclosing classes.
975
976         * call.c (add_function_candidate): Treat conversion functions
977         as coming from the argument's class.
978         * cp-tree.h (DECL_CONV_FN_P): New fn.
979         (DECL_DESTRUCTOR_P): Also check DECL_LANGUAGE.
980         * class.c (add_method): Use DECL_CONV_FN_P.
981         * decl2.c (check_classfn): Likewise.
982         * error.c (dump_function_name): Likewise.
983         (dump_function_decl): Likewise.
984         * pt.c (fn_type_unification): Likewise.
985         * search.c (add_conversions): Likewise.
986
987 1998-10-27  Jason Merrill  <jason@yorick.cygnus.com>
988
989         * lex.c (do_identifier): Also generate LOOKUP_EXPR for RESULT_DECL.
990         * method.c (hack_identifier): Also check for using RESULT_DECL
991         from outer context.
992
993 1998-10-27  Mark Mitchell  <mark@markmitchell.com>
994
995         * decl.c (grokdeclarator): Use type_quals, rather than constp,
996         consistently.
997
998 1998-10-27  Jason Merrill  <jason@yorick.cygnus.com>
999
1000         * call.c (standard_conversion): instantiate_type here.
1001         (reference_binding): And here.
1002         (implicit_conversion): Not here.
1003         (build_op_delete_call): No need to cons up an OVERLOAD.
1004         * cvt.c (cp_convert_to_pointer): instantiate_type here.
1005         (convert_to_reference): And here.
1006         * decl.c (grok_reference_init): Not here.
1007         (grokparms): Or here.
1008         * typeck2.c (digest_init): Or here.
1009         * typeck.c (decay_conversion): Take the address of overloaded
1010         functions, too.
1011         (require_instantiated_type): Lose.
1012         (convert_arguments): Don't handle unknown types here.
1013         (build_c_cast): Likewise.
1014         (build_binary_op): Gut.
1015         (build_conditional_expr): Don't require_instantiated_type.
1016         (build_modify_expr): Likewise.
1017         (build_static_cast): Don't instantiate_type.
1018         (build_reinterpret_cast): Likewise.
1019         (build_const_cast): Likewise.
1020         (convert_for_initialization): Likewise.
1021         (build_ptrmemfunc): Use type_unknown_p.
1022         (convert_for_assignment): Also do default_conversion on overloaded
1023         functions.  Hand them off to ocp_convert.
1024
1025 1998-10-26  Mark Mitchell  <mark@markmitchell.com>
1026
1027         * error.c (dump_decl): Deal with TEMPLATE_DECLs that are
1028         VAR_DECLs.  Handle vtables whose DECL_CONTEXT is not a type.
1029
1030         * class.c (finish_struct_1): Use build_cplus_array_type to build
1031         array types.
1032         * decl.c (init_decl_processing): Likewise.
1033         * except.c (expand_end_eh_spec): Likewise.
1034         * search.c (expand_upcast_fixups): Simplify very slightly.
1035
1036 1998-10-26  Jason Merrill  <jason@yorick.cygnus.com>
1037
1038         * decl.c (grokdeclarator): Complain about a variable using
1039         constructor syntax coming back null from start_decl.
1040
1041         * friend.c (make_friend_class): Complain about trying to make
1042         a non-class type a friend.
1043
1044         * decl.c (grokfndecl): Set DECL_INITIAL for a defn here.
1045         (start_function): Not here.
1046
1047 1998-10-26  Brendan Kehoe  <brendan@cygnus.com>
1048
1049         * decl.c (grokdeclarator): Disallow `explicit' in a friend declaration.
1050
1051 1998-10-26  Jason Merrill  <jason@yorick.cygnus.com>
1052
1053         * typeck2.c (process_init_constructor): Only skip anonymous fields
1054         if they are bitfields.
1055
1056         * cp-tree.def (TYPEOF_TYPE): New code.
1057         * error.c (dump_type_real): Handle it.
1058         * pt.c (tsubst): Likewise.
1059         * tree.c (search_tree): Likewise.
1060         * semantics.c (finish_typeof): New fn.
1061         * parse.y (typespec): Use it.
1062         * cp-tree.h: Declare it.
1063
1064 1998-10-26  Manfred Hollstein  <manfred@s-direktnet.de>
1065
1066         * cp-tree.h (FORMAT_VBASE_NAME): Make definition unconditional.
1067
1068 1998-10-26  Jason Merrill  <jason@yorick.cygnus.com>
1069
1070         * typeck.c (convert_arguments): Don't handle pmf references
1071         specially.
1072
1073         * init.c (build_member_call): Don't try to convert to the base type
1074         if it's ambiguous or pedantic.
1075
1076         * typeck2.c (check_for_new_type): Only depend on pedantic for
1077         C-style casts.
1078
1079 1998-10-25  Mark Mitchell  <mark@markmitchell.com>
1080
1081         * decl.c (grokdeclarator): Set DECL_NONCONVERTING_P for all
1082         non-converting constructors.
1083
1084 1998-10-24  Martin von Löwis  <loewis@informatik.hu-berlin.de>
1085
1086         * gxxint.texi: Correct documentation for n, N, Q, and B.
1087
1088 1998-10-23  Martin von Löwis  <loewis@informatik.hu-berlin.de>
1089
1090         * parse.y (condition): Convert VAR_DECL from reference to indirect
1091         reference.
1092
1093 1998-10-23  Andrew MacLeod  <amacleod@cygnus.com>
1094
1095         * exception.cc (__cp_pop_exception): Free the original exception
1096         value, not the potentially coerced one.
1097
1098 1998-10-23  Mark Mitchell  <mark@markmitchell.com>
1099
1100         * Makefile.in (hash.h): Run gperf when necessary.
1101
1102         * cp-tree.h (CP_TYPE_READONLY): Remove.
1103         (CP_TYPE_VOLATILE): Likewise.
1104         (CP_TYPE_QUALS): New macro.
1105         (CP_TYPE_CONST_P): Likewise.
1106         (CP_TYPE_VOLATILE_P): Likewise.
1107         (CP_TYPE_RESTRICT_P): Likewise.
1108         (CP_TYPE_CONST_NON_VOLATILE_P): Likewise.
1109         (cp_build_type_variant): Rename to ...
1110         (cp_build_qualified_type): New function.
1111         (c_apply_type_quals_to_decl): Declare.
1112         (SIGNATURE_POINTER_NAME_FORMAT): Modify to allow `restrict'.
1113         (SIGNATURE_REFERENCE_NAME_FORMAT): Likewise.
1114         (cp_type_qual_from_rid): New function.
1115         (compparms): Remove unused parameter.  All callers changed.
1116         (cp_type_quals): New function.
1117         (at_least_as_qualified_p): Likewise.
1118         (more_qualified_p): Likewise.
1119
1120         * call.c (standard_conversion): Replace calls to
1121         cp_build_type_variant with cp_build_qualified_type.  Use
1122         CP_TYPE_QUALS to get qualifiers and at_least_as_qualified_p to
1123         compare them.  Use CP_TYPE_* macros to check qualifiers.
1124         (reference_binding): Likewise.
1125         (implicit_conversion): Likewise.
1126         (add_builtin_candidates): Likewise.
1127         (build_over_call): Likewise.
1128         * class.c (overrides): Compare all qualifiers, not just `const',
1129         on method declarations.
1130         * cvt.c (convert_to_reference): More CP_TYPE_QUALS conversion, etc.
1131         (convert_pointer_to_real): Likewise.
1132         (type_promotes_to): Likewise.
1133         * decl.c (check_for_uninitialized_const_var): New function.
1134         (init_decl_processing): More CP_TYPE_QUALS conversion, etc.
1135         (cp_finish_decl): Use check_for_uninitialized_const_var.
1136         (grokdeclarator): More CP_TYPE_QUALS conversion, etc.  Update to
1137         handle `restrict'.
1138         (grok_ctor_properties): Likewise.
1139         (grok_op_properties): Likewise.
1140         (start_function): Likewise.
1141         (rever_static_member_fn): Likewise.
1142         * decl2.c (grok_method_quals): Likewise.
1143         (grokfield): Likewise.
1144         * error.c (dump_readonly_or_volatile): Rename to ...
1145         (dump_qualifiers): New function.  Handle `restrict'.
1146         (dump_type_real): Use it.
1147         (dump_aggr_type): Likewise.
1148         (dump_type_prefix): Likewise.
1149         (dump_type_suffix): Likewise.
1150         (dump_function_decl): Likewise.
1151         (cv_as_string): Likewise.
1152         * gxx.gperf: Add __restrict and __restrict__.
1153         * gxxint.texi: Document `u' as used for `__restrict', and a few
1154         other previously undocumented codes.
1155         * hash.h: Regenerated.
1156         * init.c (expand_aggr_init): More CP_TYPE_QUALS conversion, etc.
1157         (build_member_call): Likewise.
1158         (build_new_1): Likewise.
1159         * lex.c (init_parse): Add entry for RID_RESTRICT.
1160         (cons_up_default_function): More CP_TYPE_QUALS conversion, etc.
1161         (cp_type_qual_from_rid): Define.
1162         * lex.h (enum rid): Add RID_RESTRICT.
1163         * method.c (process_modifiers): Deal with `restrict'.
1164         * parse.y (primary): More CP_TYPE_QUALS conversion, etc.
1165         * parse.c: Regenerated.
1166         * pt.c (convert_nontype_argument): More CP_TYPE_QUALS conversion, etc.
1167         (tsubst_aggr_type): Likewise.
1168         (tsubst): Likewise.
1169         (check_cv_quals_for_unify): Likewise.
1170         (unify): Likewise.
1171         * rtti.c (init_rtti_processing): Likewise.
1172         (build_headof): Likewise.
1173         (get_tinfo_var): Likewise.
1174         (buidl_dynamic_cast_1): Likewise.  Fix `volatile' handling.
1175         (expand_class_desc): Likewise.
1176         (expand_attr_desc): Likewise.
1177         (synthesize_tinfo_fn): Likewise.
1178         * search.c (covariant_return_p): Likewise.  Fix `volatile' handling.
1179         (get_matching_virtual): Likewise.
1180         (expand_upcast_fixups): Likewise.
1181         * sig.c (build_signature_pointer_or_reference_name): Take
1182         type_quals, not constp and volatilep.
1183         (build_signature_pointer_or_reference_type): Likewise.
1184         (match_method_types): More CP_TYPE_QUALS conversion, etc.
1185         (build_signature_pointer_constructor): Likewise.
1186         (build_signature_method_call): Likewise.
1187         * tree.c (build_cplus_array_type): Likewise.
1188         (cp_build_type_variant): Rename to ...
1189         (cp_build_qualified_type): New function.  Deal with `__restrict'.
1190         (canonical_type_variant): More CP_TYPE_QUALS conversion, etc.
1191         (build_exception_variant): Likewise.
1192         (mapcar): Likewise.
1193         * typeck.c (qualif_type): Likewise.
1194         (common_type): Likewise.
1195         (comptypes): Likewise.
1196         (comp_cv_target_types): Likewise.
1197         (at_least_as_qualified_p): Define.
1198         (more_qualified_p): Likewise.
1199         (comp_cv_qualification): More CP_TYPE_QUALS conversion, etc.
1200         (compparms): Likewise.
1201         (inline_conversion): Likewise.
1202         (string_conv_p): Likewise.
1203         (build_component_ref): Likewise.
1204         (build_indirect_ref): Likewise.
1205         (build_array_ref): Likewise.
1206         (build_unary_op): Likewise.
1207         (build_conditional_expr): Likewise.
1208         (build_static_cast): Likewise.
1209         (build_c_cast): Likewise.
1210         (build_modify_expr): Likewise.
1211         (convert_For_assignment): Likewise.
1212         (comp_ptr_ttypes_real): Likewise.
1213         (cp_type_quals): New function.
1214
1215 1998-10-23  Jason Merrill  <jason@yorick.cygnus.com>
1216
1217         * cp-tree.h (CP_TYPE_READONLY): New macro to handle arrays.
1218         (CP_TYPE_VOLATILE): Likewise.
1219         * decl.c (grokdeclarator): Use them.
1220         * tree.c (canonical_type_variant): Likewise.
1221
1222 1998-10-22  Martin von Löwis  <loewis@informatik.hu-berlin.de>
1223
1224         * parse.y (named_class_head): Push into class while parsing the
1225         base class list.
1226         * decl2.c (push_scope, pop_scope): New functions.
1227         * cp-tree.h: Declare them.
1228         * init.c (build_new_1): Delay cleanup until end of full expression.
1229
1230 1998-10-21  Jason Merrill  <jason@yorick.cygnus.com>
1231
1232         * typeck.c (build_component_ref): Use of a type here is an error.
1233
1234 1998-10-19  Jason Merrill  <jason@yorick.cygnus.com>
1235
1236         Revamp references to member functions.
1237         * method.c (hack_identifier): Call build_component_ref for a
1238         reference to a member function.
1239         * typeck.c (build_component_ref): Only return a single function
1240         if it's static.  Otherwise, return a COMPONENT_REF.
1241         (build_x_function_call): Handle a COMPONENT_REF.
1242         (build_unary_op): Handle all unknown-type things.
1243         * decl2.c (arg_assoc): Handle COMPONENT_REF.
1244         * class.c (instantiate_type): Complain if the function we get is a
1245         nonstatic member function.  Remove code for finding "compatible"
1246         functions.
1247         * pt.c (tsubst_copy): Handle NOP_EXPR.
1248         * tree.c (build_dummy_object): New fn.
1249         (maybe_dummy_object): New fn.
1250         (is_dummy_object): New fn.
1251         * cp-tree.h: Declare them.
1252         * cvt.c (cp_convert_to_pointer): Use maybe_dummy_object.
1253         * error.c (dump_expr, case OFFSET_REF): Use is_dummy_object.
1254         * init.c (build_member_call): Use maybe_dummy_object and
1255         is_dummy_object.
1256         (build_offset_ref): Use maybe_dummy_object.
1257         (resolve_offset_ref): Use is_dummy_object.
1258         * typeck.c (build_x_function_call): Call build_dummy_object.
1259         (unary_complex_lvalue): Call is_dummy_object.
1260
1261         * typeck.c (build_component_addr): Make sure field is a field.
1262
1263         * call.c (build_new_op): Delete obsolete code.
1264
1265         * pt.c (tsubst, TEMPLATE*PARM*): Abort if we don't have any args.
1266
1267 1998-10-18  Martin von Löwis  <loewis@informatik.hu-berlin.de>
1268
1269         * decl2.c (validate_nonmember_using_decl): Fix using-directives of
1270         std if std is ignored.
1271
1272 1998-10-18  Jason Merrill  <jason@yorick.cygnus.com>
1273
1274         * decl.c (grokvardecl): Fix thinko.
1275
1276         * decl.c (grokdeclarator): Embedded attrs bind to the right,
1277         not the left.
1278
1279         * parse.y (fn.def2): Fix 'attrs' format.
1280
1281 1998-10-18  Alastair J. Houghton  <ajh8@doc.ic.ac.uk>
1282
1283         * Makefile.in (CONFLICTS): Update.
1284         * parse.y (expr_or_declarator_intern): New rule.
1285         (expr_or_declarator, direct_notype_declarator, primary,
1286         functional_cast): Use it.
1287         (notype_declarator_intern): New rule.
1288         (notype_declarator, complex_notype_declarator): Use it.
1289
1290 1998-10-17  Jason Merrill  <jason@yorick.cygnus.com>
1291
1292         * decl.c (grokfndecl): Set DECL_CONTEXT to namespace if appropriate.
1293         (grokvardecl): Likewise.
1294
1295 Sat Oct 17 23:27:20 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1296
1297         * class.c (make_method_vec): Cast 1st argument of `bzero' to (PTR).
1298         (add_method): Likewise for arguments 1 & 2 of `bcopy'.
1299
1300         * decl.c (signal_catch): Mark with ATTRIBUTE_NORETURN.
1301
1302         * pt.c (process_partial_specialization): Cast 1st argument of
1303         `bzero' to (PTR).
1304
1305         * tree.c (build_base_fields): Cast `base_align' to (int) when
1306         comparing against one.
1307
1308 1998-10-16  Mark Mitchell  <mark@markmitchell.com>
1309
1310         * decl.c (lookup_name_real): Handle template parameters for member
1311         templates where said parameters have the same name as the
1312         surrounding class.
1313
1314         * decl.c (expand_static_init): Build cleanups before entering the
1315         anonymous function used to do them to avoid access-checking
1316         confusion.
1317
1318         * decl.c (grokfndecl): Add back call to cplus_decl_attributes
1319         accidentally removed by previous change, and make DECL_RTL here.
1320         * class.c (add_method): Don't make DECL_RTL here.
1321
1322         * pt.c (for_each_template_parm): Don't examine uninstantiated
1323         default arguments.
1324
1325 1998-10-16  Dave Brolley  <brolley@cygnus.com>
1326
1327         * lex.c (real_yylex): Fix unaligned access of wchar_t.
1328
1329 1998-10-16  Mark Mitchell  <mark@markmitchell.com>
1330
1331         * class.c (add_method): Fix documentation to reflect previous
1332         changes.  Check for duplicate method declarations here.
1333         * decl.c (decls_match): Handle FUNCTION_DECL vs TEMPLATE_DECL
1334         correctly; such things never match.
1335         (grokfndecl): Don't look for duplicate methods here.
1336         * decl2.c (check_classfn): Don't assume names are mangled.
1337         Don't add bogus member function declarations to a class before the
1338         class type is complete.
1339         (grokfield): Reformat error message.
1340         * method.c (set_mangled_name_for_decl): Don't mangle names while
1341         processing_template_decl.
1342
1343 1998-10-16  Jason Merrill  <jason@yorick.cygnus.com>
1344
1345         * typeck.c (build_indirect_ref): Complain about a pointer to data
1346         member, too.
1347         * typeck2.c (build_m_component_ref): Don't indirect a pointer to
1348         data member.
1349         * init.c (resolve_offset_ref): Don't undo the above.
1350
1351         * cp-tree.h (DECL_C_BIT_FIELD, SET_DECL_C_BIT_FIELD): New macros.
1352         (struct lang_decl_flags): Add `bitfield'.
1353         * class.c (finish_struct_1): Use DECL_C_BIT_FIELD instead of
1354         DECL_BIT_FIELD.
1355         * decl2.c (grokbitfield, grok_alignof): Likewise.
1356         * init.c (build_offset_ref): Likewise.
1357         * typeck.c (build_component_addr, expr_sizeof): Likewise.
1358         * cvt.c (build_up_reference): Don't crash if taking the address
1359         returns error_mark_node.
1360
1361         * decl.c (grokfndecl): Also check ctype when checking for ::main().
1362
1363 1998-10-15  Jason Merrill  <jason@yorick.cygnus.com>
1364
1365         * decl.c (grokfndecl): ::main and __builtin_* get C linkage.
1366         Do mangling here.
1367         (grokdeclarator): Instead of here.
1368         * friend.c (do_friend): Lose special handling of ::main and
1369         __builtin_*.
1370         * cp-tree.h (DECL_MAIN_P): Check for C linkage.
1371
1372         * spew.c (yylex): Clear looking_for_typename if we got
1373         'enum { ... };'.
1374
1375 1998-10-15  Mark Mitchell  <mark@markmitchell.com>
1376
1377         * class.c (maybe_warn_about_overly_private_class): Improve error
1378         messages for class with only private constructors.
1379
1380         * cp-tree.def (TYPENAME_TYPE): Add to documentation.
1381         * cp-tree.h (TYPENAME_TYPE_FULLNAME): Document.
1382         (build_typename_type): New function.
1383         * decl.c (build_typename_type): Broken out from ...
1384         (make_typename_type): Use it.
1385         * search.c (lookup_field): Likewise.
1386
1387 1998-10-14  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
1388
1389         * pt.c (convert_nontype_argument): Check against type_referred_to.
1390         * decl.c (grokvardecl): Check for declarator name before building
1391         DECL_ASSEMBLER_NAME.
1392
1393 1998-10-14  Mark Mitchell  <mark@markmitchell.com>
1394
1395         * pt.c (lookup_template_class): Add comment.
1396         (instantiate_class_template): Don't mark the _TYPE node for
1397         member class templates as an instantiation.
1398
1399 1998-10-14  Jason Merrill  <jason@yorick.cygnus.com>
1400
1401         * decl.c (grokfndecl): Fix my thinko.
1402
1403 1998-10-13  Jason Merrill  <jason@yorick.cygnus.com>
1404
1405         * tinfo2.cc (fast_compare): Remove.
1406         (before): Just use strcmp.
1407         * tinfo.cc (operator==): Just use strcmp.
1408
1409 1998-10-13  Klaus-Georg Adams  <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>
1410
1411         * decl.c (grokfndecl): Don't check for linkage in `extern "C"'
1412         declarations.
1413
1414 1998-10-13  Mark Mitchell  <mark@markmitchell.com>
1415
1416         * cp-tree.h (specializations_of_same_template_p): Remove.
1417         * search.c (get_template_base): Don't use it.
1418         (get_template_base_recursive): Likewise.
1419         * pt.c (specializations_of_same_template_p): Remove.
1420         (unify): Don't use it.
1421         (lookup_template_class): Find the correct parent when setting
1422         CLASSTYPE_TI_TEMPLATE.
1423
1424 1998-10-12  Jason Merrill  <jason@yorick.cygnus.com>
1425
1426         * tinfo.cc (operator==): Always compare names.
1427
1428 1998-10-12  Herman ten Brugge  <Haj.Ten.Brugge@net.HCC.nl>
1429
1430         * decl.c (start_function): Fix cut-and-paste error.
1431
1432 1998-10-12  Jason Merrill  <jason@yorick.cygnus.com>
1433
1434         * inc/typeinfo: Add #pragma interface.
1435         (operator!=): Just call operator==.
1436         * tinfo.cc: Add #pragma implementation.
1437         (operator==): Move from inc/typeinfo and tinfo2.cc.
1438         Check __COMMON_UNRELIABLE instead of _WIN32.
1439
1440         * typeck2.c (my_friendly_abort): Add URL.
1441
1442 1998-10-12  Alastair J. Houghton  <ajh8@doc.ic.ac.uk>
1443
1444         * decl.c (start_method): Added extra parameter for attributes.
1445         * cp-tree.h (start_method): Update prototype.
1446         * parse.y (fn.def2): Update start_method parameter list.
1447
1448 1998-10-11  Mark Mitchell  <mark@markmitchell.com>
1449
1450         * cp-tree.h (specializations_of_same_template_p): Declare.
1451         * pt.c (specializations_of_same_template_p): New function.
1452         (unify): Use it.
1453         * search.c (get_template_base): Use it.
1454         (get_template_base_recursive): Likewise.
1455
1456 1998-10-10  Manfred Hollstein  <manfred@s-direktnet.de>
1457
1458         * decl2.c (start_objects): Add new variable `joiner' and
1459         initialize it properly.
1460
1461 1998-10-09  Mark Mitchell  <mark@markmitchell.com>
1462
1463         * search.c (expand_upcast_fixups): Tweak to match 1998-10-07
1464         change to vtable types.
1465
1466         * cvt.c (ocp_convert): Avoid infinite recursion caused by
1467         1998-10-03 change.
1468
1469 1998-10-08  Jason Merrill  <jason@yorick.cygnus.com>
1470
1471         * pt.c (resolve_overloaded_unification): New fn.
1472         (try_one_overload): Likewise.
1473         (unify): Don't fail on unknown type.
1474         (type_unification_real): Likewise.  Use resolve_overloaded_unification
1475         to handle an overloaded argument.
1476         (template_args_equal): Split out...
1477         (comp_template_args): From here.
1478         (determine_specialization): Also allow a template with more
1479         parms than were explicitly specified.
1480         * cp-tree.h: Add template_args_equal.
1481         * call.c (resolve_args): Remove TEMPLATE_ID_EXPR code.
1482
1483 Thu Oct  8 15:58:30 1998  Anthony Green  <green@cygnus.com>
1484
1485         * semantics.c (finish_asm_stmt): Revert my 1998-09-28
1486         change.
1487
1488 Thu Oct  8 06:00:19 1998  Jeffrey A Law  (law@cygnus.com)
1489
1490         * typeck.c (unsigned_type): Only return TItype nodes when
1491         HOST_BITS_PER_WIDE_INT is >= 64 bits.
1492         (signed_type): Likewise.
1493         * decl.c (intTI_type_node, unsigned_intTI_type_node): Only declare
1494         when HOST_BITS_PER_WIDE_INT is >= 64 bits.
1495         (init_decl_processing): Only create TItype nodes when
1496         HOST_BITS_PER_WIDE_INT is >= 64 bits.
1497         * cp-tree.h (intTI_type_node, unsigned_intTI_type_node): Only declare
1498         when HOST_BITS_PER_WIDE_INT is >= 64 bits.
1499
1500 Wed Oct  7 12:32:44 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1501
1502         * Makefile.in (hash.h): Add -L KR-C -F ', 0, 0' flags to gperf.
1503         (gxx.gperf): Update comments describing invocation flags.
1504         (hash.h): Regenerate using gperf 2.7.1 (19981006 egcs).
1505
1506 1998-10-07  Mark Mitchell  <mark@markmitchell.com>
1507
1508         * class.c (finish_struct_1): Add commentary on previous change.
1509
1510         * cp-tree.h (vtbl_ptr_type_node): New variable.
1511         * class.c (build_vtbl_ref): Don't indirect through the vptr; it's
1512         already of the right type.
1513         (finish_struct_1): Make the vptr be of type vtbl_ptr_type_node.
1514         Simplify code to grow vtable.
1515         * decl.c (vtbl_ptr_type_node): Define.
1516         (init_decl_processing): Initialize it.
1517
1518 1998-10-06  Mark Mitchell  <mark@markmitchell.com>
1519
1520         * cp-tree.def (PTRMEM_CST): New tree node.
1521         * cp-tree.h (ptrmem_cst): New type.
1522         (lang_type): Remove local_typedecls.
1523         (dummy): Increase to 12 bits from 11.
1524         (CLASSTYPE_LOCAL_TYPEDECLS): Remove.
1525         (PTRMEM_CST_CLASS): New macro.
1526         (PTRMEM_CST_MEMBER): Likewise.
1527         (current_access_specifier): New variable.
1528         (current_class_type): Remove duplicate declaration.
1529         (finish_struct): Change prototype.
1530         (unreverse_member_declarations): New function.
1531         (pushdecl_class_level): Change prototype.
1532         (grok_enum_decls): Remove.
1533         (fixup_anonymous_union): New function.
1534         (grok_x_components): Change prototype.
1535         (tsubst_chain): Remove.
1536         (finish_member_template_decl): Likewise.
1537         (check_explicit_specialization): Fix indentation.
1538         (finish_class_definition): Change prototype.
1539         (finish_member_class_template): Likewise.
1540         (finish_member_declaration): New function.
1541         (check_multiple_declarators): Likewise.
1542         * class.c (class_stack_node_t): New type.
1543         (current_class_base): Remove.
1544         (current_class_stack): Change type.
1545         (current_access_specifier): New variable.
1546         (grow_method): Remove.
1547         (check_member_decl_is_same_in_complete_scope): Break out from
1548         finish_struct.
1549         (make_method_vec): New function.
1550         (free_method_vec): Likewise.
1551         (add_implicitly_declared_members): Break out from finish_struct_1.
1552         (free_method_vecs): New variable.
1553         (add_method): Rework for direct use from parser.
1554         (handle_using_decl): Watch for NULL_TREE while iterating through
1555         CLASSTYPE_METHOD_VEC.
1556         (finish_struct_methods): Don't build CLASSTYPE_METHOD_VEC here;
1557         just do some error-checking.
1558         (warn_hidden): Change iteration through CLASSTYPE_METHOD_VEC.
1559         (finish_struct_1): Simplify.  Use add_implicitly_declared_members.
1560         (finish_struct): Change prototype.  Simplify; fields and methods
1561         are already set up at this point.
1562         (init_class_processing): Set up current_class_stack.
1563         (pushclass): Save current_access_specifier.
1564         (popclass): Restore it.
1565         (currently_open_class): Simplify.
1566         (build_self_reference): Remove use of CLASSTYPE_LOCAL_TYPEDECLS.
1567         * decl.c (saved_scope): Add access_specifier.
1568         (maybe_push_to_top_level): Save it.
1569         (pop_from_top_level): Restore it.
1570         (maybe_process_template_type_declaration): Use
1571         finish_member_declaration.
1572         (pushtag): Likewise.
1573         (pushdecl_class_level): Don't return a value.
1574         (fixup_anonymous_union): Break out from grok_x_components.
1575         (shadow_tag): Use it.
1576         (xref_tag): Complain about using an elaborated type specifier to
1577         reference a template type parameter or typedef name.
1578         (xref_basetypes): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
1579         (current_local_enum): Remove.
1580         (build_enumerator): Call finish_member_declaration.
1581         (grok_enum_decls): Remove.
1582         * decl2.c (grok_x_components): Simplify.
1583         (check_classfn): Change iteration through CLASSTYPE_METHOD_VEC.
1584         (grokfield): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
1585         (merge_functions): Add to comment.
1586         (arg_assoc_type): Prototype.
1587         (arg_assoc): Pass as many arguments as there are parameters.
1588         * error.c (dump_expr): Handle PTRMEM_CST.  Improve handling of
1589         OFFSET_REF.
1590         * expr.c (cpls_expand_expr): Remove dead code.  Handle
1591         PTRMEM_CST.
1592         * friend.c (do_friend): Lookup friends when in nested classes.
1593         Change comments.
1594         * init.c (build_offset_ref): Do lookup even for classes that are
1595         only partially defined.
1596         (decl_constant_value): Remove dead code.
1597         * method.c (build_overload_value): Remove hack where by TYPE was
1598         not a TYPE.  Handle PTRMEM_CST.
1599         (build_template_parm_names): Don't pass a PARM_DECL where a TYPE
1600         should go.
1601         * parse.y (components, notype_components, component_decl,
1602         component_decl_1, component_declarator, component_declarator0):
1603         Now all are itype rather than ttype.  Rework to add members to
1604         classes on the fly.
1605         (typesqpecqual_reserved): Use check_multiple_declarators.
1606         (structsp): Update class to finish_class_definition.
1607         (do_xref_defn): Unsplit into named_class_head.
1608         (access_specifier): Set current_access_specifier.
1609         * pt.c (set_current_access_from_decl): New function.
1610         (finish_member_template_decl): Don't take the parameters.
1611         (comp_template_args): Make more robust.
1612         (lookup_template_class): Don't use current_local_enum.
1613         (for_each_template_parm): Handle PTRMEM_CST.
1614         (instantiate_class_template): Use set_current_access_from_decl,
1615         finish_member_declaration and unreverse_member_declarations.  Set
1616         lineno/input_filename before generating implicit member functions.
1617         (type_unification_real): Don't assume back-unification happens
1618         only for the last argument.
1619         (regenerate_decl_from_template): Call pushclass a bit earlier.
1620         (tsubst_chain): Remove.
1621         (tsubst_enum): Use set_current_access_from_decl.
1622         (set_mangled_name_for_template_decl): Fix indentation.
1623         * search.c (lookup_fnfields_1): Change iteration through
1624         CLASSTYPE_METHOD_VEC.
1625         (dfs_pushdecls): Likewise.
1626         (dfs_compress_decls): Likewise.
1627         (add_conversions): Likewise.
1628         * semantics.c (finish_class_definition): Don't take components.
1629         Change call to finish_struct.
1630         (finish_member_declaration): New function.
1631         (finish_member_class_template): Don't take template parameters.
1632         Change call to grok_x_components.  Call finish_member_template_decl.
1633         (check_multiple_declarators): New function.
1634         * sig.c (append_signature_fields): Work from the TYPE_METHODS, not
1635         a passed in fieldlist.
1636         * tree.c (search_tree): Handle PTRMEM_CST.
1637         (mapcar): Likewise.
1638         * typeck.c (unary_complex_lvalue): Build PTRMEM_CSTs, not
1639         INTEGER_CSTs, for pointer-to-data members.
1640
1641         * call.c (resolve_args): Resolve template specializations, if
1642         possible.
1643
1644 Tue Oct  6 07:57:26 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1645
1646         * Makefile.in (spew.o): Depend on toplev.h.
1647
1648         * call.c (compare_ics): Initialize variables `deref_from_type2',
1649         `deref_to_type1' and `deref_to_type2'.
1650
1651         * except.c (get_eh_type): Hide prototype and definition.
1652         (process_start_catch_block_old): Remove unused static prototype.
1653
1654         * pt.c (tsubst_decl): Initialize variable `argvec'.
1655
1656         * spew.c: Include toplev.h.
1657
1658 1998-10-05  Jason Merrill  <jason@yorick.cygnus.com>
1659
1660         * pt.c (instantiate_decl): Do save and restore file position.
1661
1662 1998-10-05  Martin von Löwis  <loewis@informatik.hu-berlin.de>
1663
1664         * method.c (build_decl_overload_real): Clear
1665         numeric_output_need_bar after __.
1666
1667 1998-10-05  Nathan Sidwell  <nathan@acm.org>
1668
1669         * call.c (build_new_method_call): Issue 'incomplete type' error,
1670         if class is not defined.
1671
1672 1998-10-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1673
1674         * call.c (build_object_call): Move declaration of variable
1675         `fn' into the scope where it is used.  Don't access variable
1676         `fn' when it is uninitialized, instead use `fns'.
1677
1678 1998-10-04  Theodore Papadopoulo  <Theodore.Papadopoulo@sophia.inria.fr>
1679
1680         * errfn.c (cp_thing): Print buf as a string not as a printf format
1681         to avoid problems with the operator%.  Consequently, `%%' sequences
1682         in format are copied as `%' in buf.
1683
1684 1998-10-04  Jason Merrill  <jason@yorick.cygnus.com>
1685
1686         * pt.c (pop_tinst_level): Call extract_interface_info.
1687         (instantiate_decl): Don't save and restore file position.
1688
1689         * decl.c (cp_finish_decl): Make statics in extern inlines and
1690         templates common, if possible and the target doesn't support weak
1691         symbols.
1692
1693         * decl.c (grokdeclarator): Remove redundant calls to
1694         build_type_variant and some duplicated code.
1695         * sig.c (build_signature_reference_type): Only take the type parm.
1696         (build_signature_pointer_type): Likewise.
1697         * tree.c (build_cplus_method_type): Adjust.
1698         * cp-tree.h: Update.
1699
1700 1998-10-04  Mark Mitchell  <mark@markmitchell.com>
1701
1702         * call.c (build_over_call): Make pedwarns about dropped qualifiers
1703         into full-fledged errors.
1704         * cvt.c (convert_to_reference): Likewise.
1705         * typeck.c (convert_for_assignment): Likewise.
1706
1707         * search.c (expand_upcast_vtables): In addition to unsetting
1708         TREE_READONLY, remove top-level const type qualifier.
1709
1710 1998-10-03  Mark Mitchell  <mark@markmitchell.com>
1711
1712         * class.c (current_class_ptr, current_class_ref): Clarify
1713         documentation.
1714         * cvt.c (ocp_convert): Don't expect fold to remove all trivial
1715         NOP type conversions.
1716         * decl.c (decls_match): Use comptypes directly; ignore
1717         qualifiers on the DECL.
1718         (duplicate_decls): Remove qualifier checks on DECL.
1719         (grokdeclarator): Make the type built up include top-level
1720         qualifiers.
1721         * decl2.c (do_dtors): Fix spelling error.
1722         * error.c (dump_simple_decl): Don't look at qualifiers on the decl
1723         when printing type information.
1724         * init.c (build_new_1): Add documentation.  Deal with the fact
1725         that type of allocated memory now contains qualifiers.
1726         * lex.c (is_global): Improve error-recovery.
1727         * sig.c (build_member_function_pointer): Don't cast away const
1728         on fields of sigtable_entry_type.
1729         * tree.c (lvalue_type): Don't look at top-level qualifiers on
1730         expressions.
1731         * typeck.c (decay_conversion): Likewise.
1732         (build_component_ref): Make sure the type of the COMPONENT_REF
1733         contains top-level qualifiers, as appropriate.  Improve
1734         error-handling.
1735         (build_indirect_ref): Simplify.  Don't strip top-level qualifiers.
1736         (build_array_ref): Likewise.
1737         (build_unary_op): Improve error-recovery.
1738         (unary_complex_lvalue): Make taking the address a bound member
1739         function an error, not a sorry.
1740         (build_conditional_expr): Look at the type qualifiers, not the
1741         qualifiers on the expression itself.
1742
1743 1998-10-03  Jason Merrill  <jason@yorick.cygnus.com>
1744
1745         * decl2.c (merge_functions): Remove duplicates.
1746
1747         * decl2.c: Add -f{no-,}implicit-inline-templates.
1748         (import_export_decl): Check it.
1749
1750         * decl.c (lookup_name_real): Template parms also take precedence
1751         over implicit typename.  Only warn if yylex.
1752
1753         * typeck.c (build_conditional_expr): Only fold if ifexp is an
1754         INTEGER_CST.
1755
1756         * decl2.c (finish_vtable_vardecl): Check DECL_INTERFACE_KNOWN
1757         instead of linkage.
1758
1759 1998-10-01  Jason Merrill  <jason@yorick.cygnus.com>
1760
1761         * cp-tree.h (FORMAT_VBASE_NAME): New macro.
1762         * class.c (build_vbase_pointer): Use it.
1763         * rtti.c (expand_class_desc): Likewise.
1764         * tree.c (build_vbase_pointer_fields): Likewise.
1765
1766 Thu Oct  1 10:43:45 1998  Nick Clifton  <nickc@cygnus.com>
1767
1768         * decl.c (start_decl): Add invocation of
1769         SET_DEFAULT_DECL_ATTRIBUTES, if defined.
1770         (start_function): Add invocation of
1771         SET_DEFAULT_DECL_ATTRIBUTES, if defined.
1772
1773         * lex.c: Replace occurrences of HANDLE_SYSV_PRAGMA with
1774         HANDLE_GENERIC_PRAGMAS.
1775
1776 1998-09-28  Anthony Green  <green@cygnus.com>
1777
1778         * semantics.c (finish_asm_stmt): Always permit volatile asms.
1779
1780 1998-09-28  Mark Mitchell  <mark@markmitchell.com>
1781
1782         * decl.c (grokdeclarator): Tighten checks for invalid
1783         destructors.  Improve error-messages and error-recovery.
1784         * decl2.c (check_classfn): Don't assume that mangled destructor
1785         names contain type information.
1786
1787 1998-09-25  Jason Merrill  <jason@yorick.cygnus.com>
1788
1789         * search.c (get_base_distance): Remove assert.
1790
1791         * decl2.c (build_anon_union_vars): Don't process a field with no
1792         name.
1793         (finish_anon_union): Also complain about local anon unions with no
1794         members.
1795
1796 1998-09-25  Martin von Löwis  <loewis@informatik.hu-berlin.de>
1797
1798         * decl.c (lookup_namespace_name): If the name is a namespace,
1799         return it immediately.
1800
1801 Fri Sep 25 11:45:38 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1802
1803         * cp-tree.h (define_case_label): Remove unused parameter.
1804         (check_java_method): Likewise.
1805         (grokclassfn): Likewise.
1806         (expand_aggr_init): Likewise.
1807         (build_x_delete): Likewise.
1808         (maybe_end_member_template_processing): Likewise.
1809         (unshare_base_binfos): Add prototype.
1810         (string_conv_p): Likewise.
1811         (my_friendly_abort): Mark with ATTRIBUTE_NORETURN.
1812
1813         * cvt.c (build_up_reference): Remove unused parameter
1814         `checkconst', all callers changed.
1815         (build_type_conversion): Mark parameter `code' with
1816         ATTRIBUTE_UNUSED.
1817         (build_expr_type_conversion): Initialize variable `conv'.
1818
1819         * decl.c (push_namespace): Initialize variable `d'.
1820         (define_case_label): Remove unused parameter `decl', all callers
1821         changed.
1822
1823         * decl2.c (lang_decode_option): If !USE_CPPLIB, mark parameter
1824         `argc' with ATTRIBUTE_UNUSED.
1825         (grokclassfn): Remove unused parameter `cname', all callers
1826         changed.
1827         (check_java_method): Likewise for parameter `ctype'.
1828         (copy_assignment_arg_p): Mark parameter `virtualp' with
1829         ATTRIBUTE_UNUSED.
1830         (finish_prevtable_vardecl): Likewise for parameter `prev'.
1831
1832         * expr.c (extract_init): Likewise for parameters `decl' and `init'.
1833
1834         * init.c (expand_aggr_init_1): Remove unused parameter
1835         `alias_this', all callers changed.
1836         (expand_aggr_init): Likewise.
1837         (expand_default_init): Likewise.
1838         (build_new_1): Initialize variable `susp'.
1839         (build_x_delete): Remove unused parameter `type', all callers
1840         changed.
1841
1842         * lex.c (set_typedecl_interface_info): Mark parameter `prev' with
1843         ATTRIBUTE_UNUSED.
1844         (readescape): Use (unsigned) value in shift.
1845         (real_yylex): Likewise.  Likewise.  Also cast `sizeof' to int when
1846         comparing to a signed quantity.
1847
1848         * pt.c (maybe_end_member_template_processing): Remove unused
1849         parameter `decl', all callers changed.
1850         (check_explicit_specialization): Add braces around empty body in
1851         an else-statement.
1852         (current_template_args): Initialize variable `args'.
1853         (lookup_template_class): Likewise for variable `prev_local_enum'.
1854         (tsubst_decl): Likewise for variable `r'.
1855         (set_mangled_name_for_template_decl): Initialize variable
1856         `context'.
1857
1858         * spew.c (scan_tokens): Change type of parameter `n' to unsigned.
1859         Likewise for variable `i'.
1860         (yylex): Initialize variable `trrr'.
1861
1862         * typeck.c (compparms): Mark variable `strict' with
1863         ATTRIBUTE_UNUSED.
1864
1865         * xref.c (simplify_type): Cast argument of ctype function to
1866         `unsigned char'.
1867
1868 1998-09-24  Mark Mitchell  <mark@markmitchell.com>
1869
1870         * cp-tree.h (language_lvalue_valid): Remove.
1871         * decl.c (grokdeclarator): Don't disallow references to functions.
1872         * tree.c (lvalue_p_1): New function, combining duplicated
1873         code from ...
1874         (lvalue_p): Use it.
1875         (real_lvalue_p): Likewise.
1876         * typeck.c (language_lvalue_valid): Remove.
1877         (build_modify_expr): Treat FUNCTION_TYPEs as readonly, even though
1878         they don't have TREE_READONLY set.
1879         * typeck2.c (readonly_error): Add case for FUNCTION_DECLs.
1880
1881 1998-09-24  Benjamin Kosnik  <bkoz@loony.cygnus.com>
1882
1883         * spew.c (yylex): Give diagnostic.
1884         * hash.h (is_reserved_word): Add export.
1885         * gxx.gperf: Likewise.
1886         * lex.h (rid): Add RID_EXPORT.
1887         * lex.c (init_parse): Likewise.
1888
1889 Tue Sep 22 21:01:19 1998  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
1890
1891         * friend.c (do_friend): Make warning a full sentence.
1892
1893 1998-09-22  Mark Mitchell  <mark@markmitchell.com>
1894
1895         * parse.y (component_decl_list): Improve error-recovery.
1896
1897 1998-09-22  Benjamin Kosnik  <bkoz@loony.cygnus.com>
1898
1899         * decl.c (make_typename_type): Move error to point where name
1900         variable can be used by dump_type.
1901
1902 1998-09-22  Mark Mitchell  <mark@markmitchell.com>
1903
1904         * decl.c (grokfndecl): Improve error-recovery.
1905         * decl2.c (grokfield): Likewise.
1906         * pt.c (finish_member_template_decl): Likewise.
1907
1908 1998-09-20  Martin von Löwis  <loewis@informatik.hu-berlin.de>
1909
1910         * method.c (hack_identifier): Finding multiple members is always
1911         an error.
1912
1913 1998-09-21  Per Bothner  <bothner@cygnus.com>
1914
1915         * Make-lang.in (c++-filt):  Link libiberty.a after cxxmain.o.
1916
1917 Mon Sep 21 01:53:05 1998  Felix Lee  <flee@cygnus.com>
1918
1919         * lex.c (init_lex): Use getenv ("LANG"), not GET_ENVIRONMENT ().
1920
1921 1998-09-20  Mark Mitchell  <mark@markmitchell.com>
1922
1923         * class.c (maybe_warn_about_overly_private_class): Reformat.
1924
1925 1998-09-17  Andrew MacLeod  <amacleod@cygnus.com>
1926
1927         * exception.cc (__cplus_type_matcher): Realign some code.
1928
1929 1998-09-16  Mark Mitchell  <mark@markmitchell.com>
1930
1931         * Make-lang.in (tinfo.o): Use CXXFLAGS when compiling.
1932         (tinfo2.o): Likewise.
1933         (exception.o): Likewise.
1934         (new.o): Likewise.
1935         (opnew.o): Likewise.
1936         (opnewnt.o): Likewise.
1937         (opvnew.o): Likewise.
1938         (opvnewnt.o): Likewise.
1939         (opdel.o): Likewise.
1940         (opdelnt.o): Likewise.
1941         (opvdel.o): Likewise.
1942         (opvdelnt.o): Likewise.
1943
1944 1998-09-16  Richard Henderson  <rth@cygnus.com>
1945
1946         * decl.c (init_decl_processing): Kill __builtin_fp and __builtin_sp.
1947
1948 1998-09-15  Alexandre Oliva  <oliva@dcc.unicamp.br>
1949
1950         * call.c (build_field_call): Handle static data members too.
1951
1952         * typeck.c (comptypes): When comparing pointer types, check
1953         whether referred types match even in strictest modes.
1954
1955 1998-09-15  Mark Mitchell  <mark@markmitchell.com>
1956
1957         * cp-tree.h: Revert previous change.
1958         (finish_struct_methods): Remove declaration.
1959         * class.c: Revert previous change.
1960         (maybe_warn_about_overly_private_class): New function.
1961         (finish_struct_methods): Declare here, and make static.  Remove
1962         unnecessary parameters.  Tidy slightly.  Use
1963         maybe_warn_about_overly_private_class.
1964         (finish_struct_1): Adjust.  Remove check for private constructors,
1965         now done elsewhere.
1966         (finish_struct): Adjust.
1967
1968 1998-09-15  Andrew MacLeod  <amacleod@cygnus.com>
1969
1970         * except.c (expand_start_catch_block): No need to check for new
1971         exception model.
1972         (process_start_catch_block_old): Deleted.
1973         (process_start_catch_block): Add call to start_decl_1().
1974         (expand_end_catch_block): Add call to end_catch_handler().
1975         * exception.cc (__cplus_type_matcher): Only check the exception
1976         language if there is an exception table.
1977
1978 1998-09-15  Andrew MacLeod  <amacleod@cygnus.com>
1979
1980         * search.c (expand_indirect_vtbls_init): Mark temporary stack slots
1981         as used to prevent conflicts with virtual function tables.
1982
1983 1998-09-14  Mark Mitchell  <mark@markmitchell.com>
1984
1985         * cp-tree.h (lang_type): Add has_non_private_static_mem_fn.
1986         (CLASSTYPE_HAS_NON_PRIVATE_STATIC_MEM_FN): New macro, to access it.
1987         * class.c (maybe_class_too_private_p): New function.
1988         (finish_struct_methods): Use it.
1989         (finish_struct_1): Likewise.
1990         (finish_struct): Set CLASSTYPE_HAS_NON_PRIVATE_STATIC_MEM_FN if
1991         appropriate.
1992
1993         * pt.c (check_specialization_scope): Fix spelling error.
1994         (check_explicit_specialization): Remove code to handle explicit
1995         specializations in class scope; they are now correctly diagnosed
1996         as errors.
1997
1998 1998-09-10  Mark Mitchell  <mark@markmitchell.com>
1999
2000         * decl.c (pushdecl): Don't copy types if the
2001         DECL_ABSTRACT_ORIGIN of the new decl matches the TYPE_NAME of the
2002         type.
2003
2004 1998-09-09  Kriang Lerdsuwanakij  <lerdsuwa@scf-fs.usc.edu>
2005
2006         * class.c (get_enclosing_class): New function.
2007         (is_base_of_enclosing_class): Likewise.
2008         * cp-tree.h (get_enclosing_class): Declare.
2009         (is_base_of_enclosing_class): Likewise.
2010         * pt.c (coerce_template_parms): Use them.
2011
2012 1998-09-09  Jason Merrill  <jason@yorick.cygnus.com>
2013
2014         * g++spec.c (lang_specific_driver): Check whether MATH_LIBRARY is
2015         null to decide whether to use it.
2016
2017         * error.c (dump_type_real): Handle NAMESPACE_DECL.
2018         * parse.y (base_class.1): Avoid crash on error.
2019
2020 1998-09-08  Martin von Löwis  <loewis@informatik.hu-berlin.de>
2021
2022         * decl.c (make_typename_type): If context is a namespace, the code
2023         is in error.
2024
2025 1998-09-08  Mumit Khan  <khan@xraylith.wisc.edu>
2026
2027         * parse.y (nomods_initdcl0): Set up the parser stack correctly.
2028
2029 1998-09-08  Mark Mitchell  <mark@markmitchell.com>
2030
2031         * cp-tree.h (anonymous_namespace_name): Declare.
2032         * decl.c: Define it.
2033         (push_namespace): Use anonymous_namespace_name, rather than local
2034         static anon_name.
2035         * error.c (dump_decl): If a namespace is named
2036         anonymous_namespace_name, call it {anonymous}.
2037
2038         * decl.c (grokparms): Distinguish between references and pointers
2039         in error message.
2040
2041 1998-09-08  Richard Henderson  <rth@cygnus.com>
2042             Mark Mitchell  <mark@markmitchell.com>
2043
2044         * pt.c (process_partial_specialization): Consistently allocate
2045         and zero tpd.parms based on ntparms.  Use tpd2.parms, not
2046         tpd.parms, where appropriate.
2047
2048 Sun Sep  6 00:00:51 1998  Jeffrey A Law  (law@cygnus.com)
2049
2050         * Makefile.in (INCLUDES): Update after recent toplevel gcc
2051         reorganizations.
2052
2053 1998-09-05  Mark Mitchell  <mark@markmitchell.com>
2054
2055         * cp-tree.h (TI_PENDING_SPECIALIZATION_FLAG): Remove.
2056         * class.c (finish_struct): Remove hackery to deal with explicit
2057         specializations in class scope.
2058         * decl.c (grokfndecl): Improve error-recovery.
2059         * decl2.c (grokfield): Likewise.
2060         * pt.c (check_specialization_scope): New function.
2061         (begin_specialization): Call it.
2062         (process_partial_specialization): New function, split out from
2063         push_template_decl.  Check partial specializations more
2064         stringently.
2065         (push_template_decl): Call it.
2066         (check_explicit_specialization): Don't attempt to handle explicit
2067         specializations in class scope.
2068         (template_parm_data): Document.  Add current_arg and
2069         arg_uses_template_parms.
2070         (mark_template_parm): Set it.
2071         (tsubst_arg_types): Remove unused variable.
2072         * semantics.c (begin_class_definition): Tweak.
2073
2074 1998-09-04  Mark Mitchell  <mark@markmitchell.com>
2075
2076         * inc/typeinfo (type_info::type_info(const char*)): Make
2077         `explicit'.
2078
2079         * cp-tree.h (hash_tree_cons_simple): New macro.
2080         * pt.c (tsubst_arg_types): New function.  Use hash_tree_cons.
2081         (coerce_template_parms): Use make_temp_vec, instead of
2082         make_tree_vec.  Document this behavior.
2083         (lookup_template_class): Likewise.
2084         (tsubst, cases METHOD_TYPE, FUNCTION_TYPE): Use tsubst_arg_types.
2085         Remove dead code (and add assertion to check its deadness).  Fix
2086         bug w.r.t. exception specifications.
2087
2088 1998-09-03  Jason Merrill  <jason@yorick.cygnus.com>
2089
2090         * decl2.c (import_export_vtable): Always make artificials comdat.
2091         (import_export_decl): Likewise.
2092         * pt.c (mark_decl_instantiated): Likewise.
2093
2094 1998-09-03  Mark Mitchell  <mark@markmitchell.com>
2095
2096         * cp-tree.h (finish_globally_qualified_member_call_expr):
2097         Rename to ...
2098         (finish_qualified_call_expr).
2099         * semantics.c: Likewise.
2100         * parse.y (primary): Use it.
2101         * method.c (hack_identifier): Remove redundant code.
2102
2103         * init.c (resolve_offset_ref): Call convert_from_reference to
2104         handle members of reference type.  Improve error recovery.
2105
2106 1998-09-03  Benjamin Kosnik  <bkoz@cygnus.com>
2107
2108         * cp-tree.h: Declare warn_nontemplate_friend.
2109         * decl2.c (lang_decode_option): Set.
2110         * lang-options.h: Add -Wnon-template-friend.
2111         * friend.c (do_friend): Use to toggle non-template function warning.
2112
2113 1998-09-03  Mark Mitchell  <mark@markmitchell.com>
2114
2115         * decl.c (finish_enum): Don't resolve CONST_DECLs to their
2116         corresponding INTEGER_CSTs when processing_template_decl.
2117         * pt.c (tsubst_enum): Tweak accordingly.
2118
2119 1998-09-03  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
2120
2121         * decl.c (pushdecl_class_level): Add warning here.
2122         (pushdecl): Tweak.
2123
2124 1998-09-02  Jason Merrill  <jason@yorick.cygnus.com>
2125
2126         * cvt.c (convert_pointer_to_real): Tidy.
2127         * search.c (get_base_distance_recursive): Simplify.
2128         (get_base_distance): Likewise.
2129
2130         * pt.c (unify): Only special-case INTEGER_TYPE if it uses template
2131         parms.
2132
2133 Wed Sep 02 09:25:29 1998  Nick Clifton  <nickc@cygnus.com>
2134
2135         * lex.c (check_newline):  Call HANDLE_PRAGMA before
2136         HANDLE_SYSV_PRAGMA if both are defined.  Generate warning messages
2137         if unknown pragmas are encountered.
2138         (handle_sysv_pragma): Interpret return code from
2139         handle_pragma_token ().  Return success/failure indication rather
2140         than next unprocessed character.
2141         (pragma_getc): New function: retrieves characters from the
2142         input stream.  Defined when HANDLE_PRAGMA is defined.
2143         (pragma_ungetc): New function: replaces characters back into the
2144         input stream.  Defined when HANDLE_PRAGMA is defined.
2145
2146 1998-09-01  Jason Merrill  <jason@yorick.cygnus.com>
2147
2148         * decl2.c (output_vtable_inherit): Use %cDIGIT in the operands.
2149         * class.c (build_vtable_entry_ref): Likewise.
2150
2151 1998-09-01  Mark Mitchell  <mark@markmitchell.com>
2152
2153         * cp-tree.h (DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION): New macro.
2154         * decl2.c (import_export_decl): Likewise.
2155         * pt.c (instantiate_decl): Use it.
2156
2157 1998-09-01  Jason Merrill  <jason@yorick.cygnus.com>
2158
2159         * decl.c (lookup_name_real): Also do implicit typename thing for
2160         artificial TYPE_DECLs.
2161         * search.c (lookup_field): Likewise.
2162         (lookup_fnfields, lookup_field): Adjust for implicit typename kludge.
2163         * semantics.c (begin_constructor_declarator): Use enter_scope_of.
2164         (enter_scope_of): Extract type from implicit typename.
2165         (begin_class_definition): Likewise.
2166         * lex.c (identifier_type): Handle implicit typename when checking
2167         for SELFNAME.
2168
2169         * cp-tree.h: Declare flag_strict_prototype.
2170         * lex.c (do_scoped_id, do_identifier): Don't implicitly_declare if
2171         -fstrict-prototype.
2172         * decl.c (init_decl_processing): If -f{no,-}strict-prototype wasn't
2173         specified, set it to the value of pedantic.
2174
2175 1998-09-01  Mark Mitchell  <mark@markmitchell.com>
2176
2177         * decl2.c (arg_assoc): Handle template-id expressions as arguments.
2178
2179 1998-08-31  Mark Mitchell  <mark@markmitchell.com>
2180
2181         * decl.c (finish_enum): Handle member enums of classes declared in
2182         template functions.
2183
2184         * decl2.c (grok_x_components): Strip attributes before calling
2185         groktypename.
2186
2187 1998-08-31  Jason Merrill  <jason@yorick.cygnus.com>
2188
2189         * cp-tree.h, decl2.c: Remove support for -fall-virtual,
2190         -fenum-int-equivalence and -fno-nonnull-objects.
2191         * class.c (check_for_override): Remove support for -fall-virtual.
2192         (finish_struct_1): Likewise.
2193         * call.c (build_new_op): Remove support for -fenum-int-equivalence.
2194         * typeck.c (build_binary_op_nodefault): Likewise.
2195         * cvt.c (ocp_convert): Likewise.
2196         * call.c (build_vfield_ref): Remove support for -fno-nonnull-objects.
2197         * class.c (build_vbase_path): Likewise.
2198
2199 Sun Aug 30 22:16:31 1998  H.J. Lu  (hjl@gnu.org)
2200
2201         * Makefile.in (INTERFACE): New, set to 1.
2202
2203 1998-08-30  Mark Mitchell  <mark@markmitchell.com>
2204
2205         * error.c (dump_decl): Use CP_DECL_CONTEXT, not DECL_CONTEXT, when
2206         comparing with global_namespace.
2207         (dump_aggr_type): Likewise.
2208
2209         * decl.c (grokfndecl): Issue error on declaration of friend
2210         templates with explicit template arguments.
2211
2212         * pt.c (convert_template_argument): New function, split out
2213         from...
2214         (coerce_template_parms): Here.
2215         (tsubst): Attempt better error-recovery.
2216
2217 1998-08-28  Benjamin Kosnik  <bkoz@loony.cygnus.com>
2218
2219         * pt.c (decl_template_parm_p): Add checks for
2220         TEMPLATE_TEMPLATE_PARM.
2221
2222 1998-08-28  Mark Mitchell  <mark@markmitchell.com>
2223
2224         * lex.c (do_identifier): Fix thinko in previous change.
2225
2226 1998-08-28  Jason Merrill  <jason@yorick.cygnus.com>
2227
2228         * search.c (dfs_search, binfo_for_vtable, dfs_bfv_helper): New fns.
2229         * decl2.c (output_vtable_inherit): Call binfo_for_vtable.
2230
2231 1998-08-28  Richard Henderson  <rth@cygnus.com>
2232
2233         Add support for discarding unused virtual functions.
2234         * lang-options.h: Add -fvtable-gc.
2235         * cp-tree.h: Add flag_vtable_gc.
2236         * decl2.c (output_vtable_inherit): New fn.
2237         (finish_vtable_vardecl): Call it.
2238         * class.c (build_vtable_entry_ref): New fn.
2239         (build_vtbl_ref): Call it.
2240
2241 1998-08-28  Mark Mitchell  <mark@markmitchell.com>
2242
2243         * cp-tree.h (build_enumerator): Take the enumeration type as a
2244         parameter.
2245         * decl.c (finish_enum): Don't set the TREE_TYPE for the
2246         enumeration constant values if we're processing_template_decls.
2247         Don't set the type for the CONST_DECLs either; that's done in
2248         build_enumerator.
2249         (build_enumerator): Take the enumeration type as a
2250         parameter.
2251         * lex.c (do_identifier): Don't resolve enumeration constants while
2252         processing template declarations, even if they happen to be
2253         TEMPLATE_PARM_INDEXs.
2254
2255         * parse.y (current_enum_type): New variable.
2256         (primary): Don't allow statement-expression in local classes just
2257         as we don't in global classes.
2258         (structsp): Use current_enum_type.
2259         (enum_list): Likewise.
2260         * pt.c (tsubst_enum): Don't check for NOP_EXPRs introduced by
2261         finish_enum; they no longer occur.
2262
2263         * cp-tree.h (finish_base_specifier): New function.
2264         * parse.y (base_class): Use it.
2265         * semantics.c (finish_base_specifier): Define it.
2266
2267         * parse.y (structsp): Warn on use of typename outside of template
2268         declarations.
2269
2270 1998-08-27  Jason Merrill  <jason@yorick.cygnus.com>
2271
2272         * lex.c (handle_cp_pragma): Remove #pragma vtable.
2273         * lang-options.h: Remove +e options.
2274         * decl2.c (lang_decode_option): Likewise.
2275         (import_export_vtable): Don't check write_virtuals.
2276         (finish_vtable_vardecl, finish_file): Likewise.
2277         * search.c (dfs_debug_mark): Likewise.
2278         * semantics.c (begin_class_definition): Likewise.
2279         * class.c (build_vtable, finish_vtbls, finish_struct_1): Likewise.
2280
2281         * call.c (build_over_call): Check flag_elide_constructors.
2282         * decl2.c: flag_elide_constructors defaults to 1.
2283         * typeck.c (convert_arguments): Remove return_loc parm.
2284         (build_function_call_real): Adjust.
2285
2286         * search.c: Tear out all mi_matrix and memoize code.
2287         (lookup_field, lookup_fnfields): Use scratch_tree_cons.
2288         * lang-options.h: Remove documentation for -fhandle-exceptions,
2289         -fmemoize-lookups and -fsave-memoized.
2290         * cp-tree.h: Lose mi_matrix and memoize support.
2291         * decl2.c: Ignore -fmemoize-lookups and -fsave-memoized.
2292         * class.c: Lose struct class_level.
2293         (pushclass, popclass): Lose memoize support.
2294         * init.c (build_offset_ref): Likewise.
2295
2296         Never change BINFO_INHERITANCE_CHAIN.
2297         * init.c (emit_base_init): Change modification of
2298         BINFO_INHERITANCE_CHAIN to an assert.
2299         * search.c (get_base_distance_recursive): Likewise.
2300         (get_base_distance): Likewise.
2301         (lookup_member): Likewise.
2302         (convert_pointer_to_single_level): Likewise.
2303         (lookup_field): Likewise.  Lose setting TREE_VIA_* on TREE_LISTs.
2304         (lookup_fnfields): Likewise.
2305         * tree.c (propagate_binfo_offsets): Don't call unshare_base_binfos.
2306         (unshare_base_binfos): Don't call propagate_binfo_offsets.
2307         (layout_basetypes): Call propagate_binfo_offsets instead of
2308         unshare_base_binfos.
2309         * decl.c (xref_basetypes): Call unshare_base_binfos.
2310         * pt.c (instantiate_class_template): Likewise.
2311         * tree.c (reverse_path): Remove 'copy' parm; always make a
2312         temporary copy.
2313         * class.c (build_vbase_path): Just call it.
2314         * search.c (compute_access): Likewise.  Don't re-reverse.
2315
2316 1998-08-27  Mark Mitchell  <mark@markmitchell.com>
2317
2318         * class.c (build_vbase_path): Use reverse_path.
2319         (finish_base_struct): Move warnings for inaccessible bases to
2320         layout_basetypes.
2321         (modify_one_vtable): Remove check of TREE_USED (binfo).
2322         (fixup_vtable_deltas1): Likewise.
2323         * cp-tree.h (BINFO_INHERITANCE_CHAIN): Document here.
2324         (xref_tag): Remove binfos parameter.
2325         (make_binfo): Remove chain parameter.
2326         (reverse_path): Add copy parameter.
2327         * decl.c (init_decl_processing): Change calls to xref_tag.
2328         (xref_tag): Remove binfos parameter.
2329         (xref_basetypes): Change calls to make_binfo.
2330         * decl2.c (grok_x_components): Change calls to xref_tag.
2331         (handle_class_head): Likewise.
2332         * friend.c (do_friend): Likewise.
2333         * lex.c (make_lang_type): Change calls to make_binfo.
2334         * parse.y (structsp): Change calls to xref_tag.
2335         (named_complex_class_head_sans_basetype): Likewise.
2336         (named_class_head): Likewise.
2337         * rtti.c (init_rtti_processing): Likewise.
2338         * search.c (compute_access): Change calls to reverse_path.
2339         (dfs_get_vbase_types): Change calls to make_binfo.
2340         (get_vbase_types): Remove dead code.
2341         * tree.c (unshare_base_binfos): Change calls to make_binfo.
2342         (layout_basetypes): Warn here about inaccessible bases.
2343         (make_binfo): Remove chain parameter.
2344         (reverse_path): Add copy parameter.
2345
2346 1998-08-27  Jason Merrill  <jason@yorick.cygnus.com>
2347
2348         * class.c: #if 0 complete_type_p.
2349         * init.c (build_java_class_ref, build_new_1): Remove unused locals.
2350         * method.c (process_overload_item): Likewise.
2351         * typeck.c (comp_target_types): Likewise.
2352
2353         Stop sharing binfos for indirect virtual bases.
2354         * tree.c (propagate_binfo_offsets): Unshare vbases, too.
2355         (layout_basetypes): Likewise.
2356         (unshare_base_binfos): Copy vbases, too.
2357         * cp-tree.h (BINFO_VIA_PUBLIC, BINFO_BASEINIT_MARKED,
2358         BINFO_VBASE_INIT_MARKED): Remove obsolete macros.
2359         (BINFO_PUSHDECLS_MARKED, SET_BINFO_PUSHDECLS_MARKED,
2360         CLEAR_BINFO_PUSHDECLS_MARKED): New macros.
2361         * search.c (lookup_field, lookup_fnfields, lookup_member): Remove
2362         reference to BINFO_VIA_PUBLIC.
2363         (marked_pushdecls_p, unmarked_pushdecls_p): New fns.
2364         (push_class_decls): Use them.
2365         (dfs_pushdecls): Use SET_BINFO_PUSHDECLS_MARKED.
2366         (dfs_compress_decls): Use CLEAR_BINFO_PUSHDECLS_MARKED.
2367
2368 1998-08-27  Mark Mitchell  <mark@markmitchell.com>
2369
2370         * decl.c (build_enumerator): Set DECL_CONTEXT for the
2371         CONST_DECLs.
2372
2373 1998-08-26  Mark Mitchell  <mark@markmitchell.com>
2374
2375         * cp-tree.h (finish_enum): Change prototype.
2376         * decl.c (finish_enum): Use TYPE_VALUES, rather than taking a
2377         VALUES parameter.  Don't try to compute mins/maxs if
2378         processing_template_decl.
2379         * parse.y (structsp): Use new calling sequence for finish_enum.
2380         * pt.c (tsubst_enum): Likewise.  Take the new type as input.
2381         (lookup_template_class): Remove unused variables.  Tweak.
2382         Register enums on instantiation list before substituting
2383         enumeration constants.
2384         (tsubst_decl): Remove unused variables.
2385         (regenerate_decl_from_template): Likewise.
2386
2387         * decl.c (duplicate_decls): Don't obliterate the
2388         DECL_TEMPLATE_INFO for a template if we're not replacing it with
2389         anything.
2390
2391         * lex.c (do_identifier): Fix typo in comment.
2392
2393 Wed Aug 26 10:54:51 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2394
2395         * errfn.c: Remove stdarg.h/varargs.h.
2396         * tree.c: Likewise.
2397
2398 1998-08-25  Brendan Kehoe  <brendan@cygnus.com>
2399
2400         * pt.c (tsubst_copy): Only do typename overloading on an
2401         IDENTIFIER_NODE that happens to look like a typename if it actually
2402         has a type for us to use.
2403
2404 1998-08-25  Jason Merrill  <jason@yorick.cygnus.com>
2405
2406         * typeck.c (comp_cv_target_types): Split out...
2407         (comp_target_types): From here.  Don't allow cv-qual changes under
2408         a pointer if nptrs == 0.  Fix OFFSET_TYPE handling.
2409         (build_ptrmemfunc): Pass 1 to nptrs.
2410         * cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.
2411
2412 1998-08-25  Mark Mitchell  <mark@markmitchell.com>
2413
2414         * search.c (dependent_base_p): Don't compare a binfo to
2415         current_class_type; use the TREE_TYPE of the binfo instead.
2416
2417         * cp-tree.h (CLASS_TYPE_P): Revise definition.
2418
2419 1998-08-25  Jason Merrill  <jason@yorick.cygnus.com>
2420
2421         * decl.c (duplicate_decls): Don't complain about different
2422         exceptions from an internal decl even if pedantic.
2423
2424         * typeck.c (convert_for_assignment): Converting from pm of vbase
2425         to derived is an error, not a sorry.
2426
2427         * call.c (build_over_call): Use convert_pointer_to_real for 'this'.
2428         * class.c (fixed_type_or_null): Rename from
2429         resolves_to_fixed_type_p.  Return the dynamic type of the
2430         expression, if fixed, or null.
2431         (resolves_to_fixed_type_p): Use it.  Return 0 if the dynamic type
2432         does not match the static type.
2433         (build_vbase_path): Rename 'alias_this' to 'nonnull'.  Use
2434         resolves_to_fixed_type_p again.
2435
2436 1998-08-24  Mark Mitchell  <mark@markmitchell.com>
2437
2438         * pt.c (tsubst_decl): Move special case code for dealing with
2439         tricky friend templates here from ...
2440         (regenerate_decl_from_template): Here.
2441
2442 1998-08-24  Jason Merrill  <jason@yorick.cygnus.com>
2443
2444         * decl.c (start_decl): Remove redundant linkage check.
2445
2446 1998-08-24  Gavin Romig-Koch  <gavin@cygnus.com>
2447
2448         * typeck.c (c_expand_return): Handle the case that valtype
2449         is wider than the functions return type.
2450
2451 1998-08-24  Mark Mitchell  <mark@markmitchell.com>
2452
2453         * cp-tree.h (CLASS_TYPE_P): New macro.
2454         * decl.c (grokdeclarator): Use it instead of IS_AGGR_TYPE.
2455         * pt.c (process_template_parm): Undo previous change.
2456
2457 1998-08-24  Benjamin Kosnik  <bkoz@cygnus.com>
2458
2459         * cp-tree.h: Declare.
2460         * pt.c (decl_template_parm_p): New function.
2461         * decl.c (pushdecl): Check decls for redeclaring template parms.
2462         (xref_tag): Make redeclaration an error, print decl.
2463         * decl2.c (grokfield): Check field_decls for redeclaration as well.
2464
2465 1998-08-24  Jason Merrill  <jason@yorick.cygnus.com>
2466
2467         * parse.y (primary): Fix up the type of string constants.
2468
2469 1998-08-24  Mark Mitchell  <mark@markmitchell.com>
2470
2471         * typeck.c (convert_for_initialization): Move check for odd uses
2472         of NULL to avoid duplicate warnings.
2473
2474 1998-08-24  Jason Merrill  <jason@yorick.cygnus.com>
2475
2476         * tree.c (lvalue_type): Fix for arrays.
2477         * typeck.c (string_conv_p): New fn.
2478         (convert_for_assignment): Use it.
2479         (build_unary_op): Use lvalue_type.
2480         * call.c (standard_conversion, convert_like): Use string_conv_p.
2481         (add_function_candidate): Use lvalue_type.
2482         * cvt.c (convert_to_reference): Likewise.
2483         * decl2.c (lang_decode_option): Ignore -traditional.
2484         * decl.c (init_decl_processing): flag_writable_strings inhibits
2485         flag_const_strings.
2486
2487 1998-08-24  Andrew MacLeod  <amacleod@cygnus.com>
2488
2489         * lang-options.h (lang_options): Add fconst-strings to the list
2490         of valid options.
2491         * decl2.c (lang_f_options, lang_decode_option): Likewise.
2492
2493 1998-08-24  Nathan Sidwell  <nathan@acm.org>
2494
2495         * lex.c (real_yylex): Don't warn about long long constants if
2496         we're allowing long long.
2497
2498 1998-08-24  Martin von Löwis  <loewis@informatik.hu-berlin.de>
2499
2500         * decl.c (pushdecl): Use IDENTIFIER_NAMESPACE_VALUE instead of
2501         accessing bindings directly.
2502
2503         * search.c (my_tree_cons): Reimplement.
2504
2505         * lang-specs.h: Remove __HONOR_STD.
2506         * inc/exception, inc/new, inc/new.h, inc/typeinfo: Likewise.
2507
2508 1998-08-23  Mark Mitchell  <mark@markmitchell.com>
2509
2510         * decl.c (grokdeclarator): Complain about in-class initialization
2511         of aggregates and/or references.
2512         * pt.c (process_template_parm): Clear IS_AGGR_TYPE for
2513         TEMPLATE_TYPE_PARMs.
2514
2515         * decl2.c (grok_array_decl): Add comment.
2516         (mark_used): Don't instantiate an explicit instantiation.
2517         * friend.c (make_friend_class): Remove bogus comment.  Fix check
2518         for partial specializations.
2519         * pt.c (check_explicit_specialization): Don't
2520         SET_DECL_EXPLICIT_INSTANTIATION here.
2521         (mark_decl_instantiated): Or here.
2522         (do_decl_instantiation): Do it here, instead.  Add checks for
2523         duplicate explicit instantiations, etc.  Tidy.
2524         (do_type_instantiation): Likewise.
2525         (instantiate_decl): Improve comments.  Complain about explicit
2526         instantiations where no definition is available.
2527
2528         * cp-tree.h (ansi_null_node): Remove.
2529         * call.c (build_over_call): Warn about converting NULL to an
2530         arithmetic type.
2531         * cvt.c (build_expr_type_conversion): Likewise.  Use
2532         null_ptr_cst_p instead of expanding it inline.
2533         * decl.c (ansi_null_node): Remove.
2534         (init_decl_processing): Make null_node always have integral type.
2535         * except.c (build_throw): Warn about converting NULL to an
2536         arithmetic type.
2537         * lex.c (init_parse): Remove handling of ansi_null_node.
2538         * pt.c (type_unification_real): Don't convert NULL to void* type.
2539         * typeck.c (build_binary_op_nodefault): Fix NULL warnings.
2540         (convert_for_assignment): Warn about converting NULL to an
2541         arithmetic type.
2542         (convert_for_initialization): Likewise.
2543
2544 1998-08-20  Jason Merrill  <jason@yorick.cygnus.com>
2545
2546         * tree.c (search_tree, no_linkage_helper, no_linkage_check): New fn.
2547         * pt.c (coerce_template_parms): Use no_linkage_check.
2548         * decl.c (grokvardecl): Likewise.
2549         (grokfndecl): Likewise.  Members of anonymous types have no linkage.
2550
2551         * method.c (process_overload_item): Remove useless code.
2552
2553 1998-08-20  Per Bothner  <bothner@cygnus.com>
2554
2555         Handle new'ing of Java classes.
2556         * init.c (build_class_classref):  New function.
2557         (build_new_1):  If type is TYPE_FOR_JAVA:  Call _Jv_AllocObject;
2558         constructor does not return this;  don't need to exception-protect.
2559
2560         * pt.c (lookup_template_class):  Copy TYPE_FOR_JAVA flag.
2561         * decl2.c (acceptable_java_type):  Handle template-derived types.
2562
2563 1998-08-20  Per Bothner  <bothner@cygnus.com>
2564
2565         * decl2.c (import_export_vtable):  Suppress vtables for Java classes.
2566
2567 1998-08-20  Mark Mitchell  <mark@markmitchell.com>
2568
2569         * decl.c (duplicate_decls): Always merge the old and new patterns
2570         for templates, regardless of whether or not the new one has
2571         DECL_INITIAL.  Don't throw away specializations.  Merge
2572         DECL_SAVED_TREE.
2573         * pt.c (tsubst_decl): Use the right pattern when calculating the
2574         complete args for a new template instance.
2575         (do_decl_instantiation): Fix typo in comment.
2576         (regenerate_decl_from_template): Deal with tricky friend template
2577         case.
2578         (instantiate_decl): Likewise.
2579
2580 Thu Aug 20 09:09:45 1998  Jeffrey A Law  (law@cygnus.com)
2581
2582         * init.c (build_builtin_delete_call): Add missing assemble_external
2583         call.
2584
2585 1998-08-20  Jason Merrill  <jason@yorick.cygnus.com>
2586
2587         * parse.y (notype_unqualified_id): Also accept ~A<int>.
2588
2589 1998-08-19  Mark Mitchell  <mark@markmitchell.com>
2590
2591         * typeck.c (build_binary_op_nodefault): Warn on use of NULL in
2592         arithmetic.
2593         * except.c (build_throw): Warn when NULL is thrown, even with
2594         -ansi.  Use ansi_null_node, rather than integer_zero_node, in the
2595         thrown expression.
2596
2597         * cp-tree.h (ansi_null_node): New variable.
2598         * decl.c (ansi_null_node): New variable.
2599         (init_decl_processing): Initialize its type.
2600         * lex.c (init_parse): Initialize its value.  Use ansi_null_node
2601         for null_node in non-ANSI mode.
2602         * typeck.c (build_binary_op_nodefault): Use ansi_null_node in
2603         place of null_node to avoid spurious errors.
2604
2605 1998-08-17  Mark Mitchell  <mark@markmitchell.com>
2606
2607         * cp-tree.h (enter_scope_of): New function.
2608         * parse.y (complex_direct_notype_declarator): Use it.
2609         * semantics.c (enter_scope_of): New function.
2610
2611 1998-08-17  Jason Merrill  <jason@yorick.cygnus.com>
2612
2613         * decl.c (grokparms): No, here.
2614
2615         * decl.c (grokdeclarator): Catch parm with pointer to array of
2616         unknown bound here...
2617         * method.c (process_overload_item): ...not here.
2618
2619         * gxxint.texi: Remove obsolete documentation of overloading code.
2620
2621         * decl.c (finish_enum): Also set TYPE_SIZE_UNIT.
2622         * class.c (finish_struct_bits): Likewise.
2623
2624         * tree.c (lvalue_type): Fix for arrays.
2625         * typeck.c (build_unary_op): Use lvalue_type.
2626         * call.c (add_function_candidate): Likewise.
2627         * cvt.c (convert_to_reference): Likewise.
2628
2629         * decl2.c (lang_decode_option): Ignore -traditional.
2630
2631         * init.c (build_offset_ref): Don't mess with error_mark_node.
2632         * lex.c (do_scoped_id): Use cp_error.
2633
2634         * rtti.c (get_tinfo_fn): Don't mess with the context for now.
2635
2636 1998-08-17  Benjamin Kosnik  <bkoz@loony.cygnus.com>
2637
2638         * decl.c (grokdeclarator): Allow anonymous types to be cv-qualified.
2639
2640 Mon Aug 17 10:40:18 1998  Jeffrey A Law  (law@cygnus.com)
2641
2642         * cp-tree.h (set_identifier_local_value): Provide prototype.
2643
2644         * decl2.c (do_namespace_alias): Remove unused variables `binding'
2645         and `old'.
2646
2647 Fri Aug 14 16:42:27 1998  Nick Clifton  <nickc@cygnus.com>
2648
2649         * Makefile.in: Rename BBISON to BISON so that it can be properly
2650         inherited from the parent makefile.
2651
2652 1998-08-13  Jason Merrill  <jason@yorick.cygnus.com>
2653
2654         * lang-options.h: Add -finit-priority.
2655         * decl2.c: Likewise.  Check flag_init_priority instead of
2656         USE_INIT_PRIORITY.
2657
2658         * decl2.c (setup_initp): New fn.
2659         (start_objects, finish_objects, do_ctors): Handle init_priority.
2660         (do_dtors, finish_file): Likewise.
2661
2662 1998-08-13  Jason Merrill  <jason@yorick.cygnus.com>
2663
2664         * pt.c (tsubst_copy): Hush warning.
2665
2666         * rtti.c (get_tinfo_fn): Also set DECL_IGNORED_P.
2667
2668 1998-08-12  Mark Mitchell  <mark@markmitchell.com>
2669
2670         * pt.c (print_template_context): Don't abort when instantiating a
2671         synthesized method.
2672
2673         * decl.c (grokdeclarator): Issue errors on namespace qualified
2674         declarators in parameter lists or in class scope.
2675
2676 1998-08-09  Mark Mitchell  <mark@markmitchell.com>
2677
2678         * pt.c (check_explicit_specialization): Don't abort on bogus
2679         explicit instantiations.
2680
2681 1998-08-07  Mark Mitchell  <mark@markmitchell.com>
2682
2683         * typeck.c (require_complete_type): Use complete_type_or_else.
2684         (complete_type_or_else): Always return NULL_TREE on failure, as
2685         documented.
2686
2687         * pt.c (tsubst_aggr_type): Prototype.
2688         (tsubst_decl): New function, split out from tsubst.  Set
2689         input_filename and lineno as appropriate.
2690         (pop_tinst_level): Restore the file and line number saved in
2691         push_tinst_level.
2692         (instantiate_class_template): Set input_filename and lineno as
2693         appropriate.
2694         (tsubst): Move _DECL processing to tsubst_decl.  Make sure the
2695         context for a TYPENAME_TYPE is complete.
2696
2697         * decl2.c (grokbitfield): Issue errors on bitfields declared with
2698         function type.
2699         (do_dtors): As in do_ctors, pretend to be a member of the same
2700         class as a static data member while generating a call to its
2701         destructor.
2702
2703         * cvt.c (cp_convert_to_pointer): Handle NULL pointer
2704         conversions, even in complex virtual base class hierarchies.
2705
2706 1998-08-06  Mark Mitchell  <mark@markmitchell.com>
2707
2708         * cp-tree.h (ENUM_TEMPLATE_INFO): New macro.
2709         (TYPE_TEMPLATE_INFO): Likewise.
2710         (SET_TYPE_TEMPLATE_INFO): Likewise.
2711         (ENUM_TI_TEMPLATE): Likewise.
2712         (ENUM_TI_ARGS): Likewise.
2713         (lookup_nested_type_by_name): Remove.
2714         * decl.c (maybe_process_template_type_declaration): Handle enums.
2715         (start_enum): Don't check for primary-template enum declarations
2716         here.
2717         (finish_enum): Clean up, document.  Make sure template enum
2718         constants get the correct type.
2719         (build_enumerator): Copy initializers for template enumerations,
2720         too.
2721         (grok_enum_decls): Document.
2722         * lex.c (do_identifier): Document use of LOOKUP_EXPR a bit
2723         better.  Build LOOKUP_EXPRs for local variables, even if they are
2724         TREE_PERMANENT.
2725         * pt.c (tsubst_enum): Remove field_chain parameter.
2726         (template_class_depth): Include the depth of surrounding function
2727         contexts.
2728         (push_template_decl): Check for primary-template enum declarations
2729         here.  Deal with enumeration templates.
2730         (lookup_template_class): Likewise.
2731         (for_each_template_parm): Likewise.
2732         (instantiate_class_template): Don't call tsubst_enum directly,
2733         call tsubst instead, to instantiate enums.  Deal with all
2734         field_chain issues here, not in tsubst_enum.
2735         (lookup_nested_type_by_name): Remove.
2736         (tsubst_aggr_type): Revise handling of enumeration types.
2737         (tsubst): Likewise.
2738         (tsubst_copy): Likewise.
2739         (tsubst_expr): Call tsubst, not tsubst_enum for TAG_DEFNs.
2740
2741 1998-08-04  Mark Mitchell  <mark@markmitchell.com>
2742
2743         * decl.c (pushtag): Don't mangle the name of a TYPE_DECL if it
2744         uses template parameters.
2745         * method.c (build_template_parm_names): Use the full set of
2746         template arguments for tsubst'ing.
2747         (build_overload_identifier): Pass the full set of template
2748         arguments to build_template_parm_names, not just the
2749         innermost_args.
2750         * pt.c (TMPL_ARGS_DEPTH): Define using
2751         TMPL_ARGS_HAVE_MULTIPLE_LEVELS, for clarity.
2752         (NUM_TMPL_ARGS): New macro.
2753         (add_outermost_template_args): Deal with the case where the outer
2754         args will be completely discarded.
2755         (coerce_template_parms): Use the full set of template arguments
2756         for tsubst'ing.  Simplify.  Add some asserts.  Improve
2757         error messages.
2758         (lookup_template_class): Pass the full set of template arguments
2759         to coerce_template_parms.
2760         (tsubst): Add assertion.
2761         (do_type_instantiation): Don't instantiate member template
2762         classes.
2763
2764         * init.c (build_offset_ref): Deal with a TEMPLATE_ID_EXPR whose
2765         name is a LOOKUP_EXPR, rather than an IDENTIFIER_NODE.
2766
2767 1998-08-03  Jason Merrill  <jason@yorick.cygnus.com>
2768
2769         * method.c (set_mangled_name_for_decl): Change return type to void.
2770
2771         * decl.c (lookup_name_real): A namespace-level decl takes priority
2772         over implicit typename.  Avoid doing the same lookup twice.
2773
2774         * search.c (dependent_base_p): New fn.
2775         (dfs_pushdecls, dfs_compress_decls): Use it.
2776
2777         * typeck.c (get_member_function_from_ptrfunc): Don't try to handle
2778         virtual functions if the type doesn't have any.
2779
2780 1998-08-03  Mark Mitchell  <mark@markmitchell.com>
2781
2782         * decl2.c (grokfield): Don't mangle the name of a TYPE_DECL if it
2783         uses template parameters.
2784
2785 1998-08-02  Mark Mitchell  <mark@markmitchell.com>
2786
2787         * cp-tree.def (LOOKUP_EXPR): Document.  Remove second argument.
2788         * cp-tree.h (DECL_TI_TEMPLATE): Improve documentation.
2789         * lex.c (do_identifier): Don't use a second argument, or a type,
2790         when building LOOKUP_EXPRs.
2791         (do_identifier): Likewise.
2792         (do_scoped_id): Likewise.
2793         * method.c (hack_identifier): Improve error message.
2794         * pt.c (lookup_template_function): Don't needlessly call
2795         copy_to_permanent or build_min.
2796         (tsubst_copy): Remove #if 0'd code.  tsubst into LOOKUP_EXPRs if
2797         necessary.
2798         (do_decl_instantiation): Improve error message.
2799         * tree.c (mapcar, case LOOKUP_EXPR): Don't be sorry; make a copy.
2800         (build_min): Copy the type to the permanent obstack, too.
2801
2802 1998-08-01  Jason Merrill  <jason@yorick.cygnus.com>
2803
2804         * init.c (init_init_processing): Remove BI* handling.
2805         (build_builtin_call): Remove.
2806         (build_builtin_delete_call): New fn.
2807         (build_delete): Use it.
2808
2809 1998-07-31  Mark Mitchell  <mark@markmitchell.com>
2810
2811         * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): New macro.
2812         (maybe_check_template_type): New function.
2813         * decl.c (maybe_process_template_type_declaration): New function,
2814         split out from pushtag  Call maybe_check_template_type.
2815         (pushtag): Use it.  Use PROCESSING_REAL_TEMPLATE_DECL_P.
2816         (xref_tag): Use PROCESSING_REAL_TEMPLATE_DECL_P.
2817         * friend.c (do_friend): Use PROCESSING_REAL_TEMPLATE_DECL_P.
2818         * pt.c (template_class_depth_real): Generalization of ...
2819         (template_class_depth): Use it.
2820         (register_specialization): Use duplicate_decls for duplicate
2821         declarations of specializations.
2822         (maybe_check_template_type): New function.
2823         (push_template_decl_real): Fix comment.
2824         (convert_nontype_argument): Likewise.
2825         (lookup_template_class): Likewise.  Avoid an infinite loop on
2826         erroneous code.
2827         (tsubst_friend_function): Fix comment.
2828         (tsubst, case FUNCTION_DECL): Deal with a DECL_TI_TEMPLATE that is
2829         an IDENTIFIER_NODE.
2830         * semantics.c (begin_function_definition): Use
2831         reset_specialization to note that template headers don't apply
2832         directly to declarations after the opening curly for a function.
2833
2834 1998-07-29  Jason Merrill  <jason@yorick.cygnus.com>
2835
2836         * decl.c (push_overloaded_decl): Use current_namespace instead of
2837         DECL_CONTEXT (decl) to determine where we go.
2838
2839         * decl.c (lookup_name_real): Fix typo.
2840
2841 1998-07-28  Mark Mitchell  <mark@markmitchell.com>
2842
2843         * friend.c (is_friend): Be lenient with member functions to deal
2844         with nested friends.
2845
2846 1998-07-28  Jason Merrill  <jason@yorick.cygnus.com>
2847
2848         * class.c (finish_struct_1): Convert integer_zero_node to
2849         ssizetype before passing it to set_rtti_entry.
2850         * typeck2.c (initializer_constant_valid_p): Allow conversion of 0
2851         of any size to a pointer.
2852
2853 1998-07-27  Mark Mitchell  <mark@markmitchell.com>
2854
2855         * cp-tree.h (TI_USES_TEMPLATE_PARMS): Remove.
2856         (build_template_decl_overload): Remove.
2857         (set_mangled_name_for_decl): New function.
2858         (innermost_args): Remove is_spec parameter.
2859         (most_specialized, most_specialized_class): Remove declarations.
2860         (lookup_template_class): Add entering_scope parameter.
2861         (maybe_process_partial_specialization): New function.
2862         (finish_template_decl): Likewise.
2863         (finish_template_type): Likewise.
2864         * class.c (finish_struct): Clean up processing of member template
2865         specializations.
2866         * decl.c (pushtag): Fix formatting.
2867         (lookup_tag): Improve handling of pseudo-global levels.
2868         (make_typename_type): Adjust call to lookup_template_class.
2869         (shadow_tag): Use maybe_process_partial_specialization.
2870         (xref_tag): Improve handling of member friends.
2871         (start_function): Call push_nested_class before
2872         push_template_decl.  Don't call push_template_decl for
2873         specializations.
2874         * decl2.c (grok_x_components): Don't call xref_tag for
2875         template instantiations.  Handle UNION_TYPEs like RECORD_TYPEs.
2876         (grokclassfn): Use set_mangled_name_for_decl.
2877         (arg_assoc_class): Adjust call to innermost_args.
2878         (mark_used): Don't call instantiate_decl for a TEMPLATE_DECL.
2879         * error.c (dump_function_name): Improve printing of template
2880         function names.
2881         * friend.c (is_friend): Don't compare types of decls to determine
2882         friendship, unless flag_guiding_decls.
2883         (make_friend_class): Partial specializations cannot be friends.
2884         (do_friend): Use set_mangled_name_for_decl.  Call
2885         push_template_decl_real instead of push_template_decl.
2886         * method.c (build_decl_overload_real): Remove prototype.  Give it
2887         external linkage.
2888         (build_overload_identifier): Adjust call to innermost_args.
2889         (build_template_decl_overload): Remove.
2890         (set_mangled_name_for_decl): New function.
2891         * parse.y (.finish_template_type): New non-terminal.
2892         (template_def): Use finish_template_decl.  Use template_extdef
2893         instead of extdef.
2894         (template_extdef, template_datadef): New non-terminals, containing
2895         only those rules for things which can be templates.
2896         (datadef): Tidy.
2897         (template_type, self_template_type): Use .finish_template_type.
2898         (named_class_head): Use maybe_process_partial_specialization.
2899         * pt.c (mangle_class_name_for_template): Remove context parameter.
2900         (get_class_bindings): Remove outer_args parameter.
2901         (complete_template_args): Remove.
2902         (add_outermost_template_args): New function.
2903         (register_specialization): Return the specialization.
2904         (unregister_specialization): New function.
2905         (tsubst_template_parms): Likewise.
2906         (most_specialized, most_specialized_class): Prototype here as
2907         static.
2908         (original_template): Rename to most_general_template.
2909         (tsubst_template_parms): New function.
2910         (set_mangled_name_for_template_decl): Likewise.
2911         (TMPL_ARGS_DEPTH): New macro.
2912         (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): Adjust.
2913         (TMPL_ARGS_LEVEL): New macro.
2914         (SET_TMPL_ARGS_LEVEL): Likewise.
2915         (TMPL_ARG): Likewise.
2916         (SET_TMPL_ARG): Likewise.
2917         (TMPL_ARGS_DEPTH): Likewise.
2918         (finish_member_template_decl): Use finish_template_decl.
2919         (maybe_process_partial_specialization): New function, split out
2920         from tsubst.
2921         (inline_needs_template_parms): Use TMPL_PARMS_DEPTH.
2922         (maybe_begin_member_template_processing): Use new macros.
2923         (is_member_template): Likewise.
2924         (is_member_template_class): Likewise.
2925         (add_to_template_args): Likewise.  Deal with multiple levels of
2926         args.
2927         (maybe_process_partial_specialization): New function.
2928         (retrieve_specialization): Add consistency check.
2929         (determine_specialization): Return full argument list.
2930         (check_explicit_specialization): Tweak friend handling.  Use full
2931         argument lists.  Simplify.
2932         (current_template_args): Use new macros.
2933         (push_template_decl_real): Change ill-named mainargs to specargs.
2934         Check that a partial specialization actually specializes at least
2935         one parameter.   Improve friend handling.  Modify for full
2936         template arguments.
2937         (classtype_mangled_name): Don't mangle the names of
2938         specializations.
2939         (lookup_template_class): Add entering_scope parameter.  Use it to
2940         avoid finding a template type when an instantiation is required.
2941         Simplify.  Use full template arguments.
2942         (tsubst_friend_function): Use unregister_specialization.  Use new
2943         macros.  Use full template arguments.
2944         (tsubst_friend_class): Substitute, using tsubst_template_parms,
2945         into the template parameters before passing them to
2946         redeclare_class_template.
2947         (instantiate_class_template): Simplify.  Use full template
2948         arguments.  Adjust calls to get_class_bindings.  Use
2949         SET_IDENTIFIER_TYPE_VALUE where needed.  Improve friend handling.
2950         (innermost_args): Use new macros.
2951         (tsubst_aggr_type): New function, split out from tsubst.
2952         (tsubst): Use tsubst_aggr_type, tsubst_template_parms, new calling
2953         conventions for lookup_template_class.  Refine handling of partial
2954         instantiations.   Remove calls to complete_template_args.
2955         Simplify.  Add consistency checks.  Use set_mangled_name_for_decl
2956         and set_mangled_name_for_template_decl.
2957         (tsubst_copy): Use tsubst_aggr_type.
2958         (instantiate_template): Use full template arguments.
2959         (more_specialized): Improve formatting.
2960         (more_specialized_class): Adjust calls to get_class_bindings.
2961         (get_bindings_real): Don't call complete_template_args.
2962         (most_specialized): Don't overwrite input; create a new list.
2963         (most_specialized_class): Use most_general_template.
2964         (regenerate_decl_from_template): Use unregister_specialization.
2965         Use full template arguments.
2966         (instantiate_decl): Use full template arguments.
2967         (set_mangled_name_for_template_decl): New function.
2968         * semantics.c (begin_class_definition): Use
2969         maybe_process_partial_specialization.
2970         (finish_member_class_template): New function.
2971         (finish_template_decl): Likewise.
2972         (finish_template_type): Likewise.
2973         (typeck.c): Don't crash after issuing a compiler_error.
2974         * Makefile.in (CONFLICTS): Adjust; we removed a s/r conflict.
2975
2976 1998-07-27  Jason Merrill  <jason@yorick.cygnus.com>
2977
2978         * typeck2.c (build_functional_cast): Handle default-initialization.
2979
2980         * call.c (build_over_call): Pass 1 to popclass.
2981
2982         * parse.y (direct_notype_declarator): Add precedence declaration
2983         to notype_unqualified_id case.
2984         * Makefile.in (EXPECT): Adjust.
2985
2986         * tree.c (ovl_member): Fix for single function in OVL.
2987
2988 1998-07-27  Dave Brolley  <brolley@cygnus.com>
2989
2990         * c-lex.c (yylex): Fix boundary conditions in character literal and
2991         string literal loops.
2992
2993 1998-07-24  Jason Merrill  <jason@yorick.cygnus.com>
2994
2995         * decl.c (lookup_name_real): OK, do return the from_obj value
2996         unless got_object depends on template parms.
2997
2998         * parse.y (nested_name_specifier_1): Pull out the TYPE_MAIN_VARIANT.
2999
3000         * pt.c (coerce_template_parms): Also complain about local enums.
3001
3002         * cp-tree.h: Add prototype for set_identifier_local_value.
3003         * decl.c (set_identifier_local_value_with_scope): Make static,
3004         prototype.
3005         * search.c (covariant_return_p): Likewise.
3006         * except.c (build_terminate_handler, alloc_eh_object): Likewise.
3007
3008         * call.c (build_method_call): Only pull out the type of a destructor
3009         if it's a template type parm.
3010         * decl.c (lookup_name_real): Never return the from_obj value.
3011
3012 1998-07-23  Jason Merrill  <jason@yorick.cygnus.com>
3013
3014         * except.c (process_start_catch_block_old): Call start_decl_1 for
3015         catch parm.
3016         * decl.c (start_decl_1): Avoid duplicate error.
3017
3018         * init.c (expand_default_init): Only perform the initialization if
3019         it will do something.
3020
3021 1998-07-23  H.J. Lu  (hjl@gnu.org)
3022
3023         * parse.y (base_class): Check for invalid base class.
3024
3025 1998-07-23  Jason Merrill  <jason@yorick.cygnus.com>
3026
3027         * decl2.c (import_export_template): Fold in...
3028         (import_export_class): ...to here.  Handle dllimport/export.
3029
3030         * class.c (build_vtable): Pass at_eof to import_export_vtable.
3031         (prepare_fresh_vtable): Likewise.
3032         * decl2.c (import_export_class): Split out...
3033         (finish_prevtable_vardecl): From here.
3034         * class.c (finish_struct_1): Call import_export_class if at_eof.
3035
3036         * decl.c (start_function): #if 0 mysterious code I wrote and have
3037         forgotten why.
3038         * rtti.c (get_tinfo_fn): If this is for a class type, set
3039         DECL_CONTEXT.
3040
3041 1998-07-22  Jason Merrill  <jason@yorick.cygnus.com>
3042
3043         * inc/exception: Change terminate and unexpected to ().
3044
3045         * parse.y (named_class_head_sans_basetype_defn): A
3046         named_class_head_sans_basetype followed by '{' or ':' is a defn.
3047
3048 1998-07-21  Jason Merrill  <jason@yorick.cygnus.com>
3049
3050         * tree.c (canonical_type_variant): New fn to handle arrays.
3051         * cp-tree.h (CANONICAL_TYPE_VARIANT): Remove.
3052         * pt.c (unify, default case): Also fold arg.  Fix array bounds case.
3053         * method.c (process_overload_item): Use build_overload_value for
3054         arrays.
3055
3056 1998-07-20  Dave Brolley  <brolley@cygnus.com>
3057
3058         * lex.c (mbchar.h): #include it.
3059         (GET_ENVIRONMENT): New macro.
3060         (init_parse): Set character set based on LANG environment variable.
3061         (real_yylex): Handle multibyte characters in character literals.
3062         (real_yylex): Handle multibyte characters in string literals.
3063
3064 1998-07-19  Jason Merrill  <jason@yorick.cygnus.com>
3065
3066         * lex.c (do_identifier): Look for class value even if we don't
3067         have a global value.  Do implicit declaration if parsing is 2.
3068         * semantics.c (finish_call_expr): Pass 2 if we're doing Koenig
3069         lookup.
3070
3071 1998-07-19  Mark Mitchell  <mark@markmitchell.com>
3072
3073         * decl.c (pushtag): Revert previous change.
3074         * pt.c (lookup_template_class): Don't put out debugging
3075         information for types that use template parameters.
3076
3077         * decl.c (pushtag): Don't put out debugging information for
3078         compiler-generated typedefs.
3079
3080         * error.c (dump_type_real): Don't crash when presented with
3081         intQI_type_node or the like.
3082
3083         * semantics.c (finish_translation_unit): Fix spelling error in
3084         comment.
3085
3086 1998-07-17  Jason Merrill  <jason@yorick.cygnus.com>
3087
3088         * decl.c (lookup_name_real): Pull out single function here.
3089         (select_decl): Not here.
3090         (unqualified_namespace_lookup): Use CP_DECL_CONTEXT.
3091
3092         * decl.c (qualify_lookup): Tweak again.
3093
3094         * pt.c (lookup_template_class): Don't mess with the context of the
3095         instantiation.
3096         * decl2.c (current_decl_namespace): Remove special handling for
3097         templates.
3098
3099         * pt.c (tsubst, case FUNCTION_DECL): Fix getting complete args for
3100         a member template specialization.
3101
3102         * tree.c (ovl_member): Use decls_match to compare functions.
3103         * decl.c (decls_match): Check the context of a function.
3104
3105         * parse.y (primary): Use notype_unqualified_id instead of IDENTIFIER
3106         in Koenig lookup support rules.
3107         * semantics.c (finish_call_expr): Handle the new cases.
3108
3109         * typeck.c (build_x_function_call): Handle overloaded methods.
3110
3111         * decl.c (grokvardecl): Don't call build_static_name for extern "C".
3112
3113 1998-07-16  Mark Mitchell  <mark@markmitchell.com>
3114
3115         * semantics.c (finish_object_call_expr): Revert previous change.
3116         * call.c (build_new_method_call): Likewise.  Instead, convert
3117         TYPE_DECLs to IDENTIFIERs here, in the presence of templates.
3118
3119 1998-07-16  Jason Merrill  <jason@yorick.cygnus.com>
3120
3121         * decl.c (qualify_lookup): Handle templates.
3122
3123         * decl2.c (do_using_directive): Don't pass ancestor.
3124         * decl.c (push_using_directive): Calculate ancestor.
3125
3126         * decl2.c (do_nonmember_using_decl): Allow for type shadowing.
3127         * decl.c (pushdecl): Move type shadowing handling from here...
3128         (duplicate_decls): ...to here.
3129         * decl.c (set_identifier_local_value_with_scope): New fn.
3130         (pushdecl): Use it.
3131         (set_identifier_local_value, lookup_type_current_level): New fns.
3132         * decl2.c (do_local_using_decl): Handle types and binding level
3133         stuff properly.
3134
3135         * init.c (build_offset_ref): Don't call mark_used on an OVERLOAD.
3136         * decl.c (select_decl): Extract a lone function from an OVERLOAD.
3137         (lookup_namespace_name): Likewise.
3138         * typeck.c (build_unary_op): Not here anymore.
3139
3140         * decl2.c (do_class_using_decl): Make sure we get an identifier.
3141         * class.c (handle_using_decl): Ignore TYPE_DECLs.
3142
3143         * decl.c (qualify_lookup): New fn.
3144         (lookup_name_real): Use it.
3145
3146 1998-07-16  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
3147
3148         * decl2.c (add_using_namespace): When directly using a namespace
3149         that was indirect before, promote it.
3150
3151         * cp-tree.h (LOOKUP_PREFER_TYPES, LOOKUP_PREFER_NAMESPACES,
3152         LOOKUP_PREFER_BOTH, LOOKUP_NAMESPACES_ONLY, LOOKUP_TYPES_ONLY,
3153         LOOKUP_QUALIFIERS_ONLY, LOOKUP_TEMPLATES_EXPECTED): New macros.
3154         * decl.c (select_decl): Replace two flag parameters by one.
3155         (unqualified_namespace_lookup): Likewise, pass flag.
3156         (lookup_flags): New function.
3157         (lookup_name_real): Compute flags, pass them.
3158         (lookup_namespace_name): Call with zero-flag.
3159         * decl2.c (ambiguous_decl): Add flag parameter, complain only
3160         according to flags.
3161         (lookup_using_namespace, qualified_lookup_using_namespace):
3162         Add flag parameter, pass them through.
3163         * lex.c (do_scoped_id): Call with zero-flag.
3164
3165 1998-07-16  Jason Merrill  <jason@yorick.cygnus.com>
3166
3167         * typeck.c (convert_for_assignment): Use comptypes.
3168
3169 1998-07-16  Mark Mitchell  <mark@markmitchell.com>
3170
3171         * semantics.c (finish_object_call_expr): Move test for the
3172         function called being a TYPE_DECL to ...
3173         * call.c (build_new_method_call): Here.
3174
3175 1998-07-15  Jason Merrill  <jason@yorick.cygnus.com>
3176
3177         * decl2.c (arg_assoc_class): Also look at template arguments, if any.
3178         (arg_assoc): Handle error_mark_node and multiple levels of TREE_LIST.
3179
3180         * lex.c (looking_for_typename): Don't initialize.
3181
3182         * decl2.c (ambiguous_decl): Clarify error message.
3183
3184         * decl.c (push_using_directive): Iterate over namespaces used
3185         indirectly.
3186
3187 1998-07-15  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
3188
3189         * decl2.c (add_using_namespace): Iterate over namespaces used
3190         indirectly.
3191
3192         * decl.c (lookup_name_real): Accept namespace aliases as locals.
3193         (cat_namespace_levels): Ignore aliases.
3194         (duplicate_decls): Ignore duplicate aliases.
3195         * decl2.c (do_namespace_alias): Process block level namespace
3196         aliases.  Store alias with pushdecl.  Remove odr errors.
3197         * parse.y (namespace_alias): New non-terminal.
3198         (extdef): Use it.
3199
3200 1998-07-15  Jason Merrill  <jason@yorick.cygnus.com>
3201
3202         * decl2.c (arg_assoc_type): Handle METHOD_TYPE like FUNCTION_TYPE.
3203         Handle TEMPLATE_TYPE_PARM.
3204         (arg_assoc): Rewrite.
3205
3206         * pt.c (complete_template_args): Don't look at the context unless
3207         we have to.
3208
3209         * method.c (build_decl_overload_real): Fix namespace handling.
3210
3211         * typeck.c (build_unary_op): Extract a lone function from an
3212         OVERLOAD.
3213
3214         * call.c (build_scoped_method_call): Handle getting a namespace
3215         for basetype in a destructor call.
3216         (check_dtor_name): Handle enums.
3217
3218         * parse.y (using_directive): New nonterminal.
3219         (extdef, simple_stmt): Use it.
3220
3221 1998-07-14  Martin von Löwis  <loewis@informatik.hu-berlin.de>
3222
3223         * decl2.c (add_function): Move error message ...
3224         (arg_assoc_namespace): ... from here.
3225
3226 1998-07-14  Jason Merrill  <jason@yorick.cygnus.com>
3227
3228         * parse.y (namespace_qualifier): Fix multiple level handling.
3229         * decl2.c (namespace_ancestor): Use CP_DECL_CONTEXT.
3230         (arg_assoc): Don't skip the first argument of a function.
3231
3232 Tue Jul 14 20:09:22 1998  Jeffrey A Law  (law@cygnus.com)
3233
3234         * search.c (my_tree_cons): Clean up.
3235
3236 1998-07-14  Jason Merrill  <jason@yorick.cygnus.com>
3237
3238         * call.c (joust): Don't warn about "confusing" conversions to the
3239         same type.
3240
3241 1998-07-14  Martin von Löwis  <loewis@informatik.hu-berlin.de>
3242
3243         * class.c (push_nested_class): Complain about namespaces.
3244         * decl.c (start_decl): Enter the object's namespace.
3245         (cp_finish_decl): Leave it.
3246         (grokdeclarator): Likewise.
3247         * decl2.c (check_decl_namespace): New function.
3248         (finish_file): Call it.
3249         * parse.y (complex_direct_notype_declarator): Set complexity
3250         of namespace-qualified ids to -1, enter the namespace.
3251
3252         * method.c (build_template_decl_overload): Expect _DECL as first
3253         parameter.  Put context temporarily into current_namespace.
3254         * pt.c (check_explicit_specialization): Change caller.
3255         (tsubst): Likewise.
3256
3257         * init.c (build_offset_ref): Call mark_used and
3258         convert_from_reference for namespace members.
3259
3260 Mon Jul 13 23:25:28 1998  Martin von Löwis  <loewis@informatik.hu-berlin.de>
3261
3262         * search.c (my_tree_cons): The bitfield is at index 2.
3263
3264 Mon Jul 13 17:21:01 1998  Nick Clifton  <nickc@cygnus.com>
3265
3266         * lang-options.h: Format changed to work with new --help support
3267         in gcc/toplev.c
3268
3269 1998-07-12  Martin von Löwis  <loewis@informatik.hu-berlin.de>
3270
3271         * decl2.c (build_expr_from_tree): Change calls of do_identifier.
3272         Do Koenig lookup in CALL_EXPR.
3273         (arg_assoc): Handle error_mark.
3274         * lex.c (is_global): New function.
3275         (do_identifier): Expect arguments for Koenig lookup.
3276         * parse.y (primary): Add rules for calls of unqualified function calls.
3277         (do_id): Change call of do_identifier.
3278         * pt.c (finish_stmt_expr): Likewise.
3279         * semantics.c (finish_id_expr): Likewise.
3280         (finish_call_expr): Add integer parameter to indicate
3281         argument-dependent lookup.
3282
3283         * decl.c (struct binding_level): New field using_directives.
3284         (push_using_decl): Not sorry anymore.
3285         (push_using_directive): New function.
3286         (lookup_tag): Use CP_DECL_CONTEXT to iterate.
3287         (unqualified_namespace_lookup): New function, code from ...
3288         (lookup_name_real): ... here.
3289         * decl2.c (lookup_using_namespace): Pass using list instead of
3290         initial scope.
3291         (validate_nonmember_using_decl): New function.
3292         (do_nonmember_using_decl): New function.
3293         (do_toplevel_using_decl): Use them.
3294         (do_local_using_decl): New function.
3295         (do_using_directive): Support block-level directives.
3296         * parse.y (simple_stmt): Support using declarations and
3297         directives.
3298         (namespace_qualifier, namespace_using_decl): New non-terminals.
3299
3300         * xref.c (classname): New function.
3301         (GNU_xref_hier): Change class and base parameters to tree.
3302         * decl.c (xref_baseypes): Change caller.
3303         * friend.c (make_friend_class): Likewise.
3304
3305 1998-07-12  Kriang Lerdsuwanakij  <lerdsuwa@scf-fs.usc.edu>
3306
3307         * typeck.c (comptypes, case TEMPLATE_TEMPLATE_PARM): Add parameter
3308         comparison.
3309
3310         * pt.c (for_each_template_parm, case TEMPLATE_DECL): If it is a
3311         template template parameter, record its use.
3312         (for_each_template_parm, case TEMPLATE_TEMPLATE_PARM): Traverse
3313         its template arguments if exists.
3314
3315         * pt.c (coerce_template_template_parms): New function equivalent
3316         to coerce_template_parms when IS_TMPL_PARM is true.
3317         (coerce_template_parms): Use it.  Remove the IS_TMPL_PARM parameter,
3318         all callers changed.
3319
3320         (coerce_template_parms): Access ARGLIST properly when creating a
3321         new vector.  Only accept implicit TYPE_DECL as valid argument for
3322         a template template parameter when it is a base class of
3323         current_class_type.  Don't display error message when COMPLAIN is
3324         false.
3325
3326 1998-07-12  Klaus Kaempf  (kkaempf@progis.de)
3327
3328         * repo.c (get_base_filename): Use file_name_nondirectory.
3329         (open_repo_file): Likewise.
3330         * cp-tree.h (file_name_nondirectory): Add prototype.
3331
3332 1998-07-12  Jason Merrill  <jason@yorick.cygnus.com>
3333
3334         * friend.c (do_friend): Pull the identifier out of declarator.
3335         Use cp_error and friends.
3336         * decl2.c (qualified_lookup_using_namespace): Fix call to
3337         purpose_member.
3338         * decl.c (lookup_name_real): Don't call complete_type on a namespace.
3339         (grokvardecl): Use DECL_CLASS_SCOPE_P.
3340         * cvt.c (convert_pointer_to_real): Check for error_mark_node sooner.
3341         * class.c (warn_hidden): Fix for OVERLOAD.
3342         From grahams@rcp.co.uk:
3343         * cp-tree.h (DEFARG_NODE_CHECK): New macro.
3344         (DEFARG_LENGTH, DEFARG_POINTER): Use it.
3345
3346 Sun Jul 12 01:20:57 1998  Jeffrey A Law  (law@cygnus.com)
3347
3348         * g++.1 (-traditional): Remove duplicated documentation.
3349
3350 1998-07-11  Mark Mitchell  <mark@markmitchell.com>
3351
3352         * method.c (flush_repeats): Add nrepeats parameter.
3353         (issue_nrepeats): Likewise.
3354         (is_back_referenceable_type): New function.  Don't back-reference
3355         TEMPLATE_TYPE_PARMs as well as simple types like integers.
3356         (build_mangled_name_for_type): Likewise.
3357         (build_mangled_name_for_type_with_Gcode): Likewise.
3358         (lasttype): Remove.
3359         (nrepeats): Likewise.
3360         (Nrepeats): Likewise.
3361         (start_squangling): Don't clear the variables removed above.
3362         (end_squangling): Likewise.
3363         (flush_repeats): Tidy.  Use nrepeats parameter rather than
3364         Nrepeats global.
3365         (issue_nrepeats): Likewise, but with nrepeats global.  Use
3366         is_backreferenceable_type.
3367         (build_overload_nested_name): Tidy.  Add comment.  Use
3368         build_mangled_name_for_type.
3369         (build_underscore_int): Comment.
3370         (build_overload_scope_ref): Use build_mangled_name_for_type.
3371         (build_overload_int): Likewise.
3372         (build_template_template_parm_names): Tidy.
3373         (build_template_parm_names): Use build_mangled_name_for_type.
3374         (build_overload_identifier): Add comments.
3375         (build_mangled_name_for_type_with_Gcode): Split out from
3376         build_mangled_name.
3377         (build_mangled_name_for_type): Use it.
3378         (build_mangled_name): Rework to use build_mangled_name_for_type
3379         and to not use global nrepeats/Nrepeats.  Tidy.
3380         (process_modifiers): Tidy.
3381         (check_btype): Use is_backreferenceable_type.  Add comment.
3382         Rename `node' to `type'.
3383         (process_overload_item): Set numeric_output_need_bar here.
3384         Use build_mangled_name_for_type.  Tidy.
3385         (build_decl_overload_real): Tidy.  Don't use Nrepeats.  Use
3386         build_mangled_name_for_type.
3387
3388         * pt.c (push_template_decl_real): Don't look at DECL_TEMPLATE_INFO
3389         for TYPE_DECLs.
3390
3391 1998-07-08  Vladimir N. Makarov  <vmakarov@cygnus.com>
3392
3393         * cp-tree.h (warn_long_long): Define.
3394         * decl.c (grokdeclarator): Add flag `warn_long_long' as guard for
3395         warning "ANSI C++ does not support `long long'".
3396         * decl2.c (warn_long_long): Define.
3397         (lang_decode_option): Parse -Wlong-long, -Wno-long-long options.
3398
3399 1998-07-07  Jason Merrill  <jason@yorick.cygnus.com>
3400
3401         * decl.c (xref_tag): Handle attributes between 'class' and name.
3402         * parse.y (aggr): Likewise.
3403         * semantics.c (finish_class_definition): Likewise.
3404         * Makefile.in (EXPECTED): Adjust.
3405
3406         * cp-tree.h: Declare flag_optional_diags and warn_multichar.
3407         * decl2.c: Define them.
3408         (lang_decode_option): Handle them.
3409         * lang-options.h: Add -foptional-diags.
3410         * class.c (finish_struct): Don't complain about multiple meanings of
3411         name if -fno-optional-diags.
3412         * decl.c (pushdecl_class_level): Likewise.
3413         * lex.c (real_yylex): Check warn_multichar.
3414
3415 1998-07-06  Jason Merrill  <jason@yorick.cygnus.com>
3416
3417         * decl.c (lookup_tag): Use CP_DECL_CONTEXT.
3418
3419         * tree.c (make_binfo): Fix length.
3420
3421 1998-06-30  Benjamin Kosnik  <bkoz@bliss.nabi.net>
3422
3423         * decl2.c (lang_decode_option): Remove warn_template_debugging.
3424         * lang-options.h: Likewise.
3425
3426 Mon Jun 29 20:17:40 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3427
3428         * except.c (build_eh_type_type_ref): Remove unused variable `susp'.
3429         (process_start_catch_block): Likewise for variables
3430         `false_label_rtx', `call_rtx' and `return_value_rtx'.
3431
3432 1998-06-29  Brendan Kehoe  <brendan@cygnus.com>
3433
3434         * tree.c (build_srcloc): Make sure we allocate this node on the
3435         permanent obstack.
3436
3437 Sat Jun 27 23:34:18 1998  Fred Fish  <fnf@ninemoons.com>
3438
3439         * g++spec.c (NEED_MATH_LIBRARY): Define to 1 if not already defined.
3440         (lang_specific_driver): Initialize need_math with NEED_MATH_LIBRARY.
3441         (lang_specific_driver): Only add -lm automatically if need_math is
3442         nonzero.
3443
3444 Sat Jun 27 12:22:56 1998  Jeffrey A Law  (law@cygnus.com)
3445
3446         * Make-lang.in (g++): Depend on mkstemp.o.  Link in mkstemp.o
3447
3448 Sat Jun 27 07:36:09 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3449
3450         * Makefile.in (EXPR_H): New dependency variable.
3451         (decl2.o): Depend on $(EXPR_H).
3452         (typeck.o): Likewise.
3453         (init.o): Likewise.
3454         (expr.o): Likewise.
3455
3456 1998-06-25  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
3457
3458         * decl.c (start_enum): Put local enums on permanent_obstack.
3459
3460 1998-06-25  Mark Mitchell  <mark@markmitchell.com>
3461
3462         * cp-tree.h (c_get_alias_set): Declare.
3463         * decl.c (init_decl_processing): Set lang_get_alias_set.
3464
3465 1998-06-25  Andrew MacLeod  <amacleod@cygnus.com>
3466
3467         * cp-tree.h (mark_all_runtime_matches): Add function prototype.
3468         * except.c (mark_all_runtime_matches): Set TREE_SYMBOL_REFERENCED
3469         flag for all function decls which are in the exception table.
3470         * exception.cc (__cplus_type_matcher): Check for CATCH_ALL_TYPE match.
3471         * decl2.c (finish_file): Call mark_all_runtime_matches to make sure
3472         code is emitted for any referenced rtti function.
3473
3474 1998-06-25  Dave Brolley  <brolley@cygnus.com>
3475
3476         * lang-specs.h: Use new | syntax to eliminate
3477         string concatenation.
3478
3479 1998-06-25  Jason Merrill  <jason@yorick.cygnus.com>
3480
3481         * cp-tree.h (CP_DECL_CONTEXT): New macro.
3482         * decl2.c (is_namespace_ancestor, lookup_using_namespace): Use it.
3483         * method.c (build_overload_nested_name): Likewise.
3484         * sig.c (build_signature_pointer_or_reference_type): Don't set
3485         DECL_CONTEXT.
3486
3487 1998-06-24  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
3488
3489         Set DECL_CONTEXT for globals to NULL_TREE instead of global_namespace.
3490         * cp-tree.h (FROB_CONTEXT): New macro.
3491         (DECL_MAIN_P): ::main should have a DECL_CONTEXT of NULL_TREE.
3492         * decl.c (namespace_binding): Replace NULL_TREE with
3493         global_namespace.
3494         (set_namespace_binding, pop_namespace, lookup_name_real): Likewise.
3495         * decl2.c (is_namespace_ancestor, lookup_using_namespace):
3496         Likewise.
3497         * decl.c (pushtag): Use FROB_CONTEXT.
3498         (pushdecl, make_typename_type, define_function, grokdeclarator):
3499         Likewise.
3500         * decl2.c (set_decl_namespace, do_namespace_alias): Likewise.
3501         * pt.c (push_template_decl_real, lookup_template_class, tsubst):
3502         Likewise.
3503         * decl2.c (decl_namespace): Return global_namespace if no context.
3504         * method.c (build_overload_nested_name): Expect null as context.
3505         * pt.c (mangle_class_name_for_template): Do nothing for null
3506         contexts.
3507         (lookup_template_class): Allow for null id_context.
3508
3509 1998-06-25  Richard Henderson  <rth@cygnus.com>
3510
3511         * method.c (emit_thunk): Set current_function_is_thunk for the
3512         ASM_OUTPUT_MI_THUNK case as well.
3513
3514 1998-06-23  Andrew MacLeod  <amacleod@cygnus.com>
3515
3516         * exception.cc (__cplus_type_matcher): Get a match_info pointer
3517         instead of an exception table entry as a parameter.
3518
3519 1998-06-23  Andrew MacLeod  <amacleod@cygnus.com>
3520
3521         * parse.y (function_try_block): Don't call start_catch_handler.
3522         * except.c (call_eh_info): Remove coerced field from declaration.
3523         (build_eh_type_type_ref): New function to create an address of a
3524         rtti function for the new style exception tables.
3525         (expand_start_catch_block): Split function, this contains the
3526         common part.
3527         (process_start_catch_block_old): New function to perform the rest
3528         of expand_start_catch_block under old style exceptions.
3529         (process_start_catch_block_old): New function to perform the rest
3530         of expand_start_catch_block under new style exceptions.
3531         (expand_end_catch_block): Only pop the false label off the stack under
3532         the old style of exceptions.
3533         * semantics.c (finish_try_block): Don't call start_catch_handler.
3534         * exception.cc (struct cp_eh_info): Add original_value field.
3535         (__cplus_type_matcher): Perform type matching on the original exception
3536         value, and if we have a match, set the current value.
3537         (__cp_push_exception): Set the original exception value.
3538
3539 1998-06-23  Jason Merrill  <jason@yorick.cygnus.com>
3540
3541         * call.c (joust): Fix confusing conversion warning.
3542
3543         * call.c (build_op_delete_call): Add placement parm.  Check
3544         LOOKUP_SPECULATIVELY.
3545         * cp-tree.h, decl2.c, init.c: Adjust.
3546         * decl.c (finish_function): Use it.
3547
3548         * pt.c (tsubst): Diagnose creating void fields or variables.
3549
3550 Mon Jun 22 08:50:26 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3551
3552         * call.c (build_scoped_method_call): Remove unused variable `tmp'.
3553
3554         * cp-tree.h (check_dtor_name): Add prototype.
3555
3556         * init.c (expand_member_init): Remove unused variables
3557         `ptr_type_node', `parm' and `rval'.
3558
3559         * ptree.c (print_lang_type): Use HOST_WIDE_INT_PRINT_DEC specifier
3560         in call to fprintf.
3561         (lang_print_xnode): Likewise.
3562
3563         * typeck2.c (enum_name_string): Cast argument to sprintf to long
3564         and use %ld specifier.
3565
3566         * xref.c (GNU_xref_end_scope): Use HOST_WIDE_INT_PRINT_DEC
3567         specifier in call to fprintf.
3568         (GNU_xref_member): Cast argument to sprintf to int.
3569
3570 Fri Jun 19 23:22:42 1998  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
3571
3572         * typeck2.c (pop_init_level): Warn about implicit zero initialization
3573         of struct members.
3574
3575 Thu Jun 18 09:32:32 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3576
3577         * cp-tree.h: Prototype function `check_java_method'.
3578
3579 1998-06-17  Jason Merrill  <jason@yorick.cygnus.com>
3580
3581         * class.c (finish_struct): Make conflicting use of id a pedwarn.
3582         * decl.c (pushdecl_class_level): Likewise.
3583
3584 1998-06-17  Mark Mitchell  <mark@markmitchell.com>
3585
3586         * pt.c (convert_nontype_argument): Issue an error when presented
3587         with an integer (real) constant that cannot be simplified to an
3588         INT_CST (REAL_CST).
3589
3590         * cp-tree.h (c_get_alias_set): Remove declaration added in
3591         1998-06-13 change that should never have been checked in.
3592
3593 1998-06-17  Jason Merrill  <jason@yorick.cygnus.com>
3594
3595         * typeck.c (build_binary_op_nodefault): Change % in format strings
3596         to %%.
3597
3598         * decl.c (grokvardecl): Don't build_static_name for decls that
3599         aren't at namespace scope.
3600
3601         * init.c (perform_member_init): Catch default-initialization of
3602         references.
3603
3604 1998-06-17  Mark Mitchell  <mark@markmitchell.com>
3605
3606         * errfn.c (cp_thing): Handle the `%%' formatting sequence.
3607
3608 1998-06-17  Jason Merrill  <jason@yorick.cygnus.com>
3609
3610         * method.c (hack_identifier): Complain about getting a namespace
3611         or class template.
3612         * typeck.c (decay_conversion): Remove check for namespaces.
3613         * typeck2.c (incomplete_type_error): Likewise.
3614         * parse.y (template_arg): Add PTYPENAME expansion.
3615
3616 1998-06-16  Andrew MacLeod  <amacleod@cygnus.com>
3617
3618         * decl.c (grokvardecl): Don't build external assembler names for
3619         TYPENAMEs in other namespaces as there is no declarator.
3620         * error.c (cp_file_of, cp_line_of): Don't extract file or line number
3621         info from DECL_CONTEXT if it is NULL.
3622
3623 1998-06-16  Jason Merrill  <jason@yorick.cygnus.com>
3624
3625         * call.c (check_dtor_name): Split out.
3626         (build_scoped_method_call): Use it.
3627         (build_method_call): Use it.
3628         * init.c (build_offset_ref): Use it.
3629
3630         * typeck.c (build_static_cast): Fix handling of pointers to members.
3631
3632         * decl.c (finish_function): Just return nothing from a constructor.
3633         * typeck.c (c_expand_return): Complain about returning a void
3634         expression from a destructor.
3635
3636 1998-06-13  Mark Mitchell  <mark@markmitchell.com>
3637
3638         * class.c (alter_access): Accept a BINFO explaining how to get
3639         from the entity whose accessed is being altered to the type doing
3640         the altering.
3641         (handle_using_decl): New function containing code split out from ...
3642         (finish_struct_1): Here.
3643
3644         * cp-tree.h (complete_type_or_else): Declare.
3645         * init.c (build_new_1, build_delete): Use it.
3646         * typeck.c (require_complete_type): Use complete_type, rather than
3647         expanding it inline.
3648         (complete_type_or_else): New function.
3649         (build_component_ref): Use it.
3650         (pointer_int_sum): Make sure the type pointed to is complete.
3651         (pointer_diff): Likewise.
3652
3653         * pt.c (for_each_template_parm): Traverse the TYPE_CONTEXT for
3654         types.
3655
3656         * search.c (get_matching_virtual): Note that member templates
3657         cannot override virtual functions.
3658
3659 1998-06-12  Brendan Kehoe  <brendan@cygnus.com>
3660
3661         * pt.c (check_explicit_specialization): If DECLARATOR turned into
3662         an error_mark_node from lookup_template_function, return the same.
3663         (determine_specialization): Also make sure TEMPLATE_ID isn't an
3664         error_mark_node, before we try to read its operands.
3665         * decl.c (grokdeclarator): If we got an error_mark_node from
3666         check_explicit_specialization, just return it right back.
3667
3668 1998-06-12  Mark Mitchell  <mark@markmitchell.com>
3669
3670         * class.c (instantiate_type): Don't treat template-ids that don't
3671         specify any template arguments as equivalent to ordinary
3672         identifiers.  Use OFFSET_REF instead of SCOPE_REF to refer to
3673         pointer-to-members for member templates.  Tidy slightly.
3674         * cp-tree.def (TEMPLATE_ID_EXPR): Revise documentation.
3675         * init.c (build_offset_ref): Handle template-ids like ordinary
3676         identifiers, for the most part, but store a TEMPLATE_ID_EXPR in the
3677         offset part of the OFFSET_REF.
3678         * typeck.c (build_unary_op): Change check for unknown types to
3679         look for OFFSET_REFs, not SCOPE_REFs.
3680
3681 1998-06-11  Mark Mitchell  <mark@markmitchell.com>
3682
3683         * pt.c (is_member_template_class): New function.
3684         (push_template_decl_real): Use it.
3685
3686 1998-06-11  Benjamin Kosnik  <bkoz@elmo.cygnus.com>
3687
3688         * friend.c (do_friend): Add support for nested classes using
3689         member functions of the enclosing class as friends.
3690
3691 1998-06-10  Mark Mitchell  <mark@markmitchell.com>
3692
3693         * call.c (convert_default_arg): Make global, not static.
3694         (convert_arg_for_ellipsis): Split out from ...
3695         (build_over_call): Here.
3696         * cp-tree.h (convert_default_arg); Declare.
3697         (convert_arg_to_ellipsis): Likewise.
3698         (do_member_init): Remove.
3699         * init.c (do_member_init): Remove; this code is dead.
3700         (expand_member_init): Remove much of this code; it is dead.
3701         * typeck.c (convert_arguments): Use convert_default_arg and
3702         convert_arg_for_ellipsis, rather than duplicating here.
3703
3704         * call.c (convert_like): Don't fail silently if
3705         build_user_type_conversion fails.  Always return error_mark_node
3706         for failure.
3707
3708 1998-06-10  Jason Merrill  <jason@yorick.cygnus.com>
3709
3710         * search.c (covariant_return_p): Complain about ambiguous base.
3711
3712         * typeck.c (build_component_ref): Diagnose ref to nested type.
3713
3714 1998-06-10  Brendan Kehoe  <brendan@cygnus.com>
3715
3716         * decl.c (grokparms): Check that INIT isn't an error_mark_node
3717         before giving error about invalid type for default arg.
3718
3719 1998-06-10  Jason Merrill  <jason@yorick.cygnus.com>
3720
3721         * call.c (build_method_call): Fix thinko.
3722
3723 1998-06-10  Dave Brolley  <brolley@cygnus.com>
3724
3725         * decl2.c (lang_decode_option): New argc/argv interface.
3726         * cp-tree.h (lang_decode_option): New argc/argv interface.
3727         * lang-specs.h (default_compilers): Only call cpp if -E, -M or -MM is
3728         specified for cpplib-enabled compilers.
3729         * lex.c (lang_init): Don't check_newline for cpplib.
3730         (init_parse): Don't initialize cpplib here.
3731
3732 1998-06-10  Brendan Kehoe  <brendan@cygnus.com>
3733
3734         * typeck.c (build_component_ref): Make sure FIELD has a lang_specific
3735         piece before checking DECL_MUTABLE_P.
3736
3737 1998-06-10  John Carr  <jfc@mit.edu>
3738
3739         * tree.c (debug_binfo): Make printf format match arguments.
3740
3741         * error.c (OB_PUTI): Make printf format match arguments.
3742
3743 1998-06-10  Jason Merrill  <jason@yorick.cygnus.com>
3744
3745         * init.c (perform_member_init): Handle default-initialization.
3746
3747         * except.c (build_throw): Handle throwing NULL.
3748
3749         * typeck.c (build_x_function_call): Use resolve_offset_ref.
3750
3751         * search.c (compute_access): Only strip an anonymous union
3752         for a FIELD_DECL.
3753
3754         * call.c (add_builtin_candidates): Tweak.
3755
3756         * cvt.c (build_expr_type_conversion): Restore code for conversion
3757         from class types.
3758         * decl2.c (delete_sanity): Use it.  Clean up.
3759
3760         * typeck.c (comp_ptr_ttypes_real): Fix cv-qual comparisons.
3761
3762 1998-06-10  Branko Cibej  <branko.cibej@hermes.si>
3763
3764         * typeck.c (c_expand_return): Don't warn about void expressions on
3765         return statements in functions returning void.
3766
3767 1998-06-09  Mark Mitchell  <mark@markmitchell.com>
3768
3769         * pt.c (fn_type_unification): Revise documentation.  Tidy.
3770         (type_unification): Likewise.
3771
3772 1998-06-09  Andrew MacLeod  <amacleod@cygnus.com>
3773
3774         * semantics.c (finish_try_block): Rename expand_start_catch, and delete
3775         expand_end_catch.
3776         * parse.y (function_try_block): Rename expand_start_catch, and delete
3777         expand_end_catch.
3778         * except.c (expand_end_eh_spec): Rename expand_start_catch, and delete
3779         expand_end_catch.
3780
3781 1998-06-09  Jason Merrill  <jason@yorick.cygnus.com>
3782
3783         * search.c (lookup_member): New fn.
3784         * class.c (finish_struct_1): Use it.
3785         * decl.c (lookup_name_real): Use it.
3786
3787 Mon Jun  8 20:45:52 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3788
3789         * Makefile.in (decl2.o): Depend on dwarf2out.h and dwarfout.h.
3790
3791         * cp-tree.h: Add prototype for `maybe_print_template_context' and
3792         `maybe_make_one_only'.
3793
3794         * decl.c (auto_function): Remove unused variable `decl'.
3795
3796         * decl2.c: Include dwarf2out.h and dwarfout.h.
3797
3798         * lex.c: Remove redundant declarations of `set_float_handler' and
3799         `asm_out_file'.
3800
3801 1998-06-08  Andrew MacLeod  <amacleod@cygnus.com>
3802
3803         * except.c (init_exception_processing): Remove NEW_EH_MODEL compile
3804         time flag.  Call __cp_eh_info instead of __cp_exception_info.
3805         * exception.cc (struct cp_eh_info): Remove NEW_EH_MODEL flag.
3806         (__cp_exception_info): Return offset into cp_eh_info structure to
3807         match what use to be the start of this structure.
3808         (__cp_eh_info): New function to return a pointer to cp_eh_info struct.
3809         (__cplus_type_matcher, __cp_push_exception): Remove NEW_EH_MODEL
3810         compile time flag.
3811         (__uncatch_exception, __check_eh_spec, std::uncaught_exception): Call
3812         __cp_eh_info instead of __cp_exception_info.
3813
3814 1998-06-08  Jason Merrill  <jason@yorick.cygnus.com>
3815
3816         * decl.c (cp_finish_decl): Disable inlining of extern inlines
3817         with static variables.
3818
3819 1998-06-08  Mark Mitchell  <mark@markmitchell.com>
3820
3821         * init.c (build_offset_ref): Correct previous change to use build,
3822         not build_min.
3823
3824 1998-06-07  Mark Mitchell  <mark@markmitchell.com>
3825
3826         * class.c (instantiate_type): Handle pointer-to-members where the
3827         member is a template.
3828         * init.c (build_offset_ref): Likewise.
3829         * typeck.c (build_unary_op): Likewise.
3830
3831 1998-06-07  Richard Henderson  <rth@cygnus.com>
3832
3833         * lex.c (lang_init_options): New function.
3834         (lang_init): Remove flag_exceptions == 2 hack.
3835
3836 1998-06-05  Jason Merrill  <jason@yorick.cygnus.com>
3837
3838         * search.c (envelope_add_decl): Tweak for implicit typename.
3839
3840         * call.c (joust): Also warn about confusing conversion op/constructor
3841         overload resolution.
3842
3843         * spew.c (yylex): Also return the TYPE_DECL if got_object.
3844         Don't clear got_object after '~'.
3845         * call.c (build_scoped_method_call): Tweak destructor handling.
3846         (build_method_call): Likewise.
3847         * pt.c (tsubst_copy, case METHOD_CALL_EXPR): Don't mess with
3848         TYPE_MAIN_VARIANT for destructors.
3849         * semantics.c (finish_object_call_expr): Complain about calling a
3850         TYPE_DECL.
3851
3852 1998-06-05  Per Bothner  <bothner@cygnus.com>
3853
3854         * g++spec.c (lang_specific_pre_link, lang_specific_extra_ofiles):
3855         Define - update needed by gcc.c change.
3856
3857 1998-06-05  Jason Merrill  <jason@yorick.cygnus.com>
3858
3859         * error.c (cp_printers): Use 'o' instead of '_' for the null entry.
3860
3861 1998-06-05  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
3862
3863         * cp-tree.h (DECL_NAMESPACE_ALIAS, ORIGINAL_NAMESPACE): Declare.
3864         * decl.c (lookup_name_real): Add namespaces_only parameter.
3865         If set, return only NAMESPACE_DECLs.
3866         (select_decl): Likewise.
3867         (identifier_type_value): Give additional parameter.
3868         (lookup_name_nonclass): Likewise.
3869         (lookup_name): Likewise.
3870         (find_binding): Skip namespace aliases.
3871         (binding_for_name): Likewise.
3872         (push_namespace): Check for namespace aliases.
3873         (lookup_name_namespace_only): New function.
3874         (begin_only_namespace_names, end_only_namespace_names): New functions.
3875         * decl2.c (set_decl_namespace): Skip namespace aliases.
3876         (do_using_directive): Likewise.
3877         (do_namespace_alias): Produce namespace aliases, fix alias
3878         redeclaration.
3879         * error.c (dump_decl): Support SCOPE_REF.
3880         * parse.y (extdef): Wrap lookup with namespace_only for namespace
3881         aliases and using declarations.
3882
3883 1998-06-04  Jason Merrill  <jason@yorick.cygnus.com>
3884
3885         * tree.c (really_overloaded_fn): Only see through one TREE_LIST.
3886
3887         * error.c (dump_expr): Clean up NEW_EXPR case.
3888
3889 1998-06-04  Martin von Löwis  <loewis@informatik.hu-berlin.de>
3890
3891         Suggested by Brendan Kehoe
3892         * decl2.c (do_toplevel_using_decl): When decl is a TYPE_DECL,
3893         treat it as using ::decl.
3894
3895         * decl2.c (arg_assoc_type): Process unknown_type_node and OFFSET_TYPE.
3896
3897         * tree.c (mapcar): Support NEW_EXPR.
3898
3899         * error.c (dump_expr): Support NEW_EXPR.
3900
3901 1998-06-03  Jason Merrill  <jason@yorick.cygnus.com>
3902
3903         * method.c (make_thunk): Use overload machinery to make name.
3904         * search.c (covariant_return_p): New fn.
3905         (get_matching_virtual): Use it.
3906
3907         * init.c (build_new_1): Fix check for void.
3908
3909 1998-06-01  Per Bothner  <bothner@cygnus.com>
3910
3911         * cp-tree.h (TYPE_FOR_JAVA):  New macro.
3912         * decl.c, cp-tree.h (java_byte_type_node, java_short_type_node,
3913         java_int_type_node, java_long_type_node, java_float_type_node,
3914         java_double_type_node, java_char_type_node, java_boolean_type_node):
3915         New "primitive" types, with predefined names __java_byte etc.
3916         (record_builtin_java_type):  New function.
3917         (init_decl_processing):  Make Java types with record_builtin_java_type.
3918         (pushtag, grokdeclarator):  Set TYPE_FOR_JAVA if in extern "JAVA".
3919         (xref_baseypes):  If base class was TYPE_FOR_JAVA, so is this class.
3920         (grokfndecl):  Call check_java_method for Java classes.
3921         * method.c (is_java_type):  Removed.  Replaced with TYPE_FOR_JAVA.
3922         (process_overload_item):  Match types against specific
3923         java_XX_type_node types, rather than using is_java_type.
3924         * class.c (finish_struct_1):  Don't add default copy constructor
3925         or operator= if TYPE_FOR_JAVA.
3926         (pop_lang_conext):  Restore strict_prototyp proper if Java.
3927         * decl2.c (acceptable_java_type, check_java_method):  New functions.
3928         * pt.c (instantiate_class_template):  Copy TYPE_FOR_JAVA from pattern.
3929         (tsubst):  Move common statement after if statement.
3930         * typeck.c (comptypes):  If strict, TYPE_FOR_JAVA must match.
3931
3932 1998-06-01  Jason Merrill  <jason@yorick.cygnus.com>
3933
3934         * pt.c (for_each_template_parm): Use first_rtl_op.
3935
3936         * tree.c (build_cplus_array_type_1): Also check index_type for
3937         template parms.
3938
3939 1998-05-31  Jason Merrill  <jason@yorick.cygnus.com>
3940
3941         * pt.c (tsubst): Always copy BINFO_BASETYPES.
3942
3943 1998-05-29  scott snyder  <snyder@d0sgif.fnal.gov>
3944
3945         * tree.c (layout_basetypes): If we change TYPE_SIZE, change
3946         TYPE_SIZE_UNIT too.
3947
3948 1998-05-29  Mark Mitchell  <mark@markmitchell.com>
3949
3950         * decl.c (grokdeclarator): Don't complain about in-class
3951         initialization of static consts if we don't really know the type
3952         of the variable.
3953
3954 1998-05-29  Jason Merrill  <jason@yorick.cygnus.com>
3955
3956         * cp-tree.h (DECL_DESTRUCTOR_P): New macro.
3957         * method.c (build_destructor_name): New fn.
3958         * decl2.c (maybe_retrofit_in_chrg): Split out...
3959         (grokclassfn): From here.  Reorganize.
3960         * decl.c (grok_ctor_properties): Make sure ctors for types with
3961         vbases have the in_chrg parm.
3962         * pt.c (instantiate_class_template): Update
3963         TYPE_USES_VIRTUAL_BASECLASSES from tsubsted bases.  Don't call
3964         grok_*_properties.
3965         (tsubst): Call grok_ctor_properties and maybe_retrofit_in_chrg.
3966
3967 1998-05-28  Mark Mitchell  <mark@markmitchell.com>
3968
3969         * pt.c (instantiate_decl): Make test for whether or not static
3970         variables should be instantiated early match its comment.
3971
3972 1998-05-28  Jason Merrill  <jason@yorick.cygnus.com>
3973
3974         * decl.c (start_decl): Always pedwarn about vacuously redeclaring
3975         a member.
3976         (start_function): Call check_default_args.
3977         * decl2.c (grokfield): Don't call check_default_args.
3978         (check_default_args): Use cp_error_at.
3979         * lex.c (do_pending_defargs): Call check_default_args.
3980
3981 1998-05-27  Brendan Kehoe  <brendan@cygnus.com>
3982
3983         * call.c (build_method_call): Make sure get_type_value returns
3984         something before we try to use its TYPE_MAIN_VARIANT.
3985         (build_scoped_method_call): Likewise.
3986
3987 1998-05-27  Jason Merrill  <jason@yorick.cygnus.com>
3988
3989         * typeck2.c (digest_init): Complain about getting a TREE_LIST to
3990         initialize an array.
3991
3992         * search.c (expand_upcast_fixups): Don't set DECL_CONTEXT and
3993         DECL_VIRTUAL_P.
3994
3995         * friend.c (do_friend): Clarify template warning.
3996
3997 1998-05-27  Mark Mitchell  <mark@markmitchell.com>
3998
3999         * decl.c (shadow_label): Don't treat decls as identifiers.
4000         (maybe_push_to_top_level): Clear shadowed_labels.
4001
4002         * pt.c (instantiate_decl): Reset lineno and filename after calling
4003         regenerate_decl_from_template.
4004
4005         * decl.c (grokdeclarator): Don't try to use TYPE_OBSTACK on an
4006         error_mark_node.
4007
4008 1998-05-27  Kevin Buhr  <buhr@stat.wisc.edu>
4009
4010         * parse.y (base_class): Use is_aggr_type, not IS_AGGR_TYPE.
4011
4012 1998-05-26  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
4013
4014         * pt.c (process_template_parm): Accept TYPENAME_TYPE nodes.
4015         (convert_nontype_argument): Handle cases when nontype template
4016         parameters become classes after substitution.
4017
4018 1998-05-26  Mark Mitchell  <mark@markmitchell.com>
4019
4020         * friend.c (is_friend): Use comptypes, rather than == to compare
4021         types.  Modify for new representation of template friends.
4022         (make_friend_class): Likewise.
4023         * pt.c (tsubst_friend_class): Undo 1998-05-21 change.  Tweak.
4024         (instantiate_class_template): Deal with template friends.
4025
4026         * decl.c (store_parm_decls): Remove redundant call to
4027         expand_main_function.
4028
4029 1998-05-26  Benjamin Kosnik  <bkoz@loony.cygnus.com>
4030
4031         * decl.c (start_decl): Check for DECL_LANG_SPECIFIC before
4032         DECL_USE_TEMPLATE.
4033
4034 1998-05-26  Per Bothner  <bothner@cygnus.com>
4035
4036         * language_as_string:  Handle lang_java.
4037
4038 1998-05-26  Jason Merrill  <jason@yorick.cygnus.com>
4039
4040         * decl.c (pushdecl): Don't copy the type_decl.
4041
4042 1998-05-26  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
4043
4044         * class.c (pushclass): Always store TYPE_MAIN_VARIANT in
4045         current_class_type.
4046         * decl.c (grokdeclarator): Put typedefs on the type's obstack.
4047
4048         * parse.y (complex_direct_notype_declarator): Use $1 to access
4049         scope of notype_qualified_id.
4050
4051 1998-05-26  Dave Brolley  <brolley@cygnus.com>
4052
4053         * lex.c (parse_options,yy_cur,yy_lim): Add for cpplib.
4054         (init_parse): Initialize cpplib interface.
4055
4056         * Makefile.in (CXX_OBJS): Make sure dependencies never end with an
4057         empty continuation.
4058
4059 1998-05-26  Mark Mitchell  <mark@markmitchell.com>
4060
4061         * decl.c (pushtag): Avoid crashing on erroneous input.
4062
4063 1998-05-25  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
4064
4065         * decl.c (push_namespace): Only produce one unique name for
4066         anonymous namespaces.
4067         (get_unique_name): Remove.
4068
4069 1998-05-25  Mark Mitchell  <mark@markmitchell.com>
4070
4071         * call.c (tourney): Don't do any extra comparisons.
4072
4073         * decl2.c (build_anon_union_vars): Don't crash on empty sub-unions.
4074
4075         * cp-tree.h (processing_template_parmlist): Declare.
4076         * decl.c (pushtag): Don't call push_template_decl when we
4077         shouldn't.
4078         * pt.c (processing_template_parmlist): New variable.
4079         (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): New macro.
4080         (complete_template_args): Use it.
4081         (add_to_template_args): Likewise.
4082         (innermost_args): Likewise.
4083         (tsubst): Likewise.
4084         (begin_template_parm_list): Use processing_template_parmlist.
4085         (end_template_parm_list): Likewise.
4086
4087         * cp-tree.h (ANON_UNION_TYPE_P): New macro.
4088         * decl.c (grokdeclarator): Use it.
4089         * decl2.c (grok_x_components): Likewise.
4090         * init.c (initializing_context): Likewise.
4091         * method.c (do_build_copy_constructor): Likewise.
4092         (do_build_assign_ref): Likewise.
4093         * search.c (compute_access): Likewise.
4094         * typeck.c (build_component_ref): Likewise.
4095
4096         * decl.c (grokdeclarator): Don't give a cv-qualified version of an
4097         unnamed type a typedef name "for linkage purposes".
4098
4099         * pt.c (lookup_template_class): Don't look at
4100         IDENTIFIER_CLASS_VALUE when there's no current_class_type.
4101
4102         * method.c (build_overload_int): Handle error cases gracefully.
4103
4104         * pt.c (instantiate_decl): Handle static member variables
4105         correctly.
4106
4107         * pt.c (tsubst): Use the tsubst'd type when producing new
4108         TEMPLATE_PARM_INDEX nodes.
4109
4110 1998-05-24  Mark Mitchell  <mark@markmitchell.com>
4111
4112         * tree.c (cp_tree_equal): Handle pointers to member functions.
4113
4114         * call.c (maybe_handle_implicit_object): Handle QUAL_CONVs.  Make
4115         sure the type of the REF_BIND is a reference type.
4116         (maybe_handle_ref_bind, compare_ics): Rename reference_type to
4117         target_type for clarity.
4118
4119         * parse.y (xcond): Move call to condition_conversion ...
4120         * semantics.c (finish_for_cond): Here.
4121         * parse.c: Regenerated.
4122
4123 1998-05-24  Jason Merrill  <jason@yorick.cygnus.com>
4124
4125         * decl.c (push_namespace): Namespaces have type void.
4126         * typeck2.c (incomplete_type_error): Complain about namespace
4127         used as expression.
4128         * typeck.c (decay_conversion): Likewise.
4129
4130 1998-05-24  Martin von Löwis  <loewis@informatik.hu-berlin.de>
4131
4132         * error.c (dump_expr): Support namespaces.
4133
4134 1998-05-23  Jason Merrill  <jason@yorick.cygnus.com>
4135
4136         * cp-tree.def: Add SRCLOC.
4137         * cp-tree.h: Add struct tree_srcloc and accessor macros.
4138         * tree.c (build_srcloc, build_srcloc_here): New fns.
4139         * pt.c (add_pending_template): Use build_srcloc_here.
4140         (push_tinst_level): Update last_template_error_tick before erroring.
4141         (instantiate_decl): Restore lineno and input_filename before
4142         calling add_pending_template.
4143         * decl2.c (finish_file): Set up lineno and input_filename for
4144         pending templates.
4145
4146 1998-05-22  Jason Merrill  <jason@yorick.cygnus.com>
4147
4148         * decl.c (lang_print_error_function): New fn.
4149         (init_decl_processing): Set print_error_function to use it.
4150         * errfn.c (cp_thing): Don't call maybe_print_template_context here.
4151
4152         * call.c (maybe_handle_ref_bind): Propagate ICS_USER_FLAG and
4153         ICS_BAD_FLAG.
4154
4155         * cvt.c (ocp_convert): Don't set LOOKUP_NO_CONVERSION for
4156         copy-initialization.
4157
4158         * class.c (build_vtable_entry): Use int_fits_type_p.
4159         (build_vtable): Pass a signed offset to build_vtable_entry.
4160         (prepare_fresh_vtable, modify_one_vtable, fixup_vtable_deltas1,
4161         set_rtti_entry): Likewise.
4162
4163 1998-05-22  Per Bothner  <bothner@cygnus.com>
4164
4165         * cp-tree.h:  Add comments documenting which LANG_FLAGS are used.
4166         (C_TYPE_VARIABLE_SIZE, C_DECL_VARIABLE_SIZE):  Removed, not used.
4167
4168 1998-05-22  Jason Merrill  <jason@yorick.cygnus.com>
4169
4170         * pt.c (print_template_context): Use fprintf instead of cp_error.
4171
4172         * pt.c (determine_specialization): Just return an error_mark_node.
4173         Also print the decl we want in error messages.  If we complain,
4174         return error_mark_node.
4175         (tsubst_friend_function): Set lineno and input_filename so
4176         error messages will be useful.
4177         (instantiate_template): Just return an error_mark_node.
4178         (check_explicit_specialization): Don't mess with a returned
4179         error_mark_node.
4180
4181         * pt.c (print_template_context): Add new argument.
4182         (maybe_print_template_context): New fn.
4183         (push_tinst_level): Increment tinst_level_tick.
4184         (pop_tinst_level): Likewise.
4185         * errfn.c (cp_thing): Call maybe_print_template_context.  Use
4186         xrealloc instead of xmalloc.
4187
4188         * typeck.c (build_unary_op, CONVERT_EXPR): Propagate TREE_CONSTANT.
4189
4190 1998-05-21  Jason Merrill  <jason@yorick.cygnus.com>
4191
4192         * pt.c (tsubst_friend_class): Don't call redeclare_class_template
4193         if the template we looked up is the same as the one we already
4194         have.
4195
4196 Thu May 21 11:54:44 1998  Dave Brolley  <brolley@cygnus.com>
4197
4198         * lex.c: (handle_sysv_pragma): FILE* parameter not used.
4199         (cpp_reader,parse_in): Add for cpplib.
4200         (check_newline): Call handle_sysv_pragma with new interface.
4201         (check_newline): Call GET_DIRECTIVE_LINE, not get_directive_line.
4202
4203         * input.c: (yy_cur,yy_lim,yy_get_token,GETC): Add for cpplib.
4204         (sub_getch): Call GETC for cpplib.
4205
4206         * cp-tree.h: (get_directive_line): Different prototype for cpplib.
4207         (GET_DIRECTIVE_LINE): Macro wrapper for get_directive_line.
4208
4209         * Makefile.in (CXX_OBJS): Add @extra_cxx_objs@ for cpplib.
4210
4211 1998-05-21  Jason Merrill  <jason@yorick.cygnus.com>
4212
4213         * decl2.c (maybe_make_one_only): New fn.
4214         (import_export_vtable): Use it.
4215         (import_export_decl): Likewise.
4216         * pt.c (mark_decl_instantiated): Likewise.
4217
4218 1998-05-21  Mark Mitchell  <mmitchell@usa.net>
4219
4220         * decl2.c (find_representative_member): Rename to ...
4221         (build_anon_union_vars): New function.
4222         (finish_anon_union): Fix stupidity of previous change.
4223
4224 1998-05-20  Jason Merrill  <jason@yorick.cygnus.com>
4225
4226         * decl.c (grokfndecl): Handle definition of specialization in
4227         friend declaration.
4228
4229         * error.c (dump_decl): Fix LOOKUP_EXPR handling.
4230
4231 1998-05-20  Mark Mitchell  <mmitchell@usa.net>
4232
4233         * class.c (delete_duplicate_fields_1): Use DECL_DECLARES_TYPE_P
4234         to look for type declarations.
4235         (finish_struct): Deal with templates on the CLASSTYPE_TAGS list.
4236         * cp-tree.h (DECL_DECLARES_TYPE_P): New macro.
4237         (finish_member_class_template): Declare.
4238         * decl.c (pushtag): Put member class templates on the
4239         CLASSTYPE_TAGS list, just as for ordinary member classes.
4240         (pushdecl_class_level): Use DECL_DECLARES_TYPE_P.
4241         (lookup_tag): Look for IDENTIFIER_CLASS_VALUEs, just as with
4242         IDENTIFIER_NAMESPACE_VALUEs.
4243         * parse.y (component_decl): Move code to ...
4244         * semantics.c (finish_member_class_template): New function.
4245         Don't put member class templates on the list of components for a
4246         class.
4247         * parse.c: Regenerated.
4248         * pt.c (classtype_mangled_name): Don't try DECL_CONTEXT on types.
4249         In fact, don't use DECL_CONTEXT at all here.
4250
4251 1998-05-20  Martin von Löwis  <loewis@informatik.hu-berlin.de>
4252
4253         * decl.c (record_unknown_type): New function.
4254         (init_decl_processing): Call it for the unknown and global type
4255         nodes.
4256
4257 1998-05-20  Mark Mitchell  <mmitchell@usa.net>
4258
4259         * decl2.c (find_representative_member): New function.
4260         (finish_anon_union): Use it.
4261
4262         * cp-tree.h (MAIN_NAME_P): New macro.
4263         (DECL_MAIN_P): Likwise.
4264         * decl.c (pushdecl): Avoid crashing on redefinitions of `main'.
4265         (grokfndecl): Use the new macros.
4266         (grokdeclarator): Likewise.
4267         (start_function): Likewise.
4268         (store_parm_decls): Likewise.
4269         (finsh_function): Likewise.
4270         * friend.c (do_friend): Likewise.
4271         * typeck.c (build_function_call_real): Likewise.
4272         (build_unary_op): Likewise.
4273
4274 Wed May 20 02:16:01 1998  Jason Merrill  <jason@yorick.cygnus.com>
4275
4276         * decl2.c (start_objects, finish_objects, do_dtors,
4277         do_ctors): Split out from...
4278         (finish_file): ...here.
4279
4280 Tue May 19 20:36:23 1998  Jason Merrill  <jason@yorick.cygnus.com>
4281
4282         * tree.c (is_overloaded_fn): Don't abort on placeholders from
4283         push_class_decls.
4284
4285 Tue May 19 15:16:22 1998  Brendan Kehoe  <brendan@cygnus.com>
4286
4287         * class.c (is_empty_class): Return 0 if TYPE is an error_mark_node.
4288
4289         * error.c (dump_expr): Handle an ARROW_EXPR.
4290
4291 Tue May 19 15:13:39 1998  Mark Mitchell  <mmitchell@usa.net>
4292
4293         * decl.c (saveable_obstack): Declare.
4294         (pushdecl): Copy TYPE_DECLs to the same obstack as the type they
4295         declare, if necessary.
4296
4297 Tue May 19 14:50:27 1998  Mark Mitchell  <mmitchell@usa.net>
4298
4299         * call.c (compare_qual): Remove.
4300         (is_subseq): Tweak.
4301         (is_properly_derived_from): New function.
4302         (maybe_handle_ref_bind): Likewise.
4303         (maybe_handle_implicit_object): Likewise.
4304         (compare_ics): Modify substantially to bring into conformance with
4305         the standard.
4306         * cp-tree.h (TYPE_PTRMEMFUNC_OBJECT_TYPE): New macro.
4307         (comp_cv_qualification): Declare.
4308         (comp_cv_qual_signature): Likewise.
4309         * typeck.c (comp_cv_qualification): Likewise.
4310         (comp_cv_qual_signature): Likewise.
4311
4312 Tue May 19 10:05:02 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4313
4314         * Makefile.in (parse.o): Depend on toplev.h.
4315
4316         * class.c (typecode_p): Remove prototype and definition.
4317
4318         * cp-tree.h (currently_open_class, is_empty_class, member_p):
4319         Add prototype.
4320
4321         * decl.c (push_overloaded_decl_top_level): Remove prototype and
4322         definition.
4323
4324         * errfn.c (cp_error): Cast function pointer `error' to (errorfn *)
4325         in call to `cp_thing'.
4326         (cp_warning): Likewise for function pointer `warning'.
4327
4328         * except.c (do_function_call): Remove prototype and definition.
4329         (call_eh_info): Wrap variable `t1' in macro NEW_EH_MODEL.
4330
4331         * method.c (is_java_type): Add prototype and make it static.
4332
4333         * parse.y: Include toplev.h.
4334
4335         * pt.c (type_unification): Remove unused variable `arg'.
4336         (instantiate_decl): Likewise for `save_ti'.
4337
4338         * tree.c (propagate_binfo_offsets): Likewise for `base_binfos'.
4339
4340 Tue May 19 02:43:25 1998  Jason Merrill  <jason@yorick.cygnus.com>
4341
4342         * init.c (build_member_call): Handle template_ids.
4343         * parse.y (primary): Add global_scope template_id.
4344
4345 Mon May 18 23:22:52 1998  Jason Merrill  <jason@yorick.cygnus.com>
4346
4347         * decl2.c (get_sentry): Use end_temporary_allocation.
4348         Don't declare permanent_obstack.
4349
4350 Mon May 18 12:28:44 1998  Mark Mitchell  <mmitchell@usa.net>
4351
4352         * parse.y (.finish_new_placement): New non-terminal.
4353         (unary_expr, new_type_id): Use it.
4354         * parse.c: Regenerated.
4355
4356 Mon May 18 12:20:27 1998  Brendan Kehoe  <brendan@cygnus.com>
4357
4358         * pt.c (redeclare_class_template): Say where the original definition
4359         of the template-parameter's default argument appeared.
4360
4361 Mon May 18 03:00:57 1998  Jason Merrill  <jason@yorick.cygnus.com>
4362
4363         * call.c (build_over_call): Tweak empty class handling.
4364
4365         * decl.c (make_typename_type): Use currently_open_class.
4366
4367         * class.c (instantiate_type): Don't abort on TREE_NONLOCAL_FLAG.
4368
4369 Mon May 18 01:43:01 1998  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
4370
4371         * decl.c (lookup_name_real): Don't look at IDENTIFIER_LOCAL_VALUE
4372         for a type unless it is one.
4373
4374         * class.c (finish_struct_1): Use OVL_CURRENT in error message.
4375
4376 Mon May 18 01:24:08 1998  Jeffrey A Law  (law@cygnus.com)
4377
4378         * Makefile.in (program_transform_name, objdir): Define.
4379
4380         * Makefile.in (BISON): Use bison from the build tree if it exists.
4381         (FLEX): Likewise.
4382
4383 Sun May 17 14:52:08 1998  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
4384
4385         * typeck.c (type_unknown_p): Return true for TREE_LIST also.
4386
4387         * call.c (build_method_call): Use TYPE_MAIN_VARIANT on typedefs.
4388
4389 Sun May 17 14:51:41 1998  Jason Merrill  <jason@yorick.cygnus.com>
4390
4391         * call.c (build_scoped_method_call): Likewise.
4392
4393 Sun May 17 13:53:48 1998  Mark Mitchell  <mmitchell@usa.net>
4394
4395         * init.c (build_new_1): Call suspend_momentary around the creation
4396         of values that must be saved for exception handling.
4397         * parse.y (.build_new_placement): New non-terminal.
4398         (unary_expr, new_placement): Use it.
4399         * parse.c: Regenerated.
4400
4401 Sun May 17 12:32:08 1998  Jason Merrill  <jason@yorick.cygnus.com>
4402
4403         * decl.c (duplicate_decls): Use CANONICAL_TYPE_VARIANT to compare
4404         old and new types.
4405
4406         * pt.c (tsubst): Make sure that BINFO_TYPE of new binfos is the
4407         canonical type.
4408
4409         * call.c (build_over_call): Don't use IS_SIGNATURE on a namespace.
4410
4411 Fri May 15 20:28:00 1998  Jason Merrill  <jason@yorick.cygnus.com>
4412
4413         * decl.c (start_decl): Revert problem change.
4414
4415         * Makefile.in (CONFLICTS): Fix.
4416
4417 Fri May 15 15:34:02 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
4418
4419         * decl.c (duplicate_decls): Clean up, add DECL_DATA_AREA bits.
4420
4421 Fri May 15 00:46:05 1998  Jason Merrill  <jason@yorick.cygnus.com>
4422
4423         * class.c (finish_struct_1): Use BINFO_SIZE.
4424
4425         * decl.c (start_decl): Use 'tem'.
4426
4427 Thu May 14 16:30:47 1998  Andrew MacLeod  <amacleod@cygnus.com>
4428
4429         * exception.cc: Include eh-common.h.
4430         (struct cp_eh_info): Add eh_info struct with NEW_EH_MODEL.
4431         (__cplus_type_matcher): First stab at new C++ runtime type matcher.
4432         (__cp_push_exception): Initialize eh_info struct as well.
4433         * except.c: Remove local structs and include eh-common.h.
4434         (init_exception_processing): Set language and version codes.
4435         (call_eh_info): Add presence of eh_info to runtime description of
4436         struct cp_eh_info.
4437         (expand_end_eh_spec): Call start_catch_block() and end_catch_block().
4438         * semantics.c (finish_try_block): Call start_catch_block() and
4439         end_catch_block().
4440         * parse.y (function_try_block): Call start_catch_block() and
4441         end_catch_block().
4442
4443 Thu May 14 12:27:34 1998  Brendan Kehoe  <brendan@cygnus.com>
4444
4445         * typeck.c (original_type): New function.
4446         (common_type): Use it to get the DECL_ORIGINAL_TYPE for T1 and T2,
4447         to see if they're actually the same.
4448         * cp-tree.h (original_type): Declare.
4449
4450 Wed May 13 12:54:30 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4451
4452         * Makefile.in (lex.o): Depend on output.h.
4453
4454         * call.c (add_function_candidate): Remove unused variable `cand'.
4455         (add_conv_candidate): Likewise.
4456         (build_builtin_candidate): Likewise.
4457
4458         * cp-tree.h: Add prototype for `types_overlap_p'.
4459
4460         * decl.c (signal_catch): Mark parameter `sig' with ATTRIBUTE_UNUSED.
4461
4462         * decl2.c (merge_functions): Remove unused variables `tmp' and
4463         `tempn'.
4464
4465         * error.c (expr_as_string): Mark parameter `v' with ATTRIBUTE_UNUSED.
4466         (code_as_string): Likewise.
4467         (language_as_string): Likewise.
4468         (parm_as_string): Likewise.
4469         (op_as_string): Likewise.
4470         (assop_as_string): Likewise.
4471         (cv_as_string): Likewise.
4472
4473         * lex.c: Include output.h.
4474
4475         * pt.c (type_unification): Cast first argument of `bzero' to a char*.
4476
4477         * search.c (dfs_no_overlap_yet): Mark parameter `t' with
4478         ATTRIBUTE_UNUSED.
4479
4480         * tinfo.cc (__class_type_info::dcast): Change the type of variable
4481         `i' from int to size_t.
4482
4483         * typeck.c (language_lvalue_valid): Mark parameter `exp' with
4484         ATTRIBUTE_UNUSED.
4485
4486 Tue May 12 21:37:49 1998  Jason Merrill  <jason@yorick.cygnus.com>
4487
4488         * error.c (dump_simple_decl): Use DECL_CLASS_SCOPE_P and/or
4489         DECL_NAMESPACE_SCOPE_P.
4490         (lang_decl_name): Likewise.
4491         * pt.c (tsubst_friend_function, tsubst): Likewise.
4492         * decl.c (pushdecl, redeclaration_error_message, start_decl,
4493         cp_finish_decl, start_function): Likewise.
4494         * class.c (finish_struct_1): Likewise.
4495         * call.c (build_over_call): Likewise.
4496         (compare_ics): Use DERIVED_FROM_P.
4497
4498 Tue May 12 07:24:18 1998  Mark Mitchell  <mmitchell@usa.net>
4499
4500         * cp-tree.h (CANONICAL_TYPE_VARIANT): New macro.
4501         * method.c (build_mangled_name): Use it.
4502         (build_decl_overload_real): Likewise.
4503
4504         * error.c (dump_simple_decl): New function, broken out from ...
4505         (dump_decl): Use it.
4506
4507 Mon May 11 11:38:07 1998  Mark Mitchell  <mmitchell@usa.net>
4508
4509         * ptree.c (lang_print_xnode): Add missing `break'.
4510
4511         * pt.c (tsubst): Remove duplicate check for IDENTIFIER_NODE.
4512
4513         * call.c (add_template_candidate): Adjust for changes to
4514         fn_type_unification.
4515         (add_template_candidate_real): Likewise.
4516         (add_template_conv_candidate): Likewise.
4517         (build_user_type_conversion_1): Likewise.
4518         (build_new_function_call): Likewise.
4519         (build_object_call): Likewise.
4520         (build_new_op): Likewise.
4521         (build_new_method_call): Likewise.
4522         * class.c (instantiate_type): Likewise.
4523         * cp-tree.h (unification_kind_t): New type.
4524         (fn_type_unification): Adjust prototype.
4525         (type_unificaiton): Likewise.
4526         * pt.c (UNIFY_ALLOW_NONE): New macro.
4527         (UNIFY_ALLOW_MORE_CV_QUAL): Likewise.
4528         (UNIFY_ALLOW_LESS_CV_QUAL): Likewise.
4529         (UNIFY_ALLOW_DERIVED): Likewise.
4530         (unify): Change prototype.
4531         (maybe_adjust_types_for_deduction): New function.
4532         (check_cv_quals_for_unify): Likewise.
4533         (determine_specialization): Adjust.
4534         (fn_type_unification): Likewise.
4535         (type_unification): Likewise.
4536         (type_unification_real): Likewise.  Use
4537         maybe_adjust_types_for_deduction.  Fix mishandling of
4538         back-unification of template functions passed as arguments.  Pass
4539         appropriate combination of UNIFY_ALLOW_* to unify.
4540         (unify): Remove unused NTPARMS parameter.  Use
4541         check_cv_quals_for_unify.  Remove bogus code that allowed
4542         too-generous unification in order to adhere more closely to standard.
4543         (get_bindings_real): Adjust.
4544         (get_class_bindings): Likewise.
4545
4546         * method.c (build_overload_identifier): Only use the innermost
4547         template arguments when mangling.
4548         * pt.c (tsubst_template_argument_vector): New function.
4549         (complete_template_args): Deal with the situation where the
4550         extra_args contain more than one level of arguments.
4551         (lookup_template_class): Deal with member template classes, which
4552         may have more than one level of arguments.
4553         (tsubst): Don't tsbust into the TREE_TYPE of an IDENTIFIER_NODE.
4554         Improve handling of member template classes.  Use
4555         DECL_PRIMARY_TEMPLATE instead of inline expansion.  Use
4556         tsubst_template_argument_vector where appropriate.
4557         (regenerate_decl_from_template): Break out from ...
4558         (instantiate_decl): Here.
4559
4560         * lex.c (yyprint): Remove TYPENAME_ELLIPSIS.
4561         * parse.h: Regenerated.
4562         * parse.c: Really regenerated.
4563
4564         * cp-tree.h (finish_unary_op_expr): New function.
4565         (finish_id_expr): Likewise.
4566         (begin_new_placement): Likewise.
4567         (finish_new_placement): Likewise.
4568         (finish_declarator): Likewise.
4569         (finish_translation_unit): Likewise.
4570         (finish_parmlist): Likewise.
4571         (begin_class_definition): Likewise.
4572         (finish_class_definition): Likewise.
4573         (finish_default_args): Likewise.
4574         (finish_inline_definitions): Likewise.
4575         * parse.y (GCC_ASM_KEYWORD): Remove.
4576         (TYPENAME_ELLIPSIS): Likewise.
4577         * parse.c: Regenerated.
4578         Use new functions in semantics.c in the actions for many rules.
4579         * gxx.gperf (GCC_ASM_KEYWORD): Just use ASM_KEYWORD.
4580         * hash.h: Regenerated.
4581         * semantics.c (finish_expr_stmt): Allow NULL expr.
4582         (finish_unary_op_expr): New function, containing
4583         code previously in parse.y.
4584         (finish_id_expr): Likewise.
4585         (begin_new_placement): Likewise.
4586         (finish_new_placement): Likewise.
4587         (finish_declarator): Likewise.
4588         (finish_translation_unit): Likewise.
4589         (finish_parmlist): Likewise.
4590         (begin_class_definition): Likewise.
4591         (finish_class_definition): Likewise.
4592         (finish_default_args): Likewise.
4593         (finish_inline_definitions): Likewise.
4594
4595 Sun May 10 23:43:13 1998  Mark Mitchell  <mmitchell@usa.net>
4596
4597         * typeck.c (build_c_cast): Don't decay arrays and functions to
4598         pointer type when converting to a class type.
4599
4600 Sun May 10 22:53:56 1998  Jason Merrill  <jason@yorick.cygnus.com>
4601
4602         * cp-tree.h (DECL_NAMESPACE_SCOPE_P): New macro.
4603         (DECL_CLASS_SCOPE_P): Likewise.
4604
4605 Sun May 10 22:48:22 1998  H.J. Lu  (hjl@gnu.org)
4606
4607         * class.c (finish_struct_1): Use OVL_CURRENT on TREE_VEC_ELT.
4608         * decl2.c (constructor_name_full): Likewise.
4609
4610 Sun May 10 22:48:12 1998  Mike Stump  <mrs@wrs.com>
4611
4612         * tree.c (mapcar): Add OVERLOAD support.
4613
4614         * init.c (resolve_offset_ref): We must use basetype_path before we
4615         destroy it with a call to convert_pointer_to.
4616
4617 Sat May  9 14:44:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
4618
4619         * class.c (currently_open_class): New fn.
4620         * decl.c (lookup_name_real): Use it.
4621         * search.c (lookup_field): Likewise.
4622
4623 Fri May  8 23:32:42 1998  Martin von Löwis  <loewis@informatik.hu-berlin.de>
4624
4625         * cp-tree.def (OVERLOAD): New node.
4626         * cp-tree.h (BINDING_TYPE, SET_IDENTIFIER_GLOBAL_VALUE,
4627         SET_IDENTIFIER_NAMESPACE_VALUE): Define.
4628         (NAMESPACE_BINDING): Remove.
4629         (IDENTIFIER_GLOBAL_VALUE, IDENTIFIER_NAMESPACE_VALUE): Use
4630         namespace_binding.
4631         (OVL_FUNCTION, OVL_CHAIN, OVL_CURRENT, OVL_NEXT, OVL_USED):
4632         Define.
4633         (tree_overload): New struct.
4634         (IDENTIFIER_TYPE_VALUE): Use identifier_type_value.
4635         (REAL_IDENTIFIER_TYPE_VALUE): Define.
4636         (IDENTIFIER_HAS_TYPE_VALUE): Use IDENTIFIER_TYPE_VALUE.
4637         (lang_decl_flags): Remove in_namespace.
4638         (lang_decl): Remove chain.
4639         (DECL_CHAIN, DECL_NAMESPACE): Remove.
4640         (flag_honor_std): Declare extern.
4641         (identifier_type_value, pushdecl_namespace_level, push_using_decl,
4642         namespace_binding, set_namespace_binding,
4643         lookup_function_nonclass, cat_namespace_levels,
4644         set_decl_namespace, lookup_arg_dependent, binding_init, ovl_cons,
4645         scratch_ovl_cons, ovl_member, build_overload): Declare.
4646         (decl_list_length, get_namespace_id, current_namespace_id,
4647         overloaded_globals_p): Remove.
4648         (lookup_using_namespace, qualified_lookup_using_namespace): Change
4649         return type.
4650         (push_scratch_obstack): New macro.
4651         * call.c (add_function_candidate): Special-case type of OVERLOAD node.
4652         (build_user_conversions_1): Iterate using OVL_NEXT for ctors,
4653         convs, fns.
4654         (build_new_function_call): Iterate using OVL_CHAIN.
4655         Print DECL_NAME in when reporting ambiguities.
4656         (build_object_call): Iterate using OVL_NEXT for fns, convs.
4657         (build_new_op): Call lookup_function_nonclass.
4658         Iterate using OVL_NEXT.
4659         (build_op_delete_call): Change detection of members.
4660         Do not wrap TREE_LIST around fields and single global functions.
4661         (build_over_call): Don't push a class level if the context is a
4662         namespace.
4663         (build_new_method_call): Iterate using OVL_NEXT.
4664         * class.c (add_method): Chain overloaded members using
4665         build_overload.  Remove copying of method.
4666         (grow_method): When iterating through the obstack, expect OVERLOAD
4667         nodes.  Chain overload members.
4668         (finish_struct_methods): Chain overload members.  Unpack OVERLOAD
4669         nodes in call to get_baselinks.
4670         (duplicate_tag_error): Expect OVERLOAD nodes when unchaining.
4671         (finish_struct_1): Iterate over ctor using OVL_NEXT.  Handle
4672         fdecls that are OVERLOAD nodes.
4673         (validate_lhs): New function.
4674         (instantiate_type): Do not copy OVERLOAD nodes.  Remove dead
4675         code.  Use DECL_NAME in error messages.  Split code between global
4676         and member function processing.
4677         * decl.c (global_type_node): New static variable.
4678         (in_std): New global.
4679         (struct binding_level): New field usings.
4680         (resume_binding_level): Assert that we are not in a class.
4681         (toplevel_bindings_p): Just check for namespace_p or
4682         pseudo_global.
4683         (resume_level): Remove.
4684         (find_binding): New function.
4685         (binding_for_name): Call it.
4686         (namespace_binding, set_namespace_binding): New functions.
4687         (push_namespace): Associate binding level with new namespace,
4688         resume_binding_level for existing namespace.  Remove old code.
4689         Fake std by counting.
4690         (store_bindings): Use REAL_IDENTIFIER_TYPE_VALUE.
4691         (maybe_push_to_top_level): Save current namespace.
4692         (pop_from_top_level): Restore saved namespace.
4693         (pop_namespace): Call suspend_binding_level.  Remove old code.
4694         (cat_namespace_levels): New function.
4695         (set_identifier_type_value_with_scope): For namespace bindings,
4696         set BINDING_TYPE, and use global_type_node.
4697         Use REAL_IDENTIFIER_TYPE_VALUE otherwise.
4698         (identifier_type_value): New function.
4699         (pushtag): If no context, use current_namespace.
4700         (duplicate_decls): Don't process DECL_CHAIN.
4701         (pushdecl): Set DECL_CONTEXT to current_namespace, if it is not
4702         already set.  Never reset it to NULL_TREE.  Lookup global variables
4703         in their namespace.  Push overloaded templates if they are on
4704         namespace level.
4705         (pushdecl_namespace_level): New function.
4706         (pushdecl_top_level): Implement using pushdecl_namespace_level.
4707         (pushdecl_using_decl): New function.
4708         (overloaded_globals_p): Remove.
4709         (push_overloaded_decl): Create OVERLOAD nodes, and iterate through
4710         them.  Use namespace_binding and set_namespace_value.
4711         (redeclaration_error_message): Complain if the declarations come
4712         from different namespaces.
4713         (lookup_tag): On namespace level, look in the BINDING_TYPE.
4714         (lookup_namespace_name): Pass tree_bindings from stack.  Remove
4715         old code.
4716         (select_decl): New function.
4717         (lookup_name_real): Call it for qualified and unqualified lookup.
4718         Pass tree_bindings from the stack.
4719         If prefer_type is 1, also accept namespaces.
4720         (lookup_function_nonclass): New function.
4721         (init_decl_processing): Set the binding level of the global
4722         namespace to global_binding_level.
4723         Build a proper type list for __builtin_apply.
4724         Initialize std_node to "fake std" if flag_honor_std is set.
4725         Initialize global_type_node.
4726         Allocated bad_alloc in namespace std if flag_honor_std.
4727         (define_function): Set the DECL_CONTEXT to the current_namespace.
4728         (start_decl): A namespace is not considered as a context here.  If
4729         the DECL_CONTEXT is a namespace, push the decl.
4730         (cp_finish_decl): Check for namespaces used as initializers.
4731         (grokfndecl): Add namespace parameter.  Remove processing of
4732         DECL_CHAIN.
4733         (grokvardecl): Add namespace parameter.
4734         (grokdeclarator): Process SCOPEs that are namespaces.  For
4735         mangling, temporarily set the DECL_CONTEXT on anonymous structs.
4736         (start_function): Check for contexts that are namespaces.
4737         Set context for declarations that have not been pushed.
4738         (store_parm_decls): Check for ::main only.
4739         (finish_function): Likewise.
4740         (start_method): Check for contexts that are namespaces.
4741         (start_method): Remove DECL_CHAIN processing.
4742         * decl2.c (flag_honor_std): Declare.
4743         (lang_decode_option): Set it if -fhonor-std or -fnew-abi is given.
4744         (decl_namespace_list): New static global.
4745         (grok_x_components): Ignore namespaces as type contexts.
4746         (check_classfn): Expect OVERLOAD nodes.
4747         (grokfield): Remove DECL_CHAIN processing.
4748         (finish_file): Call cat_namespace_levels.
4749         (merge_functions): New function.
4750         (ambiguous_decl): Rewrite.
4751         (lookup_using_namespace): Produce tree_bindings.
4752         (qualified_lookup_using_namespace): Likewise.
4753         (set_decl_namespace, decl_namespace, current_decl_namespace,
4754         push_decl_namespace, pop_decl_namespace): New functions.
4755         (arg_lookup): New struct.
4756         (add_function, arg_assoc_namespace, arg_assoc_class,
4757         arg_assoc_type, arg_assoc_args, arg_assoc, lookup_arg_dependent):
4758         New functions.
4759         (get_namespace_id, current_namespace_id): Remove.
4760         (do_toplevel_using_decl): Rewrite.
4761         (do_class_using_decl): Complain about namespace qualifiers.
4762         (do_using_directive): Sorry if not on namespace level.  Complain
4763         about unknown namespaces.
4764         * error.c (dump_aggr_type): Check for namespace contexts.
4765         * except.c (init_exception_processing): Push terminate into std.
4766         * friend.c (is_friend): A namespace is not a context, here.
4767         * init.c (expand_member_init): Remove DECL_CHAIN processing.
4768         (build_offset_ref): Process OVERLOAD nodes.
4769         * lang-specs.h (__HONOR_STD): Define if -fnew-abi or -fhonor-std.
4770         * lex.c (identifier_type): Loop using OVL_CHAIN.
4771         (see_typename): Set looking_for_typename to 2.
4772         (real_yylex): Likewise.
4773         (do_identifier): Expect OVERLOAD nodes instead of TREE_LISTs.
4774         (do_scoped_id): Expect OVERLOAD nodes.
4775         Change calling convention for qualified_lookup_using_namespace.
4776         (build_lang_decl): Don't set in_namespace anymore.
4777         * method.c (typevec_size): New global.
4778         (build_overload_nested_name): Return if global_namespace.
4779         Otherwise, always expect a declaration context.
4780         (build_qualified_name): Likewise.
4781         Make sure we don't write beyond typevec_size.
4782         (build_decl_overload_real): Likewise.
4783         Allocate one extra slot for the namespace.
4784         (hack_identifier): Mark code dead.
4785         Process OVERLOAD and NAMESPACE_DECL nodes.
4786         * parse.y (program): Pop namespaces until in global namespace.
4787         (extdef): In a using-declaration, don't discard the identifier if
4788         there is no declaration.
4789         (left_curly): Ignore type contexts which are namespaces.
4790         (typename_sub2): Use IDENTIFIER_TYPE_VALUE to retrieve the type
4791         used as scope.
4792         * pt.c (template_class_depth): Expect types to be namespaces.
4793         (determine_specialization): Simplify by expecting OVERLOAD nodes.
4794         (push_template_decl): Push into namespace level.
4795         Reset ctx if it is a namespace.
4796         Set DECL_CONTEXT to current_namespace if not set already.
4797         Ignore real contexts that are namespaces.
4798         (mangle_class_name_for_template): Skip global_namespace.
4799         Mangle other namespaces as declarations.
4800         (lookup_template_function): Set type of OVERLOAD nodes to unknown.
4801         (lookup_template_class): Push into namespace of context.
4802         If the context is a namespace, set it to global_namespace.
4803         Use id_context for mangling.
4804         (for_each_template_parm): Handle OVERLOAD and NAMESPACE_DECL nodes.
4805         (tsubst_friend_function): Ignore namespace contexts.
4806         Push into namespace level.
4807         (tsubst): Handle NAMESPACE_DECL nodes.
4808         Remove DECL_CHAIN processing.
4809         (type_unification_real): Recognize OVERLOAD instead of TREE_LIST nodes.
4810         * ptree.c (print_lang_identifier): Print bindings.
4811         (lang_print_xnode): Print OVERLOAD nodes.
4812         * rtti.c (init_rtti_processing): Push type_info into std.
4813         * search.c (lookup_fnfields_here): Expect OVERLOAD nodes.
4814         (lookup_fnfields_1, get_virtuals_named_this, get_matching_virtual,
4815         dfs_debug_mark, dfs_pushdecls, dfs_compress_decls, add_conversions,
4816         lookup_fnfields_here): Likewise.
4817         Process all nodes, instead of going through TREE_CHAIN.
4818         * sig.c (build_signature_pointer_or_reference_type): Set context
4819         to global_namespace.
4820         (build_signature_table_constructor): Expect OVERLOAD nodes.
4821         * spew.c (yylex): Save old setting of looking_for_typename.
4822         * tree.c (decl_list_length): Remove.
4823         (binding_init): New function.
4824         (count_functions): Rewrite.
4825         (is_overloaded_fn): Expect OVERLOAD nodes.
4826         (really_overloaded_fn, get_first_fn, lvalue_type): Likewise.
4827         (ovl_cons, scratch_ovl_cons, build_overload, build_overload_after,
4828         ovl_member): New functions.
4829         * typeck.c (require_complete_type): Expect OVERLOAD nodes.
4830         (type_unknown_p): Likewise.
4831         (require_instantiated_type): Likewise.
4832         (build_component_ref): Declare code dead.
4833         (build_x_function_call): Create and expect OVERLOAD nodes.
4834         (build_function_call_real): Check for ::main only.
4835         (build_unary_op): Likewise.  Expect OVERLOAD nodes.
4836         (convert_for_assignment): Check for TREE_LIST before accessing
4837         TREE_VALUE.
4838         * decl.c (duplicate_decls): Check for namespace bindings instead
4839         of global bindings.
4840         (pushdecl, push_overloaded_decl, lookup_tag, lookup_name_real,
4841         lookup_name_current_level, start_decl, xref_tag,
4842         finish_enum): Likewise.
4843         * init.c (build_offset_ref): Likewise.
4844         * search.c (lookup_field): Likewise.
4845         (lookup_fnfields): Likewise.
4846         (dfs_debug_mark): Likewise.
4847         * decl.c (poplevel): Use SET_IDENTIFIER_TYPE_VALUE.
4848         (poplevel_class, pop_from_top_level): Likewise.
4849         * decl2.c (finish_method): Likewise.
4850         * class.c (build_vtable): Use SET_IDENTIFIER_GLOBAL_VALUE.
4851         * decl.c (record_builtin_type): Likewise.
4852         (init_decl_processing, grokfndecl): Likewise.
4853         * lex.c (get_time_identifier, do_identifier, do_scoped_id): Likewise.
4854         (make_lang_type): Likewise.
4855         * parse.y (make_thunk): Likewise.
4856         * pt.c (tsubst): Likewise.
4857         * tree.c (debug_binfo): Likewise.
4858         * exception.cc, new.cc, new1.cc, new2.cc, tinfo.cc, tinfo.h,
4859         tinfo2.cc, inc/new.h: Add std qualifications.
4860         * inc/new: Wrap with namespace std if __HONOR_STD.
4861         * inc/typeinfo: Likewise.
4862
4863 Fri May  8 00:43:50 1998  Jason Merrill  <jason@yorick.cygnus.com>
4864
4865         * call.c (build_user_type_conversion_1): Handle second_conv
4866         properly for templates.
4867
4868 Thu May  7 17:09:25 1998  Andrew MacLeod  <amacleod@cygnus.com>
4869
4870         * method.c (build_decl_overload_real): Set TREE_USED flag to
4871         zero for build_type_variants nodes as well.
4872
4873 Wed May  6 19:27:09 1998  Jason Merrill  <jason@yorick.cygnus.com>
4874
4875         * pt.c (tsubst): Don't tsubst the type of an IDENTIFIER_NODE.
4876
4877 Wed May  6 16:49:48 1998  Jim Wilson  <wilson@cygnus.com>
4878
4879         * Makefile.in (call.o, class.o, decl.o, decl2.o, errfn.o, error.o,
4880         except.o, expr.o, friend.o, init.o, lex.o, method.o, pt.o, repo.o,
4881         rtti.o, search.o, semantics.o, sig.o, tree.o, typeck.o, typeck2.o,
4882         xref.o): Add toplev.h dependencies.
4883
4884 Wed May  6 16:44:58 1998  Jeffrey A Law  (law@cygnus.com)
4885
4886         * errfn.c (cp_error, cp_warning): Remove declarations for
4887         error and warning respectively.
4888
4889 Wed May  6 14:28:18 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4890
4891         * error.c: Convert to using ctype macros defined in system.h.
4892         * method.c: Likewise.
4893         * xref.c: Likewise.
4894         * lex.c: Likewise.  Also remove redundant system header stuff.
4895
4896 Wed May  6 06:36:41 1998  Robert Lipe  <robertl@dgii.com>
4897
4898         * call.c, class.c, decl.c, decl2.c, errfn.c, error.c, except.c,
4899         expr.c, friend.c, init.c, lex.c, method.c, pt.c, repo.c, rtti.c,
4900         search.c, semantics.c, sig.c, tree.c, typeck.c, typeck2.c,
4901         xref.c: Add include of toplev.h.
4902
4903 Wed May  6 02:33:39 1998  Jason Merrill  <jason@yorick.cygnus.com>
4904
4905         * tree.c (perm_manip): Also regenerate the RTL of an extern.
4906         (copy_to_permanent): Use end_temporary_allocation.
4907
4908 Tue May  5 23:54:04 1998  Jason Merrill  <jason@yorick.cygnus.com>
4909
4910         * init.c (expand_vec_init): The initialization of each array
4911         element is a full-expression.
4912
4913 Tue May  5 18:24:13 1998  Andrew MacLeod  <amacleod@cygnus.com>
4914
4915         * method.c (build_mangled_name): Add a call to build_type_variant
4916         to get the right type.
4917
4918 Tue May  5 01:25:03 1998  Jason Merrill  <jason@yorick.cygnus.com>
4919
4920         * Makefile.in: Add .SUFFIXES.
4921
4922         * cp-tree.def: Remove NAMESPACE_DECL.
4923
4924 Sun May  3 01:32:14 1998  Jason Merrill  <jason@yorick.cygnus.com>
4925
4926         * call.c (build_over_call): Do evaluate arg even if it has empty
4927         class type.
4928         * decl.c (start_function): Don't push a member function.
4929
4930 Thu Apr 30 18:59:23 1998  Jim Wilson  <wilson@cygnus.com>
4931
4932         * Makefile.in (g++FAQ.info): Put -o option before input file.
4933
4934 Thu Apr 30 13:05:33 1998  Andrew MacLeod  <amacleod@cygnus.com>
4935
4936         * gxxint.texi: Add info for squangling codes K and B.
4937
4938 Tue Apr 28 13:22:01 1998  Mark Mitchell  <mmitchell@usa.net>
4939
4940         * semantics.c (begin_stmt_expr): Avoid duplicating the effect of
4941         the expression in templates.
4942         (finish_stmt_expr): Likewise.
4943
4944 1998-04-28  Brendan Kehoe  <brendan@cygnus.com>
4945
4946         * decl2.c (ambiguous_decl): Fix NAME parm to be a tree, not int.
4947
4948 Mon Apr 27 13:58:10 1998  Mark Mitchell  <mmitchell@usa.net>
4949
4950         * decl.c (maybe_push_to_top_level): Always clear
4951         current_template_parms and processing_template_decl.
4952         (pushtag): Remove check of current_class_type and some comments,
4953         since maybe_push_to_top_level no longer creates confusion.
4954
4955 Sun Apr 26 12:10:18 1998  Mark Mitchell  <mmitchell@usa.net>
4956
4957         * cp-tree.h (CLASSTYPE_IS_TEMPLATE): New macro.
4958         (DECL_CLASS_TEMPLATE_P): Likewise.
4959         (DECL_PRIMARY_TEMPLATE): Likewise.
4960         (PRIMARY_TEMPLATE_P): Use it.
4961         (push_template_decl_real): New function.
4962         (redeclare_class_template): Take new template parameters as
4963         input.
4964         (is_specialization_of): New function.
4965         (comp_template_args): Declare.
4966         * decl.c (pushtag): Handle friend template classes.
4967         (xref_tag): Likewise.  Use new calling convention for
4968         redeclare_class_template.
4969         * decl2.c (grok_x_components): Handle friend templates.
4970         * friend.c (is_friend): Use is_specialization_of where
4971         appropriate.  Deal with friend class templates.
4972         (make_friend_class): Let a class template be friends with itself.
4973         * pt.c (comp_template_args): Remove declaration.
4974         (tsubst_friend_class): New function.
4975         (push_template_decl_real): New function.
4976         (push_template_decl): Use it.
4977         (redeclare_class_template): Adjust for new calling convention.
4978         (comp_template_args): Give it external linkage.
4979         (instantiate_class_type): Use tsubst_friend_class to deal
4980         with friend templates.
4981         * typeck.c (comptypes): Use comp_template_args, rather than
4982         expanding it inline.
4983         * parse.y (component_decl): Handle a nested template type
4984         like other component type declarations.
4985
4986         * pt.c (check_explicit_specialization): Handle overloaded
4987         constructors correctly.
4988
4989         * pt.c (mabybe_get_template_decl_from_type_decl): New function.
4990         (lookup_template_class): Use it.
4991
4992 Thu Apr 23 21:19:06 1998  Jason Merrill  <jason@yorick.cygnus.com>
4993
4994         * cp-tree.def: Add WRAPPER.  USER_CONV now only has two ops.
4995         * cp-tree.h: Add WRAPPER support.
4996         * call.c (add_candidate): Split out from add_*_candidate fns.
4997         (build_over_call): Take the candidate instead of function and args.
4998         Enforce access control here.  Emit overload warnings here.
4999         (add_warning): New fn.
5000         (joust): Add WARN parm.  If not set, call add_warning instead of
5001         printing a warning.  Re-enable some warnings.
5002         (tourney): Pass it.
5003         (convert_like): Adjust.
5004         (build_new_op): Adjust.
5005         (build_new_function_call): Adjust.
5006         (build_user_type_conversion_1): Adjust.
5007         (USER_CONV_FN): Adjust.
5008         * tree.c (build_expr_wrapper, build_expr_ptr_wrapper,
5009         build_int_wrapper): New fns.
5010
5011 Thu Apr 23 18:27:53 1998  Mark P. Mitchell  <mmitchell@usa.net>
5012
5013         * pt.c (unify): Fix typo in previous change.
5014
5015 Thu Apr 23 09:32:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
5016
5017         * error.c (dump_type_real): Declare canonical_name.
5018
5019         * typeck.c (comp_target_types): Fix PMFs.
5020
5021 Wed Apr 22 13:24:48 1998  Mark Mitchell  <mmitchell@usa.net>
5022
5023         * class.c (finish_struct): Set TREE_PRIVATE and TREE_PROTECTED for
5024         the DECL_RESULTs of a member TEMPLATE_DECL, not just the
5025         TEMPLATE_DECL.
5026
5027         * pt.c (tsubst): Decrease the template-level of
5028         TEMPLATE_TEMPLATE_PARMS.  Likewise for the DECL_INITIAL of a
5029         TEMPLATE_PARM_INDEX.
5030         (template_decl_level): New function.
5031         (unify): Make sure to record unifications for template
5032         parameters, even when the parameters exactly match the arguments.
5033         Combine duplicated code for TEMPLATE_TEMPLATE_PARMs and
5034         TEMPLATE_TYPE_PARMS.  Don't try to unify template parameters that
5035         aren't from the level we're currently working on.
5036
5037 Tue Apr 21 22:00:04 1998  Mark Mitchell  <mmitchell@usa.net>
5038
5039         * errfn.c (cp_thing): Use xrealloc, not xmalloc, to copy memory.
5040
5041         * decl2.c (check_member_template): Set DECL_IGNORED for member
5042         class templates, too.
5043
5044         * decl2.c (grokfield): Remangle the name of a member TYPE_DECL.
5045
5046 Tue Apr 21 18:59:11 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
5047
5048         * decl.c (duplicate_decls): Only check DECL_FRIEND_P if function.
5049
5050 Tue Apr 21 14:22:00 1998  Jeffrey A Law  (law@cygnus.com)
5051
5052         * cp-tree.h (intTI_type_node, unsigned_intTI_type_node): Declare.
5053         * decl.c (intTI_type_node, unsigned_intTI_type_node): Define.
5054         (init_decl_processing): Handle TI types.
5055         * typeck.c (unsigned_type, signed_type): Handle TI types.
5056
5057 Sat Apr 18 15:25:21 1998  Jim Wilson  <wilson@cygnus.com>
5058
5059         * g++spec.c (lang_specific_driver): New argument in_added_libraries.
5060         New local added_libraries.  Increment count when add library to
5061         arglist.
5062
5063 Fri Apr 17 21:25:00 1998  Mark Mitchell  <mmitchell@usa.net>
5064
5065         * cp-tree.h (type_as_string_real): New function.
5066         * pt.c (mangle_class_name_for_template): Use it.
5067         * error.c (dump_aggr_type): Change prototype.
5068         (dump_type_prefix): Likewise.
5069         (dump_type_suffix): Likewise.
5070         (dump_type_real): Convert from dump_type.  If desired, the
5071         "canonica" name of a typedef, i.e., the name of the underlying
5072         type, can be printed.
5073         (dump_type): Call dump_type_real.
5074
5075 Fri Apr 17 14:30:45 1998  Jason Merrill  <jason@yorick.cygnus.com>
5076
5077         * decl2.c (lang_decode_option): -fnew-abi implies -fvtable-thunks.
5078
5079         * typeck.c (comp_target_types): Tweak pedantic case.
5080         (comp_target_parms): Tweak pedantic case.  Clean up somewhat.
5081         Return -1 or 1 instead of 1 or 2.
5082         (compparms): Remove STRICT handling.
5083         (convert_for_assignment): Fix handling of pmfs.
5084
5085 Fri Apr 17 14:04:16 1998  Mark Mitchell  <mmitchell@usa.net>
5086
5087         * typeck.c (comp_target_types): Handle references like pointers.
5088         (comp_target_parms): Note that return code from comp_target_types
5089         can be negative to indicate failure.
5090
5091 Fri Apr 17 09:10:52 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
5092
5093         * Make-lang.in (c++.all.build): Don't depend on $(DEMANGLER_PROG),
5094         which requires a working target compiler to build.
5095
5096 Fri Apr 17 08:57:35 1998  Jeffrey A Law  (law@cygnus.com)
5097
5098         * tree.c (avoid_overlap): Add prototype.
5099
5100         * spew.c (num_tokens): Add prototype.
5101         (nth_noken, add_token, consume_token, debug_yychar): Likewise.
5102
5103         * search.c (dfs_check_overlap): Add prototype.
5104         (dfs_no_overlap_yet): Likewise.
5105
5106         * pt.c (original_template): Add prototype.
5107         (inline_needs_template_parms): Likewise.
5108         (push_inline_template_parms_recursive): Likewise.
5109         (retrieve_specialization, register_specialization): Likewise.
5110         (print_candidates, reduce_template_parm_level): Likewise.
5111         (build_template_decl, mark_template_parm): Likewise.
5112         (tsubst_friend_function, get_bindings_real): Likewise.
5113
5114         * method.c (start_squangling): Add prototype.
5115         (end_squangling, check_ktype, issue_ktype): Likewise.
5116         (build_overloaded_scope_ref, check_btype): Likewise.
5117         (build_mangled_template_parm_index): Likewise.
5118
5119         * lex.c (init_cpp_parse): Add prototype.
5120         (handle_cp_pragma, handle_sysv_pragma): Likewise.
5121         (reduce_cmp, token_cmp): Likewise.
5122
5123         * except.c (call_eh_info): Add prototype.
5124         (push_eh_info, get_eh_info, get_eh_value, get_eh_type): Likewise.
5125         (get_eh_caught, get_eh_handlers, do_pop_exception): Likewise.
5126
5127         * decl2.c (is_namespace_ancestor): Add prototype.
5128         (namespace_ancestor, add_using_namespace): Likewise.
5129         (ambiguous_decl): Likewise.
5130
5131         * decl.c (indent): Add prototype.
5132
5133         * call.c (add_template_candidate_real): Add prototype.
5134
5135 Fri Apr 17 01:57:12 1998  Jason Merrill  <jason@yorick.cygnus.com>
5136
5137         * decl2.c (build_expr_from_tree): Just return a PMF.
5138
5139 Fri Apr 17 00:45:12 1998  Mark Mitchell  <mmitchell@usa.net>
5140
5141         * typeck2.c (process_init_constructor): Don't strip cv-qualifiers
5142         when doing initializations.
5143
5144         * pt.c (unify): Use comptypes to compare type args.
5145
5146 Fri Apr 17 00:24:22 1998  Jason Merrill  <jason@yorick.cygnus.com>
5147
5148         * decl.c (duplicate_decls): Fix check for when it's safe to free
5149         the new decl.
5150
5151         * pt.c (mangle_class_name_for_template): Don't pass a typedef type
5152         to type_as_string.
5153
5154 Thu Apr 16 17:47:30 1998  Jeffrey A Law  (law@cygnus.com)
5155
5156         * pt.c (build_template_parm_index): Add prototype.
5157
5158         * search.c (my_tree_cons): Don't clear words outside the
5159         newly allocated node.
5160
5161 Wed Apr 15 15:34:44 1998  Dave Brolley  <brolley@cygnus.com>
5162
5163         * lex.c (init_parse): Now returns char* containing the filename.
5164
5165 Wed Apr 15 13:20:06 1998  John Carr  <jfc@mit.edu>
5166                           Jeff Law   <law@cygnus.com>
5167
5168         * errfn.c: Rework to avoid problems when HOST_WIDE_INT is longer
5169         than a pointer.
5170
5171 Sun Apr 12 22:31:19 1998  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
5172
5173         * cvt.c (cp_convert_to_pointer): Use TYPE_PRECISION.
5174
5175 Fri Apr 10 12:16:49 1998  Benjamin Kosnik  <bkoz@loony.cygnus.com>
5176
5177         * decl.c (duplicate_decls): Don't warn for redundant decls if
5178         friend: let add_friend take care of it.
5179
5180 Thu Apr  9 02:40:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
5181
5182         * sig.c (build_signature_pointer_constructor): Don't set
5183         TREE_HAS_CONSTRUCTOR for a signature pointer.
5184         * cvt.c (ocp_convert): Don't force a temporary for internal structs.
5185         * init.c (resolve_offset_ref): Warn about implicit & on pmfs
5186         here, too.
5187         * typeck.c (build_unary_op): Only allow taking the address of a
5188         real constructor.
5189         * typeck2.c (digest_init): Simplify.
5190         (store_init_value): Don't pedwarn about using { } for pmfs.
5191
5192 Thu Apr  9 22:16:57 1998  Per Bothner  <bothner@cygnus.com>
5193
5194         * cp-tree.h (start_decl):  Update prototype.
5195         * decl.c (start_decl):  Like the C version, new parameters
5196         for the attributes.  Call cplus_decl_attributes here,
5197         (pushdecl):  Like C version, do build_type_copy if TYPE_DECL,
5198         (grokdeclarator):  Pass NULL for new start_decl arguments.
5199         * pt.c (tsubst_expr):  Likewise.
5200         * parse.y:  Merge cplus_decl_attribute calls into start_decl calls.
5201         * typeck.c (common_type): Check TYPE_MAIN_VARIANT.
5202         * lex.c (build_lang_decl): Add lang_name_java.
5203         * class.c (push_lang_context): Add lang_name_java.
5204         * method.c (build_mangled_name): Check for is_java_type.
5205
5206 Thu Apr  9 22:16:57 1998  Benjamin Kosnik  <bkoz@loony.cygnus.com>
5207
5208         * decl.c (grokdeclarator): Check TYPE_MAIN_VARIANT.
5209         * call.c (build_scoped_method_call): Check for TREE_CODE for
5210         VOID_TYPE instead of type ==  void_type_node.
5211         (build_method_call): Likewise.
5212         * decl.c (lookup_name_real): Likewise.
5213         (grokdeclarator): Likewise.
5214         (start_decl): Likewise.
5215         (grokparms): Likewise.
5216         (start_function): Likewise.
5217         (finish_function): Likewise.
5218         (start_method): Likewise.
5219
5220 Thu Apr  9 00:18:44 1998  Dave Brolley  (brolley@cygnus.com)
5221
5222         * lex.c (finput): New variable.
5223         (init_cpp_parse):  Renamed from init_parse.
5224         (init_parse): Handle !USE_CPPLIB.  Call init_cpp_parse when finished.
5225         (finish_parse): New function.
5226         * cp-tree.h (init_lex, init_parse): Remove declarations.
5227
5228 Mon Apr  6 02:25:05 1998  Jason Merrill  <jason@yorick.cygnus.com>
5229
5230         * call.c (build_call): Still evaluate the actual argument.
5231         * class.c (is_empty_class): Update for -fnew-abi.
5232
5233         * decl2.c: -fnew-abi implies -fsquangle.
5234
5235         * method.c (do_build_assign_ref): Don't do anything to copy
5236         an empty class.
5237         (do_build_copy_constructor): Likewise.
5238         * call.c (build_over_call): Likewise.
5239
5240 Sat Apr  4 18:43:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
5241
5242         * tree.c (avoid_overlap): Return a value.
5243
5244 Sat Apr  4 12:52:35 1998  Jeffrey A Law  (law@cygnus.com)
5245
5246         * method.c (check_btype): Add missing argument to xrealloc.
5247         (check_ktype): Likewise.
5248
5249 Fri Apr  3 02:22:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
5250
5251         Implement empty base optimization.
5252         * class.c (finish_struct_1): Add vbase fields earlier.  Set
5253         CLASSTYPE_SIZE of an empty base to 0.  Types with bases can be empty.
5254         * search.c (dfs_check_overlap, dfs_no_overlap_yet): New fns.
5255         (types_overlap_p): New fn.
5256         * tree.c (avoid_overlap): New fn.
5257         (build_base_fields): Use it to avoid overlapping empty bases.
5258         * cp-tree.h, decl2.c, lang-options.h: Add -fnew-abi.
5259
5260         * decl.c (cplus_expand_expr_stmt): Strip unused INDIRECT_REFs.
5261
5262         Re-implement allocation of base class subobjects.
5263         * tree.c (unshare_base_binfos): New fn.
5264         (layout_basetypes): Use it.  Now handles offsets of both virtual and
5265         non-virtual bases, after layout_type.
5266         (layout_vbasetypes): Remove.
5267         (build_base_fields): Generate FIELD_DECLs for each non-virtual base.
5268         (build_vbase_pointer_fields): Split out from old layout_basetypes.
5269         * class.c (finish_base_struct): Lose offset handling code.
5270         Move nonvdtor warning here.  Don't mess with t_binfo anymore.
5271         (finish_struct_1): Don't mess with t_binfo anymore.  Use fns above.
5272         * cp-tree.h: Adjust.
5273
5274 Thu Apr  2 14:25:13 1998  Jason Merrill  <jason@yorick.cygnus.com>
5275
5276         * cp-tree.h: Lose CLASSTYPE_VBASE_SIZE, some unused stuff.
5277         * decl.c, decl2.c, pt.c, ptree.c, lex.c: Likewise.
5278         * class.c (duplicate_tag_error): Likewise.
5279         (finish_struct_1): Set CLASSTYPE_SIZE, CLASSTYPE_MODE, CLASSTYPE_ALIGN.
5280         * tree.c (layout_vbasetypes): Update from layout_record, remove
5281         var_size support, use CLASSTYPE_SIZE instead of CLASSTYPE_VBASE_SIZE.
5282         (layout_basetypes): Likewise.
5283
5284 Wed Apr  1 18:22:25 1998  Jeffrey A Law  (law@cygnus.com)
5285
5286         * class.c, Make sure system.h is included just after config.h.
5287         Delete lingering stdio and errno references too.
5288         * decl.c, errfn.c, parse.y, ptree.c search.c, xref.c: Likewise.
5289
5290 Wed Apr  1 15:38:36 1998  Jason Merrill  <jason@yorick.cygnus.com>
5291
5292         * friend.c (is_friend): Fix access control for local classes.
5293
5294         * class.c (is_empty_class): New fn.
5295         * call.c (build_call): Don't pass empty class objects to a function.
5296
5297 Wed Apr  1 14:58:35 1998  Mark Mitchell  <mmitchell@usa.net>
5298
5299         * call.c (build_over_call): Do name resolution for default
5300         arguments of function templates in the scope of the templates.
5301
5302 Tue Mar 31 13:43:57 1998  Jeffrey A Law  (law@cygnus.com)
5303
5304         * call.c: Include system.h.  Remove includes, declarations and
5305         defines provided by system.h.
5306         * class.c, cvt.c, decl.c, decl2.c, errfn.c error.c: Likewise.
5307         * except.c, expr.c friend.c, g++spec.c, init.c, input.c: Likewise.
5308         * lex.c, parse.y, pt.c, ptree.c repo.c rtti.c, search.c: Likewise.
5309         * semantics.c, sig.c, spew.c, tree.c, typeck.c: Likewise.
5310         * typeck2.c, xref.c: Likewise.
5311         * Makefile.in: Dependencies updated as appropriate.
5312         * Make-lang.in: Likewise.
5313
5314 Mon Mar 30 12:15:00 1998  Mark Mitchell  <mmitchell@usa.net>
5315
5316         * pt.c (fn_type_unification): Allow incomplete unification without
5317         an immediate error message.
5318
5319 Mon Mar 30 08:55:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
5320
5321         * tree.c (member_p): New fn.
5322         * decl2.c (finish_file): Only set DECL_STATIC_FUNCTION_P for
5323         initializing class members.
5324
5325         * cp-tree.def (TEMPLATE_PARM_INDEX): Class 'x'.
5326         * ptree.c (lang_print_xnode): Handle TEMPLATE_PARM_INDEX.
5327
5328         * call.c (build_method_call): Handle non-scoped destructors, too.
5329         * pt.c (tsubst_copy): Likewise.
5330
5331         * pt.c (print_template_context): Split out...
5332         (push_tinst_level): ...from here.
5333
5334         * friend.c (is_friend): Don't pass a type to decl_function_context.
5335
5336         * typeck.c (convert_for_initialization): Always hand off
5337         conversions to class type.
5338
5339 Sun Mar 29 20:01:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
5340
5341         * friend.c (is_friend): Local classes have the same access as the
5342         enclosing function.
5343
5344 Sun Mar 29 00:47:32 1998  Jeffrey A Law  (law@cygnus.com)
5345
5346         * typeck.c (expand_target_expr): Delete dead function.
5347
5348         * search.c: Put various prototypes inside #ifdef MI_MATRIX.
5349
5350         * repo.c (save_string): Delete dead function.
5351
5352         * method.c (thunk_printable_name): Delete dead function.
5353
5354         * lex.c (yynextch): Delete dead function.
5355
5356         * expr.c (tree_extract_aggr_init): #if 0 out.
5357
5358         * except.c (do_unwind): Delete dead function.
5359         (easy_expand_asm): Likewise.
5360
5361         * cvt.c (build_conversion_type_1): Delete dead function.
5362
5363         * cp-tree.h (push_expression_obstack): Declare.
5364
5365         * call.c (source_type): #if 0 out.
5366
5367         * class.c (alter_access): Remove unused label.  Add braces
5368         around empty else clause.
5369
5370         * lex.c (yyprint): Fix argument to printf.
5371
5372 Sat Mar 28 17:43:52 1998  Mark Mitchell  <mmitchell@usa.net>
5373
5374         * pt.c (tsubst): Clear TREE_USED for new FUNCTION_DECLs.
5375
5376         * pt.c (instantiate_class_template): Make sure template
5377         arguments are permanent.
5378         * init.c (resolve_offset_ref): Don't go looking around in
5379         template types.
5380
5381         * semantics.c: Add routines to handle expressions, and some
5382         declaration processing.
5383         * parse.y: Use them.
5384         (current_class_depth): Move declaration to cp-tree.h.
5385         * parse.c: Regenerated.
5386         * cp-tree.h: Use them.
5387         (current_class_depth): Declare.
5388         * pt.c (tsubst_copy): Use begin_stmt_expr and finish_stmt_expr.
5389
5390 Fri Mar 27 20:23:18 1998  Mark Mitchell  <mmitchell@usa.net>
5391
5392         * error.c (dump_decl): Be a bit more explicit with template
5393         type arguments, when verbose.
5394
5395 Fri Mar 27 18:16:40 1998  Jason Merrill  <jason@yorick.cygnus.com>
5396
5397         * inc/exception: Reorder closing braces.
5398
5399 Fri Mar 27 13:22:18 1998  Mark Mitchell  <mmitchell@usa.net>
5400
5401         * pt.c (redeclare_class_template): New function.
5402         * cp_tree.h (redeclare_class_template): Declare it.
5403         * decl.c (xref_tag): Use it.
5404
5405 Thu Mar 26 11:16:30 1998  Jason Merrill  <jason@yorick.cygnus.com>
5406
5407         * call.c (build_over_call): Check IS_AGGR_TYPE, not
5408         TYPE_LANG_SPECIFIC.
5409         * typeck.c (convert_arguments): Likewise.
5410
5411         * decl.c (grokdeclarator): Remove const and volatile from type after
5412         setting constp and volatilep.
5413
5414         * class.c (finish_struct_1): Don't warn about bool bitfield larger
5415         than one bit.
5416
5417 Thu Mar 26 10:25:52 1998  Mark Mitchell  <mmitchell@usa.net>
5418
5419         * pt.c (convert_nontype_argument): STRIP_NOPS where appropriate.
5420
5421 Thu Mar 26 10:24:05 1998  Mark Mitchell  <mmitchell@usa.net>
5422
5423         * call.c (build_object_call): Complain about ambiguous operator(),
5424         rather that crashing.
5425         (build_new_op): Likewise.
5426         (build_op_delete_call): Likewise.
5427
5428 Thu Mar 26 10:23:24 1998  Mark Mitchell  <mmitchell@usa.net>
5429
5430         * cvt.c (perform_qualification_conversions): Use comp_target_types
5431         instead of comp_ptr_ttypes.
5432
5433 Wed Mar 25 16:10:50 1998  Mark Mitchell  <mmitchell@usa.net>
5434
5435         * cp-tree.h (enforce_access): Declare.
5436         * call.c (enforce_access): Make it extern, not static.
5437         * class.c (alter_access): Use enforce_access; modify code for ISO
5438         compliance, rather than ARM rules.
5439
5440 Wed Mar 25 12:10:45 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
5441
5442         * cp-tree.h: Fix typo.
5443
5444 Wed Mar 25 02:01:02 1998  Jason Merrill  <jason@yorick.cygnus.com>
5445
5446         * expr.c (cplus_expand_expr): Only do PCC_STATIC_STRUCT_RETURN thing
5447         if (aggregate_value_p (type)).
5448
5449         * decl2.c (constructor_name_full): Handle TYPENAME_TYPE.
5450
5451 Tue Mar 24 16:12:01 1998  Mark Mitchell  <mmitchell@usa.net>
5452
5453         * tree.c (mapcar): When dealing with a DECL, use it's constant
5454         value, if any.
5455         * pt.c (lookup_template_class): Don't mangle the names of template
5456         classes whose arguments are unknown.
5457
5458         * pt.c (tsubst_expr): Handle GOTO_STMT correctly.
5459
5460 Tue Mar 24 12:21:55 1998  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
5461
5462         * decl.c (init_decl_processing): Set TYPE_PRECISON for bools to 1.
5463
5464 Tue Mar 24 12:21:48 1998  Jim Wilson  <wilson@cygnus.com>
5465
5466         * decl.c (init_decl_processing): Initialize TYPE_MAX_VALUE for
5467         boolean_type_node to 1.
5468
5469 Tue Mar 24 10:23:47 1998  Mark Mitchell  <mmitchell@usa.net>
5470
5471         * error.c (dump_expr): Remove unused variable `l'.
5472
5473         * pt.c (for_each_template_parm): New function, created by
5474         converting uses_template_parms.
5475         (tree_fn_t): New typedef.
5476         (uses_template_parms): Use it.
5477         (mark_template_parm): New function.
5478         (push_template_decl): Check that the argument list of a partial
5479         specialization uses all the template parameters.
5480
5481         * Make-lang.in (c++filt): Don't delete cxxmain.c after we're done
5482         with it; we might want it for debugging.
5483         * cp-tree.h (type_unification): Change interface.
5484         * class.c (finish_struct_1): Skip nested template types, just like
5485         ordinary nested types.
5486         (instantiate_type): Use new interface to type_unification.
5487         * lex.c (init_lex): Add __sz as opname for sizeof.
5488         * method.c (build_overload_scope_ref): New function.
5489         (build_overload_int): Handle complex expressions.  Set
5490         numeric_output_need_bar if necessary.
5491         (build_overload_value): Handle non-PARM_DECL nodes; this
5492         routine is now used by build_overload_int.  Remove some
5493         assignments to numeric_output_need_bar.  Use
5494         build_overload_scope_ref.
5495         (build_qualified_name): Note that some template mangled names end
5496         with digits, and set numeric_output_need_bar appropriately.  Use
5497         build_underscore_int.
5498         * pt.c (unify): Change interface.
5499         (type_unification_real): Likewise.
5500         (determine_specialization): Use new interfaces.
5501         (tsubst): Deal gracefully with situations in which the argument
5502         vector is not fully filled.
5503         (fn_type_unification): Use new interfaces.
5504         (type_unification): Likewise.  Remove NOP_EXPR hack.
5505         (type_unification_real): Likewise.
5506         (unify): Likewise.  Deal with unification of complex expressions.
5507
5508 Mon Mar 23 12:24:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
5509
5510         * pt.c (complete_template_args): Initialize skip properly.
5511
5512         * decl.c (make_typename_type): Revert.
5513         (make_implicit_typename): Remove.
5514         (lookup_name_real): Don't call it.  Call lookup_field if we see a
5515         TYPE_DECL from a template base.
5516         * search.c (lookup_field): Do implicit typename stuff.
5517
5518 Sun Mar 22 00:50:42 1998  Nick Clifton  <nickc@cygnus.com>
5519                           Geoff Noer    <noer@cygnus.com>
5520
5521         * Makefile.in: Various fixes for building cygwin32 native toolchains.
5522         * Make-lang.in: Likewise.
5523
5524 Fri Mar 20 18:07:39 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
5525
5526         * pt.c (tsubst, TEMPLATE_TEMPLATE_PARM): Simplify.
5527
5528 Fri Mar 20 10:42:07 1998  Jason Merrill  <jason@yorick.cygnus.com>
5529
5530         * decl.c (make_implicit_typename): Rewrite removed code.
5531         (make_typename_type): Call it if the type we look up comes from
5532         a base that uses template parms.
5533
5534         * pt.c (complete_template_args): Rewrite.
5535         (tsubst, FUNCTION_DECL): Use it.
5536
5537 Fri Mar 20 08:12:43 1998  H.J. Lu  (hjl@gnu.org)
5538
5539         * semantics.c (finish_asm_stmt): Fix combine strings.  Call
5540         c_expand_asm_operands () if output_operands, input_operands or
5541         clobbers is not NULL_TREE.
5542
5543 Fri Mar 20 00:10:19 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
5544
5545         * pt.c (complete_template_args): New function.
5546         (get_bindings): Deal with specializations of function templates
5547         with return type containing parameters from outer class
5548         templates.
5549         (tsubst, TEMPLATE_TEMPLATE_PARM): When reducing parameter level,
5550         substitute arguments and compose a new type.
5551
5552 Thu Mar 19 19:01:48 1998  Mark Mitchell  <mmitchell@usa.net>
5553
5554         * pt.c (tsubst): Clear DECL_PENDING_INLINE_INFO for new
5555         FUNCTION_DECLs.
5556
5557 Thu Mar 19 11:51:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
5558
5559         * decl.c (make_implicit_typename): Lose useless code.
5560
5561         * call.c (standard_conversion): Handle A* -> const A* properly.
5562
5563         * pt.c (get_bindings_real): Rename from get_bindings.  Add
5564         check_rettype parm.
5565         (get_bindings): Pass 1.
5566         (get_bindings_overload): Pass 0.
5567
5568 Wed Mar 19 09:08:12 1998  Mark Mitchell  <mmitchell@usa.net>
5569
5570         * pt.c (check_explicit_specialization): When reverting a static
5571         member function, also remove the `this' parameter from
5572         last_function_parms.
5573
5574 Thu Mar 19 02:27:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
5575
5576         * pt.c (tsubst_copy, CONST_DECL): Don't bother tsubsting
5577         a function context.
5578
5579         * decl.c (store_bindings): Use free_binding_vecs.
5580         (pop_from_top_level): Likewise.
5581
5582 Wed Mar 18 12:41:43 1998  Jason Merrill  <jason@yorick.cygnus.com>
5583
5584         * decl.c (make_implicit_typename): Only change the type of a
5585         TYPENAME_TYPE.
5586
5587 Wed Mar 18 10:09:51 1998  Mark Mitchell  <mmitchell@usa.net>
5588
5589         * semantics.c: New file, containing routines to perform the
5590         semantic phase of parsing.
5591         * parse.y: Use it.
5592         * pt.c (tsubst_expr): Likewise.
5593         * cp-tree.h: Declare the various functions in semantics.c.
5594         Provide macros to access _STMT tree nodes.
5595         * cp-tree.def: Add ASM_STMT tree node.
5596         * Makefile.in, Make-lang.in: Add dependencies on and for
5597         semantics.c.
5598
5599 Wed Mar 18 00:24:10 1998  Jason Merrill  <jason@yorick.cygnus.com>
5600
5601         * pt.c (push_template_decl): Only check primary templates.
5602
5603         * pt.c (check_explicit_specialization): Complain about default args
5604         in explicit specialization.
5605
5606         * parse.y (nomods_initdcl0): Also call cp_finish_decl for a
5607         constructor_declarator.
5608
5609 Tue Mar 17 14:44:54 1998  Mark Mitchell  <mmitchell@usa.net>
5610
5611         * typeck2.c (build_x_arrow): Don't crash when an aggregate type
5612         has no overloaded operator ->.
5613
5614         * call.c (build_field_call): Don't crash when presented with a
5615         field that is actually a nested type.
5616
5617         * decl.c (pushtag): Deal with friend class injection in local
5618         classes.
5619
5620         * call.c (build_object_call): Don't crash if OBJ is a
5621         pointer-to-member-function.
5622
5623 Tue Mar 17 11:40:26 1998  Jason Merrill  <jason@yorick.cygnus.com>
5624
5625         * pt.c (push_template_decl): Complain about template with C linkage,
5626         anonymous template class.
5627
5628 Mon Mar 16 12:10:39 1998  Jason Merrill  <jason@yorick.cygnus.com>
5629
5630         * class.c (pushclass): Only use the mi_matrix stuff #ifdef MI_MATRIX.
5631         * search.c: Likewise.
5632
5633         * lex.c (do_pending_defargs): Only call
5634         maybe_{begin,end}_member_template_processing for FUNCTION_DECLs.
5635
5636         * parse.y (initdcl0_innards): Move maybeasm back into initdcl0 et al.
5637
5638 Mon Mar 16 10:47:22 1998  Mark Mitchell  <mmitchell@usa.net>
5639
5640         * parse.y: Deal with CONSTRUCTORS in new_initializers.
5641
5642 Mon Mar 16 10:54:21 1998  Mark Mitchell  <mmitchell@usa.net>
5643
5644         * pt.c (tsubst_copy): Deal with BIND_EXPR in a way that more
5645         closely mimics the behavior in parse.y.
5646         (tsubst_expr): Return the resulting BLOCK when making a tsubst'ing
5647         into a compound statement.
5648
5649 Sun Mar 15 02:07:26 1998  Jason Merrill  <jason@yorick.cygnus.com>
5650
5651         * cp-tree.h (TEMPLATE_PARMS_FOR_INLINE): New macro.
5652         * pt.c (inline_needs_template_parms): New fn.
5653         (original_template): New fn.
5654         (push_inline_template_parms_recursive): New fn.
5655         (maybe_begin_member_template_processing): Use them.
5656         (maybe_end_member_template_processing): Likewise.
5657         (is_member_or_friend_template): Rename to is_member_template.
5658         Member functions of local classes are never member templates.
5659
5660 Sun Mar 15 01:14:22 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
5661
5662         * lex.c (do_identifier): Handle TEMPLATE_DECL that was
5663         added in the class scope to catch redefinition error.
5664
5665         * pt.c (reduce_template_parm_level): Also copy
5666         the DECL_TEMPLATE_PARMS field.
5667
5668 Sun Mar 15 10:54:08 1998  Mark Mitchell  <mmitchell@usa.net>
5669
5670         * pt.c (tsubst): Clear TYPE_REFERENCE_TO when creating a
5671         reduced-level template type parameter.
5672
5673 Sun Mar 15 12:26:02 1998  Manfred Hollstein  <manfred@s-direktnet.de>
5674
5675         * cp-tree.h (struct lang_decl_flags): Add needs_final_overrider.
5676         (DECL_NEEDS_FINAL_OVERRIDER_P): New macro.
5677         * class.c (override_one_vtable): Set DECL_NEEDS_FINAL_OVERRIDER_P.
5678         * decl.c (duplicate_decls): Propagate it.
5679         * typeck2.c (abstract_virtuals_error): Use two loops to emit
5680         abstract virtual functions and virtual functions which need a
5681         final overrider separately.
5682
5683 Thu Mar 12 09:39:40 1998  Manfred Hollstein  <manfred@s-direktnet.de>
5684
5685         * lang-specs.h: Properly put brackets around array elements in
5686         initializer.
5687
5688         * typeck.c (build_binary_op_nodefault): Correctly place parens around
5689         && and || in expression.
5690
5691 Thu Mar 12 09:26:04 1998  Manfred Hollstein  <manfred@s-direktnet.de>
5692
5693         * call.c (default_parm_conversions): Remove prototype definition.
5694         (build_method_call): Remove unused variable result.
5695
5696         * cvt.c (ocp_convert): Remove unused variable conversion.
5697
5698         * decl2.c (ambiguous_decl): Add explicit parameter definition for name.
5699
5700         * except.c (do_unwind): #if 0 definition of unused variables fcall
5701         and next_pc.
5702
5703         * expr.c (extract_scalar_init): #if 0 prototype and function
5704         definition.
5705
5706         * init.c (expand_aggr_init_1): Remove unused variable init_type.
5707         (build_new_1): Remove unused variable t.
5708
5709         * pt.c (instantiate_class_template): Remove unused variable newtag;
5710         cast called function return value to void.
5711         (do_decl_instantiation): Remove unused variables name and fn.
5712
5713         * tree.c (get_type_decl): Add default return to shut up compiler from
5714         complaining control reaches end of non-void function.
5715
5716         * typeck.c (build_x_conditional_expr): Remove unused variable rval.
5717
5718 Thu Mar 12 09:12:15 1998  Manfred Hollstein  <manfred@s-direktnet.de>
5719
5720         * call.c (default_parm_conversions): Remove prototype definition.
5721         (build_method_call): Remove unused variable result.
5722         (build_over_call): Add default case in enumeration switch.
5723
5724 Thu Mar 12 08:39:13 1998  Manfred Hollstein  <manfred@s-direktnet.de>
5725
5726         * decl2.c (lang_decode_option): Change j's type to size_t.
5727
5728         * tree.c (layout_vbasetypes): record_align and desired_align are of
5729         type unsigned int; const_size and nonvirtual_const_size likewise.
5730
5731 Wed Mar 11 07:25:20 1998  Mark Mitchell  <mmitchell@usa.net>
5732
5733         * parse.y (new_initializer): Make sure all initializers are
5734         lists.
5735
5736 Tue Mar 10 07:32:36 1998  Mark Mitchell  <mmitchell@usa.net>
5737
5738         * decl2.c (import_export_decl): Mark tinfo functions for
5739         cv-qualified versions of class types as DECL_NOT_REALLY_EXTERN.
5740
5741 Fri Mar  6 23:27:35 1998  Jeffrey A Law  (law@cygnus.com)
5742
5743         * method.c: Fix typo.
5744
5745 Fri Mar  6 10:06:59 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5746
5747         * method.c: Include "system.h" to get stdlib.h, stdio.h,
5748         ctype.h, string.h, etc.
5749         (issue_nrepeats): Add default case in enumeration switch.
5750         (check_btype): Likewise.
5751         (process_overload_item): Likewise.
5752
5753         * Makefile.in (method.o): Depend on system.h.
5754
5755 Wed Mar  4 22:26:53 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
5756
5757         * lex.c (do_scoped_id): Fix parenthesizing.
5758
5759 Wed Mar  4 12:11:53 1998  Michael Tiemann  <tiemann@axon.cygnus.com>
5760
5761         * rtti.c (get_tinfo_fn_dynamic): If this function is called an
5762         FLAG_RTTI is unset, initialize type info machinery and continue
5763         with FLAG_RTTI enabled.
5764         (get_typeid): Likewise.
5765
5766 Wed Mar  4 11:47:55 1998  Jason Merrill  <jason@yorick.cygnus.com>
5767
5768         * typeck.c (unary_complex_lvalue): &D::i has type B::* if i comes
5769         from B.
5770
5771 Wed Mar  4 11:28:08 1998  Mark Mitchell  <mmitchell@usa.net>
5772
5773         * pt.c (finish_member_template_decl): Deal more gracefully with
5774         invalid declarations.
5775
5776 Tue Mar  3 01:38:17 1998  Jason Merrill  <jason@yorick.cygnus.com>
5777
5778         * cvt.c, decl.c, decl2.c, init.c, rtti.c, typeck.c, typeck2.c,
5779         cp-tree.h: Clean up more old overloading code, old RTTI code, and
5780         some formatting quirks.
5781
5782         * call.c, class.c, cp-tree.h, cvt.c, decl.c, init.c, lex.c,
5783         method.c, pt.c, ptree.c, typeck.c: Remove support for
5784         -fno-ansi-overloading and overloading METHOD_CALL_EXPR.
5785         * class.h: Remove.
5786         * Makefile.in: Adjust.
5787
5788         * pt.c (unify): Don't allow reduced cv-quals when strict.
5789
5790         * call.c, class.c, pt.c, cp-tree.h: Remove nsubsts parm from
5791         *type_unification* and unify.
5792
5793 Mon Mar  2 12:11:06 1998  Jason Merrill  <jason@yorick.cygnus.com>
5794
5795         * parse.y (explicit_template_type): Remove TEMPLATE keyword.
5796         (nested_name_specifier): And add it before this use.
5797         (typename_sub0): And this use.  Also add use without the keyword.
5798         (typename_sub1): Likewise.
5799         * pt.c (instantiate_class_template): Don't actually instantiate
5800         anything if our type uses template parms.
5801
5802 Mon Mar  2 11:04:59 1998  Jim Wilson  <wilson@cygnus.com>
5803
5804         * decl.c (start_function): Don't call temporary_allocation for a
5805         nested function.
5806
5807 Sun Mar  1 21:06:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
5808
5809         * pt.c (instantiate_class_template): Don't mess with friends if
5810         our type uses template parms.
5811
5812 Sat Feb 28 12:06:44 1998  Jason Merrill  <jason@yorick.cygnus.com>
5813
5814         * parse.y (nested_name_specifier): Use explicit_template_type.
5815         (typename_sub): Allow a template_type, an explicit_template_type,
5816         or an implicit template type at the end.
5817         * lex.c (yyprint): Handle a PTYPENAME being a TEMPLATE_DECL.
5818         * decl.c (make_typename_type): Handle template-id where the name
5819         is a TEMPLATE_DECL.
5820         * call.c (build_scoped_method_call): Handle member template
5821         destructor call.
5822         * pt.c (tsubst_copy, METHOD_CALL_EXPR): Don't assume a member
5823         destructor is represented by the type.
5824
5825         * cp-tree.h (TYPENAME_TYPE_FULLNAME): New macro.
5826         * parse.y (nested_name_specifier): Add 'template' case.
5827         (explicit_template_type): New rule.
5828         (typename_sub): Use it.
5829         * decl.c (make_typename_type): Handle getting a template-id for NAME.
5830         * pt.c (tsubst): Likewise.
5831
5832 Fri Feb 27 11:17:50 1998  Jason Merrill  <jason@yorick.cygnus.com>
5833
5834         * pt.c (add_to_template_args): Fix thinko.
5835         (instantiate_class_template): Call it later.
5836
5837         * pt.c (get_class_bindings): Add outer_args parm.
5838         (most_specialized_class): Likewise.
5839         (instantiate_class_template): Pass it.
5840         (more_specialized_class): Likewise.
5841         (lookup_template_class): Get context from template if none
5842         was specified.
5843         (finish_member_template_decl): Don't do anything with a
5844         partial specialization.
5845         * decl2.c (check_member_template): Use IS_AGGR_TYPE instead of
5846         AGGREGATE_TYPE_P.
5847         * class.c (finish_struct): Member class templates have already been
5848         checked for name clashes.
5849         * decl.c (pushdecl_with_scope): Handle pushing at class level.
5850
5851 Fri Feb 27 02:25:16 1998  Jason Merrill  <jason@yorick.cygnus.com>
5852
5853         * pt.c (tsubst, TEMPLATE_DECL): Support member class templates.
5854         (tsubst, *_PARM): Support multiple levels of template classes.
5855         (instantiate_class_template): Look up the pattern from the
5856         original template.
5857         (lookup_template_class): Handle getting a template for d1.
5858         (push_template_decl): Correct setting of 'primary'.
5859         (reduce_template_parm_level): Add 'levels' parm.
5860         (finish_member_template_decl): Support member class templates.
5861         (template_class_depth): Handle multiple levels.
5862         * parse.y (component_decl_1, fn.def2): Remove member template case.
5863         (component_decl): Add member template cases.
5864         * decl2.c (check_member_template): We now handle member template
5865         classes.
5866         * decl.c (pushtag): Handle member templates.
5867         * method.c (do_inline_function_hair): Don't touch
5868         IDENTIFIER_GLOBAL_VALUE.
5869         * init.c (build_offset_ref): If name isn't an identifier, just
5870         return it.
5871         * spew.c (yylex): Handle PTYPENAME like TYPENAME.
5872
5873         * typeck.c (get_delta_difference): Do adjust for conversions to
5874         and from virtual base.
5875
5876 Wed Feb 25 09:51:29 1998  Jason Merrill  <jason@yorick.cygnus.com>
5877
5878         * typeck.c (get_delta_difference): Give hard error for conversion
5879         from virtual base.
5880
5881         * cp-tree.h: Tweak formatting.
5882
5883 Wed Feb 25 00:35:33 1998  Jason Merrill  <jason@yorick.cygnus.com>
5884
5885         * decl.c (push_namespace): Handle redeclaration error.
5886
5887         * cp-tree.h (IDENTIFIER_NAMESPACE_VALUE): New macro.
5888         (IDENTIFIER_NAMESPACE_BINDINGS): New macro.
5889         (NAMESPACE_BINDING): New macro.
5890         (IDENTIFIER_GLOBAL_VALUE): Use NAMESPACE_BINDING.
5891         * *.c: Use them.
5892
5893         * pt.c (push_template_decl): Use innermost_args.
5894
5895         * decl.c (get_unique_name): Tweak from earlier in the name.
5896
5897 Tue Feb 24 22:15:04 1998  Martin von Löwis  <loewis@informatik.hu-berlin.de>
5898
5899         * cp-tree.def: Add CPLUS_BINDING node.
5900         * cp-tree.h (tree_binding): New struct.
5901         (BINDING_SCOPE, BINDING_VALUE): New macros.
5902         (current_namespace, global_namespace): Declare extern.
5903         (struct lang_decl_flags): New field in_namespace.
5904         (DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): New macros.
5905         (DECL_NAMESPACE, SET_DECL_NAMESPACE): New macros.
5906         (TREE_INDIRECT_USING): New macro.
5907         * decl2.c (current_namespace, global_namespace): Declare.  The
5908         value is a NAMESPACE_DECL now, not a TREE_LIST.
5909         (is_namespace_ancestor, namespace_ancestor): New static functions.
5910         (add_using_namespace, ambiguous_decl): Likewise.
5911         (lookup_using_namespace): New support function for lookup_name.
5912         (qualified_lookup_using_namespace): New support function for
5913         do_scoped_id and lookup_namespace_name.
5914         (get_namespace_id): Mark as obsolete.
5915         (current_namespace_id): Likewise.
5916         (do_namespace_alias): Implement.
5917         (do_using_directive): Implement as call to add_using_namespace.
5918         * decl.c (binding_for_name): New function.
5919         (push_namespace, pop_namespace): Implement.
5920         (push_decl): Don't install a FUNCTION_DECL in the global branch.
5921         (lookup_namespace_name): Implement using qualified lookup.
5922         (lookup_name_real): For global scoping, lookup in
5923         global_namespace.  For namespace scoping, lookup in given
5924         namespace.  For unscoped lookup, iterate over namespace,
5925         considering using directives.
5926         (init_decl_processing): Initialize global_namespace.
5927         (grokvardecl): Build assembler name as static name for globals.
5928         (grokdeclarator): Remove old namespace mangling.
5929         (xref_tag): When installing a global binding for the
5930         tag, make sure we have an identifier.
5931         * method.c (build_overload_nested_name): Mangle namespaces.
5932         (build_qualified_name): Likewise.
5933         (build_decl_overload_real): Likewise.
5934         * lex.c (build_lang_decl): Set namespace for new declaration to
5935         current_namespace.
5936         (do_scoped_id): Find global names in global or current
5937         namespace, or using qualified namespace lookup, depending on
5938         context.
5939         * init.c (build_member_call): When scope is namespace, use
5940         build_x_function_call instead.
5941         (build_offset_ref): When scope is namespace, collapse processing
5942         to lookup_namespace_name instead.
5943         * error.c (dump_decl): Support NAMESPACE_DECL.
5944         * decl.c (pushdecl): Bind globals to current namespace.
5945         (push_overloaded_decl): Likewise.
5946         (lookup_tag): Likewise.
5947         (lookup_name_current_level): Likewise.
5948         (xref_tag): Likewise.
5949         (start_function): Likewise.
5950         * lex.c (do_identifier): Likewise.
5951         (identifier_typedecl_value): Likewise.
5952         (real_yylex): Likewise.
5953         * method.c (do_inline_function_hair): Likewise.
5954         * parse.y (unscoped): Likewise.
5955         * pt.c (check_explicit_specialization): Likewise.
5956         (lookup_template_class): Likewise.
5957         * rtti.c (call_void_fn): Likewise.
5958         * sig.c (build_sigtable): Likewise.
5959         * ptree.c (lang_print_xnode): New function.
5960
5961 Tue Feb 24 01:40:24 1998  Jason Merrill  <jason@yorick.cygnus.com>
5962
5963         * pt.c (instantiate_class_template): Don't instantiate if pedantic
5964         and the args use template parms.
5965
5966         * pt.c (push_tinst_level): If the instantiation uses template parms,
5967         fail silently.
5968         * decl.c (xref_basetypes): Do call complete_type for basetypes
5969         that involve template parameters.
5970
5971 Tue Feb 24 00:36:43 1998  Jason Merrill  <jason@yorick.cygnus.com>
5972
5973         * typeck2.c (process_init_constructor): Fix labeled init check.
5974
5975 Mon Feb 23 05:08:55 1998  Jason Merrill  <jason@yorick.cygnus.com>
5976
5977         * pt.c, call.c, decl.c, method.c, cp-tree.h: Remove unused NARGS
5978         argument to tsubst and friends.
5979
5980         * pt.c (tsubst, FUNCTION_DECL): Tidy.
5981
5982         * typeck.c (build_x_function_call): Handle static member function
5983         templates like non-templates.  Handle friend templates like normal
5984         function templates.
5985         * pt.c (tsubst, *_PARM): Don't use orig_level.
5986         (get_bindings): Don't call add_to_template_args.
5987         (instantiate_template): Likewise.
5988         (tsubst, FUNCTION_DECL): Call add_to_template_args as appropriate.
5989         * ptree.c (print_lang_type): Print index/level for template parms.
5990
5991 Mon Feb 23 02:52:29 1998  Mark Mitchell  <mmitchell@usa.net>
5992
5993         * Make-lang.in (cc1plus): Note that cc1plus depends on
5994         cp/cp-tree.h and cp/cp-tree.def.
5995
5996         * cp-tree.def (TEMPLATE_CONST_PARM): Remove.
5997         (TEMPLATE_PARM_INDEX): New tree code, used to indicate a
5998         position in a template parameter list.
5999         * cp-tree.h (template_parm_index): New structure, used as the tree
6000         structure for a TEMPLATE_PARM_INDEX.
6001         (TEMPLATE_PARM_IDX): New macro.
6002         (TEMPLATE_PARM_LEVEL): Likewise.
6003         (TEMPLATE_PARM_DESCENDANTS): Likewise.
6004         (TEMPLATE_PARM_ORIG_LEVEL): Likewise.
6005         (TEMPLATE_PARM_DECL): Likewise.
6006         (TEMPLATE_TYPE_PARM_INDEX): Likewise.
6007         (TEMPLATE_TYPE_ORIG_LEVEL): Likewise.
6008         (TEMPLATE_TYPE_DECL): Likewise.
6009         (TEMPLATE_CONST_IDX): Remove.
6010         (TEMPLATE_CONST_LEVEL): Likewise.
6011         (TEMPLATE_CONST_SET_INFO): Likewise.
6012         (TEMPLATE_TYPE_SET_INFO): Likewise.
6013         (TEMPLATE_TYPE_IDX): Redefine in terms of TEMPLATE_PARM_INDEX
6014         node.
6015         (TEMPLATE_TYPE_LEVEL): Likewise.
6016         * decl.c (decls_match): Call comp_template_parms, rather than
6017         expanding it inline.
6018         (duplicate_decls): If two template declarations are being merged,
6019         then their TEMPLATE_INFOs should be merged as well.
6020         (grokfndecl): Save template-id information when declaring a friend
6021         with explicit template arguments.  Pass arguments to
6022         check_explicit_specialization via correct convention; at some
6023         point check_explicit_specialization changed, but these call-sites
6024         did not.
6025         (grokdeclarator): Tidy up slightly.
6026         * decl2.c (check_classfn): Tidy up slightly.  Don't assume that
6027         two template functions with the same DECL_ASSEMBLER_NAME the same,
6028         since the names are not yet mangled.
6029         * error.c (dump_decl): Use TEMPLATE_PARM_INDEX instead of
6030         TEMPLATE_CONST_PARM.
6031         (dump_expr): Likewise.  Use the TEMPLATE_PARM_DECL to get at the
6032         decl for a non-type parameter, rather than printing `<tparm ...>'.
6033         * friend.c (is_friend): Handle TEMPLATE_DECL friends.
6034         (do_friend): Deal with template friends.
6035         * lex.c (do_pending_inlines): Call
6036         maybe_begin_member_template_processing, rather than
6037         conditionally calling begin_member_template_processing.
6038         (process_next_inline): Likewise.  Call
6039         maybe_end_member_template_processing, rather than
6040         conditionally calling end_member_template_processing.
6041         (do_pending_defargs): Likewise.
6042         (do_identifier): Use TEMPLATE_PARM_INDEX instead of
6043         TEMPLATE_CONST_PARM.
6044         * method.c (build_mangled_template_parm_index): New function.
6045         (build_overload_value): Use it.
6046         (build_overload_name): Likewise.
6047         * pt.c (finish_member_template_decl): Allow friend declarations.
6048         (template_class_depth): New function.
6049         (is_member_template): Rename, and modify, to become...
6050         (is_member_or_friend_template): New function.
6051         (end_member_template_processing): Rename, and modify, to become...
6052         (maybe_end_member_template_processing).
6053         (build_template_parm_index): New function.
6054         (reduce_template_parm_level): New function.
6055         (process_template_parm): Modify to use build_template_parm_index.
6056         (push_template_decl): Deal with friend templates.
6057         (uses_template_parms): Use TEMPLATE_PARM_INDEX instead of
6058         TEMPLATE_CONST_PARM.
6059         (tsubst_friend_function): New function.
6060         (instantiate_class_template): Generate the DECL_FRIENDLIST
6061         for a new instantiation by using tsubst_friend_function rather
6062         than just tsubst.
6063         (tsubst): Don't tsubst into a type which is a TEMPLATE_DECL.
6064         Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM, and the
6065         appropriate new macros.  Use reduce_template_parm_level to
6066         generate lower-level template parameters.  Handle tsubst'ing into
6067         TEMPLATE_DECLS that declare TEMPLATE_TEMPLATE_PARMS.  Don't forget
6068         to tsubst the DECL_CONTEXT and DECL_CLASS_CONTEXT of newly created
6069         templates.  Similarly for the template parameters for a new
6070         template.
6071         (tsubst_copy): Tidy up slightly.  Use TEMPLATE_PARM_INDEX instead
6072         of TEMPLATE_CONST_PARM.  Handle TYPE_DECLs by tsubsting into them.
6073         (unify): Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM.
6074         (get_bindings): Call add_to_template_args if necessary.
6075         (instantiate_decl): Handle instantiations of friend templates.
6076         * search.c (lookup_field_1): Don't treat the TYPE_FIELDS of a
6077         TEMPLATE_TYPE_PARM as a list of fields; it's not!
6078         * spew.c (yylex): Do a little manual constant propagation to
6079         clarify the code.
6080
6081 Sun Feb 22 19:53:29 1998  Jeffrey A Law  (law@cygnus.com)
6082
6083         * error.c: Include sys/types.h.
6084
6085 Thu Feb 19 14:49:09 1998  Jeffrey A Law  (law@cygnus.com)
6086
6087         * method.c (build_mangled_name): Start CPP directives in column zero.
6088
6089 Thu Feb 19 10:36:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
6090
6091         * typeck2.c (process_init_constructor): Sorry about non-trivial
6092         labeled initializers.
6093         * parse.y (initlist): Re-enable labeled initializers.
6094
6095 Thu Feb 19 10:15:55 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
6096
6097         * pt.c (coerce_template_parms): Add a new parameter, is_tmpl_parm,
6098         all callers changed.  Rely on the new parameter instead of arg
6099         being a TREE_LIST when determine whether we are working inside
6100         template template parameter.  Clean up is_type test.
6101
6102 Thu Feb 19 10:04:12 1998  Jason Merrill  <jason@yorick.cygnus.com>
6103
6104         * cvt.c (cp_convert_to_pointer): Preserve TREE_CONSTANT.
6105         * typeck2.c (initializer_constant_valid_p): Allow conversions
6106         between pointers and references.
6107
6108 1998-02-19  Brendan Kehoe  <brendan@cygnus.com>
6109
6110         * typeck.c (build_unary_op): Only warn about incr/decr a pointer
6111         if pedantic || warn_pointer_arith.
6112
6113 Thu Feb 19 09:37:21 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
6114
6115         * pt.c (unify): Handle TEMPLATE_DECL.
6116
6117 1998-02-18  Brendan Kehoe  <brendan@cygnus.com>
6118
6119         * cp-tree.h (strip_attrs): Remove decl.
6120
6121 1998-02-18  Doug Evans  <devans@cygnus.com>
6122
6123         * decl.c (duplicate_decls): Call merge_machine_decl_attributes.
6124         Update olddecl's attributes too.
6125         (strip_attrs): Remove function.
6126         * typeck.c (common_type): Call merge_machine_type_attributes.
6127
6128 Tue Feb 17 14:07:52 1998  Mark Mitchell  <mmitchell@usa.net>
6129
6130         * parse.y (initdcl0_innards): New grammar symbol.
6131         (nomods_initdecls, nomods_initdcl0): Change type from itype to
6132         none, since the resulting value is never used.
6133         (parse_decl): New function.
6134         (datadef): Remove redundant actions.
6135         (initdcl0, notype_initdcl0, nomods_initdcl0): Use initdcl0_innards.
6136         * parse.c: Regenerated.
6137
6138 Tue Feb 17 11:54:16 1998  Jason Merrill  <jason@yorick.cygnus.com>
6139
6140         * parse.y (simple_stmt): Use getdecls() to check for decl.
6141
6142 Sat Feb 14 11:50:51 1998  Manfred Hollstein  <manfred@s-direktnet.de>
6143
6144         * Make-lang.in (DEMANGLER_INSTALL_NAME, DEMANGLER_CROSS_NAME): New
6145         macros.
6146         (c++.install-common): Install c++filt properly as native or as cross
6147         variant.
6148         (c++.uninstall): Add c++filt.
6149
6150 Fri Feb 13 14:55:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
6151
6152         * call.c (standard_conversion): Fix multi-level ptr conversions.
6153
6154 Fri Feb 13 14:06:22 1998  Mike Stump  <mrs@wrs.com>
6155
6156         * init.c (build_new): Propagate error_mark_node up.
6157
6158 Fri Feb 13 13:24:32 1998  Jason Merrill  <jason@yorick.cygnus.com>
6159
6160         * parse.y (simple_stmt): If the condition isn't a declaration,
6161         start the controlled block after the test.
6162
6163 Fri Feb 13 02:26:10 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
6164
6165         * call.c (build_over_call): Convert builtin abs, labs and fabs to
6166         tree-codes.
6167         * decl.c (init_decl_processing): Re-enable abs, labs and fabs as
6168         builtins.
6169
6170 Fri Feb 13 01:36:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
6171
6172         * call.c (standard_conversion): A BASE_CONV replaces an RVALUE_CONV.
6173
6174 Fri Feb 13 00:21:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
6175
6176         * cp-tree.h: Add access_protected_virtual_node.
6177         * class.c (init_class_processing): Initialize it.
6178         * decl.c (xref_basetypes): Use it.
6179         * parse.y (base_class_access_list): Likewise.
6180
6181         * Make-lang.in (DEMANGLER_PROG): Add $(exeext).
6182         (c++.install-common): Install c++filt.
6183
6184 Thu Feb 12 12:46:51 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
6185
6186         * decl.c (shadow_tag): Give error for typedef-ing built-in types.
6187
6188 Wed Feb 11 23:28:05 1998  Mark Mitchell  <mmitchell@usa.net>
6189
6190         * call.c (reference_binding): Use comptypes when comparing
6191         TYPE_MAIN_VARIANTS to handle non-canonical array/index types.
6192
6193 Wed Feb 11 16:42:04 1998  Mark Mitchell  <mmitchell@usa.net>
6194
6195         * tree.c (is_overloaded_fn): Use really_overloaded_fn.
6196         (really_overloaded_fn): Move check here from is_overloaded_fn.
6197         (get_first_fn): Use really_overloaded_fn and is_overloaded_fn.
6198
6199 Wed Feb 11 15:54:18 1998  Mark Mitchell  <mmitchell@usa.net>
6200
6201         * typeck.c (build_ptrmemfunc): Type-check pointer-to-member
6202         conversions.
6203
6204 Mon Feb  9 22:23:31 1998  Mark Mitchell  <mmitchell@usa.net>
6205
6206         * cp-tree.h (push_template_decl): Return the decl passed in, or an
6207         equivalent duplicate.
6208         * decl.c (pushtag): Use the return value from push_template_decl.
6209         (duplicate_decls): When duplicating a template declaration, merge
6210         the DECL_TEMPLATE_RESULTs as well.
6211         (make_implicit_typename): Don't try to dive into typename types to
6212         find a context for making a new implicit typename.
6213         (start_decl): Use the return value from push_template_decl.
6214         (grokdeclarator): Complain about declarations list `const operator
6215         int'.  Since we don't correctly handle in-class initializations of
6216         non-static data members, complain about this (now illegal)
6217         practice.  Issue an error for initializations of non-const statics
6218         since that is illegal as well, and since we don't handle that case
6219         correctly either.
6220         (start_function): Use the return value from push_template_decl.
6221         (start_method): Likewise.
6222         * decl2.c (grokfield): Likewise.  Since the change to
6223         grokdeclarator ensures that all initialized fields are in fact
6224         static, remove a redundant test for TREE_PUBLIC.
6225         * parse.y (initlist): Disable labeled initializers since they do
6226         not work as per the documentation, and since they do not use the
6227         same syntax as the C front end.
6228         * pt.c (push_template_decl): Return the decl passed in, or an
6229         equivalent duplicate.
6230         (lookup_template_class): When searching in a nested context,
6231         use the right arguments.
6232         (uses_template_parms): Handle the DECL_INITIAL for a CONST_DECL.
6233         * typeck.c (build_component_ref): Assign the correct type to the
6234         result of build_vfn_ref.
6235
6236 Tue Feb 10 23:56:46 1998  Jason Merrill  <jason@yorick.cygnus.com>
6237
6238         * pt.c (convert_nontype_argument): Fix typo.
6239         (check_explicit_specialization): Allow old-style specialization
6240         of class template members.
6241
6242 Tue Feb 10 20:36:52 1998  Jason Merrill  <jason@yorick.cygnus.com>
6243                           Manfred Hollstein  <manfred@s-direktnet.de>
6244
6245         * decl.c (grokdeclarator): Use DECL_USE_TEMPLATE instead
6246         when deciding to override DECL_ASSEMBLER_NAME.
6247
6248 Tue Feb 10 15:30:55 1998  Andrew MacLeod  <amacleod@torpedo.to.cygnus.com>
6249
6250         * decl2.c (lang_f_options): Add -fsquangle to option processing list.
6251         * cp-tree.h (flag_do_squangling): Add declaration.
6252         * lang-options.h: Add -fsquangle and -fno-squangle.
6253         * method.c: Add macros and static variables for squangling.
6254         (build_overload_name): Rename to build_mangled_name, add logic for B
6255         compression, and split into process_modifiers and
6256         process_overload_item.
6257         (process_modifiers): New function, to handle constant, reference,
6258         and pointer types.
6259         (process_overload_item): New function, handles issue of type codes.
6260         (build_overload_name): New function, start squangling and call
6261         build_mangled_name.
6262         (ALLOCATE_TYPEVEC, DEALLOCATE_TYPEVEC): Remove macro and expand inline.
6263         (start_squangling): New function to initialize squangling structs.
6264         (end_squangling): New function to destroy squangling structs.
6265         (nrepeats): Rename variable to Nrepeats.
6266         (issue_nrepeats): New function for issuing 'n' type repeats.
6267         (check_ktype): New function to check for type K name compression.
6268         (build_overload_nested_name): Add a check for K name compression.
6269         (build_qualified_name): Add a check for K name compression and don't
6270         use DECL_ASSEMBLER_NAME when squangling is on.
6271         (check_btype): New function, checks for B type compression.
6272         (build_static_name, build_decl_overload_real): Initiate squangling.
6273         (build_typename_overload, build_overload_with_type): Initiate
6274         squangling
6275
6276 Sun Feb  8 23:47:38 1998  scott snyder  <sss@d0linux01.fnal.gov>
6277
6278         * method.c (make_thunk): Avoid name buffer overflow.
6279
6280 Sat Feb  7 16:48:54 1998  Jason Merrill  <jason@yorick.cygnus.com>
6281
6282         * pt.c (instantiate_decl): Call cp_finish_decl for vars even if we
6283         don't define them yet.
6284
6285         * parse.y (nomods_initdcl0): Add constructor_declarator case.
6286
6287 Fri Feb  6 21:32:25 1998  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
6288
6289         * config-lang.in (diff_excludes): Use basename only.
6290
6291 Thu Feb  5 19:10:40 1998  Jason Merrill  <jason@yorick.cygnus.com>
6292
6293         * tinfo2.cc: Add tinfo for signed char.
6294
6295 Thu Feb  5 14:38:23 1998  Mike Stump  <mrs@wrs.com>
6296
6297         * search.c (compute_access): Handle protected constructors in derived
6298         classes as accessible.
6299
6300 Wed Feb  4 01:26:49 1998  Jason Merrill  <jason@yorick.cygnus.com>
6301
6302         * expr.c (cplus_expand_expr, PCC_STATIC_STRUCT_RETURN code):
6303         Call convert_from_reference sooner.
6304
6305 Tue Feb  3 23:50:52 1998  Mark Mitchell  <mmitchell@usa.net>
6306
6307         * cvt.c (ocp_convert): Obtain the constant values from constant
6308         decls even if the destination type is the same as the type of the
6309         decl.
6310
6311         * decl2.c (finish_file): Make sure that static inlines with
6312         definitions are not marked DECL_EXTERNAL before returning.
6313
6314 Tue Feb  3 22:43:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
6315
6316         * decl.c: Lose arg_looking_for_template.
6317         (lookup_name_real): Likewise.
6318         * parse.y: Lose processing_template_arg, template_arg1.
6319         (primary): Likewise.
6320         * spew.c (yylex): Set lastiddecl for PTYPENAMEs, too.
6321
6322 Tue Feb  3 22:04:01 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
6323
6324         * error.c (dump_decl): Fix type of default arguments for template
6325         template parameters and nontype template parameters.
6326         * parse.y (template_parm): Handle invalid default template
6327         template arguments here.
6328
6329         * parse.y (template_parm): Use template_arg instead of PTYPENAME
6330         for default template template argument.
6331         * pt.c (coerce_template_parms): Merge default template argument
6332         codes.  Can treat RECORD_TYPE as template name if it is implicitly
6333         created.  Fix argument index in error message.
6334         * typeck.c (comptypes): Merge template argument comparison codes in
6335         TEMPLATE_TEMPLATE_PARM and RECORD_TYPE.
6336
6337 Tue Jan  6 01:42:44 1998  Mumit Khan  <khan@xraylith.wisc.edu>
6338
6339         * lex.c (file_name_nondirectory): Also check for '/'.
6340
6341 Mon Feb  2 11:24:22 1998  Mark Mitchell  <mmitchell@usa.net>
6342
6343         * parse.y (primary): Deal with statement-expressions in
6344         templates.
6345         * pt.c (tsubst_copy): Handle BIND_EXPR.
6346         * tree.c (mapcar): Likewise.
6347
6348         * call.c (add_template_candidate_real): Pass extra parameter to
6349         fn_type_unification.
6350         * cp-tree.h (fn_type_unification): Add parameter.
6351         * pt.c (fn_type_unification): Add additional parameter to deal with
6352         static member functions.
6353         (get_bindings): Deal with static member functions.
6354
6355         * cp-tree.h (DECL_NONSTATIC_MEMBER_FUNCTION_P): New macro.
6356         (revert_static_member_fn): Declare.
6357         * decl.c (revert_static_member_fn): Remove declaration.  Change
6358         linkage from internal to external.
6359         (cp_finish_decl): Deal with virtual functions in classes local to
6360         template functions.
6361         * decl2.c (finish_file): Don't forget to emit increment/decrement
6362         expressions in initializers for file-scope variables.
6363         * parse.y (typename_sub2): If the typename doesn't names a
6364         template, rather than a type, issue an error message.
6365         * pt.c (check_explicit_specialization): Handle specializations of
6366         static member functions.
6367         (coerce_template_parms): Handle offset references to lists of
6368         member functions.
6369         * search.c (note_debug_info_needed): Don't crash when handed a
6370         type which is being defined.
6371         * typeck.c (complete_type): Don't crash when handed NULL_TREE;
6372         that can happen with some illegal code.
6373
6374 Mon Feb  2 00:57:38 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6375
6376         * call.c (user_harshness): Initialize `code' to 0.
6377         (build_method_call): Initialize `candidates', `cp' and `len' to 0.
6378         (null_ptr_cst_p): Add parentheses around && within ||.
6379         (standard_conversion): Likewise.
6380         (z_candidate): Likewise.
6381         (build_user_type_conversion_1): Initialize `args' to NULL_TREE.
6382         (build_object_call): Likewise for `mem_args'.
6383         (build_new_op): Likewise for `mem_arglist'.  Add `return' from
6384         default case in enumeration switch.
6385
6386         * class.c (build_vtable_entry): Add explicit braces to avoid
6387         ambiguous `else'.
6388         (build_class_init_list): Likewise.
6389         (finish_struct_1): Initialize `width' to 0.
6390         (instantiate_type): Initialize `name' to NULL_TREE.  Add
6391         explicit braces to avoid ambiguous `else'.
6392
6393         * cvt.c (convert_to_aggr): Add explicit braces to avoid ambiguous
6394         `else'.
6395
6396         * decl.c (grok_reference_init): Eliminate unused parameter, all
6397         callers changed.
6398         (record_builtin_type): Initialize `tdecl' to NULL_TREE.
6399         (init_decl_processing): Initialize `vb_off_identifier' to NULL_TREE.
6400         (cp_finish_decl): Initialize `ttype' to NULL_TREE.
6401         (grokdeclarator): Add parentheses around && within ||.  Add
6402         explicit braces to avoid ambiguous `else'.
6403         (grokparms): Initialize `type' to NULL_TREE.
6404         (xref_tag): Remove unused label `just_return'.
6405         (finish_enum): Initialize `minnode' and `maxnode' to NULL_TREE.
6406         (finish_function): Initialize `cond' and `thenclause' to NULL_TREE.
6407         (hack_incomplete_structures): Add parentheses around assignment
6408         used as truth value.
6409
6410         * decl2.c (coerce_delete_type): Hide definition of `e3'.
6411
6412         * error.c: Include <stdlib.h>.
6413         (dump_expr): Change the type of `i' to size_t.  Remove unused
6414         label `error'.
6415
6416         * except.c (init_exception_processing): Remove unused variable `d'.
6417         (expand_throw): Likewise for `label'.
6418
6419         * friend.c (add_friends): Add explicit braces to avoid ambiguous
6420         `else'.
6421
6422         * init.c (sort_member_init): Initialize `last_field' to NULL_TREE.
6423         (sort_base_init): Likewise for `binfo'.
6424         (expand_member_init): Likewise for `rval'.
6425         (build_member_call): Add parentheses around assignment used as
6426         truth value.
6427         (build_offset_ref): Add explicit braces to avoid ambiguous `else'.
6428         (build_new): Initialize `nelts' to NULL_TREE.  Initialize
6429         `old_immediate_size_expand' to 0.
6430         (build_new_1): Initialize `nelts' and `alloc_node' to NULL_TREE.
6431         (build_vec_delete_1): Remove unused variable `block'.
6432         (expand_vec_init): Initialize `itype' to NULL_TREE.
6433
6434         * lex.c: Include <strings.h> if we don't have <string.h>.  Protect
6435         declaration of `index' and `rindex' with autoconf macros.
6436         (reinit_parse_for_expr): Remove unused variables
6437         `look_for_semicolon' and `look_for_lbrac'.
6438         (cons_up_default_function): Initialize `args' to NULL_TREE.
6439         (readescape): Initialize `firstdig' to 0.
6440         (real_yylex): Add parentheses around assignment used as truth value.
6441
6442         * method.c: Include <strings.h> if we don't have <string.h>.
6443         Protect declaration of `index' with autoconf macro.
6444
6445         * parse.y (primary): Add explicit braces to avoid ambiguous `else'.
6446         Initialize `type' to NULL_TREE.
6447         (structsp): Remove unused variable `id'.
6448
6449         * pt.c (coerce_template_parms): Add explicit braces to avoid
6450         ambiguous `else'.
6451         (lookup_template_class): Initialize `template' to NULL_TREE.
6452         (instantiate_class_template): Remove unused variable `name' and `e'.
6453         (tsubst): Likewise for `i'.  Initialize `last' to NULL_TREE.
6454         (do_poplevel): Initialize `saved_warn_unused' to 0.
6455         (type_unification): Remove unused varable `parm'.
6456         (unify): Likewise for `j'.
6457
6458         * repo.c (init_repo): Add parentheses around assignment used as
6459         truth value.
6460         (finish_repo): Remove unused varable `p'.
6461
6462         * search.c (get_binfo): Initialize `type' to NULL_TREE.
6463         (get_base_distance): Likewise.
6464         (lookup_field): Initialize `rval_binfo_h', `type', `basetype_path'
6465         and `new_v' to NULL_TREE.
6466         (lookup_fnfields): Likewise for `rval_binfo_h'.
6467         (breadth_first_search): Add parentheses around assignment used as
6468         truth value.
6469         (get_template_base): Initialize `type' to NULL_TREE.
6470
6471         * sig.c (append_signature_fields): Initialize `last_mfptr' to
6472         NULL_TREE.
6473         (build_signature_table_constructor): Likewise for
6474         `last_rhs_field', `pfn' and `vt_off'.
6475         (build_sigtable): Likewise for `init'.
6476
6477         * tree.c (break_out_calls): Initialize `t2' to NULL_TREE.
6478         (propagate_binfo_offsets): Likewise for `delta'.
6479         (hash_tree_cons): Initialize hashcode to 0.
6480         (can_free): Likewise for `size'.
6481         (cp_tree_equal): Add explicit braces to avoid ambiguous `else'.
6482
6483         * typeck.c (convert_sequence): Hide prototype.
6484         (common_type): Add explicit braces to avoid ambiguous `else'.
6485         (comp_target_types): Likewise.
6486         (build_x_function_call): Initialize `ctypeptr' to NULL_TREE.
6487         (build_function_call_real): Add explicit braces to avoid ambiguous
6488         `else'.
6489         (convert_arguments): Initialize `called_thing' to 0.
6490         (convert_for_initialization): Initialize `savew' and `savee' to 0.
6491
6492         * typeck2.c (incomplete_type_error): Initialize `errmsg' to 0.
6493         (digest_init): Initialize `old_tail_contents' to NULL_TREE.
6494         (build_x_arrow): Likewise for `last_rval'.
6495
6496         * xref.c (GNU_xref_decl): Initialize `cls' to 0.
6497
6498 Sun Feb  1 12:45:34 1998  J"orn Rennecke  <amylaar@cygnus.co.uk>
6499
6500         * decl.c (init_decl_processing): Use set_sizetype.
6501         * decl2.c (sizetype): Don't declare.
6502         * typeck.c (c_sizeof): Convert result of *_DIV_EXPR to sizetype.
6503         (c_sizeof_nowarn, build_binary_op_nodefault): Likewise.
6504         (build_component_addr, unary_complex_lvalue): Likewise.
6505         * rtti.c (expand_class_desc): Likewise.
6506         * class.c (get_vfield_offset): Likewise.
6507
6508 Thu Jan 29 10:39:30 1998  Mark Mitchell  <mmitchell@usa.net>
6509
6510         * pt.c (convert_nontype_argument): Move check for is_overloaded_fn
6511         early to avoid bogus error.  Handle overloaded function
6512         names provided as template arguments correctly.
6513         (coerce_template_parms): Don't mishandle overloaded functions when
6514         dealing with template template parameters.
6515         (lookup_template_class): Issue an error message, rather than
6516         crashing, when the TYPE_DECL provided is not a template type.
6517
6518 Wed Jan 28 23:14:44 1998  Jason Merrill  <jason@yorick.cygnus.com>
6519
6520         * class.c (instantiate_type): Don't just return a known type if
6521         it's wrong.
6522
6523 Wed Jan 28 11:04:07 1998  Mark Mitchell  <mmitchell@usa.net>
6524
6525         * class.c (instantiate_type): Remove handling of FUNCTION_DECL
6526         since that code could never be reached.
6527
6528         * error.c (dump_decl): Avoid aborting in the midst of printing an
6529         error message about an illegal template declaration.
6530
6531         * parse.y (structsp): Print an error message, rather than crashing,
6532         when a class-head does not name a class.
6533
6534         * pt.c (convert_nontype_argument):  Allow REAL_TYPE and COMPLEX_TYPE
6535         template arguments as a g++ extension.
6536
6537         * cp-tree.def (ALIGNOF_EXPR): New tree code.
6538         * decl2.c (grok_alignof): If processing_template_decl, just store
6539         the expression.
6540         * typeck.c (c_alignof): Likewise.
6541         * decl2.c (build_expr_from_tree): Handle ALIGNOF_EXPR.
6542         * error.c (dump_expr): Likewise.
6543         * pt.c (tsubst_copy): Likewise.
6544         * tree.c (cp_tree_equal): Likewise.
6545         * pt.c (uses_template_parms): Correctly determine whether or not a
6546         SIZEOF_EXPR/ALIGNOF_EXPR uses template parameters so that constant
6547         folding can be done.
6548
6549         * cp-tree.h (grok_enum_decls): Remove type parameter.
6550         * decl.c (grok_enum_decls): Likewise.
6551         * decl2.c (grok_x_components): Call grok_enum_decls
6552         unconditionally, since it will do nothing if there is no
6553         current_local_enum.  Use the new calling sequence.
6554         * pt.c (tsubst_enum): Use the new calling sequence for
6555         grok_enum_decls.
6556
6557         * decl.c (start_function): Make member functions of local classes
6558         in extern inline functions have comdat linkage here...
6559         (grokdeclarator): Rather than here.
6560
6561 Wed Jan 28 10:55:47 1998  Jason Merrill  <jason@yorick.cygnus.com>
6562
6563         * pt.c (convert_nontype_argument): Use decl_constant_value.
6564
6565 Tue Jan 27 16:42:21 1998  Mark Mitchell  <mmitchell@usa.net>
6566
6567         * call.c (add_template_candidate_real): New function.
6568         (add_template_candidate): Use it.
6569         (add_template_conv_candidate): Likewise.
6570         (joust): Pass extra argument to more_specialized.
6571         * class.c (instantiate_type): Handle a single FUNCTION_DECL.
6572         (is_local_class): Remove.
6573         (finish_struct): Check TI_PENDING_SPECIALIZATION_FLAG.
6574         * cp-tree.h (is_local_class): Remove.
6575         (perform_array_to_pointer_conversion): Likewise.
6576         (finish_member_template_decl): Add.
6577         (check_explicit_specialization): Return a tree, not an int.
6578         (more_specialized): Take additional argument.
6579         (get_bindings): Likewise.
6580         (TI_PENDING_SPECIALIZATION_FLAG): New macro.
6581         * cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.
6582         (perform_array_to_pointer_conversion): Remove.
6583         * decl.c (saved_scope): Add processing_specialization,
6584         processing_explicit_instantiation fields.
6585         (maybe_push_to_top_level): Save them.
6586         (pop_from_top_level): Restore them.
6587         (grokfndecl): Use new return value from
6588         check_explicit_specialization.
6589         (start_decl): Don't check flag_guiding_decls before pushing
6590         decls.
6591         (cp_finish_decl): Remove previous (bogus) change.
6592         (grok_declarator): Use decl_function_context rather than
6593         is_local_class.
6594         * decl2.c (finish_file): Pass extra argument to get_bindings.
6595         (build_expr_from_tree): Let build_x_component_ref check
6596         validity of arguments rather than doing it here.
6597         * lex.c (cons_up_default_function): Remove code fooling with
6598         processing_specialization, processing_explicit_instantiation
6599         flags, as that is now done in {maybe_push_top,pop_from}_top_level.
6600         * method.c (build_overload_identifier): Mangle local classes in
6601         template functions correctly.
6602         * parse.y (finish_member_template_decl): Move to pt.c.
6603         * pt.c (finish_member_template_decl): Moved here from parse.y.
6604         (print_candidates): New function.
6605         (determine_specialization): Change interface.  Properly look for
6606         most specialized versions of template candidates.
6607         (check_explicit_specialization): Fully process explicit
6608         instantiations.
6609         (push_template_decl): Avoid looking at CLASSTYPE fields in
6610         FUNCTION_DECLS.
6611         (determine_overloaded_function): Remove.
6612         (convert_nontype_argument): Change name from
6613         convert_nontype_parameter.  Use determine_overloaded_function
6614         instead of instantiate_type.
6615         (mangle_class_name_for_template): Handle type contexts as well as
6616         function contexts.
6617         (classtype_mangled_name): Likewise.
6618         (lookup_template_class): Likewise.
6619         (tsubst): Likewise.
6620         (more_specialized): Take explicit template arguments as a
6621         parameter.
6622         (most_specialized): Likewise.
6623         (get_bindings): Likewise.  Check that return types match before
6624         proclaiming a function a match.
6625         (do_decl_instantiation): Remove code searching for function to
6626         instantiate; that is now done in check_explicit_specialization.
6627         (add_maybe_template): Pass extra argument to get_bindings.
6628         * tree.c (really_overloaded_fn): Use is_overloaded_fn to simplify
6629         implementation.
6630         * typeck.c (build_component_ref): Check for invalid arguments.
6631
6632 Tue Jan 27 01:44:02 1998  Jason Merrill  <jason@yorick.cygnus.com>
6633
6634         * expr.c (cplus_expand_expr, AGGR_INIT_EXPR): Don't check that
6635         return_target and call_target are equivalent.
6636
6637         * pt.c (type_unification_real): Just accept function parms that
6638         don't use any template parms.
6639
6640 Sun Jan 25 03:30:00 1998  Jason Merrill  <jason@yorick.cygnus.com>
6641
6642         * decl.c (cp_finish_decl): When bailing on a comdat variable, also
6643         unset DECL_NOT_REALLY_EXTERN.
6644
6645         * parse.y (typename_sub*): Fix std::.
6646
6647 Sat Jan 24 12:13:54 1998  Jason Merrill  <jason@yorick.cygnus.com>
6648
6649         * error.c (dump_decl): Fix type default template args.
6650         (dump_type): Hand TEMPLATE_DECL off to dump_decl.
6651
6652 Fri Jan 23 18:34:37 1998  Mumit Khan  <khan@xraylith.wisc.edu>
6653
6654         * lex.c (DIR_SEPARATOR): Define to be '/' if not already defined.
6655         (file_name_nondirectory): Use.
6656
6657 Wed Jan 21 10:29:57 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
6658
6659         * pt.c (coerce_template_parms): Don't access elements of ARGLIST
6660         that are not really present.  Substitute default arguments in
6661         template template arguments.  Correctly convert TEMPLATE_DECL to
6662         TEMPLATE_TEMPLATE_PARM.
6663         (comp_template_args): TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM
6664         are no longer treated specially here.
6665         * parse.y (template_template_parm): Fix copy error.
6666         * decl.c (grokdeclarator): Warn about missing `typename' for nested
6667         type created from template template parameters.
6668         * parse.y (bad_parm): Likewise
6669
6670         * class.c (finish_struct): Handle TEMPLATE_TEMPLATE_PARM.
6671         (push_nested_class): Likewise.
6672         * cp-tree.def (TEMPLATE_TEMPLATE_PARM): New tree code.
6673         * cp-tree.h (DECL_TEMPLATE_TEMPLATE_PARM_P): New macro.
6674         (copy_template_template_parm): Declare.
6675         * decl.c (arg_looking_for_template): New variable.
6676         (lookup_name_real): Handle TEMPLATE_TEMPLATE_PARM.
6677         Try to return TEMPLATE_DECL or TEMPLATE_TEMPLATE_PARM
6678         node if arg_looking_for_template is nonzero.
6679         (pushdecl): Handle TEMPLATE_TEMPLATE_PARM.
6680         (grok_op_properties, xref_tag, xref_basetypes): Likewise.
6681         (grokdeclarator): Handle TEMPLATE_DECL.
6682         * decl2.c (constructor_name_full): Handle TEMPLATE_TEMPLATE_PARM.
6683         * error.c (dump_type): Add TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM.
6684         (dump_type_prefix, dump_type_suffix): Handle TEMPLATE_TEMPLATE_PARM.
6685         (dump_decl): Handle unnamed template type parameters.
6686         Handle template template parameters.
6687         (dump_function_name): Handle template template parameters.
6688         * init.c (is_aggr_typedef, is_aggr_type, get_aggr_from_typedef):
6689         Handle TEMPLATE_TEMPLATE_PARM.
6690         * method.c (build_template_template_parm_names): New function.
6691         (build_template_parm_names): Handle TEMPLATE_DECL.
6692         (build_overload_nested_name, build_overload_name):
6693         Handle TEMPLATE_TEMPLATE_PARM.
6694         * parse.y (maybe_identifier): New nonterminal.
6695         (template_type_parm): Use it.
6696         (template_template_parm, template_arg1): New nonterminal.
6697         (template_parm): Add template_template_parm rules.
6698         (template_arg): Set processing_template_arg.
6699         (template_arg1): Rules moved from template_arg.
6700         (primary, nonnested_type): Set arg_looking_for_template if we are
6701         processing template arguments.
6702         * pt.c (begin_member_template_processing): Handle TEMPLATE_DECL.
6703         (process_template_parm): Handle template template parameters.
6704         (coerce_template_parms, comp_template_args): Likewise.
6705         (mangle_class_name_for_template, lookup_template_class): Likewise.
6706         (uses_template_parms): Handle TEMPLATE_DECL and
6707         TEMPLATE_TEMPLATE_PARM.
6708         (current_template_args): Handle TEMPLATE_DECL.
6709         (tsubst, tsubst_copy, unify): Handle TEMPLATE_TEMPLATE_PARM.
6710         * search.c (dfs_walk, dfs_record_inheritance):
6711         Handle TEMPLATE_TEMPLATE_PARM.
6712         * tree.c (copy_template_template_parm): New function.
6713         (mapcar): Handle TEMPLATE_TEMPLATE_PARM.
6714         * typeck.c (comptypes): Handle TEMPLATE_TEMPLATE_PARM.
6715
6716 Mon Jan 19 22:40:03 1998  Mark Mitchell  <mmitchell@usa.net>
6717
6718         * decl.c (start_decl): Don't allow duplicate definitions of static
6719         data members.
6720
6721         * call.c (build_user_type_conversion_1): Handle user-defined
6722         template conversion operators correctly.
6723
6724         * decl2.c (build_expr_from_tree): Issue an error message if the
6725         object in a COMPONENT_REF is a TEMPLATE_DECL.
6726
6727         * typeck.c (incomplete_type_error): Handle TEMPLATE_TYPE_PARMs.
6728
6729         * class.c (is_local_class): New function.
6730         * cp-tree.h (is_local_class): Declare it.
6731         (last_tree): Likewise.
6732         (begin_tree): Likewise.
6733         (end_tree): Likewise.
6734         (lookup_template_class): Change prototype.
6735         * decl.c (cp_finish_decl): Check for NULL where necessary.
6736         Consider FUNCTION_DECLS to declare objects with top-level binding,
6737         when calling make_decl_rtl.
6738         (grokdeclarator): Give members of local classes internal linkage.
6739         (start_function): Remove declaration of last_tree.
6740         (finish_function): Set flag_keep_inline_functions around call to
6741         rest_of_compilation if we are processing a member function in a
6742         local class.
6743         (start_method): Call push_template_decl for member functions of
6744         local classes in template functions.
6745         * decl2.c (import_export_decl): Don't give external linkage to
6746         instantiations of templates with internal linkage.
6747         * parse.y (last_tree): Remove declaration.
6748         (template_type): Pass extra parameter to lookup_template_class.
6749         (self_template_type): Likewise.
6750         (structsp): Move call to reset_specialization into left_curly.
6751         (left_curly): Call reset_specialization, and begin_tree.
6752         * pt.c (saved_trees): New variable.
6753         (mangle_class_name_for_template): Change prototype.  Use
6754         additional function context to name local classes in templates
6755         correctly.
6756         (classtype_mangled_name): Pass the context.
6757         (push_template_decl): Handle local classes and templates, and
6758         member functions for such classes.
6759         (convert_nontype_parameter): Fix handling of pointer-to-member
6760         constants.
6761         (lookup_template_class): Handle local classes in templates.
6762         (tsubst): Likewise.  Don't assume that template instantiations
6763         have external linkage; pay attention to the template declaration.
6764         (mark_decl_instantiated): Likewise.
6765         (begin_tree): New function.
6766         (end_tree): Likewise.
6767
6768         * decl.c (xref_basetypes): Don't call complete_type for basetypes
6769         that involve template parameters; that can lead to infinite
6770         recursion unnecessarily.
6771
6772         * pt.c (register_specialization): Do not register specializations
6773         that aren't ready to be registered yet.
6774         (check_explicit_specialization): Handle explicit specialization of
6775         constructors and destructors.
6776         (build_template_decl): New function.
6777         (push_template_delc): Handle out-of-class specializations of
6778         member templates.
6779
6780         * pt.c (check_explicit_specialization): Set up the template
6781         information before registering the specialization.
6782         (coerce_template_parms): Fix thinko.
6783         (tsubst): Handle specializations of member templates correctly.
6784
6785         * class.c (finish_struct_methods): Remove calls to
6786         check_explicit_specialization from here.
6787         (finish_struct): And insert them here.
6788         * cp-tree.h (perform_qualification_conversions): New function.
6789         (perform_array_to_pointer_conversion): Likewise.
6790         (begin_explicit_instantiation): Likewise.
6791         (end_explicit_instantiation): Likewise.
6792         (determine_specialization): Renamed from
6793         determine_explicit_specialization.
6794         (comp_template_parms): New function.
6795         (processing_explicit_instantiation): New variable.
6796         * cvt.c (perform_qualification_conversions): New function.
6797         (perform_array_to_pointer_conversion): Likewise.
6798         * decl.c (duplicate_decls): Don't consider template functions
6799         alike unless they have the same parameters.  Refine handling of
6800         instantiation/specialization mismatches.
6801         (start_decl): Don't call pushdecl for template specializations,
6802         since they don't affect overloading.
6803         (start_function): Likewise.
6804         (grokfndecl): Call check_explicit_specialization a little later.
6805         Don't call duplicate_decls for memberm template specializations.
6806         (grokdeclarator): Don't update template_count for classes that are
6807         themselves specializations.  Remove use of `2' as parameter to
6808         grokfndecl since that value isn't used.
6809         * lex.c (cons_up_default_function): Save and restore
6810         processing_explicit_instantiation around calls to grokfield.
6811         * parse.y (finish_member_template_decl): New function.
6812         (component_decl_1): Use it.
6813         (fn.def2): Likewise.
6814         (template_arg_list_opt): New nonterminal.
6815         (template_type): Use it.
6816         (self_template_type): Likewise.
6817         (template_id): Likewise.
6818         (object_template_id): Likewise.
6819         (notype_template_declarator): Likwise.
6820         (begin_explicit_instantiation): Likewise.
6821         (end_explicit_instantiation): Likewise.
6822         (explicit_instantiation): Use them.
6823         * pt.c (coerce_template_parms): Add parameters.
6824         (processing_explicit_instantiation): New variable.
6825         (convert_nontype_parameter): New function.
6826         (determine_overloaded_function): Likewise.
6827         (begin_explicit_instantiation): Likewise.
6828         (end_explicit_instantiation): Likewise.
6829         (retrieve_specialization): Likewise.
6830         (register_specialization): Likewise.
6831         (processing_explicit_specialization): Removed.
6832         (determine_specialization): Handle specializations of member
6833         functions of template class instantiations.
6834         (check_explicit_specialization): Refine to conform to standard.
6835         (comp_template_parms): New function.
6836         (coerce_template_parms): Call convert_nontype_parameter.
6837         (tsubst): Refine handling of member templates.  Use
6838         register_specialization.
6839         (instantiate_template): Use retrieve_specialization.
6840         (do_decl_instantiation): Likewise.
6841         (instantiate_decl): Likewise.
6842         (type_unification): Improve handling of explicit template
6843         arguments.
6844         * tree.c (mapcar): Return error_mark_node, rather than aborting,
6845         on VAR_DECLS, FUNCTION_DECLS, and CONST_DECLS.
6846         * typeck.c (build_unary_op): Call determine_specialization, rather
6847         than determine_explicit_specialization.
6848
6849 Mon Jan 19 13:18:51 1998  Jason Merrill  <jason@yorick.cygnus.com>
6850
6851         * cvt.c (build_up_reference): A TARGET_EXPR has side effects.
6852
6853 Fri Jan 16 11:40:50 1998  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
6854
6855         * error.c (dump_decl): For enum tags, output the tag, not its value.
6856
6857 1998-01-13  Brendan Kehoe  <brendan@cygnus.com>
6858
6859         * decl.c (init_decl_processing): Only call init_rtti_processing
6860         FLAG_RTTI is set.
6861
6862 Mon Jan 12 01:35:18 1998  Jason Merrill  <jason@yorick.cygnus.com>
6863
6864         * init.c (build_new_1): Split out from build_new.
6865         (build_new): Just return a NEW_EXPR.
6866         * expr.c (cplus_expand_expr): Handle NEW_EXPR.
6867
6868         * decl2.c (get_temp_regvar): Tweak.
6869
6870         * cp-tree.h (TREE_CALLS_NEW): Comment out.
6871         * class.c (resolves_to_fixed_type_p): Remove use.
6872         * method.c (build_opfncall): Likewise.
6873         * call.c (build_new_op): Likewise.
6874
6875 Wed Jan  7 23:47:13 1998  Jason Merrill  <jason@yorick.cygnus.com>
6876
6877         * exception.cc (__eh_alloc, __eh_free): New fns.
6878         (__cp_push_exception, __cp_pop_exception): Use them.
6879         (__uncatch_exception): Call terminate here if no exception.
6880         * except.c (build_terminate_handler): New fn.
6881         (expand_start_catch_block): Use it.
6882         (expand_exception_blocks): Likewise.
6883         (alloc_eh_object): New fn.
6884         (expand_throw): Use it.  Protect exception init with terminate.
6885         * typeck.c (build_modify_expr): Remove code that ignores trivial
6886         methods.
6887
6888
6889 \f
6890 Copyright (C) 1998 Free Software Foundation, Inc.
6891
6892 Copying and distribution of this file, with or without modification,
6893 are permitted in any medium without royalty provided the copyright
6894 notice and this notice are preserved.