1 Tue Dec 22 15:09:25 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3 * Makefile.in (cvt.o): Depend on toplev.h.
5 * cp-tree.h (check_template_shadow, pod_type_p): Add prototypes.
7 * cvt.c: Include toplev.h.
9 * except.c (get_eh_caught, get_eh_handlers): Hide prototypes and
12 * init.c (expand_vec_init): Initialize variable `itype'.
14 * lex.c (yyerror): Cast the argument passed to a ctype function to
17 * method.c (build_mangled_C9x_name): Wrap prototype and definition
18 in "HOST_BITS_PER_WIDE_INT >= 64".
20 * typeck.c (build_binary_op): Mark parameter `convert_p' with
23 1998-12-22 Mark Mitchell <mark@markmitchell.com>
25 * cp-tree.h (TYPE_RAISES_EXCEPTIONS): Improve documentation.
26 * tree.c (build_exception_variant): Don't crash on empty throw
29 1998-12-18 DJ Delorie <dj@cygnus.com>
31 * cvt.c (convert_to_reference): Check for both error_mark_node
32 and NULL_NODE after call to convert_for_initialization.
34 1998-12-17 Jason Merrill <jason@yorick.cygnus.com>
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.
41 1998-12-16 Mark Mitchell <mark@markmitchell.com>
43 * class.c (resolve_address_of_overloaded_function): Do conversion
44 to correct type here, rather than ...
45 (instantiate_type): Here.
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
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.
58 Wed Dec 16 16:33:58 1998 Dave Brolley <brolley@cygnus.com>
60 * lang-specs.h (default_compilers): Pass -MD, -MMD and -MG to cc1plus
61 if configured with cpplib.
63 1998-12-15 Mark Mitchell <mark@markmitchell.com>
65 * decl.c (poplevel): Make sure ns_binding is initialized.
67 * decl.c (finish_function): Undo inadvertent change in previous
70 1998-12-14 Mark Mitchell <mark@markmitchell.com>
72 * class.c (pushclass): Tweak handling of class-level bindings.
73 (resolve_address_of_overloaded_function): Update pointer-to-member
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
91 (lookup_namespace_name): Don't crash when confronted with a
93 (lookup_name_real): Do `struct stat' hack in local binding
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
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.
112 1998-12-13 Mark Mitchell <mark@markmitchell.com>
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
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
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
154 (grok_parms): Likewise. Don't call
155 require_complete_types_for_parms here.
156 (grok_ctor_properties): Don't treat templates as copy
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
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.
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
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.
193 1998-12-08 Jason Merrill <jason@yorick.cygnus.com>
195 * decl.c (grokdeclarator): Allow field with same name as class
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.
203 1998-12-10 Mark Mitchell <mark@markmitchell.com>
205 * decl.c (start_enum): Use push_obstacks, not
206 end_temporary_allocation.
207 (finish_enum): Call pop_obstacks.
209 1998-12-10 Mark Mitchell <mark@markmitchell.com>
211 * class.c (instantiate_type): Return error_mark_node rather than
214 1998-12-09 Mark Mitchell <mark@markmitchell.com>
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
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.
230 Wed Dec 9 15:33:01 1998 Dave Brolley <brolley@cygnus.com>
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
237 1998-12-09 Mark Mitchell <mark@markmitchell.com>
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.
243 1998-12-08 Andrew MacLeod <amacleod@cygnus.com>
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
248 (push_eh_cleanup): Don't increment 'handlers' data field.
249 (process_start_catch_block): Don't set the 'caught' field.
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.
259 Tue Dec 8 10:48:21 1998 Jeffrey A Law (law@cygnus.com)
261 * Make-lang.in (cxxmain.o): Depend on $(DEMANGLE_H), not demangle.h
263 Mon Dec 7 17:56:06 1998 Mike Stump <mrs@wrs.com>
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.
270 1998-12-07 Zack Weinberg <zack@rabi.phys.columbia.edu>
272 * cp/decl2.c: s/data/opts/ when initializing cpp_reader
275 1998-12-07 Jason Merrill <jason@yorick.cygnus.com>
277 * decl.c (build_typename_type): Set DECL_ARTIFICIAL.
279 * error.c (dump_simple_decl): Also print namespace context.
280 (dump_function_decl): Likewise.
282 * decl2.c (ambiguous_decl): Don't print old value if it's
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.
289 * lang-options.h: Add -fpermissive.
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
296 * cvt.c (convert_to_reference): Likewise.
297 * typeck.c (convert_for_assignment): Likewise.
299 1998-12-05 Jason Merrill <jason@yorick.cygnus.com>
301 * decl2.c (coerce_new_type): Use same_type_p.
302 (coerce_delete_type): Likewise.
304 * call.c (check_dtor_name): Return 1, not error_mark_node.
306 1998-12-04 Jason Merrill <jason@yorick.cygnus.com>
308 * lex.c (handle_cp_pragma): Disable #pragma interface/implementation
309 if MULTIPLE_SYMBOL_SPACES.
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.
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.
322 * pt.c (check_explicit_specialization): Complain about specialization
325 * lang-options.h: Add -f{no-,}implicit-inline-templates.
327 * pt.c (convert_nontype_argument): Don't assume that any integer
328 argument is intended to be a constant-expression.
330 1998-12-03 Mark Mitchell <mark@markmitchell.com>
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.
337 * cp-tree.h (DECL_ACCESS): Improve documentation.
339 * decl.c (expand_static_init): Don't set the initialization-done
340 flag until the initialization is done.
342 1998-12-02 Mark Mitchell <mark@markmitchell.com>
344 * decl2.c (validate_nonmember_using_decl): Complain about using
345 declarations for class members.
347 1998-11-29 Jason Merrill <jason@yorick.cygnus.com>
349 * typeck2.c (process_init_constructor): Use same_type_p.
351 * decl.c (check_tag_decl): Don't warn about null decl inside a
354 * pt.c (unify, case OFFSET_TYPE): Pass down 'strict' rather than
356 (convert_nontype_argument): Use TYPE_PTRMEMFUNC_FN_TYPE.
357 (resolve_overloaded_unification): Strip baselinks.
359 Fri Nov 27 13:07:23 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
361 * g++spec.c: Don't prototype xmalloc.
363 1998-11-25 Jason Merrill <jason@yorick.cygnus.com>
365 * except.c (expand_throw): Use TYPE_PTR_P to check for pointers.
367 * decl.c (check_tag_decl): Do complain about null friend decl at
370 1998-11-25 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
372 * lex.c (make_lang_type): Clear the whole struct lang_type, not
373 only the first multiple of sizeof (int).
375 1998-11-24 Jason Merrill <jason@yorick.cygnus.com>
377 * decl.c (start_decl): An explicit specialization of a static data
378 member is only a definition if it has an initializer.
380 * except.c (expand_throw): Use cp_finish_decl for the throw temp.
381 * cvt.c (build_up_reference): Pass DIRECT_BIND down into
383 * init.c (expand_default_init): Check for DIRECT_BIND instead of
386 * call.c (build_over_call): Use build_decl.
388 * except.c (expand_throw): Just use convert, not
389 build_reinterpret_cast.
391 * lex.c (handle_generic_pragma): Use token_buffer.
393 * decl.c (check_tag_decl): Don't complain about null friend decl.
395 1998-11-24 Dave Pitts <dpitts@cozx.com>
397 * Make-lang.in (DEMANGLER_PROG): Move the output arguments to the
399 * lex.c (check_newline): Use ISALPHA.
400 (readescape): Use ISGRAPH.
401 (yyerror): Use ISGRAPH.
403 1998-11-24 Nathan Sidwell <nathan@acm.org>
405 * search.c (get_abstract_virtuals): Do not use initial
406 CLASSTYPE_ABSTRACT_VIRTUALS.
407 * typeck2.c (abstract_virtuals_error): Show location of abstract
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.
414 1998-11-24 Graham <grahams@rcp.co.uk>
416 * typeck.c (build_component_ref): Remove unused statement.
418 1998-11-24 Jason Merrill <jason@yorick.cygnus.com>
420 * class.c (add_method): Catch invalid overloads.
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
428 (print_z_candidates): Handle getting a type as a function.
429 (joust): If we got two conversion candidates to the same type,
431 (build_object_call): Lose 'templates'.
432 (build_user_type_conversion_1): Handle getting real OVERLOADs.
434 1998-11-23 Jason Merrill <jason@yorick.cygnus.com>
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.
440 * class.c (finish_struct_1): A class with a 0-width bitfield is
443 1998-11-23 Mark Mitchell <mark@markmitchell.com>
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
450 1998-11-23 Benjamin Kosnik <bkoz@cygnus.com>
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
458 1998-11-23 Jason Merrill <jason@yorick.cygnus.com>
460 * parse.y (named_class_head): Update CLASSTYPE_DECLARED_CLASS.
462 * class.c (finish_struct_1): Set things up for 0-width bitfields
463 like we do for others.
465 * decl.c (check_tag_decl): New fn.
466 (shadow_tag): Split out from here.
467 * decl2.c (grok_x_components): Call it.
469 1998-11-22 Jason Merrill <jason@yorick.cygnus.com>
471 * decl.c: Lose warn_about_return_type.
472 (grokdeclarator): Always complain about implicit int, except for
475 * decl.c (tag_name): New fn.
476 (xref_tag): Complain about using typedef-name after class-key.
478 * init.c (expand_vec_init): Also keep going if from_array.
480 * tree.c (is_overloaded_fn): Also handle the output of
483 * decl.c (grokdeclarator): Use constructor_name when comparing
484 field name against enclosing class.
485 * class.c (finish_struct_anon): Likewise.
487 1998-11-22 Mark Mitchell <mark@markmitchell.com>
489 * decl.c (poplevel): Remove code to handle KEEP == 2.
490 (finish_function): Don't confuse BLOCK-order when
491 processing a destructor.
493 1998-11-21 Jason Merrill <jason@yorick.cygnus.com>
495 * decl.c (require_complete_types_for_parms): Call layout_decl
496 after we've completed the type.
498 1998-11-21 Martin von Löwis <loewis@informatik.hu-berlin.de>
500 * decl2.c (validate_nonmember_using_decl): Allow using templates
501 from the global namespace.
503 1998-11-21 Jason Merrill <jason@yorick.cygnus.com>
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.
513 * decl.c (grokdeclarator): Allow a boolean constant for array
514 bounds, odd as that sounds.
516 * pt.c (unify): Be more strict about non-type parms, except for
518 (UNIFY_ALLOW_INTEGER): New macro.
520 1998-11-19 Manfred Hollstein <manfred@s-direktnet.de>
522 * Make-lang.in (mandir): Replace all uses of $(mandir) by $(man1dir).
524 1998-11-19 Jason Merrill <jason@yorick.cygnus.com>
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.
532 * decl.c (grokdeclarator): A parm type need not be complete.
534 * pt.c (convert_nontype_argument): Fix thinko.
536 1998-11-18 Mark Mitchell <mark@markmitchell.com>
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
546 1998-11-18 Jason Merrill <jason@yorick.cygnus.com>
548 * decl.c (cplus_expand_expr_stmt): Always complain about unresolved
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.
556 * search.c (add_conversions): Get all the overloads from a class.
558 * decl.c (grok_ctor_properties): Complain about any constructor
559 that will take a single arg of the class type by value.
561 * typeck2.c (build_functional_cast): Can't create objects of
562 abstract classes this way.
563 * cvt.c (ocp_convert): Likewise.
565 * decl.c (grokfndecl): Member functions of local classes are not
568 1998-11-18 Mark Mitchell <mark@markmitchell.com>
570 * Make-lang.in (cc1plus): Add dependency on hash.o.
572 1998-11-18 Jason Merrill <jason@yorick.cygnus.com>
574 * search.c (get_abstract_virtuals): Complain about virtuals with
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.
581 * lex.c (reinit_parse_for_block): Add a space after the initial ':'.
583 * class.c (finish_struct_1): Don't remove zero-width bit-fields until
586 * friend.c (do_friend): Don't set_mangled_name_for_decl.
588 * class.c (finish_struct_anon): Complain about non-fields.
589 * decl2.c (build_anon_union_vars): Likewise.
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
596 1998-11-17 Mark Mitchell <mark@markmitchell.com>
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.
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
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
630 * error.c (dump_type_real): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO
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
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
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.
666 1998-11-17 Jason Merrill <jason@yorick.cygnus.com>
668 * pt.c (tsubst): Add diagnostics for invalid array, reference
669 and pointer to member types.
671 1998-11-16 Jason Merrill <jason@yorick.cygnus.com>
673 * typeck2.c (my_friendly_abort): Don't fatal twice in a row.
675 * typeck.c (c_expand_start_case): Use build_expr_type_conversion.
678 * parse.y (structsp): Fix cut-and-paste error.
680 * init.c (build_new): Complain about non-integral size.
682 * parse.y (unary_expr): Complain about defining types in sizeof.
684 * typeck.c (expr_sizeof): Complain about sizeof an overloaded fn.
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.
693 * rtti.c (build_dynamic_cast_1): Give errors for dynamic_cast to
694 ambiguous or private bases. Fix warning for reference cast.
696 1998-11-16 Mark Mitchell <mark@markmitchell.com>
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
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.
711 1998-11-16 Jason Merrill <jason@yorick.cygnus.com>
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
718 * init.c (build_offset_ref): Just return a lone static member
721 * decl.c (cp_finish_decl): Only complain about real CONSTRUCTORs,
724 * typeck.c (build_binary_op_nodefault): Improve error handling.
726 * decl.c (grokfndecl): Complain about making 'main' a template.
728 * typeck.c (string_conv_p): Don't convert from wchar_t[] to char*.
730 * call.c (build_method_call): Handle a BIT_NOT_EXPR around a
731 TYPE_DECL in a template.
733 1998-11-15 Jason Merrill <jason@yorick.cygnus.com>
735 * typeck2.c (my_friendly_abort): Add URL in the other case, too.
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.
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
750 1998-11-13 Mark Mitchell <mark@markmitchell.com>
752 * except.c (expand_throw): Make sure first argument to
753 __cp_push_exception is of type `void*' to avoid spurious error
756 1998-11-11 Jason Merrill <jason@yorick.cygnus.com>
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.
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.
768 1998-11-08 Mark Mitchell <mark@markmitchell.com>
770 * method.c (build_overload_value): Handle REFERENCE_TYPE.
772 1998-11-08 Martin von Löwis <loewis@informatik.hu-berlin.de>
774 * decl.c (grokdeclarator): Allow namespace-scoped members if they
777 1998-11-08 Jason Merrill <jason@yorick.cygnus.com>
779 * pt.c (tsubst_decl): Don't mess with the global value of an
780 un-mangled DECL_ASSEMBLER_NAME.
782 1998-11-03 Christopher Faylor <cgf@cygnus.com>
784 * decl.c (init_decl_processing): Remove CYGWIN conditional
785 since CYGWIN is now able to deal with trapping signals.
787 Sat Nov 7 15:48:02 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
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.
793 1998-11-06 Mark Mitchell <mark@markmitchell.com>
795 * cp-tree.h (lang_decl_flags): Add defined_in_class. Decrease
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
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.
808 1998-11-04 Mark Mitchell <mark@markmitchell.com>
810 * cp-tree.h (CP_TYPE_CONST_P): Make {0,1}-valued.
811 (CP_TYPE_VOLATILE_P): Likewise.
812 (CP_TYPE_RESTRICT_P): Likewise.
814 1998-11-03 Mark Mitchell <mark@markmitchell.com>
816 * pt.c (tsubst): Use build_index_type, not build_index_2_type.
818 1998-11-02 Jason Merrill <jason@yorick.cygnus.com>
820 * class.c (instantiate_type): Be more helpful.
822 * decl2.c (import_export_decl): Call import_export_class.
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.
828 1998-11-02 Mark Mitchell <mark@markmitchell.com>
830 * init.c (expand_vec_init): Fix off-by-one error.
832 1998-11-02 Alexandre Oliva <oliva@dcc.unicamp.br>
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.
839 1998-11-01 Mark Mitchell <mark@markmitchell.com>
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.
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.
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
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.
905 1998-10-31 Jason Merrill <jason@yorick.cygnus.com>
907 * rtti.c (build_dynamic_cast_1): Fix cut-and-paste error.
909 1998-10-30 Mark Mitchell <mark@markmitchell.com>
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.
923 1998-10-29 Jason Merrill <jason@yorick.cygnus.com>
925 * decl.c (lookup_name_real): OK, only warn if not lexing.
926 Simplify suggested fix.
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.
937 * pt.c (push_template_decl_real): Generalize check for incorrect
938 number of template parms.
939 (is_member_template_class): #if 0.
941 1998-10-29 Richard Henderson <rth@cygnus.com>
943 * Makefile.in (cc1plus): Put CXX_OBJS, and thence @extra_cxx_objs@,
946 1998-10-28 Zack Weinberg <zack@rabi.phys.columbia.edu>
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
952 1998-10-28 Jason Merrill <jason@yorick.cygnus.com>
954 * class.c (instantiate_type): Don't consider templates for a normal
957 * class.c (finish_struct_1): Don't complain about non-copy
958 assignment ops in union members.
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.
969 * init.c (build_delete): Reset TYPE_HAS_DESTRUCTOR here.
970 * decl.c (finish_function): Not here.
971 (start_function): Do set DECL_INITIAL.
973 * pt.c (push_template_decl_real): Complain about default template
974 args for enclosing classes.
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.
987 1998-10-27 Jason Merrill <jason@yorick.cygnus.com>
989 * lex.c (do_identifier): Also generate LOOKUP_EXPR for RESULT_DECL.
990 * method.c (hack_identifier): Also check for using RESULT_DECL
993 1998-10-27 Mark Mitchell <mark@markmitchell.com>
995 * decl.c (grokdeclarator): Use type_quals, rather than constp,
998 1998-10-27 Jason Merrill <jason@yorick.cygnus.com>
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
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.
1025 1998-10-26 Mark Mitchell <mark@markmitchell.com>
1027 * error.c (dump_decl): Deal with TEMPLATE_DECLs that are
1028 VAR_DECLs. Handle vtables whose DECL_CONTEXT is not a type.
1030 * class.c (finish_struct_1): Use build_cplus_array_type to build
1032 * decl.c (init_decl_processing): Likewise.
1033 * except.c (expand_end_eh_spec): Likewise.
1034 * search.c (expand_upcast_fixups): Simplify very slightly.
1036 1998-10-26 Jason Merrill <jason@yorick.cygnus.com>
1038 * decl.c (grokdeclarator): Complain about a variable using
1039 constructor syntax coming back null from start_decl.
1041 * friend.c (make_friend_class): Complain about trying to make
1042 a non-class type a friend.
1044 * decl.c (grokfndecl): Set DECL_INITIAL for a defn here.
1045 (start_function): Not here.
1047 1998-10-26 Brendan Kehoe <brendan@cygnus.com>
1049 * decl.c (grokdeclarator): Disallow `explicit' in a friend declaration.
1051 1998-10-26 Jason Merrill <jason@yorick.cygnus.com>
1053 * typeck2.c (process_init_constructor): Only skip anonymous fields
1054 if they are bitfields.
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.
1064 1998-10-26 Manfred Hollstein <manfred@s-direktnet.de>
1066 * cp-tree.h (FORMAT_VBASE_NAME): Make definition unconditional.
1068 1998-10-26 Jason Merrill <jason@yorick.cygnus.com>
1070 * typeck.c (convert_arguments): Don't handle pmf references
1073 * init.c (build_member_call): Don't try to convert to the base type
1074 if it's ambiguous or pedantic.
1076 * typeck2.c (check_for_new_type): Only depend on pedantic for
1079 1998-10-25 Mark Mitchell <mark@markmitchell.com>
1081 * decl.c (grokdeclarator): Set DECL_NONCONVERTING_P for all
1082 non-converting constructors.
1084 1998-10-24 Martin von Löwis <loewis@informatik.hu-berlin.de>
1086 * gxxint.texi: Correct documentation for n, N, Q, and B.
1088 1998-10-23 Martin von Löwis <loewis@informatik.hu-berlin.de>
1090 * parse.y (condition): Convert VAR_DECL from reference to indirect
1093 1998-10-23 Andrew MacLeod <amacleod@cygnus.com>
1095 * exception.cc (__cp_pop_exception): Free the original exception
1096 value, not the potentially coerced one.
1098 1998-10-23 Mark Mitchell <mark@markmitchell.com>
1100 * Makefile.in (hash.h): Run gperf when necessary.
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.
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
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.
1169 (check_cv_quals_for_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.
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.
1215 1998-10-23 Jason Merrill <jason@yorick.cygnus.com>
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.
1222 1998-10-22 Martin von Löwis <loewis@informatik.hu-berlin.de>
1224 * parse.y (named_class_head): Push into class while parsing the
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.
1230 1998-10-21 Jason Merrill <jason@yorick.cygnus.com>
1232 * typeck.c (build_component_ref): Use of a type here is an error.
1234 1998-10-19 Jason Merrill <jason@yorick.cygnus.com>
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"
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
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.
1261 * typeck.c (build_component_addr): Make sure field is a field.
1263 * call.c (build_new_op): Delete obsolete code.
1265 * pt.c (tsubst, TEMPLATE*PARM*): Abort if we don't have any args.
1267 1998-10-18 Martin von Löwis <loewis@informatik.hu-berlin.de>
1269 * decl2.c (validate_nonmember_using_decl): Fix using-directives of
1270 std if std is ignored.
1272 1998-10-18 Jason Merrill <jason@yorick.cygnus.com>
1274 * decl.c (grokvardecl): Fix thinko.
1276 * decl.c (grokdeclarator): Embedded attrs bind to the right,
1279 * parse.y (fn.def2): Fix 'attrs' format.
1281 1998-10-18 Alastair J. Houghton <ajh8@doc.ic.ac.uk>
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.
1290 1998-10-17 Jason Merrill <jason@yorick.cygnus.com>
1292 * decl.c (grokfndecl): Set DECL_CONTEXT to namespace if appropriate.
1293 (grokvardecl): Likewise.
1295 Sat Oct 17 23:27:20 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1297 * class.c (make_method_vec): Cast 1st argument of `bzero' to (PTR).
1298 (add_method): Likewise for arguments 1 & 2 of `bcopy'.
1300 * decl.c (signal_catch): Mark with ATTRIBUTE_NORETURN.
1302 * pt.c (process_partial_specialization): Cast 1st argument of
1305 * tree.c (build_base_fields): Cast `base_align' to (int) when
1306 comparing against one.
1308 1998-10-16 Mark Mitchell <mark@markmitchell.com>
1310 * decl.c (lookup_name_real): Handle template parameters for member
1311 templates where said parameters have the same name as the
1314 * decl.c (expand_static_init): Build cleanups before entering the
1315 anonymous function used to do them to avoid access-checking
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.
1322 * pt.c (for_each_template_parm): Don't examine uninstantiated
1325 1998-10-16 Dave Brolley <brolley@cygnus.com>
1327 * lex.c (real_yylex): Fix unaligned access of wchar_t.
1329 1998-10-16 Mark Mitchell <mark@markmitchell.com>
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.
1343 1998-10-16 Jason Merrill <jason@yorick.cygnus.com>
1345 * typeck.c (build_indirect_ref): Complain about a pointer to data
1347 * typeck2.c (build_m_component_ref): Don't indirect a pointer to
1349 * init.c (resolve_offset_ref): Don't undo the above.
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
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.
1361 * decl.c (grokfndecl): Also check ctype when checking for ::main().
1363 1998-10-15 Jason Merrill <jason@yorick.cygnus.com>
1365 * decl.c (grokfndecl): ::main and __builtin_* get C linkage.
1367 (grokdeclarator): Instead of here.
1368 * friend.c (do_friend): Lose special handling of ::main and
1370 * cp-tree.h (DECL_MAIN_P): Check for C linkage.
1372 * spew.c (yylex): Clear looking_for_typename if we got
1375 1998-10-15 Mark Mitchell <mark@markmitchell.com>
1377 * class.c (maybe_warn_about_overly_private_class): Improve error
1378 messages for class with only private constructors.
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.
1387 1998-10-14 Benjamin Kosnik <bkoz@rhino.cygnus.com>
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.
1393 1998-10-14 Mark Mitchell <mark@markmitchell.com>
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.
1399 1998-10-14 Jason Merrill <jason@yorick.cygnus.com>
1401 * decl.c (grokfndecl): Fix my thinko.
1403 1998-10-13 Jason Merrill <jason@yorick.cygnus.com>
1405 * tinfo2.cc (fast_compare): Remove.
1406 (before): Just use strcmp.
1407 * tinfo.cc (operator==): Just use strcmp.
1409 1998-10-13 Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>
1411 * decl.c (grokfndecl): Don't check for linkage in `extern "C"'
1414 1998-10-13 Mark Mitchell <mark@markmitchell.com>
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.
1424 1998-10-12 Jason Merrill <jason@yorick.cygnus.com>
1426 * tinfo.cc (operator==): Always compare names.
1428 1998-10-12 Herman ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
1430 * decl.c (start_function): Fix cut-and-paste error.
1432 1998-10-12 Jason Merrill <jason@yorick.cygnus.com>
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.
1440 * typeck2.c (my_friendly_abort): Add URL.
1442 1998-10-12 Alastair J. Houghton <ajh8@doc.ic.ac.uk>
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.
1448 1998-10-11 Mark Mitchell <mark@markmitchell.com>
1450 * cp-tree.h (specializations_of_same_template_p): Declare.
1451 * pt.c (specializations_of_same_template_p): New function.
1453 * search.c (get_template_base): Use it.
1454 (get_template_base_recursive): Likewise.
1456 1998-10-10 Manfred Hollstein <manfred@s-direktnet.de>
1458 * decl2.c (start_objects): Add new variable `joiner' and
1459 initialize it properly.
1461 1998-10-09 Mark Mitchell <mark@markmitchell.com>
1463 * search.c (expand_upcast_fixups): Tweak to match 1998-10-07
1464 change to vtable types.
1466 * cvt.c (ocp_convert): Avoid infinite recursion caused by
1469 1998-10-08 Jason Merrill <jason@yorick.cygnus.com>
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.
1483 Thu Oct 8 15:58:30 1998 Anthony Green <green@cygnus.com>
1485 * semantics.c (finish_asm_stmt): Revert my 1998-09-28
1488 Thu Oct 8 06:00:19 1998 Jeffrey A Law (law@cygnus.com)
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.
1500 Wed Oct 7 12:32:44 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
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).
1506 1998-10-07 Mark Mitchell <mark@markmitchell.com>
1508 * class.c (finish_struct_1): Add commentary on previous change.
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.
1518 1998-10-06 Mark Mitchell <mark@markmitchell.com>
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
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
1590 * expr.c (cpls_expand_expr): Remove dead code. Handle
1592 * friend.c (do_friend): Lookup friends when in nested classes.
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
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
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.
1638 * typeck.c (unary_complex_lvalue): Build PTRMEM_CSTs, not
1639 INTEGER_CSTs, for pointer-to-data members.
1641 * call.c (resolve_args): Resolve template specializations, if
1644 Tue Oct 6 07:57:26 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1646 * Makefile.in (spew.o): Depend on toplev.h.
1648 * call.c (compare_ics): Initialize variables `deref_from_type2',
1649 `deref_to_type1' and `deref_to_type2'.
1651 * except.c (get_eh_type): Hide prototype and definition.
1652 (process_start_catch_block_old): Remove unused static prototype.
1654 * pt.c (tsubst_decl): Initialize variable `argvec'.
1656 * spew.c: Include toplev.h.
1658 1998-10-05 Jason Merrill <jason@yorick.cygnus.com>
1660 * pt.c (instantiate_decl): Do save and restore file position.
1662 1998-10-05 Martin von Löwis <loewis@informatik.hu-berlin.de>
1664 * method.c (build_decl_overload_real): Clear
1665 numeric_output_need_bar after __.
1667 1998-10-05 Nathan Sidwell <nathan@acm.org>
1669 * call.c (build_new_method_call): Issue 'incomplete type' error,
1670 if class is not defined.
1672 1998-10-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
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'.
1678 1998-10-04 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
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.
1684 1998-10-04 Jason Merrill <jason@yorick.cygnus.com>
1686 * pt.c (pop_tinst_level): Call extract_interface_info.
1687 (instantiate_decl): Don't save and restore file position.
1689 * decl.c (cp_finish_decl): Make statics in extern inlines and
1690 templates common, if possible and the target doesn't support weak
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.
1700 1998-10-04 Mark Mitchell <mark@markmitchell.com>
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.
1707 * search.c (expand_upcast_vtables): In addition to unsetting
1708 TREE_READONLY, remove top-level const type qualifier.
1710 1998-10-03 Mark Mitchell <mark@markmitchell.com>
1712 * class.c (current_class_ptr, current_class_ref): Clarify
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
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
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
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.
1743 1998-10-03 Jason Merrill <jason@yorick.cygnus.com>
1745 * decl2.c (merge_functions): Remove duplicates.
1747 * decl2.c: Add -f{no-,}implicit-inline-templates.
1748 (import_export_decl): Check it.
1750 * decl.c (lookup_name_real): Template parms also take precedence
1751 over implicit typename. Only warn if yylex.
1753 * typeck.c (build_conditional_expr): Only fold if ifexp is an
1756 * decl2.c (finish_vtable_vardecl): Check DECL_INTERFACE_KNOWN
1759 1998-10-01 Jason Merrill <jason@yorick.cygnus.com>
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.
1766 Thu Oct 1 10:43:45 1998 Nick Clifton <nickc@cygnus.com>
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.
1773 * lex.c: Replace occurrences of HANDLE_SYSV_PRAGMA with
1774 HANDLE_GENERIC_PRAGMAS.
1776 1998-09-28 Anthony Green <green@cygnus.com>
1778 * semantics.c (finish_asm_stmt): Always permit volatile asms.
1780 1998-09-28 Mark Mitchell <mark@markmitchell.com>
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.
1787 1998-09-25 Jason Merrill <jason@yorick.cygnus.com>
1789 * search.c (get_base_distance): Remove assert.
1791 * decl2.c (build_anon_union_vars): Don't process a field with no
1793 (finish_anon_union): Also complain about local anon unions with no
1796 1998-09-25 Martin von Löwis <loewis@informatik.hu-berlin.de>
1798 * decl.c (lookup_namespace_name): If the name is a namespace,
1799 return it immediately.
1801 Fri Sep 25 11:45:38 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
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.
1813 * cvt.c (build_up_reference): Remove unused parameter
1814 `checkconst', all callers changed.
1815 (build_type_conversion): Mark parameter `code' with
1817 (build_expr_type_conversion): Initialize variable `conv'.
1819 * decl.c (push_namespace): Initialize variable `d'.
1820 (define_case_label): Remove unused parameter `decl', all callers
1823 * decl2.c (lang_decode_option): If !USE_CPPLIB, mark parameter
1824 `argc' with ATTRIBUTE_UNUSED.
1825 (grokclassfn): Remove unused parameter `cname', all callers
1827 (check_java_method): Likewise for parameter `ctype'.
1828 (copy_assignment_arg_p): Mark parameter `virtualp' with
1830 (finish_prevtable_vardecl): Likewise for parameter `prev'.
1832 * expr.c (extract_init): Likewise for parameters `decl' and `init'.
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
1842 * lex.c (set_typedecl_interface_info): Mark parameter `prev' with
1844 (readescape): Use (unsigned) value in shift.
1845 (real_yylex): Likewise. Likewise. Also cast `sizeof' to int when
1846 comparing to a signed quantity.
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
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
1858 * spew.c (scan_tokens): Change type of parameter `n' to unsigned.
1859 Likewise for variable `i'.
1860 (yylex): Initialize variable `trrr'.
1862 * typeck.c (compparms): Mark variable `strict' with
1865 * xref.c (simplify_type): Cast argument of ctype function to
1868 1998-09-24 Mark Mitchell <mark@markmitchell.com>
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
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.
1881 1998-09-24 Benjamin Kosnik <bkoz@loony.cygnus.com>
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.
1889 Tue Sep 22 21:01:19 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
1891 * friend.c (do_friend): Make warning a full sentence.
1893 1998-09-22 Mark Mitchell <mark@markmitchell.com>
1895 * parse.y (component_decl_list): Improve error-recovery.
1897 1998-09-22 Benjamin Kosnik <bkoz@loony.cygnus.com>
1899 * decl.c (make_typename_type): Move error to point where name
1900 variable can be used by dump_type.
1902 1998-09-22 Mark Mitchell <mark@markmitchell.com>
1904 * decl.c (grokfndecl): Improve error-recovery.
1905 * decl2.c (grokfield): Likewise.
1906 * pt.c (finish_member_template_decl): Likewise.
1908 1998-09-20 Martin von Löwis <loewis@informatik.hu-berlin.de>
1910 * method.c (hack_identifier): Finding multiple members is always
1913 1998-09-21 Per Bothner <bothner@cygnus.com>
1915 * Make-lang.in (c++-filt): Link libiberty.a after cxxmain.o.
1917 Mon Sep 21 01:53:05 1998 Felix Lee <flee@cygnus.com>
1919 * lex.c (init_lex): Use getenv ("LANG"), not GET_ENVIRONMENT ().
1921 1998-09-20 Mark Mitchell <mark@markmitchell.com>
1923 * class.c (maybe_warn_about_overly_private_class): Reformat.
1925 1998-09-17 Andrew MacLeod <amacleod@cygnus.com>
1927 * exception.cc (__cplus_type_matcher): Realign some code.
1929 1998-09-16 Mark Mitchell <mark@markmitchell.com>
1931 * Make-lang.in (tinfo.o): Use CXXFLAGS when compiling.
1932 (tinfo2.o): Likewise.
1933 (exception.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.
1944 1998-09-16 Richard Henderson <rth@cygnus.com>
1946 * decl.c (init_decl_processing): Kill __builtin_fp and __builtin_sp.
1948 1998-09-15 Alexandre Oliva <oliva@dcc.unicamp.br>
1950 * call.c (build_field_call): Handle static data members too.
1952 * typeck.c (comptypes): When comparing pointer types, check
1953 whether referred types match even in strictest modes.
1955 1998-09-15 Mark Mitchell <mark@markmitchell.com>
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,
1966 (finish_struct): Adjust.
1968 1998-09-15 Andrew MacLeod <amacleod@cygnus.com>
1970 * except.c (expand_start_catch_block): No need to check for new
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.
1978 1998-09-15 Andrew MacLeod <amacleod@cygnus.com>
1980 * search.c (expand_indirect_vtbls_init): Mark temporary stack slots
1981 as used to prevent conflicts with virtual function tables.
1983 1998-09-14 Mark Mitchell <mark@markmitchell.com>
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
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
1998 1998-09-10 Mark Mitchell <mark@markmitchell.com>
2000 * decl.c (pushdecl): Don't copy types if the
2001 DECL_ABSTRACT_ORIGIN of the new decl matches the TYPE_NAME of the
2004 1998-09-09 Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
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.
2012 1998-09-09 Jason Merrill <jason@yorick.cygnus.com>
2014 * g++spec.c (lang_specific_driver): Check whether MATH_LIBRARY is
2015 null to decide whether to use it.
2017 * error.c (dump_type_real): Handle NAMESPACE_DECL.
2018 * parse.y (base_class.1): Avoid crash on error.
2020 1998-09-08 Martin von Löwis <loewis@informatik.hu-berlin.de>
2022 * decl.c (make_typename_type): If context is a namespace, the code
2025 1998-09-08 Mumit Khan <khan@xraylith.wisc.edu>
2027 * parse.y (nomods_initdcl0): Set up the parser stack correctly.
2029 1998-09-08 Mark Mitchell <mark@markmitchell.com>
2031 * cp-tree.h (anonymous_namespace_name): Declare.
2032 * decl.c: Define it.
2033 (push_namespace): Use anonymous_namespace_name, rather than local
2035 * error.c (dump_decl): If a namespace is named
2036 anonymous_namespace_name, call it {anonymous}.
2038 * decl.c (grokparms): Distinguish between references and pointers
2041 1998-09-08 Richard Henderson <rth@cygnus.com>
2042 Mark Mitchell <mark@markmitchell.com>
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.
2048 Sun Sep 6 00:00:51 1998 Jeffrey A Law (law@cygnus.com)
2050 * Makefile.in (INCLUDES): Update after recent toplevel gcc
2053 1998-09-05 Mark Mitchell <mark@markmitchell.com>
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
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.
2074 1998-09-04 Mark Mitchell <mark@markmitchell.com>
2076 * inc/typeinfo (type_info::type_info(const char*)): Make
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.
2088 1998-09-03 Jason Merrill <jason@yorick.cygnus.com>
2090 * decl2.c (import_export_vtable): Always make artificials comdat.
2091 (import_export_decl): Likewise.
2092 * pt.c (mark_decl_instantiated): Likewise.
2094 1998-09-03 Mark Mitchell <mark@markmitchell.com>
2096 * cp-tree.h (finish_globally_qualified_member_call_expr):
2098 (finish_qualified_call_expr).
2099 * semantics.c: Likewise.
2100 * parse.y (primary): Use it.
2101 * method.c (hack_identifier): Remove redundant code.
2103 * init.c (resolve_offset_ref): Call convert_from_reference to
2104 handle members of reference type. Improve error recovery.
2106 1998-09-03 Benjamin Kosnik <bkoz@cygnus.com>
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.
2113 1998-09-03 Mark Mitchell <mark@markmitchell.com>
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.
2119 1998-09-03 Benjamin Kosnik <bkoz@rhino.cygnus.com>
2121 * decl.c (pushdecl_class_level): Add warning here.
2124 1998-09-02 Jason Merrill <jason@yorick.cygnus.com>
2126 * cvt.c (convert_pointer_to_real): Tidy.
2127 * search.c (get_base_distance_recursive): Simplify.
2128 (get_base_distance): Likewise.
2130 * pt.c (unify): Only special-case INTEGER_TYPE if it uses template
2133 Wed Sep 02 09:25:29 1998 Nick Clifton <nickc@cygnus.com>
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.
2146 1998-09-01 Jason Merrill <jason@yorick.cygnus.com>
2148 * decl2.c (output_vtable_inherit): Use %cDIGIT in the operands.
2149 * class.c (build_vtable_entry_ref): Likewise.
2151 1998-09-01 Mark Mitchell <mark@markmitchell.com>
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.
2157 1998-09-01 Jason Merrill <jason@yorick.cygnus.com>
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
2169 * cp-tree.h: Declare flag_strict_prototype.
2170 * lex.c (do_scoped_id, do_identifier): Don't implicitly_declare if
2172 * decl.c (init_decl_processing): If -f{no,-}strict-prototype wasn't
2173 specified, set it to the value of pedantic.
2175 1998-09-01 Mark Mitchell <mark@markmitchell.com>
2177 * decl2.c (arg_assoc): Handle template-id expressions as arguments.
2179 1998-08-31 Mark Mitchell <mark@markmitchell.com>
2181 * decl.c (finish_enum): Handle member enums of classes declared in
2184 * decl2.c (grok_x_components): Strip attributes before calling
2187 1998-08-31 Jason Merrill <jason@yorick.cygnus.com>
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.
2199 Sun Aug 30 22:16:31 1998 H.J. Lu (hjl@gnu.org)
2201 * Makefile.in (INTERFACE): New, set to 1.
2203 1998-08-30 Mark Mitchell <mark@markmitchell.com>
2205 * error.c (dump_decl): Use CP_DECL_CONTEXT, not DECL_CONTEXT, when
2206 comparing with global_namespace.
2207 (dump_aggr_type): Likewise.
2209 * decl.c (grokfndecl): Issue error on declaration of friend
2210 templates with explicit template arguments.
2212 * pt.c (convert_template_argument): New function, split out
2214 (coerce_template_parms): Here.
2215 (tsubst): Attempt better error-recovery.
2217 1998-08-28 Benjamin Kosnik <bkoz@loony.cygnus.com>
2219 * pt.c (decl_template_parm_p): Add checks for
2220 TEMPLATE_TEMPLATE_PARM.
2222 1998-08-28 Mark Mitchell <mark@markmitchell.com>
2224 * lex.c (do_identifier): Fix thinko in previous change.
2226 1998-08-28 Jason Merrill <jason@yorick.cygnus.com>
2228 * search.c (dfs_search, binfo_for_vtable, dfs_bfv_helper): New fns.
2229 * decl2.c (output_vtable_inherit): Call binfo_for_vtable.
2231 1998-08-28 Richard Henderson <rth@cygnus.com>
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.
2241 1998-08-28 Mark Mitchell <mark@markmitchell.com>
2243 * cp-tree.h (build_enumerator): Take the enumeration type as a
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
2249 (build_enumerator): Take the enumeration type as a
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.
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.
2263 * cp-tree.h (finish_base_specifier): New function.
2264 * parse.y (base_class): Use it.
2265 * semantics.c (finish_base_specifier): Define it.
2267 * parse.y (structsp): Warn on use of typename outside of template
2270 1998-08-27 Jason Merrill <jason@yorick.cygnus.com>
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.
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.
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.
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
2313 * class.c (build_vbase_path): Just call it.
2314 * search.c (compute_access): Likewise. Don't re-reverse.
2316 1998-08-27 Mark Mitchell <mark@markmitchell.com>
2318 * class.c (build_vbase_path): Use reverse_path.
2319 (finish_base_struct): Move warnings for inaccessible bases to
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.
2346 1998-08-27 Jason Merrill <jason@yorick.cygnus.com>
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.
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.
2368 1998-08-27 Mark Mitchell <mark@markmitchell.com>
2370 * decl.c (build_enumerator): Set DECL_CONTEXT for the
2373 1998-08-26 Mark Mitchell <mark@markmitchell.com>
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.
2387 * decl.c (duplicate_decls): Don't obliterate the
2388 DECL_TEMPLATE_INFO for a template if we're not replacing it with
2391 * lex.c (do_identifier): Fix typo in comment.
2393 Wed Aug 26 10:54:51 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2395 * errfn.c: Remove stdarg.h/varargs.h.
2398 1998-08-25 Brendan Kehoe <brendan@cygnus.com>
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.
2404 1998-08-25 Jason Merrill <jason@yorick.cygnus.com>
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.
2412 1998-08-25 Mark Mitchell <mark@markmitchell.com>
2414 * search.c (dependent_base_p): Don't compare a binfo to
2415 current_class_type; use the TREE_TYPE of the binfo instead.
2417 * cp-tree.h (CLASS_TYPE_P): Revise definition.
2419 1998-08-25 Jason Merrill <jason@yorick.cygnus.com>
2421 * decl.c (duplicate_decls): Don't complain about different
2422 exceptions from an internal decl even if pedantic.
2424 * typeck.c (convert_for_assignment): Converting from pm of vbase
2425 to derived is an error, not a sorry.
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.
2436 1998-08-24 Mark Mitchell <mark@markmitchell.com>
2438 * pt.c (tsubst_decl): Move special case code for dealing with
2439 tricky friend templates here from ...
2440 (regenerate_decl_from_template): Here.
2442 1998-08-24 Jason Merrill <jason@yorick.cygnus.com>
2444 * decl.c (start_decl): Remove redundant linkage check.
2446 1998-08-24 Gavin Romig-Koch <gavin@cygnus.com>
2448 * typeck.c (c_expand_return): Handle the case that valtype
2449 is wider than the functions return type.
2451 1998-08-24 Mark Mitchell <mark@markmitchell.com>
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.
2457 1998-08-24 Benjamin Kosnik <bkoz@cygnus.com>
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.
2465 1998-08-24 Jason Merrill <jason@yorick.cygnus.com>
2467 * parse.y (primary): Fix up the type of string constants.
2469 1998-08-24 Mark Mitchell <mark@markmitchell.com>
2471 * typeck.c (convert_for_initialization): Move check for odd uses
2472 of NULL to avoid duplicate warnings.
2474 1998-08-24 Jason Merrill <jason@yorick.cygnus.com>
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
2487 1998-08-24 Andrew MacLeod <amacleod@cygnus.com>
2489 * lang-options.h (lang_options): Add fconst-strings to the list
2491 * decl2.c (lang_f_options, lang_decode_option): Likewise.
2493 1998-08-24 Nathan Sidwell <nathan@acm.org>
2495 * lex.c (real_yylex): Don't warn about long long constants if
2496 we're allowing long long.
2498 1998-08-24 Martin von Löwis <loewis@informatik.hu-berlin.de>
2500 * decl.c (pushdecl): Use IDENTIFIER_NAMESPACE_VALUE instead of
2501 accessing bindings directly.
2503 * search.c (my_tree_cons): Reimplement.
2505 * lang-specs.h: Remove __HONOR_STD.
2506 * inc/exception, inc/new, inc/new.h, inc/typeinfo: Likewise.
2508 1998-08-23 Mark Mitchell <mark@markmitchell.com>
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.
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.
2528 * cp-tree.h (ansi_null_node): Remove.
2529 * call.c (build_over_call): Warn about converting NULL to an
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
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
2542 (convert_for_initialization): Likewise.
2544 1998-08-20 Jason Merrill <jason@yorick.cygnus.com>
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.
2551 * method.c (process_overload_item): Remove useless code.
2553 1998-08-20 Per Bothner <bothner@cygnus.com>
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.
2560 * pt.c (lookup_template_class): Copy TYPE_FOR_JAVA flag.
2561 * decl2.c (acceptable_java_type): Handle template-derived types.
2563 1998-08-20 Per Bothner <bothner@cygnus.com>
2565 * decl2.c (import_export_vtable): Suppress vtables for Java classes.
2567 1998-08-20 Mark Mitchell <mark@markmitchell.com>
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
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
2578 (instantiate_decl): Likewise.
2580 Thu Aug 20 09:09:45 1998 Jeffrey A Law (law@cygnus.com)
2582 * init.c (build_builtin_delete_call): Add missing assemble_external
2585 1998-08-20 Jason Merrill <jason@yorick.cygnus.com>
2587 * parse.y (notype_unqualified_id): Also accept ~A<int>.
2589 1998-08-19 Mark Mitchell <mark@markmitchell.com>
2591 * typeck.c (build_binary_op_nodefault): Warn on use of NULL in
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
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.
2605 1998-08-17 Mark Mitchell <mark@markmitchell.com>
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.
2611 1998-08-17 Jason Merrill <jason@yorick.cygnus.com>
2613 * decl.c (grokparms): No, here.
2615 * decl.c (grokdeclarator): Catch parm with pointer to array of
2616 unknown bound here...
2617 * method.c (process_overload_item): ...not here.
2619 * gxxint.texi: Remove obsolete documentation of overloading code.
2621 * decl.c (finish_enum): Also set TYPE_SIZE_UNIT.
2622 * class.c (finish_struct_bits): Likewise.
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.
2629 * decl2.c (lang_decode_option): Ignore -traditional.
2631 * init.c (build_offset_ref): Don't mess with error_mark_node.
2632 * lex.c (do_scoped_id): Use cp_error.
2634 * rtti.c (get_tinfo_fn): Don't mess with the context for now.
2636 1998-08-17 Benjamin Kosnik <bkoz@loony.cygnus.com>
2638 * decl.c (grokdeclarator): Allow anonymous types to be cv-qualified.
2640 Mon Aug 17 10:40:18 1998 Jeffrey A Law (law@cygnus.com)
2642 * cp-tree.h (set_identifier_local_value): Provide prototype.
2644 * decl2.c (do_namespace_alias): Remove unused variables `binding'
2647 Fri Aug 14 16:42:27 1998 Nick Clifton <nickc@cygnus.com>
2649 * Makefile.in: Rename BBISON to BISON so that it can be properly
2650 inherited from the parent makefile.
2652 1998-08-13 Jason Merrill <jason@yorick.cygnus.com>
2654 * lang-options.h: Add -finit-priority.
2655 * decl2.c: Likewise. Check flag_init_priority instead of
2658 * decl2.c (setup_initp): New fn.
2659 (start_objects, finish_objects, do_ctors): Handle init_priority.
2660 (do_dtors, finish_file): Likewise.
2662 1998-08-13 Jason Merrill <jason@yorick.cygnus.com>
2664 * pt.c (tsubst_copy): Hush warning.
2666 * rtti.c (get_tinfo_fn): Also set DECL_IGNORED_P.
2668 1998-08-12 Mark Mitchell <mark@markmitchell.com>
2670 * pt.c (print_template_context): Don't abort when instantiating a
2673 * decl.c (grokdeclarator): Issue errors on namespace qualified
2674 declarators in parameter lists or in class scope.
2676 1998-08-09 Mark Mitchell <mark@markmitchell.com>
2678 * pt.c (check_explicit_specialization): Don't abort on bogus
2679 explicit instantiations.
2681 1998-08-07 Mark Mitchell <mark@markmitchell.com>
2683 * typeck.c (require_complete_type): Use complete_type_or_else.
2684 (complete_type_or_else): Always return NULL_TREE on failure, as
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
2692 (instantiate_class_template): Set input_filename and lineno as
2694 (tsubst): Move _DECL processing to tsubst_decl. Make sure the
2695 context for a TYPENAME_TYPE is complete.
2697 * decl2.c (grokbitfield): Issue errors on bitfields declared with
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
2703 * cvt.c (cp_convert_to_pointer): Handle NULL pointer
2704 conversions, even in complex virtual base class hierarchies.
2706 1998-08-06 Mark Mitchell <mark@markmitchell.com>
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
2717 (finish_enum): Clean up, document. Make sure template enum
2718 constants get the correct type.
2719 (build_enumerator): Copy initializers for template enumerations,
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
2725 * pt.c (tsubst_enum): Remove field_chain parameter.
2726 (template_class_depth): Include the depth of surrounding function
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.
2738 (tsubst_copy): Likewise.
2739 (tsubst_expr): Call tsubst, not tsubst_enum for TAG_DEFNs.
2741 1998-08-04 Mark Mitchell <mark@markmitchell.com>
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
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
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
2764 * init.c (build_offset_ref): Deal with a TEMPLATE_ID_EXPR whose
2765 name is a LOOKUP_EXPR, rather than an IDENTIFIER_NODE.
2767 1998-08-03 Jason Merrill <jason@yorick.cygnus.com>
2769 * method.c (set_mangled_name_for_decl): Change return type to void.
2771 * decl.c (lookup_name_real): A namespace-level decl takes priority
2772 over implicit typename. Avoid doing the same lookup twice.
2774 * search.c (dependent_base_p): New fn.
2775 (dfs_pushdecls, dfs_compress_decls): Use it.
2777 * typeck.c (get_member_function_from_ptrfunc): Don't try to handle
2778 virtual functions if the type doesn't have any.
2780 1998-08-03 Mark Mitchell <mark@markmitchell.com>
2782 * decl2.c (grokfield): Don't mangle the name of a TYPE_DECL if it
2783 uses template parameters.
2785 1998-08-02 Mark Mitchell <mark@markmitchell.com>
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
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.
2802 1998-08-01 Jason Merrill <jason@yorick.cygnus.com>
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.
2809 1998-07-31 Mark Mitchell <mark@markmitchell.com>
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
2827 (tsubst_friend_function): Fix comment.
2828 (tsubst, case FUNCTION_DECL): Deal with a DECL_TI_TEMPLATE that is
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.
2834 1998-07-29 Jason Merrill <jason@yorick.cygnus.com>
2836 * decl.c (push_overloaded_decl): Use current_namespace instead of
2837 DECL_CONTEXT (decl) to determine where we go.
2839 * decl.c (lookup_name_real): Fix typo.
2841 1998-07-28 Mark Mitchell <mark@markmitchell.com>
2843 * friend.c (is_friend): Be lenient with member functions to deal
2844 with nested friends.
2846 1998-07-28 Jason Merrill <jason@yorick.cygnus.com>
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.
2853 1998-07-27 Mark Mitchell <mark@markmitchell.com>
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
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
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
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
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
2894 (template_extdef, template_datadef): New non-terminals, containing
2895 only those rules for things which can be templates.
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
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
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
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
2937 (classtype_mangled_name): Don't mangle the names of
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.
2976 1998-07-27 Jason Merrill <jason@yorick.cygnus.com>
2978 * typeck2.c (build_functional_cast): Handle default-initialization.
2980 * call.c (build_over_call): Pass 1 to popclass.
2982 * parse.y (direct_notype_declarator): Add precedence declaration
2983 to notype_unqualified_id case.
2984 * Makefile.in (EXPECT): Adjust.
2986 * tree.c (ovl_member): Fix for single function in OVL.
2988 1998-07-27 Dave Brolley <brolley@cygnus.com>
2990 * c-lex.c (yylex): Fix boundary conditions in character literal and
2991 string literal loops.
2993 1998-07-24 Jason Merrill <jason@yorick.cygnus.com>
2995 * decl.c (lookup_name_real): OK, do return the from_obj value
2996 unless got_object depends on template parms.
2998 * parse.y (nested_name_specifier_1): Pull out the TYPE_MAIN_VARIANT.
3000 * pt.c (coerce_template_parms): Also complain about local enums.
3002 * cp-tree.h: Add prototype for set_identifier_local_value.
3003 * decl.c (set_identifier_local_value_with_scope): Make static,
3005 * search.c (covariant_return_p): Likewise.
3006 * except.c (build_terminate_handler, alloc_eh_object): Likewise.
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.
3012 1998-07-23 Jason Merrill <jason@yorick.cygnus.com>
3014 * except.c (process_start_catch_block_old): Call start_decl_1 for
3016 * decl.c (start_decl_1): Avoid duplicate error.
3018 * init.c (expand_default_init): Only perform the initialization if
3019 it will do something.
3021 1998-07-23 H.J. Lu (hjl@gnu.org)
3023 * parse.y (base_class): Check for invalid base class.
3025 1998-07-23 Jason Merrill <jason@yorick.cygnus.com>
3027 * decl2.c (import_export_template): Fold in...
3028 (import_export_class): ...to here. Handle dllimport/export.
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.
3036 * decl.c (start_function): #if 0 mysterious code I wrote and have
3038 * rtti.c (get_tinfo_fn): If this is for a class type, set
3041 1998-07-22 Jason Merrill <jason@yorick.cygnus.com>
3043 * inc/exception: Change terminate and unexpected to ().
3045 * parse.y (named_class_head_sans_basetype_defn): A
3046 named_class_head_sans_basetype followed by '{' or ':' is a defn.
3048 1998-07-21 Jason Merrill <jason@yorick.cygnus.com>
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
3056 1998-07-20 Dave Brolley <brolley@cygnus.com>
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.
3064 1998-07-19 Jason Merrill <jason@yorick.cygnus.com>
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
3071 1998-07-19 Mark Mitchell <mark@markmitchell.com>
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.
3077 * decl.c (pushtag): Don't put out debugging information for
3078 compiler-generated typedefs.
3080 * error.c (dump_type_real): Don't crash when presented with
3081 intQI_type_node or the like.
3083 * semantics.c (finish_translation_unit): Fix spelling error in
3086 1998-07-17 Jason Merrill <jason@yorick.cygnus.com>
3088 * decl.c (lookup_name_real): Pull out single function here.
3089 (select_decl): Not here.
3090 (unqualified_namespace_lookup): Use CP_DECL_CONTEXT.
3092 * decl.c (qualify_lookup): Tweak again.
3094 * pt.c (lookup_template_class): Don't mess with the context of the
3096 * decl2.c (current_decl_namespace): Remove special handling for
3099 * pt.c (tsubst, case FUNCTION_DECL): Fix getting complete args for
3100 a member template specialization.
3102 * tree.c (ovl_member): Use decls_match to compare functions.
3103 * decl.c (decls_match): Check the context of a function.
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.
3109 * typeck.c (build_x_function_call): Handle overloaded methods.
3111 * decl.c (grokvardecl): Don't call build_static_name for extern "C".
3113 1998-07-16 Mark Mitchell <mark@markmitchell.com>
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.
3119 1998-07-16 Jason Merrill <jason@yorick.cygnus.com>
3121 * decl.c (qualify_lookup): Handle templates.
3123 * decl2.c (do_using_directive): Don't pass ancestor.
3124 * decl.c (push_using_directive): Calculate ancestor.
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.
3131 (set_identifier_local_value, lookup_type_current_level): New fns.
3132 * decl2.c (do_local_using_decl): Handle types and binding level
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.
3140 * decl2.c (do_class_using_decl): Make sure we get an identifier.
3141 * class.c (handle_using_decl): Ignore TYPE_DECLs.
3143 * decl.c (qualify_lookup): New fn.
3144 (lookup_name_real): Use it.
3146 1998-07-16 Martin v. Löwis <loewis@informatik.hu-berlin.de>
3148 * decl2.c (add_using_namespace): When directly using a namespace
3149 that was indirect before, promote it.
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
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.
3165 1998-07-16 Jason Merrill <jason@yorick.cygnus.com>
3167 * typeck.c (convert_for_assignment): Use comptypes.
3169 1998-07-16 Mark Mitchell <mark@markmitchell.com>
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.
3175 1998-07-15 Jason Merrill <jason@yorick.cygnus.com>
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.
3180 * lex.c (looking_for_typename): Don't initialize.
3182 * decl2.c (ambiguous_decl): Clarify error message.
3184 * decl.c (push_using_directive): Iterate over namespaces used
3187 1998-07-15 Martin v. Löwis <loewis@informatik.hu-berlin.de>
3189 * decl2.c (add_using_namespace): Iterate over namespaces used
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.
3200 1998-07-15 Jason Merrill <jason@yorick.cygnus.com>
3202 * decl2.c (arg_assoc_type): Handle METHOD_TYPE like FUNCTION_TYPE.
3203 Handle TEMPLATE_TYPE_PARM.
3204 (arg_assoc): Rewrite.
3206 * pt.c (complete_template_args): Don't look at the context unless
3209 * method.c (build_decl_overload_real): Fix namespace handling.
3211 * typeck.c (build_unary_op): Extract a lone function from an
3214 * call.c (build_scoped_method_call): Handle getting a namespace
3215 for basetype in a destructor call.
3216 (check_dtor_name): Handle enums.
3218 * parse.y (using_directive): New nonterminal.
3219 (extdef, simple_stmt): Use it.
3221 1998-07-14 Martin von Löwis <loewis@informatik.hu-berlin.de>
3223 * decl2.c (add_function): Move error message ...
3224 (arg_assoc_namespace): ... from here.
3226 1998-07-14 Jason Merrill <jason@yorick.cygnus.com>
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.
3232 Tue Jul 14 20:09:22 1998 Jeffrey A Law (law@cygnus.com)
3234 * search.c (my_tree_cons): Clean up.
3236 1998-07-14 Jason Merrill <jason@yorick.cygnus.com>
3238 * call.c (joust): Don't warn about "confusing" conversions to the
3241 1998-07-14 Martin von Löwis <loewis@informatik.hu-berlin.de>
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.
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.
3257 * init.c (build_offset_ref): Call mark_used and
3258 convert_from_reference for namespace members.
3260 Mon Jul 13 23:25:28 1998 Martin von Löwis <loewis@informatik.hu-berlin.de>
3262 * search.c (my_tree_cons): The bitfield is at index 2.
3264 Mon Jul 13 17:21:01 1998 Nick Clifton <nickc@cygnus.com>
3266 * lang-options.h: Format changed to work with new --help support
3269 1998-07-12 Martin von Löwis <loewis@informatik.hu-berlin.de>
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.
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
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
3298 (namespace_qualifier, namespace_using_decl): New non-terminals.
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.
3305 1998-07-12 Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
3307 * typeck.c (comptypes, case TEMPLATE_TEMPLATE_PARM): Add parameter
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.
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.
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
3326 1998-07-12 Klaus Kaempf (kkaempf@progis.de)
3328 * repo.c (get_base_filename): Use file_name_nondirectory.
3329 (open_repo_file): Likewise.
3330 * cp-tree.h (file_name_nondirectory): Add prototype.
3332 1998-07-12 Jason Merrill <jason@yorick.cygnus.com>
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
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.
3346 Sun Jul 12 01:20:57 1998 Jeffrey A Law (law@cygnus.com)
3348 * g++.1 (-traditional): Remove duplicated documentation.
3350 1998-07-11 Mark Mitchell <mark@markmitchell.com>
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.
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
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
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.
3388 * pt.c (push_template_decl_real): Don't look at DECL_TEMPLATE_INFO
3391 1998-07-08 Vladimir N. Makarov <vmakarov@cygnus.com>
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.
3399 1998-07-07 Jason Merrill <jason@yorick.cygnus.com>
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.
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.
3415 1998-07-06 Jason Merrill <jason@yorick.cygnus.com>
3417 * decl.c (lookup_tag): Use CP_DECL_CONTEXT.
3419 * tree.c (make_binfo): Fix length.
3421 1998-06-30 Benjamin Kosnik <bkoz@bliss.nabi.net>
3423 * decl2.c (lang_decode_option): Remove warn_template_debugging.
3424 * lang-options.h: Likewise.
3426 Mon Jun 29 20:17:40 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
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'.
3432 1998-06-29 Brendan Kehoe <brendan@cygnus.com>
3434 * tree.c (build_srcloc): Make sure we allocate this node on the
3437 Sat Jun 27 23:34:18 1998 Fred Fish <fnf@ninemoons.com>
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
3444 Sat Jun 27 12:22:56 1998 Jeffrey A Law (law@cygnus.com)
3446 * Make-lang.in (g++): Depend on mkstemp.o. Link in mkstemp.o
3448 Sat Jun 27 07:36:09 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3450 * Makefile.in (EXPR_H): New dependency variable.
3451 (decl2.o): Depend on $(EXPR_H).
3452 (typeck.o): Likewise.
3456 1998-06-25 Benjamin Kosnik <bkoz@lisa.cygnus.com>
3458 * decl.c (start_enum): Put local enums on permanent_obstack.
3460 1998-06-25 Mark Mitchell <mark@markmitchell.com>
3462 * cp-tree.h (c_get_alias_set): Declare.
3463 * decl.c (init_decl_processing): Set lang_get_alias_set.
3465 1998-06-25 Andrew MacLeod <amacleod@cygnus.com>
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.
3474 1998-06-25 Dave Brolley <brolley@cygnus.com>
3476 * lang-specs.h: Use new | syntax to eliminate
3477 string concatenation.
3479 1998-06-25 Jason Merrill <jason@yorick.cygnus.com>
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
3487 1998-06-24 Martin v. Löwis <loewis@informatik.hu-berlin.de>
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
3494 (set_namespace_binding, pop_namespace, lookup_name_real): Likewise.
3495 * decl2.c (is_namespace_ancestor, lookup_using_namespace):
3497 * decl.c (pushtag): Use FROB_CONTEXT.
3498 (pushdecl, make_typename_type, define_function, grokdeclarator):
3500 * decl2.c (set_decl_namespace, do_namespace_alias): Likewise.
3501 * pt.c (push_template_decl_real, lookup_template_class, tsubst):
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
3507 (lookup_template_class): Allow for null id_context.
3509 1998-06-25 Richard Henderson <rth@cygnus.com>
3511 * method.c (emit_thunk): Set current_function_is_thunk for the
3512 ASM_OUTPUT_MI_THUNK case as well.
3514 1998-06-23 Andrew MacLeod <amacleod@cygnus.com>
3516 * exception.cc (__cplus_type_matcher): Get a match_info pointer
3517 instead of an exception table entry as a parameter.
3519 1998-06-23 Andrew MacLeod <amacleod@cygnus.com>
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
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.
3539 1998-06-23 Jason Merrill <jason@yorick.cygnus.com>
3541 * call.c (joust): Fix confusing conversion warning.
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.
3548 * pt.c (tsubst): Diagnose creating void fields or variables.
3550 Mon Jun 22 08:50:26 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3552 * call.c (build_scoped_method_call): Remove unused variable `tmp'.
3554 * cp-tree.h (check_dtor_name): Add prototype.
3556 * init.c (expand_member_init): Remove unused variables
3557 `ptr_type_node', `parm' and `rval'.
3559 * ptree.c (print_lang_type): Use HOST_WIDE_INT_PRINT_DEC specifier
3561 (lang_print_xnode): Likewise.
3563 * typeck2.c (enum_name_string): Cast argument to sprintf to long
3564 and use %ld specifier.
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.
3570 Fri Jun 19 23:22:42 1998 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
3572 * typeck2.c (pop_init_level): Warn about implicit zero initialization
3575 Thu Jun 18 09:32:32 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3577 * cp-tree.h: Prototype function `check_java_method'.
3579 1998-06-17 Jason Merrill <jason@yorick.cygnus.com>
3581 * class.c (finish_struct): Make conflicting use of id a pedwarn.
3582 * decl.c (pushdecl_class_level): Likewise.
3584 1998-06-17 Mark Mitchell <mark@markmitchell.com>
3586 * pt.c (convert_nontype_argument): Issue an error when presented
3587 with an integer (real) constant that cannot be simplified to an
3590 * cp-tree.h (c_get_alias_set): Remove declaration added in
3591 1998-06-13 change that should never have been checked in.
3593 1998-06-17 Jason Merrill <jason@yorick.cygnus.com>
3595 * typeck.c (build_binary_op_nodefault): Change % in format strings
3598 * decl.c (grokvardecl): Don't build_static_name for decls that
3599 aren't at namespace scope.
3601 * init.c (perform_member_init): Catch default-initialization of
3604 1998-06-17 Mark Mitchell <mark@markmitchell.com>
3606 * errfn.c (cp_thing): Handle the `%%' formatting sequence.
3608 1998-06-17 Jason Merrill <jason@yorick.cygnus.com>
3610 * method.c (hack_identifier): Complain about getting a namespace
3612 * typeck.c (decay_conversion): Remove check for namespaces.
3613 * typeck2.c (incomplete_type_error): Likewise.
3614 * parse.y (template_arg): Add PTYPENAME expansion.
3616 1998-06-16 Andrew MacLeod <amacleod@cygnus.com>
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.
3623 1998-06-16 Jason Merrill <jason@yorick.cygnus.com>
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.
3630 * typeck.c (build_static_cast): Fix handling of pointers to members.
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.
3636 1998-06-13 Mark Mitchell <mark@markmitchell.com>
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
3641 (handle_using_decl): New function containing code split out from ...
3642 (finish_struct_1): Here.
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.
3653 * pt.c (for_each_template_parm): Traverse the TYPE_CONTEXT for
3656 * search.c (get_matching_virtual): Note that member templates
3657 cannot override virtual functions.
3659 1998-06-12 Brendan Kehoe <brendan@cygnus.com>
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.
3668 1998-06-12 Mark Mitchell <mark@markmitchell.com>
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.
3681 1998-06-11 Mark Mitchell <mark@markmitchell.com>
3683 * pt.c (is_member_template_class): New function.
3684 (push_template_decl_real): Use it.
3686 1998-06-11 Benjamin Kosnik <bkoz@elmo.cygnus.com>
3688 * friend.c (do_friend): Add support for nested classes using
3689 member functions of the enclosing class as friends.
3691 1998-06-10 Mark Mitchell <mark@markmitchell.com>
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.
3704 * call.c (convert_like): Don't fail silently if
3705 build_user_type_conversion fails. Always return error_mark_node
3708 1998-06-10 Jason Merrill <jason@yorick.cygnus.com>
3710 * search.c (covariant_return_p): Complain about ambiguous base.
3712 * typeck.c (build_component_ref): Diagnose ref to nested type.
3714 1998-06-10 Brendan Kehoe <brendan@cygnus.com>
3716 * decl.c (grokparms): Check that INIT isn't an error_mark_node
3717 before giving error about invalid type for default arg.
3719 1998-06-10 Jason Merrill <jason@yorick.cygnus.com>
3721 * call.c (build_method_call): Fix thinko.
3723 1998-06-10 Dave Brolley <brolley@cygnus.com>
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.
3732 1998-06-10 Brendan Kehoe <brendan@cygnus.com>
3734 * typeck.c (build_component_ref): Make sure FIELD has a lang_specific
3735 piece before checking DECL_MUTABLE_P.
3737 1998-06-10 John Carr <jfc@mit.edu>
3739 * tree.c (debug_binfo): Make printf format match arguments.
3741 * error.c (OB_PUTI): Make printf format match arguments.
3743 1998-06-10 Jason Merrill <jason@yorick.cygnus.com>
3745 * init.c (perform_member_init): Handle default-initialization.
3747 * except.c (build_throw): Handle throwing NULL.
3749 * typeck.c (build_x_function_call): Use resolve_offset_ref.
3751 * search.c (compute_access): Only strip an anonymous union
3754 * call.c (add_builtin_candidates): Tweak.
3756 * cvt.c (build_expr_type_conversion): Restore code for conversion
3758 * decl2.c (delete_sanity): Use it. Clean up.
3760 * typeck.c (comp_ptr_ttypes_real): Fix cv-qual comparisons.
3762 1998-06-10 Branko Cibej <branko.cibej@hermes.si>
3764 * typeck.c (c_expand_return): Don't warn about void expressions on
3765 return statements in functions returning void.
3767 1998-06-09 Mark Mitchell <mark@markmitchell.com>
3769 * pt.c (fn_type_unification): Revise documentation. Tidy.
3770 (type_unification): Likewise.
3772 1998-06-09 Andrew MacLeod <amacleod@cygnus.com>
3774 * semantics.c (finish_try_block): Rename expand_start_catch, and delete
3776 * parse.y (function_try_block): Rename expand_start_catch, and delete
3778 * except.c (expand_end_eh_spec): Rename expand_start_catch, and delete
3781 1998-06-09 Jason Merrill <jason@yorick.cygnus.com>
3783 * search.c (lookup_member): New fn.
3784 * class.c (finish_struct_1): Use it.
3785 * decl.c (lookup_name_real): Use it.
3787 Mon Jun 8 20:45:52 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3789 * Makefile.in (decl2.o): Depend on dwarf2out.h and dwarfout.h.
3791 * cp-tree.h: Add prototype for `maybe_print_template_context' and
3792 `maybe_make_one_only'.
3794 * decl.c (auto_function): Remove unused variable `decl'.
3796 * decl2.c: Include dwarf2out.h and dwarfout.h.
3798 * lex.c: Remove redundant declarations of `set_float_handler' and
3801 1998-06-08 Andrew MacLeod <amacleod@cygnus.com>
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
3811 (__uncatch_exception, __check_eh_spec, std::uncaught_exception): Call
3812 __cp_eh_info instead of __cp_exception_info.
3814 1998-06-08 Jason Merrill <jason@yorick.cygnus.com>
3816 * decl.c (cp_finish_decl): Disable inlining of extern inlines
3817 with static variables.
3819 1998-06-08 Mark Mitchell <mark@markmitchell.com>
3821 * init.c (build_offset_ref): Correct previous change to use build,
3824 1998-06-07 Mark Mitchell <mark@markmitchell.com>
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.
3831 1998-06-07 Richard Henderson <rth@cygnus.com>
3833 * lex.c (lang_init_options): New function.
3834 (lang_init): Remove flag_exceptions == 2 hack.
3836 1998-06-05 Jason Merrill <jason@yorick.cygnus.com>
3838 * search.c (envelope_add_decl): Tweak for implicit typename.
3840 * call.c (joust): Also warn about confusing conversion op/constructor
3841 overload resolution.
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
3852 1998-06-05 Per Bothner <bothner@cygnus.com>
3854 * g++spec.c (lang_specific_pre_link, lang_specific_extra_ofiles):
3855 Define - update needed by gcc.c change.
3857 1998-06-05 Jason Merrill <jason@yorick.cygnus.com>
3859 * error.c (cp_printers): Use 'o' instead of '_' for the null entry.
3861 1998-06-05 Martin v. Löwis <loewis@informatik.hu-berlin.de>
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
3879 * error.c (dump_decl): Support SCOPE_REF.
3880 * parse.y (extdef): Wrap lookup with namespace_only for namespace
3881 aliases and using declarations.
3883 1998-06-04 Jason Merrill <jason@yorick.cygnus.com>
3885 * tree.c (really_overloaded_fn): Only see through one TREE_LIST.
3887 * error.c (dump_expr): Clean up NEW_EXPR case.
3889 1998-06-04 Martin von Löwis <loewis@informatik.hu-berlin.de>
3891 Suggested by Brendan Kehoe
3892 * decl2.c (do_toplevel_using_decl): When decl is a TYPE_DECL,
3893 treat it as using ::decl.
3895 * decl2.c (arg_assoc_type): Process unknown_type_node and OFFSET_TYPE.
3897 * tree.c (mapcar): Support NEW_EXPR.
3899 * error.c (dump_expr): Support NEW_EXPR.
3901 1998-06-03 Jason Merrill <jason@yorick.cygnus.com>
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.
3907 * init.c (build_new_1): Fix check for void.
3909 1998-06-01 Per Bothner <bothner@cygnus.com>
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.
3932 1998-06-01 Jason Merrill <jason@yorick.cygnus.com>
3934 * pt.c (for_each_template_parm): Use first_rtl_op.
3936 * tree.c (build_cplus_array_type_1): Also check index_type for
3939 1998-05-31 Jason Merrill <jason@yorick.cygnus.com>
3941 * pt.c (tsubst): Always copy BINFO_BASETYPES.
3943 1998-05-29 scott snyder <snyder@d0sgif.fnal.gov>
3945 * tree.c (layout_basetypes): If we change TYPE_SIZE, change
3948 1998-05-29 Mark Mitchell <mark@markmitchell.com>
3950 * decl.c (grokdeclarator): Don't complain about in-class
3951 initialization of static consts if we don't really know the type
3954 1998-05-29 Jason Merrill <jason@yorick.cygnus.com>
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
3965 (tsubst): Call grok_ctor_properties and maybe_retrofit_in_chrg.
3967 1998-05-28 Mark Mitchell <mark@markmitchell.com>
3969 * pt.c (instantiate_decl): Make test for whether or not static
3970 variables should be instantiated early match its comment.
3972 1998-05-28 Jason Merrill <jason@yorick.cygnus.com>
3974 * decl.c (start_decl): Always pedwarn about vacuously redeclaring
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.
3981 1998-05-27 Brendan Kehoe <brendan@cygnus.com>
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.
3987 1998-05-27 Jason Merrill <jason@yorick.cygnus.com>
3989 * typeck2.c (digest_init): Complain about getting a TREE_LIST to
3990 initialize an array.
3992 * search.c (expand_upcast_fixups): Don't set DECL_CONTEXT and
3995 * friend.c (do_friend): Clarify template warning.
3997 1998-05-27 Mark Mitchell <mark@markmitchell.com>
3999 * decl.c (shadow_label): Don't treat decls as identifiers.
4000 (maybe_push_to_top_level): Clear shadowed_labels.
4002 * pt.c (instantiate_decl): Reset lineno and filename after calling
4003 regenerate_decl_from_template.
4005 * decl.c (grokdeclarator): Don't try to use TYPE_OBSTACK on an
4008 1998-05-27 Kevin Buhr <buhr@stat.wisc.edu>
4010 * parse.y (base_class): Use is_aggr_type, not IS_AGGR_TYPE.
4012 1998-05-26 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
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.
4018 1998-05-26 Mark Mitchell <mark@markmitchell.com>
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.
4026 * decl.c (store_parm_decls): Remove redundant call to
4027 expand_main_function.
4029 1998-05-26 Benjamin Kosnik <bkoz@loony.cygnus.com>
4031 * decl.c (start_decl): Check for DECL_LANG_SPECIFIC before
4034 1998-05-26 Per Bothner <bothner@cygnus.com>
4036 * language_as_string: Handle lang_java.
4038 1998-05-26 Jason Merrill <jason@yorick.cygnus.com>
4040 * decl.c (pushdecl): Don't copy the type_decl.
4042 1998-05-26 Martin v. Löwis <loewis@informatik.hu-berlin.de>
4044 * class.c (pushclass): Always store TYPE_MAIN_VARIANT in
4046 * decl.c (grokdeclarator): Put typedefs on the type's obstack.
4048 * parse.y (complex_direct_notype_declarator): Use $1 to access
4049 scope of notype_qualified_id.
4051 1998-05-26 Dave Brolley <brolley@cygnus.com>
4053 * lex.c (parse_options,yy_cur,yy_lim): Add for cpplib.
4054 (init_parse): Initialize cpplib interface.
4056 * Makefile.in (CXX_OBJS): Make sure dependencies never end with an
4059 1998-05-26 Mark Mitchell <mark@markmitchell.com>
4061 * decl.c (pushtag): Avoid crashing on erroneous input.
4063 1998-05-25 Martin v. Löwis <loewis@informatik.hu-berlin.de>
4065 * decl.c (push_namespace): Only produce one unique name for
4066 anonymous namespaces.
4067 (get_unique_name): Remove.
4069 1998-05-25 Mark Mitchell <mark@markmitchell.com>
4071 * call.c (tourney): Don't do any extra comparisons.
4073 * decl2.c (build_anon_union_vars): Don't crash on empty sub-unions.
4075 * cp-tree.h (processing_template_parmlist): Declare.
4076 * decl.c (pushtag): Don't call push_template_decl when we
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.
4084 (begin_template_parm_list): Use processing_template_parmlist.
4085 (end_template_parm_list): Likewise.
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.
4096 * decl.c (grokdeclarator): Don't give a cv-qualified version of an
4097 unnamed type a typedef name "for linkage purposes".
4099 * pt.c (lookup_template_class): Don't look at
4100 IDENTIFIER_CLASS_VALUE when there's no current_class_type.
4102 * method.c (build_overload_int): Handle error cases gracefully.
4104 * pt.c (instantiate_decl): Handle static member variables
4107 * pt.c (tsubst): Use the tsubst'd type when producing new
4108 TEMPLATE_PARM_INDEX nodes.
4110 1998-05-24 Mark Mitchell <mark@markmitchell.com>
4112 * tree.c (cp_tree_equal): Handle pointers to member functions.
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.
4119 * parse.y (xcond): Move call to condition_conversion ...
4120 * semantics.c (finish_for_cond): Here.
4121 * parse.c: Regenerated.
4123 1998-05-24 Jason Merrill <jason@yorick.cygnus.com>
4125 * decl.c (push_namespace): Namespaces have type void.
4126 * typeck2.c (incomplete_type_error): Complain about namespace
4128 * typeck.c (decay_conversion): Likewise.
4130 1998-05-24 Martin von Löwis <loewis@informatik.hu-berlin.de>
4132 * error.c (dump_expr): Support namespaces.
4134 1998-05-23 Jason Merrill <jason@yorick.cygnus.com>
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
4146 1998-05-22 Jason Merrill <jason@yorick.cygnus.com>
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.
4152 * call.c (maybe_handle_ref_bind): Propagate ICS_USER_FLAG and
4155 * cvt.c (ocp_convert): Don't set LOOKUP_NO_CONVERSION for
4156 copy-initialization.
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.
4163 1998-05-22 Per Bothner <bothner@cygnus.com>
4165 * cp-tree.h: Add comments documenting which LANG_FLAGS are used.
4166 (C_TYPE_VARIABLE_SIZE, C_DECL_VARIABLE_SIZE): Removed, not used.
4168 1998-05-22 Jason Merrill <jason@yorick.cygnus.com>
4170 * pt.c (print_template_context): Use fprintf instead of cp_error.
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
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.
4188 * typeck.c (build_unary_op, CONVERT_EXPR): Propagate TREE_CONSTANT.
4190 1998-05-21 Jason Merrill <jason@yorick.cygnus.com>
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
4196 Thu May 21 11:54:44 1998 Dave Brolley <brolley@cygnus.com>
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.
4203 * input.c: (yy_cur,yy_lim,yy_get_token,GETC): Add for cpplib.
4204 (sub_getch): Call GETC for cpplib.
4206 * cp-tree.h: (get_directive_line): Different prototype for cpplib.
4207 (GET_DIRECTIVE_LINE): Macro wrapper for get_directive_line.
4209 * Makefile.in (CXX_OBJS): Add @extra_cxx_objs@ for cpplib.
4211 1998-05-21 Jason Merrill <jason@yorick.cygnus.com>
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.
4218 1998-05-21 Mark Mitchell <mmitchell@usa.net>
4220 * decl2.c (find_representative_member): Rename to ...
4221 (build_anon_union_vars): New function.
4222 (finish_anon_union): Fix stupidity of previous change.
4224 1998-05-20 Jason Merrill <jason@yorick.cygnus.com>
4226 * decl.c (grokfndecl): Handle definition of specialization in
4229 * error.c (dump_decl): Fix LOOKUP_EXPR handling.
4231 1998-05-20 Mark Mitchell <mmitchell@usa.net>
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
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.
4251 1998-05-20 Martin von Löwis <loewis@informatik.hu-berlin.de>
4253 * decl.c (record_unknown_type): New function.
4254 (init_decl_processing): Call it for the unknown and global type
4257 1998-05-20 Mark Mitchell <mmitchell@usa.net>
4259 * decl2.c (find_representative_member): New function.
4260 (finish_anon_union): Use it.
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.
4274 Wed May 20 02:16:01 1998 Jason Merrill <jason@yorick.cygnus.com>
4276 * decl2.c (start_objects, finish_objects, do_dtors,
4277 do_ctors): Split out from...
4278 (finish_file): ...here.
4280 Tue May 19 20:36:23 1998 Jason Merrill <jason@yorick.cygnus.com>
4282 * tree.c (is_overloaded_fn): Don't abort on placeholders from
4285 Tue May 19 15:16:22 1998 Brendan Kehoe <brendan@cygnus.com>
4287 * class.c (is_empty_class): Return 0 if TYPE is an error_mark_node.
4289 * error.c (dump_expr): Handle an ARROW_EXPR.
4291 Tue May 19 15:13:39 1998 Mark Mitchell <mmitchell@usa.net>
4293 * decl.c (saveable_obstack): Declare.
4294 (pushdecl): Copy TYPE_DECLs to the same obstack as the type they
4295 declare, if necessary.
4297 Tue May 19 14:50:27 1998 Mark Mitchell <mmitchell@usa.net>
4299 * call.c (compare_qual): Remove.
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
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.
4312 Tue May 19 10:05:02 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4314 * Makefile.in (parse.o): Depend on toplev.h.
4316 * class.c (typecode_p): Remove prototype and definition.
4318 * cp-tree.h (currently_open_class, is_empty_class, member_p):
4321 * decl.c (push_overloaded_decl_top_level): Remove prototype and
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'.
4328 * except.c (do_function_call): Remove prototype and definition.
4329 (call_eh_info): Wrap variable `t1' in macro NEW_EH_MODEL.
4331 * method.c (is_java_type): Add prototype and make it static.
4333 * parse.y: Include toplev.h.
4335 * pt.c (type_unification): Remove unused variable `arg'.
4336 (instantiate_decl): Likewise for `save_ti'.
4338 * tree.c (propagate_binfo_offsets): Likewise for `base_binfos'.
4340 Tue May 19 02:43:25 1998 Jason Merrill <jason@yorick.cygnus.com>
4342 * init.c (build_member_call): Handle template_ids.
4343 * parse.y (primary): Add global_scope template_id.
4345 Mon May 18 23:22:52 1998 Jason Merrill <jason@yorick.cygnus.com>
4347 * decl2.c (get_sentry): Use end_temporary_allocation.
4348 Don't declare permanent_obstack.
4350 Mon May 18 12:28:44 1998 Mark Mitchell <mmitchell@usa.net>
4352 * parse.y (.finish_new_placement): New non-terminal.
4353 (unary_expr, new_type_id): Use it.
4354 * parse.c: Regenerated.
4356 Mon May 18 12:20:27 1998 Brendan Kehoe <brendan@cygnus.com>
4358 * pt.c (redeclare_class_template): Say where the original definition
4359 of the template-parameter's default argument appeared.
4361 Mon May 18 03:00:57 1998 Jason Merrill <jason@yorick.cygnus.com>
4363 * call.c (build_over_call): Tweak empty class handling.
4365 * decl.c (make_typename_type): Use currently_open_class.
4367 * class.c (instantiate_type): Don't abort on TREE_NONLOCAL_FLAG.
4369 Mon May 18 01:43:01 1998 Martin v. Löwis <loewis@informatik.hu-berlin.de>
4371 * decl.c (lookup_name_real): Don't look at IDENTIFIER_LOCAL_VALUE
4372 for a type unless it is one.
4374 * class.c (finish_struct_1): Use OVL_CURRENT in error message.
4376 Mon May 18 01:24:08 1998 Jeffrey A Law (law@cygnus.com)
4378 * Makefile.in (program_transform_name, objdir): Define.
4380 * Makefile.in (BISON): Use bison from the build tree if it exists.
4383 Sun May 17 14:52:08 1998 Martin v. Löwis <loewis@informatik.hu-berlin.de>
4385 * typeck.c (type_unknown_p): Return true for TREE_LIST also.
4387 * call.c (build_method_call): Use TYPE_MAIN_VARIANT on typedefs.
4389 Sun May 17 14:51:41 1998 Jason Merrill <jason@yorick.cygnus.com>
4391 * call.c (build_scoped_method_call): Likewise.
4393 Sun May 17 13:53:48 1998 Mark Mitchell <mmitchell@usa.net>
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.
4401 Sun May 17 12:32:08 1998 Jason Merrill <jason@yorick.cygnus.com>
4403 * decl.c (duplicate_decls): Use CANONICAL_TYPE_VARIANT to compare
4406 * pt.c (tsubst): Make sure that BINFO_TYPE of new binfos is the
4409 * call.c (build_over_call): Don't use IS_SIGNATURE on a namespace.
4411 Fri May 15 20:28:00 1998 Jason Merrill <jason@yorick.cygnus.com>
4413 * decl.c (start_decl): Revert problem change.
4415 * Makefile.in (CONFLICTS): Fix.
4417 Fri May 15 15:34:02 1998 Benjamin Kosnik <bkoz@rhino.cygnus.com>
4419 * decl.c (duplicate_decls): Clean up, add DECL_DATA_AREA bits.
4421 Fri May 15 00:46:05 1998 Jason Merrill <jason@yorick.cygnus.com>
4423 * class.c (finish_struct_1): Use BINFO_SIZE.
4425 * decl.c (start_decl): Use 'tem'.
4427 Thu May 14 16:30:47 1998 Andrew MacLeod <amacleod@cygnus.com>
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
4437 (expand_end_eh_spec): Call start_catch_block() and end_catch_block().
4438 * semantics.c (finish_try_block): Call start_catch_block() and
4440 * parse.y (function_try_block): Call start_catch_block() and
4443 Thu May 14 12:27:34 1998 Brendan Kehoe <brendan@cygnus.com>
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.
4450 Wed May 13 12:54:30 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4452 * Makefile.in (lex.o): Depend on output.h.
4454 * call.c (add_function_candidate): Remove unused variable `cand'.
4455 (add_conv_candidate): Likewise.
4456 (build_builtin_candidate): Likewise.
4458 * cp-tree.h: Add prototype for `types_overlap_p'.
4460 * decl.c (signal_catch): Mark parameter `sig' with ATTRIBUTE_UNUSED.
4462 * decl2.c (merge_functions): Remove unused variables `tmp' and
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.
4473 * lex.c: Include output.h.
4475 * pt.c (type_unification): Cast first argument of `bzero' to a char*.
4477 * search.c (dfs_no_overlap_yet): Mark parameter `t' with
4480 * tinfo.cc (__class_type_info::dcast): Change the type of variable
4481 `i' from int to size_t.
4483 * typeck.c (language_lvalue_valid): Mark parameter `exp' with
4486 Tue May 12 21:37:49 1998 Jason Merrill <jason@yorick.cygnus.com>
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.
4498 Tue May 12 07:24:18 1998 Mark Mitchell <mmitchell@usa.net>
4500 * cp-tree.h (CANONICAL_TYPE_VARIANT): New macro.
4501 * method.c (build_mangled_name): Use it.
4502 (build_decl_overload_real): Likewise.
4504 * error.c (dump_simple_decl): New function, broken out from ...
4505 (dump_decl): Use it.
4507 Mon May 11 11:38:07 1998 Mark Mitchell <mmitchell@usa.net>
4509 * ptree.c (lang_print_xnode): Add missing `break'.
4511 * pt.c (tsubst): Remove duplicate check for IDENTIFIER_NODE.
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.
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.
4560 * lex.c (yyprint): Remove TYPENAME_ELLIPSIS.
4561 * parse.h: Regenerated.
4562 * parse.c: Really regenerated.
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.
4595 Sun May 10 23:43:13 1998 Mark Mitchell <mmitchell@usa.net>
4597 * typeck.c (build_c_cast): Don't decay arrays and functions to
4598 pointer type when converting to a class type.
4600 Sun May 10 22:53:56 1998 Jason Merrill <jason@yorick.cygnus.com>
4602 * cp-tree.h (DECL_NAMESPACE_SCOPE_P): New macro.
4603 (DECL_CLASS_SCOPE_P): Likewise.
4605 Sun May 10 22:48:22 1998 H.J. Lu (hjl@gnu.org)
4607 * class.c (finish_struct_1): Use OVL_CURRENT on TREE_VEC_ELT.
4608 * decl2.c (constructor_name_full): Likewise.
4610 Sun May 10 22:48:12 1998 Mike Stump <mrs@wrs.com>
4612 * tree.c (mapcar): Add OVERLOAD support.
4614 * init.c (resolve_offset_ref): We must use basetype_path before we
4615 destroy it with a call to convert_pointer_to.
4617 Sat May 9 14:44:37 1998 Jason Merrill <jason@yorick.cygnus.com>
4619 * class.c (currently_open_class): New fn.
4620 * decl.c (lookup_name_real): Use it.
4621 * search.c (lookup_field): Likewise.
4623 Fri May 8 23:32:42 1998 Martin von Löwis <loewis@informatik.hu-berlin.de>
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
4631 (OVL_FUNCTION, OVL_CHAIN, OVL_CURRENT, OVL_NEXT, OVL_USED):
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
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,
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
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
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
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
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
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):
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
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
4838 * decl.c (duplicate_decls): Check for namespace bindings instead
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.
4863 Fri May 8 00:43:50 1998 Jason Merrill <jason@yorick.cygnus.com>
4865 * call.c (build_user_type_conversion_1): Handle second_conv
4866 properly for templates.
4868 Thu May 7 17:09:25 1998 Andrew MacLeod <amacleod@cygnus.com>
4870 * method.c (build_decl_overload_real): Set TREE_USED flag to
4871 zero for build_type_variants nodes as well.
4873 Wed May 6 19:27:09 1998 Jason Merrill <jason@yorick.cygnus.com>
4875 * pt.c (tsubst): Don't tsubst the type of an IDENTIFIER_NODE.
4877 Wed May 6 16:49:48 1998 Jim Wilson <wilson@cygnus.com>
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.
4884 Wed May 6 16:44:58 1998 Jeffrey A Law (law@cygnus.com)
4886 * errfn.c (cp_error, cp_warning): Remove declarations for
4887 error and warning respectively.
4889 Wed May 6 14:28:18 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4891 * error.c: Convert to using ctype macros defined in system.h.
4892 * method.c: Likewise.
4894 * lex.c: Likewise. Also remove redundant system header stuff.
4896 Wed May 6 06:36:41 1998 Robert Lipe <robertl@dgii.com>
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.
4903 Wed May 6 02:33:39 1998 Jason Merrill <jason@yorick.cygnus.com>
4905 * tree.c (perm_manip): Also regenerate the RTL of an extern.
4906 (copy_to_permanent): Use end_temporary_allocation.
4908 Tue May 5 23:54:04 1998 Jason Merrill <jason@yorick.cygnus.com>
4910 * init.c (expand_vec_init): The initialization of each array
4911 element is a full-expression.
4913 Tue May 5 18:24:13 1998 Andrew MacLeod <amacleod@cygnus.com>
4915 * method.c (build_mangled_name): Add a call to build_type_variant
4916 to get the right type.
4918 Tue May 5 01:25:03 1998 Jason Merrill <jason@yorick.cygnus.com>
4920 * Makefile.in: Add .SUFFIXES.
4922 * cp-tree.def: Remove NAMESPACE_DECL.
4924 Sun May 3 01:32:14 1998 Jason Merrill <jason@yorick.cygnus.com>
4926 * call.c (build_over_call): Do evaluate arg even if it has empty
4928 * decl.c (start_function): Don't push a member function.
4930 Thu Apr 30 18:59:23 1998 Jim Wilson <wilson@cygnus.com>
4932 * Makefile.in (g++FAQ.info): Put -o option before input file.
4934 Thu Apr 30 13:05:33 1998 Andrew MacLeod <amacleod@cygnus.com>
4936 * gxxint.texi: Add info for squangling codes K and B.
4938 Tue Apr 28 13:22:01 1998 Mark Mitchell <mmitchell@usa.net>
4940 * semantics.c (begin_stmt_expr): Avoid duplicating the effect of
4941 the expression in templates.
4942 (finish_stmt_expr): Likewise.
4944 1998-04-28 Brendan Kehoe <brendan@cygnus.com>
4946 * decl2.c (ambiguous_decl): Fix NAME parm to be a tree, not int.
4948 Mon Apr 27 13:58:10 1998 Mark Mitchell <mmitchell@usa.net>
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.
4955 Sun Apr 26 12:10:18 1998 Mark Mitchell <mmitchell@usa.net>
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
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.
4986 * pt.c (check_explicit_specialization): Handle overloaded
4987 constructors correctly.
4989 * pt.c (mabybe_get_template_decl_from_type_decl): New function.
4990 (lookup_template_class): Use it.
4992 Thu Apr 23 21:19:06 1998 Jason Merrill <jason@yorick.cygnus.com>
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.
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.
5011 Thu Apr 23 18:27:53 1998 Mark P. Mitchell <mmitchell@usa.net>
5013 * pt.c (unify): Fix typo in previous change.
5015 Thu Apr 23 09:32:58 1998 Jason Merrill <jason@yorick.cygnus.com>
5017 * error.c (dump_type_real): Declare canonical_name.
5019 * typeck.c (comp_target_types): Fix PMFs.
5021 Wed Apr 22 13:24:48 1998 Mark Mitchell <mmitchell@usa.net>
5023 * class.c (finish_struct): Set TREE_PRIVATE and TREE_PROTECTED for
5024 the DECL_RESULTs of a member TEMPLATE_DECL, not just the
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.
5037 Tue Apr 21 22:00:04 1998 Mark Mitchell <mmitchell@usa.net>
5039 * errfn.c (cp_thing): Use xrealloc, not xmalloc, to copy memory.
5041 * decl2.c (check_member_template): Set DECL_IGNORED for member
5042 class templates, too.
5044 * decl2.c (grokfield): Remangle the name of a member TYPE_DECL.
5046 Tue Apr 21 18:59:11 1998 Benjamin Kosnik <bkoz@rhino.cygnus.com>
5048 * decl.c (duplicate_decls): Only check DECL_FRIEND_P if function.
5050 Tue Apr 21 14:22:00 1998 Jeffrey A Law (law@cygnus.com)
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.
5057 Sat Apr 18 15:25:21 1998 Jim Wilson <wilson@cygnus.com>
5059 * g++spec.c (lang_specific_driver): New argument in_added_libraries.
5060 New local added_libraries. Increment count when add library to
5063 Fri Apr 17 21:25:00 1998 Mark Mitchell <mmitchell@usa.net>
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.
5075 Fri Apr 17 14:30:45 1998 Jason Merrill <jason@yorick.cygnus.com>
5077 * decl2.c (lang_decode_option): -fnew-abi implies -fvtable-thunks.
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.
5085 Fri Apr 17 14:04:16 1998 Mark Mitchell <mmitchell@usa.net>
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.
5091 Fri Apr 17 09:10:52 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
5093 * Make-lang.in (c++.all.build): Don't depend on $(DEMANGLER_PROG),
5094 which requires a working target compiler to build.
5096 Fri Apr 17 08:57:35 1998 Jeffrey A Law (law@cygnus.com)
5098 * tree.c (avoid_overlap): Add prototype.
5100 * spew.c (num_tokens): Add prototype.
5101 (nth_noken, add_token, consume_token, debug_yychar): Likewise.
5103 * search.c (dfs_check_overlap): Add prototype.
5104 (dfs_no_overlap_yet): Likewise.
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.
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.
5119 * lex.c (init_cpp_parse): Add prototype.
5120 (handle_cp_pragma, handle_sysv_pragma): Likewise.
5121 (reduce_cmp, token_cmp): Likewise.
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.
5127 * decl2.c (is_namespace_ancestor): Add prototype.
5128 (namespace_ancestor, add_using_namespace): Likewise.
5129 (ambiguous_decl): Likewise.
5131 * decl.c (indent): Add prototype.
5133 * call.c (add_template_candidate_real): Add prototype.
5135 Fri Apr 17 01:57:12 1998 Jason Merrill <jason@yorick.cygnus.com>
5137 * decl2.c (build_expr_from_tree): Just return a PMF.
5139 Fri Apr 17 00:45:12 1998 Mark Mitchell <mmitchell@usa.net>
5141 * typeck2.c (process_init_constructor): Don't strip cv-qualifiers
5142 when doing initializations.
5144 * pt.c (unify): Use comptypes to compare type args.
5146 Fri Apr 17 00:24:22 1998 Jason Merrill <jason@yorick.cygnus.com>
5148 * decl.c (duplicate_decls): Fix check for when it's safe to free
5151 * pt.c (mangle_class_name_for_template): Don't pass a typedef type
5154 Thu Apr 16 17:47:30 1998 Jeffrey A Law (law@cygnus.com)
5156 * pt.c (build_template_parm_index): Add prototype.
5158 * search.c (my_tree_cons): Don't clear words outside the
5159 newly allocated node.
5161 Wed Apr 15 15:34:44 1998 Dave Brolley <brolley@cygnus.com>
5163 * lex.c (init_parse): Now returns char* containing the filename.
5165 Wed Apr 15 13:20:06 1998 John Carr <jfc@mit.edu>
5166 Jeff Law <law@cygnus.com>
5168 * errfn.c: Rework to avoid problems when HOST_WIDE_INT is longer
5171 Sun Apr 12 22:31:19 1998 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
5173 * cvt.c (cp_convert_to_pointer): Use TYPE_PRECISION.
5175 Fri Apr 10 12:16:49 1998 Benjamin Kosnik <bkoz@loony.cygnus.com>
5177 * decl.c (duplicate_decls): Don't warn for redundant decls if
5178 friend: let add_friend take care of it.
5180 Thu Apr 9 02:40:48 1998 Jason Merrill <jason@yorick.cygnus.com>
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
5187 * typeck.c (build_unary_op): Only allow taking the address of a
5189 * typeck2.c (digest_init): Simplify.
5190 (store_init_value): Don't pedwarn about using { } for pmfs.
5192 Thu Apr 9 22:16:57 1998 Per Bothner <bothner@cygnus.com>
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.
5206 Thu Apr 9 22:16:57 1998 Benjamin Kosnik <bkoz@loony.cygnus.com>
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.
5220 Thu Apr 9 00:18:44 1998 Dave Brolley (brolley@cygnus.com)
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.
5228 Mon Apr 6 02:25:05 1998 Jason Merrill <jason@yorick.cygnus.com>
5230 * call.c (build_call): Still evaluate the actual argument.
5231 * class.c (is_empty_class): Update for -fnew-abi.
5233 * decl2.c: -fnew-abi implies -fsquangle.
5235 * method.c (do_build_assign_ref): Don't do anything to copy
5237 (do_build_copy_constructor): Likewise.
5238 * call.c (build_over_call): Likewise.
5240 Sat Apr 4 18:43:58 1998 Jason Merrill <jason@yorick.cygnus.com>
5242 * tree.c (avoid_overlap): Return a value.
5244 Sat Apr 4 12:52:35 1998 Jeffrey A Law (law@cygnus.com)
5246 * method.c (check_btype): Add missing argument to xrealloc.
5247 (check_ktype): Likewise.
5249 Fri Apr 3 02:22:59 1998 Jason Merrill <jason@yorick.cygnus.com>
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.
5260 * decl.c (cplus_expand_expr_stmt): Strip unused INDIRECT_REFs.
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.
5274 Thu Apr 2 14:25:13 1998 Jason Merrill <jason@yorick.cygnus.com>
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.
5284 Wed Apr 1 18:22:25 1998 Jeffrey A Law (law@cygnus.com)
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.
5290 Wed Apr 1 15:38:36 1998 Jason Merrill <jason@yorick.cygnus.com>
5292 * friend.c (is_friend): Fix access control for local classes.
5294 * class.c (is_empty_class): New fn.
5295 * call.c (build_call): Don't pass empty class objects to a function.
5297 Wed Apr 1 14:58:35 1998 Mark Mitchell <mmitchell@usa.net>
5299 * call.c (build_over_call): Do name resolution for default
5300 arguments of function templates in the scope of the templates.
5302 Tue Mar 31 13:43:57 1998 Jeffrey A Law (law@cygnus.com)
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.
5314 Mon Mar 30 12:15:00 1998 Mark Mitchell <mmitchell@usa.net>
5316 * pt.c (fn_type_unification): Allow incomplete unification without
5317 an immediate error message.
5319 Mon Mar 30 08:55:42 1998 Jason Merrill <jason@yorick.cygnus.com>
5321 * tree.c (member_p): New fn.
5322 * decl2.c (finish_file): Only set DECL_STATIC_FUNCTION_P for
5323 initializing class members.
5325 * cp-tree.def (TEMPLATE_PARM_INDEX): Class 'x'.
5326 * ptree.c (lang_print_xnode): Handle TEMPLATE_PARM_INDEX.
5328 * call.c (build_method_call): Handle non-scoped destructors, too.
5329 * pt.c (tsubst_copy): Likewise.
5331 * pt.c (print_template_context): Split out...
5332 (push_tinst_level): ...from here.
5334 * friend.c (is_friend): Don't pass a type to decl_function_context.
5336 * typeck.c (convert_for_initialization): Always hand off
5337 conversions to class type.
5339 Sun Mar 29 20:01:59 1998 Jason Merrill <jason@yorick.cygnus.com>
5341 * friend.c (is_friend): Local classes have the same access as the
5344 Sun Mar 29 00:47:32 1998 Jeffrey A Law (law@cygnus.com)
5346 * typeck.c (expand_target_expr): Delete dead function.
5348 * search.c: Put various prototypes inside #ifdef MI_MATRIX.
5350 * repo.c (save_string): Delete dead function.
5352 * method.c (thunk_printable_name): Delete dead function.
5354 * lex.c (yynextch): Delete dead function.
5356 * expr.c (tree_extract_aggr_init): #if 0 out.
5358 * except.c (do_unwind): Delete dead function.
5359 (easy_expand_asm): Likewise.
5361 * cvt.c (build_conversion_type_1): Delete dead function.
5363 * cp-tree.h (push_expression_obstack): Declare.
5365 * call.c (source_type): #if 0 out.
5367 * class.c (alter_access): Remove unused label. Add braces
5368 around empty else clause.
5370 * lex.c (yyprint): Fix argument to printf.
5372 Sat Mar 28 17:43:52 1998 Mark Mitchell <mmitchell@usa.net>
5374 * pt.c (tsubst): Clear TREE_USED for new FUNCTION_DECLs.
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
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.
5390 Fri Mar 27 20:23:18 1998 Mark Mitchell <mmitchell@usa.net>
5392 * error.c (dump_decl): Be a bit more explicit with template
5393 type arguments, when verbose.
5395 Fri Mar 27 18:16:40 1998 Jason Merrill <jason@yorick.cygnus.com>
5397 * inc/exception: Reorder closing braces.
5399 Fri Mar 27 13:22:18 1998 Mark Mitchell <mmitchell@usa.net>
5401 * pt.c (redeclare_class_template): New function.
5402 * cp_tree.h (redeclare_class_template): Declare it.
5403 * decl.c (xref_tag): Use it.
5405 Thu Mar 26 11:16:30 1998 Jason Merrill <jason@yorick.cygnus.com>
5407 * call.c (build_over_call): Check IS_AGGR_TYPE, not
5409 * typeck.c (convert_arguments): Likewise.
5411 * decl.c (grokdeclarator): Remove const and volatile from type after
5412 setting constp and volatilep.
5414 * class.c (finish_struct_1): Don't warn about bool bitfield larger
5417 Thu Mar 26 10:25:52 1998 Mark Mitchell <mmitchell@usa.net>
5419 * pt.c (convert_nontype_argument): STRIP_NOPS where appropriate.
5421 Thu Mar 26 10:24:05 1998 Mark Mitchell <mmitchell@usa.net>
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.
5428 Thu Mar 26 10:23:24 1998 Mark Mitchell <mmitchell@usa.net>
5430 * cvt.c (perform_qualification_conversions): Use comp_target_types
5431 instead of comp_ptr_ttypes.
5433 Wed Mar 25 16:10:50 1998 Mark Mitchell <mmitchell@usa.net>
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.
5440 Wed Mar 25 12:10:45 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
5442 * cp-tree.h: Fix typo.
5444 Wed Mar 25 02:01:02 1998 Jason Merrill <jason@yorick.cygnus.com>
5446 * expr.c (cplus_expand_expr): Only do PCC_STATIC_STRUCT_RETURN thing
5447 if (aggregate_value_p (type)).
5449 * decl2.c (constructor_name_full): Handle TYPENAME_TYPE.
5451 Tue Mar 24 16:12:01 1998 Mark Mitchell <mmitchell@usa.net>
5453 * tree.c (mapcar): When dealing with a DECL, use it's constant
5455 * pt.c (lookup_template_class): Don't mangle the names of template
5456 classes whose arguments are unknown.
5458 * pt.c (tsubst_expr): Handle GOTO_STMT correctly.
5460 Tue Mar 24 12:21:55 1998 Benjamin Kosnik <bkoz@lisa.cygnus.com>
5462 * decl.c (init_decl_processing): Set TYPE_PRECISON for bools to 1.
5464 Tue Mar 24 12:21:48 1998 Jim Wilson <wilson@cygnus.com>
5466 * decl.c (init_decl_processing): Initialize TYPE_MAX_VALUE for
5467 boolean_type_node to 1.
5469 Tue Mar 24 10:23:47 1998 Mark Mitchell <mmitchell@usa.net>
5471 * error.c (dump_expr): Remove unused variable `l'.
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.
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.
5508 Mon Mar 23 12:24:37 1998 Jason Merrill <jason@yorick.cygnus.com>
5510 * pt.c (complete_template_args): Initialize skip properly.
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.
5518 Sun Mar 22 00:50:42 1998 Nick Clifton <nickc@cygnus.com>
5519 Geoff Noer <noer@cygnus.com>
5521 * Makefile.in: Various fixes for building cygwin32 native toolchains.
5522 * Make-lang.in: Likewise.
5524 Fri Mar 20 18:07:39 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
5526 * pt.c (tsubst, TEMPLATE_TEMPLATE_PARM): Simplify.
5528 Fri Mar 20 10:42:07 1998 Jason Merrill <jason@yorick.cygnus.com>
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.
5534 * pt.c (complete_template_args): Rewrite.
5535 (tsubst, FUNCTION_DECL): Use it.
5537 Fri Mar 20 08:12:43 1998 H.J. Lu (hjl@gnu.org)
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.
5543 Fri Mar 20 00:10:19 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
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
5549 (tsubst, TEMPLATE_TEMPLATE_PARM): When reducing parameter level,
5550 substitute arguments and compose a new type.
5552 Thu Mar 19 19:01:48 1998 Mark Mitchell <mmitchell@usa.net>
5554 * pt.c (tsubst): Clear DECL_PENDING_INLINE_INFO for new
5557 Thu Mar 19 11:51:58 1998 Jason Merrill <jason@yorick.cygnus.com>
5559 * decl.c (make_implicit_typename): Lose useless code.
5561 * call.c (standard_conversion): Handle A* -> const A* properly.
5563 * pt.c (get_bindings_real): Rename from get_bindings. Add
5565 (get_bindings): Pass 1.
5566 (get_bindings_overload): Pass 0.
5568 Wed Mar 19 09:08:12 1998 Mark Mitchell <mmitchell@usa.net>
5570 * pt.c (check_explicit_specialization): When reverting a static
5571 member function, also remove the `this' parameter from
5572 last_function_parms.
5574 Thu Mar 19 02:27:48 1998 Jason Merrill <jason@yorick.cygnus.com>
5576 * pt.c (tsubst_copy, CONST_DECL): Don't bother tsubsting
5579 * decl.c (store_bindings): Use free_binding_vecs.
5580 (pop_from_top_level): Likewise.
5582 Wed Mar 18 12:41:43 1998 Jason Merrill <jason@yorick.cygnus.com>
5584 * decl.c (make_implicit_typename): Only change the type of a
5587 Wed Mar 18 10:09:51 1998 Mark Mitchell <mmitchell@usa.net>
5589 * semantics.c: New file, containing routines to perform the
5590 semantic phase of parsing.
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
5599 Wed Mar 18 00:24:10 1998 Jason Merrill <jason@yorick.cygnus.com>
5601 * pt.c (push_template_decl): Only check primary templates.
5603 * pt.c (check_explicit_specialization): Complain about default args
5604 in explicit specialization.
5606 * parse.y (nomods_initdcl0): Also call cp_finish_decl for a
5607 constructor_declarator.
5609 Tue Mar 17 14:44:54 1998 Mark Mitchell <mmitchell@usa.net>
5611 * typeck2.c (build_x_arrow): Don't crash when an aggregate type
5612 has no overloaded operator ->.
5614 * call.c (build_field_call): Don't crash when presented with a
5615 field that is actually a nested type.
5617 * decl.c (pushtag): Deal with friend class injection in local
5620 * call.c (build_object_call): Don't crash if OBJ is a
5621 pointer-to-member-function.
5623 Tue Mar 17 11:40:26 1998 Jason Merrill <jason@yorick.cygnus.com>
5625 * pt.c (push_template_decl): Complain about template with C linkage,
5626 anonymous template class.
5628 Mon Mar 16 12:10:39 1998 Jason Merrill <jason@yorick.cygnus.com>
5630 * class.c (pushclass): Only use the mi_matrix stuff #ifdef MI_MATRIX.
5631 * search.c: Likewise.
5633 * lex.c (do_pending_defargs): Only call
5634 maybe_{begin,end}_member_template_processing for FUNCTION_DECLs.
5636 * parse.y (initdcl0_innards): Move maybeasm back into initdcl0 et al.
5638 Mon Mar 16 10:47:22 1998 Mark Mitchell <mmitchell@usa.net>
5640 * parse.y: Deal with CONSTRUCTORS in new_initializers.
5642 Mon Mar 16 10:54:21 1998 Mark Mitchell <mmitchell@usa.net>
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.
5649 Sun Mar 15 02:07:26 1998 Jason Merrill <jason@yorick.cygnus.com>
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.
5660 Sun Mar 15 01:14:22 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
5662 * lex.c (do_identifier): Handle TEMPLATE_DECL that was
5663 added in the class scope to catch redefinition error.
5665 * pt.c (reduce_template_parm_level): Also copy
5666 the DECL_TEMPLATE_PARMS field.
5668 Sun Mar 15 10:54:08 1998 Mark Mitchell <mmitchell@usa.net>
5670 * pt.c (tsubst): Clear TYPE_REFERENCE_TO when creating a
5671 reduced-level template type parameter.
5673 Sun Mar 15 12:26:02 1998 Manfred Hollstein <manfred@s-direktnet.de>
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.
5683 Thu Mar 12 09:39:40 1998 Manfred Hollstein <manfred@s-direktnet.de>
5685 * lang-specs.h: Properly put brackets around array elements in
5688 * typeck.c (build_binary_op_nodefault): Correctly place parens around
5689 && and || in expression.
5691 Thu Mar 12 09:26:04 1998 Manfred Hollstein <manfred@s-direktnet.de>
5693 * call.c (default_parm_conversions): Remove prototype definition.
5694 (build_method_call): Remove unused variable result.
5696 * cvt.c (ocp_convert): Remove unused variable conversion.
5698 * decl2.c (ambiguous_decl): Add explicit parameter definition for name.
5700 * except.c (do_unwind): #if 0 definition of unused variables fcall
5703 * expr.c (extract_scalar_init): #if 0 prototype and function
5706 * init.c (expand_aggr_init_1): Remove unused variable init_type.
5707 (build_new_1): Remove unused variable t.
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.
5713 * tree.c (get_type_decl): Add default return to shut up compiler from
5714 complaining control reaches end of non-void function.
5716 * typeck.c (build_x_conditional_expr): Remove unused variable rval.
5718 Thu Mar 12 09:12:15 1998 Manfred Hollstein <manfred@s-direktnet.de>
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.
5724 Thu Mar 12 08:39:13 1998 Manfred Hollstein <manfred@s-direktnet.de>
5726 * decl2.c (lang_decode_option): Change j's type to size_t.
5728 * tree.c (layout_vbasetypes): record_align and desired_align are of
5729 type unsigned int; const_size and nonvirtual_const_size likewise.
5731 Wed Mar 11 07:25:20 1998 Mark Mitchell <mmitchell@usa.net>
5733 * parse.y (new_initializer): Make sure all initializers are
5736 Tue Mar 10 07:32:36 1998 Mark Mitchell <mmitchell@usa.net>
5738 * decl2.c (import_export_decl): Mark tinfo functions for
5739 cv-qualified versions of class types as DECL_NOT_REALLY_EXTERN.
5741 Fri Mar 6 23:27:35 1998 Jeffrey A Law (law@cygnus.com)
5743 * method.c: Fix typo.
5745 Fri Mar 6 10:06:59 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
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.
5753 * Makefile.in (method.o): Depend on system.h.
5755 Wed Mar 4 22:26:53 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
5757 * lex.c (do_scoped_id): Fix parenthesizing.
5759 Wed Mar 4 12:11:53 1998 Michael Tiemann <tiemann@axon.cygnus.com>
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.
5766 Wed Mar 4 11:47:55 1998 Jason Merrill <jason@yorick.cygnus.com>
5768 * typeck.c (unary_complex_lvalue): &D::i has type B::* if i comes
5771 Wed Mar 4 11:28:08 1998 Mark Mitchell <mmitchell@usa.net>
5773 * pt.c (finish_member_template_decl): Deal more gracefully with
5774 invalid declarations.
5776 Tue Mar 3 01:38:17 1998 Jason Merrill <jason@yorick.cygnus.com>
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.
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.
5786 * Makefile.in: Adjust.
5788 * pt.c (unify): Don't allow reduced cv-quals when strict.
5790 * call.c, class.c, pt.c, cp-tree.h: Remove nsubsts parm from
5791 *type_unification* and unify.
5793 Mon Mar 2 12:11:06 1998 Jason Merrill <jason@yorick.cygnus.com>
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.
5802 Mon Mar 2 11:04:59 1998 Jim Wilson <wilson@cygnus.com>
5804 * decl.c (start_function): Don't call temporary_allocation for a
5807 Sun Mar 1 21:06:37 1998 Jason Merrill <jason@yorick.cygnus.com>
5809 * pt.c (instantiate_class_template): Don't mess with friends if
5810 our type uses template parms.
5812 Sat Feb 28 12:06:44 1998 Jason Merrill <jason@yorick.cygnus.com>
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
5820 * call.c (build_scoped_method_call): Handle member template
5822 * pt.c (tsubst_copy, METHOD_CALL_EXPR): Don't assume a member
5823 destructor is represented by the type.
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.
5832 Fri Feb 27 11:17:50 1998 Jason Merrill <jason@yorick.cygnus.com>
5834 * pt.c (add_to_template_args): Fix thinko.
5835 (instantiate_class_template): Call it later.
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
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
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.
5851 Fri Feb 27 02:25:16 1998 Jason Merrill <jason@yorick.cygnus.com>
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
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
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
5871 * spew.c (yylex): Handle PTYPENAME like TYPENAME.
5873 * typeck.c (get_delta_difference): Do adjust for conversions to
5874 and from virtual base.
5876 Wed Feb 25 09:51:29 1998 Jason Merrill <jason@yorick.cygnus.com>
5878 * typeck.c (get_delta_difference): Give hard error for conversion
5881 * cp-tree.h: Tweak formatting.
5883 Wed Feb 25 00:35:33 1998 Jason Merrill <jason@yorick.cygnus.com>
5885 * decl.c (push_namespace): Handle redeclaration error.
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.
5893 * pt.c (push_template_decl): Use innermost_args.
5895 * decl.c (get_unique_name): Tweak from earlier in the name.
5897 Tue Feb 24 22:15:04 1998 Martin von Löwis <loewis@informatik.hu-berlin.de>
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
5936 (do_scoped_id): Find global names in global or current
5937 namespace, or using qualified namespace lookup, depending on
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.
5961 Tue Feb 24 01:40:24 1998 Jason Merrill <jason@yorick.cygnus.com>
5963 * pt.c (instantiate_class_template): Don't instantiate if pedantic
5964 and the args use template parms.
5966 * pt.c (push_tinst_level): If the instantiation uses template parms,
5968 * decl.c (xref_basetypes): Do call complete_type for basetypes
5969 that involve template parameters.
5971 Tue Feb 24 00:36:43 1998 Jason Merrill <jason@yorick.cygnus.com>
5973 * typeck2.c (process_init_constructor): Fix labeled init check.
5975 Mon Feb 23 05:08:55 1998 Jason Merrill <jason@yorick.cygnus.com>
5977 * pt.c, call.c, decl.c, method.c, cp-tree.h: Remove unused NARGS
5978 argument to tsubst and friends.
5980 * pt.c (tsubst, FUNCTION_DECL): Tidy.
5982 * typeck.c (build_x_function_call): Handle static member function
5983 templates like non-templates. Handle friend templates like normal
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.
5991 Mon Feb 23 02:52:29 1998 Mark Mitchell <mmitchell@usa.net>
5993 * Make-lang.in (cc1plus): Note that cc1plus depends on
5994 cp/cp-tree.h and cp/cp-tree.def.
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
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
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
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
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
6081 Sun Feb 22 19:53:29 1998 Jeffrey A Law (law@cygnus.com)
6083 * error.c: Include sys/types.h.
6085 Thu Feb 19 14:49:09 1998 Jeffrey A Law (law@cygnus.com)
6087 * method.c (build_mangled_name): Start CPP directives in column zero.
6089 Thu Feb 19 10:36:48 1998 Jason Merrill <jason@yorick.cygnus.com>
6091 * typeck2.c (process_init_constructor): Sorry about non-trivial
6092 labeled initializers.
6093 * parse.y (initlist): Re-enable labeled initializers.
6095 Thu Feb 19 10:15:55 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
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.
6102 Thu Feb 19 10:04:12 1998 Jason Merrill <jason@yorick.cygnus.com>
6104 * cvt.c (cp_convert_to_pointer): Preserve TREE_CONSTANT.
6105 * typeck2.c (initializer_constant_valid_p): Allow conversions
6106 between pointers and references.
6108 1998-02-19 Brendan Kehoe <brendan@cygnus.com>
6110 * typeck.c (build_unary_op): Only warn about incr/decr a pointer
6111 if pedantic || warn_pointer_arith.
6113 Thu Feb 19 09:37:21 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
6115 * pt.c (unify): Handle TEMPLATE_DECL.
6117 1998-02-18 Brendan Kehoe <brendan@cygnus.com>
6119 * cp-tree.h (strip_attrs): Remove decl.
6121 1998-02-18 Doug Evans <devans@cygnus.com>
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.
6128 Tue Feb 17 14:07:52 1998 Mark Mitchell <mmitchell@usa.net>
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.
6138 Tue Feb 17 11:54:16 1998 Jason Merrill <jason@yorick.cygnus.com>
6140 * parse.y (simple_stmt): Use getdecls() to check for decl.
6142 Sat Feb 14 11:50:51 1998 Manfred Hollstein <manfred@s-direktnet.de>
6144 * Make-lang.in (DEMANGLER_INSTALL_NAME, DEMANGLER_CROSS_NAME): New
6146 (c++.install-common): Install c++filt properly as native or as cross
6148 (c++.uninstall): Add c++filt.
6150 Fri Feb 13 14:55:37 1998 Jason Merrill <jason@yorick.cygnus.com>
6152 * call.c (standard_conversion): Fix multi-level ptr conversions.
6154 Fri Feb 13 14:06:22 1998 Mike Stump <mrs@wrs.com>
6156 * init.c (build_new): Propagate error_mark_node up.
6158 Fri Feb 13 13:24:32 1998 Jason Merrill <jason@yorick.cygnus.com>
6160 * parse.y (simple_stmt): If the condition isn't a declaration,
6161 start the controlled block after the test.
6163 Fri Feb 13 02:26:10 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
6165 * call.c (build_over_call): Convert builtin abs, labs and fabs to
6167 * decl.c (init_decl_processing): Re-enable abs, labs and fabs as
6170 Fri Feb 13 01:36:42 1998 Jason Merrill <jason@yorick.cygnus.com>
6172 * call.c (standard_conversion): A BASE_CONV replaces an RVALUE_CONV.
6174 Fri Feb 13 00:21:59 1998 Jason Merrill <jason@yorick.cygnus.com>
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.
6181 * Make-lang.in (DEMANGLER_PROG): Add $(exeext).
6182 (c++.install-common): Install c++filt.
6184 Thu Feb 12 12:46:51 1998 Benjamin Kosnik <bkoz@rhino.cygnus.com>
6186 * decl.c (shadow_tag): Give error for typedef-ing built-in types.
6188 Wed Feb 11 23:28:05 1998 Mark Mitchell <mmitchell@usa.net>
6190 * call.c (reference_binding): Use comptypes when comparing
6191 TYPE_MAIN_VARIANTS to handle non-canonical array/index types.
6193 Wed Feb 11 16:42:04 1998 Mark Mitchell <mmitchell@usa.net>
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.
6199 Wed Feb 11 15:54:18 1998 Mark Mitchell <mmitchell@usa.net>
6201 * typeck.c (build_ptrmemfunc): Type-check pointer-to-member
6204 Mon Feb 9 22:23:31 1998 Mark Mitchell <mmitchell@usa.net>
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
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.
6236 Tue Feb 10 23:56:46 1998 Jason Merrill <jason@yorick.cygnus.com>
6238 * pt.c (convert_nontype_argument): Fix typo.
6239 (check_explicit_specialization): Allow old-style specialization
6240 of class template members.
6242 Tue Feb 10 20:36:52 1998 Jason Merrill <jason@yorick.cygnus.com>
6243 Manfred Hollstein <manfred@s-direktnet.de>
6245 * decl.c (grokdeclarator): Use DECL_USE_TEMPLATE instead
6246 when deciding to override DECL_ASSEMBLER_NAME.
6248 Tue Feb 10 15:30:55 1998 Andrew MacLeod <amacleod@torpedo.to.cygnus.com>
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,
6259 (process_overload_item): New function, handles issue of type codes.
6260 (build_overload_name): New function, start squangling and call
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
6276 Sun Feb 8 23:47:38 1998 scott snyder <sss@d0linux01.fnal.gov>
6278 * method.c (make_thunk): Avoid name buffer overflow.
6280 Sat Feb 7 16:48:54 1998 Jason Merrill <jason@yorick.cygnus.com>
6282 * pt.c (instantiate_decl): Call cp_finish_decl for vars even if we
6283 don't define them yet.
6285 * parse.y (nomods_initdcl0): Add constructor_declarator case.
6287 Fri Feb 6 21:32:25 1998 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
6289 * config-lang.in (diff_excludes): Use basename only.
6291 Thu Feb 5 19:10:40 1998 Jason Merrill <jason@yorick.cygnus.com>
6293 * tinfo2.cc: Add tinfo for signed char.
6295 Thu Feb 5 14:38:23 1998 Mike Stump <mrs@wrs.com>
6297 * search.c (compute_access): Handle protected constructors in derived
6298 classes as accessible.
6300 Wed Feb 4 01:26:49 1998 Jason Merrill <jason@yorick.cygnus.com>
6302 * expr.c (cplus_expand_expr, PCC_STATIC_STRUCT_RETURN code):
6303 Call convert_from_reference sooner.
6305 Tue Feb 3 23:50:52 1998 Mark Mitchell <mmitchell@usa.net>
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
6311 * decl2.c (finish_file): Make sure that static inlines with
6312 definitions are not marked DECL_EXTERNAL before returning.
6314 Tue Feb 3 22:43:42 1998 Jason Merrill <jason@yorick.cygnus.com>
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.
6322 Tue Feb 3 22:04:01 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
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.
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.
6337 Tue Jan 6 01:42:44 1998 Mumit Khan <khan@xraylith.wisc.edu>
6339 * lex.c (file_name_nondirectory): Also check for '/'.
6341 Mon Feb 2 11:24:22 1998 Mark Mitchell <mmitchell@usa.net>
6343 * parse.y (primary): Deal with statement-expressions in
6345 * pt.c (tsubst_copy): Handle BIND_EXPR.
6346 * tree.c (mapcar): Likewise.
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.
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
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
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.
6374 Mon Feb 2 00:57:38 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
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.
6386 * class.c (build_vtable_entry): Add explicit braces to avoid
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'.
6393 * cvt.c (convert_to_aggr): Add explicit braces to avoid ambiguous
6396 * decl.c (grok_reference_init): Eliminate unused parameter, all
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.
6410 * decl2.c (coerce_delete_type): Hide definition of `e3'.
6412 * error.c: Include <stdlib.h>.
6413 (dump_expr): Change the type of `i' to size_t. Remove unused
6416 * except.c (init_exception_processing): Remove unused variable `d'.
6417 (expand_throw): Likewise for `label'.
6419 * friend.c (add_friends): Add explicit braces to avoid ambiguous
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
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.
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.
6442 * method.c: Include <strings.h> if we don't have <string.h>.
6443 Protect declaration of `index' with autoconf macro.
6445 * parse.y (primary): Add explicit braces to avoid ambiguous `else'.
6446 Initialize `type' to NULL_TREE.
6447 (structsp): Remove unused variable `id'.
6449 * pt.c (coerce_template_parms): Add explicit braces to avoid
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'.
6458 * repo.c (init_repo): Add parentheses around assignment used as
6460 (finish_repo): Remove unused varable `p'.
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
6469 (get_template_base): Initialize `type' to NULL_TREE.
6471 * sig.c (append_signature_fields): Initialize `last_mfptr' to
6473 (build_signature_table_constructor): Likewise for
6474 `last_rhs_field', `pfn' and `vt_off'.
6475 (build_sigtable): Likewise for `init'.
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'.
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
6489 (convert_arguments): Initialize `called_thing' to 0.
6490 (convert_for_initialization): Initialize `savew' and `savee' to 0.
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'.
6496 * xref.c (GNU_xref_decl): Initialize `cls' to 0.
6498 Sun Feb 1 12:45:34 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
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.
6508 Thu Jan 29 10:39:30 1998 Mark Mitchell <mmitchell@usa.net>
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.
6518 Wed Jan 28 23:14:44 1998 Jason Merrill <jason@yorick.cygnus.com>
6520 * class.c (instantiate_type): Don't just return a known type if
6523 Wed Jan 28 11:04:07 1998 Mark Mitchell <mmitchell@usa.net>
6525 * class.c (instantiate_type): Remove handling of FUNCTION_DECL
6526 since that code could never be reached.
6528 * error.c (dump_decl): Avoid aborting in the midst of printing an
6529 error message about an illegal template declaration.
6531 * parse.y (structsp): Print an error message, rather than crashing,
6532 when a class-head does not name a class.
6534 * pt.c (convert_nontype_argument): Allow REAL_TYPE and COMPLEX_TYPE
6535 template arguments as a g++ extension.
6537 * cp-tree.def (ALIGNOF_EXPR): New tree code.
6538 * decl2.c (grok_alignof): If processing_template_decl, just store
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.
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
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.
6561 Wed Jan 28 10:55:47 1998 Jason Merrill <jason@yorick.cygnus.com>
6563 * pt.c (convert_nontype_argument): Use decl_constant_value.
6565 Tue Jan 27 16:42:21 1998 Mark Mitchell <mmitchell@usa.net>
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
6591 (cp_finish_decl): Remove previous (bogus) change.
6592 (grok_declarator): Use decl_function_context rather than
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
6609 (push_template_decl): Avoid looking at CLASSTYPE fields in
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
6617 (classtype_mangled_name): Likewise.
6618 (lookup_template_class): Likewise.
6620 (more_specialized): Take explicit template arguments as a
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
6630 * typeck.c (build_component_ref): Check for invalid arguments.
6632 Tue Jan 27 01:44:02 1998 Jason Merrill <jason@yorick.cygnus.com>
6634 * expr.c (cplus_expand_expr, AGGR_INIT_EXPR): Don't check that
6635 return_target and call_target are equivalent.
6637 * pt.c (type_unification_real): Just accept function parms that
6638 don't use any template parms.
6640 Sun Jan 25 03:30:00 1998 Jason Merrill <jason@yorick.cygnus.com>
6642 * decl.c (cp_finish_decl): When bailing on a comdat variable, also
6643 unset DECL_NOT_REALLY_EXTERN.
6645 * parse.y (typename_sub*): Fix std::.
6647 Sat Jan 24 12:13:54 1998 Jason Merrill <jason@yorick.cygnus.com>
6649 * error.c (dump_decl): Fix type default template args.
6650 (dump_type): Hand TEMPLATE_DECL off to dump_decl.
6652 Fri Jan 23 18:34:37 1998 Mumit Khan <khan@xraylith.wisc.edu>
6654 * lex.c (DIR_SEPARATOR): Define to be '/' if not already defined.
6655 (file_name_nondirectory): Use.
6657 Wed Jan 21 10:29:57 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
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
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.
6716 Mon Jan 19 22:40:03 1998 Mark Mitchell <mmitchell@usa.net>
6718 * decl.c (start_decl): Don't allow duplicate definitions of static
6721 * call.c (build_user_type_conversion_1): Handle user-defined
6722 template conversion operators correctly.
6724 * decl2.c (build_expr_from_tree): Issue an error message if the
6725 object in a COMPONENT_REF is a TEMPLATE_DECL.
6727 * typeck.c (incomplete_type_error): Handle TEMPLATE_TYPE_PARMs.
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
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
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
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.
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.
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
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.
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
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.
6849 Mon Jan 19 13:18:51 1998 Jason Merrill <jason@yorick.cygnus.com>
6851 * cvt.c (build_up_reference): A TARGET_EXPR has side effects.
6853 Fri Jan 16 11:40:50 1998 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
6855 * error.c (dump_decl): For enum tags, output the tag, not its value.
6857 1998-01-13 Brendan Kehoe <brendan@cygnus.com>
6859 * decl.c (init_decl_processing): Only call init_rtti_processing
6862 Mon Jan 12 01:35:18 1998 Jason Merrill <jason@yorick.cygnus.com>
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.
6868 * decl2.c (get_temp_regvar): Tweak.
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.
6875 Wed Jan 7 23:47:13 1998 Jason Merrill <jason@yorick.cygnus.com>
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
6890 Copyright (C) 1998 Free Software Foundation, Inc.
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.