comparison gcc/cp/ChangeLog-1998 @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
comparison
equal deleted inserted replaced
68:561a7518be6b 111:04ced10e8804
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
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.