]> gcc.gnu.org Git - gcc.git/blob - gcc/cp/ChangeLog
decl.c (maybe_push_to_top_level): Always call push_cp_function_context.
[gcc.git] / gcc / cp / ChangeLog
1 1999-03-02 Mark Mitchell <mark@markmitchell.com>
2
3 * decl.c (maybe_push_to_top_level): Always call
4 push_cp_function_context.
5 (pop_from_top_level): Always call pop_cp_function_context.
6
7 1999-02-26 Nathan Sidwell <nathan@acm.org>
8
9 * typeck.c (complete_type_or_else): Add VALUE arg, for helpful
10 diagnostics.
11 cp-tree.h (complete_type_or_else): Added VALUE parameter.
12 * init.c (build_new_1): Extra arg to complete_type_or_else.
13 (build_delete): Likewise.
14 * typeck.c (require_complete_type): Likewise.
15 (pointer_int_sum): Likewise.
16 (pointer_diff): Likewise.
17 (build_component_ref): Likewise.
18
19 * typeck2.c (incomplete_type_error): Always use cp_error.
20 Show declaration of undefined type, if appropriate.
21 Deal with UNKNOWN_TYPE nodes.
22
23 * typeck.c (require_complete_type): Use TYPE_SIZE as
24 size_zero_node to mean incomplete type.
25 (require_complete_type_in_void): New function.
26 (build_compound_expr): Call complete_type_in_void for LHS.
27 (build_c_cast): Call complete_type_in_void for void cast.
28 * cvt.c (ocp_convert): Call complete_type_in_void for void cast.
29 * decl.c (cplus_expand_expr_stmt): Void expression checks moved to
30 require_complete_type_in_void. Call it.
31 * cp-tree.h (require_complete_type_in_void): Prototype new function.
32
33 * typeck.c (convert_arguments): Use alternative format for function
34 decls. Don't require_complete_type here. Simplify diagnostic printing.
35 (convert_for_initialization): Don't require_complete_type on RHS yet.
36 * call.c (convert_arg_to_ellipsis): Call require_complete_type.
37
38 * call.c (build_over_call): Cope with qualified void return type.
39 * semantics.c (finish_call_expr): Likewise
40 * typeck.c (build_function_call_real): Likewise
41 (c_expand_return): Likewise
42 * decl2.c (reparse_absdcl_as_expr): Cope with qualified void type.
43
44 * call.c (print_z_candidates): Use alternate print format, to be
45 consistant with (pt.c) print_candidates.
46 method.c (hack_identifier): List candidate members.
47 search.c (lookup_field): Build ambiguous list, and show it, if
48 ambiguous.
49
50 1999-02-26 Mark Mitchell <mark@markmitchell.com>
51
52 * typeck.c (decay_conversion): Don't confuse constant array
53 variables with their intiailizers.
54
55 * decl.c (duplicate_decls): Copy DECL_TEMPLATE_INSTANTIATED when
56 merging decls.
57 * pt.c (regenerate_decl_from_template): Tweak for clarity.
58 (instantiate_decl): Mark a decl instantiated before regenerating
59 it to avoid recursion.
60 * tree.c (mapcar): Don't call decl_constant_value unless we know
61 something is TREE_READONLY_DECL_P.
62
63 * class.c (check_for_override): Don't stop checking when we find
64 the first overridden function. Delete #if 0'd code.
65 * search.c (get_matching_virtual): Likewise.
66
67 1999-02-25 Richard Henderson <rth@cygnus.com>
68
69 * lang-specs.h: Define __FAST_MATH__ when appropriate.
70
71 1999-02-24 Mike Stump <mrs@wrs.com>
72
73 * typeck.c (convert_for_assignment): Allow boolean integral constant
74 expressions to convert to null pointer.
75
76 1999-02-24 Martin von Loewis <loewis@informatik.hu-berlin.de>
77
78 * decl.c (lookup_namespace_name): Resolve namespace aliases.
79
80 * class.c (push_nested_class): Allow namespaces.
81
82 * decl2.c (set_decl_namespace): Add friendp parameter.
83 * decl.c (grokfndecl): Pass it.
84 (grokvardecl): Likewise.
85 * cp-tree.h: Change declaration.
86
87 1999-02-24 Jason Merrill <jason@yorick.cygnus.com>
88
89 * pt.c (tsubst): Allow an array of explicit size zero.
90
91 1999-02-23 Jason Merrill <jason@yorick.cygnus.com>
92
93 * errfn.c: Change varargs code to look like toplev.c.
94
95 * method.c (process_modifiers): Don't prepend 'U' for char or
96 wchar_t.
97
98 1999-02-20 Craig Burley <craig@jcb-sc.com>
99
100 * Make-lang.in (cplib2.ready): Don't consider updating
101 cplib2 stuff if the current directory isn't writable, as
102 it won't work (such as during a `make install').
103
104 Sun Feb 21 20:38:00 1999 H.J. Lu (hjl@gnu.org)
105
106 * decl2.c (start_objects): Make file scope constructors and
107 destructors local to the file if ASM_OUTPUT_CONSTRUCTOR and
108 ASM_OUTPUT_DESTRUCTOR are defined.
109
110 1999-02-19 Mark Mitchell <mark@markmitchell.com>
111
112 * cp-tree.h (CLASSTYPE_METHOD_VEC): Adjust comment.
113 (fn_type_unification): Adjust prototype.
114 (lookup_fnfields_1): Declare.
115 * call.c (add_template_candidate_real): Adjust call to
116 fn_type_unification.
117 * class.c (add_method): Don't allow duplicate declarations of
118 constructors or destructors.
119 (resolve_address_of_overloaded_function): Remove unused variable.
120 Adjust call to fn_type_unification.
121 * decl.c (grokfndecl): Be more robust in the face of illegal
122 specializations.
123 * decl2.c (check_classfn): Remove hokey handling of member
124 templates.
125 * pt.c (determine_specialization): Improve comments. Adjust to
126 handle template argument deduction as per the standard.
127 (check_explicit_specialization): Fix comment spacing. Handle
128 type-conversion operators correctly. Improve error-recovery.
129 (fn_type_unification): Remove EXTRA_FN_ARG parameter.
130 (get_bindings_real): Simplify handling of static members.
131 * search.c (lookup_fnfields_1): Make it have external linkage.
132 * typeck.c (compparms): Fix comment.
133 (build_unary_op): Don't try to figure out which template
134 specialization is being referred to when when the address-of
135 operator is used with a template function.
136
137 Thu Feb 18 23:40:01 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
138
139 * cp-tree.h (lvalue_or_else): Qualify a char* with the `const'
140 keyword to match an analogous change at the top level.
141
142 * tree.c (lvalue_or_else): Likewise.
143
144 1999-02-17 Mark Mitchell <mark@markmitchell.com>
145
146 * decl.c (xref_basetypes): Comment.
147 * pt.c (instantiate_class_template): Use xref_basetypes.
148
149 1999-02-16 Mark Mitchell <mark@markmitchell.com>
150
151 * cp-tree.h (tsubst): Change prototype.
152 (tsubst_expr): Likewise.
153 (tsubst_copy): Likewise.
154 (type_unification): Remove prototype.
155 * call.c (convert_default_arg): Adjust call to tsubst_expr.
156 * class.c (resolve_address_of_overloaded_function): Just use
157 fn_type_unification.
158 * decl.c (grokdeclarator): Adjust call to tsubst.
159 * method.c (build_template_parm_names): Likewise.
160 * pt.c (GTB_VIA_VIRTUAL): New macro.
161 (GTB_IGNORE_TYPE): Likewise.
162 (resolve_overloaded_unification): Add `complain' parameter.
163 (try_one_overload): Likewise.
164 (tsubst_template_arg_vector): Likewise.
165 (tsubst_template_parms): Likewise.
166 (tsubst_aggr_type): Likewise.
167 (tsubst_arg_types): Likewise.
168 (tsubst_call_declarator_parms): Likewise.
169 (unify): Remove explicit_mask.
170 (type_unification_real): Likewise.
171 (get_template_base_recursive): Likewise.
172 (coerce_template_template_parms): Provide prototype.
173 (tsubst_function_type): Likewise.
174 (try_class_unification): New function.
175 All callers changed to use new complain parameter.
176 (get_template_base): Use try_class_unification.
177 (unify): Adjust handling of classes derived from template types.
178 (fn_type_unification): Substitute explicit arguments before
179 unification.
180
181 1999-02-16 Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
182
183 * decl.c (pushdecl): Remove dead code.
184
185 1999-02-16 Jason Merrill <jason@yorick.cygnus.com>
186
187 * decl2.c (finish_objects): Fix code I missed in previous change.
188
189 1999-02-13 Jason Merrill <jason@yorick.cygnus.com>
190
191 * decl.c (grokfndecl): Return NULL_TREE instead of error_mark_node.
192 (grokdeclarator): Don't expect error_mark_node from grokfndecl.
193
194 * pt.c (maybe_process_partial_specialization): Complain about
195 'template <>' on non-specialization.
196
197 1999-02-10 Jason Merrill <jason@yorick.cygnus.com>
198
199 * decl.c (grokdeclarator): Catch wierd declarators.
200 * decl2.c (finish_file): Don't abort because of namespace parsing
201 failure.
202 (check_decl_namespace): Remove.
203
204 1999-02-09 Mark Mitchell <mark@markmitchell.com>
205
206 * cp-tree.h (get_template_base): Don't declare.
207 (dfs_walk): Declare.
208 (dfs_unmark): Likewise.
209 (markedp): Likewise.
210 * pt.c (unify): Remove duplicate declaration. Pass tparms and
211 targs to get_template_base.
212 (get_template_base_recursive): Move here from search.c. Check to
213 see that the base found can be instantiated to form the desired
214 type.
215 (get_template_base): Likewise.
216 (get_class_bindings): Simplify.
217 * search.c (get_template_base_recursive): Move to pt.c.
218 (get_template_base): Likewise.
219 (markedp): Make it global.
220 (dfs_walk): Likewise.
221 (dfs_unmark): Likewise.
222
223 1999-02-07 Jason Merrill <jason@yorick.cygnus.com>
224
225 * pt.c (maybe_process_partial_specialization): Complain about
226 specialization in wrong namespace.
227 * tree.c (decl_namespace_context): New fn.
228
229 1999-02-06 Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
230
231 * decl2.c (arg_assoc_type): Handle TEMPLATE_TEMPLATE_PARM.
232 * pt.c (coerce_template_template_parms): Handle nested
233 template template parameters.
234
235 Sat Feb 6 18:08:40 1999 Jeffrey A Law (law@cygnus.com)
236
237 * typeck2.c: Update email addrsses.
238
239 1999-02-04 Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
240
241 * pt.c (unify): Call coerce_template_parms with the COMPLAIN flag
242 turned off.
243
244 1999-02-04 Jason Merrill <jason@yorick.cygnus.com>
245
246 * lex.c (retrofit_lang_decl): Split out...
247 (build_lang_decl): From here.
248 * decl.c (pushdecl): Call it for functions generated by the middle
249 end that don't have DECL_LANG_SPECIFIC.
250 * cp-tree.h: Declare it.
251
252 * decl2.c: Remove flag_init_priority. Always enable initp stuff.
253 (start_objects, finish_objects): Only use special
254 init_priority code if the user specified a priority.
255 (do_ctors, do_dtors): Use DEFAULT_INIT_PRIORITY for the non-initp
256 objects.
257
258 Wed Feb 3 22:50:17 1999 Marc Espie <Marc.Espie@liafa.jussieu.fr>
259
260 * Make-lang.in (GXX_OBJS): Remove choose-temp.o, pexecute.o and
261 mkstemp.o. Get them from libiberty now.
262 (DEMANGLER_PROG): Simlarly, remove getopt.o getopt1.o.
263
264 Tue Feb 2 22:38:48 1999 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
265
266 * decl2.c (lang_decode_option): Use read_integral_parameter.
267
268 1999-02-01 Mark Mitchell <mark@markmitchell.com>
269
270 * pt.c (tsubst, case TYPENAME_TYPE): Check TYPE_BEING_DEFINED
271 before calling complete_type_or_else.
272
273 Mon Feb 1 09:49:52 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
274
275 * input.c (inline): Don't define, its handled by system.h.
276
277 Sun Jan 31 20:34:29 1999 Zack Weinberg <zack@rabi.columbia.edu>
278
279 * decl2.c: Don't define flag_no_ident here. Don't process
280 -f(no-)ident here.
281 * cp-tree.h: Don't declare flag_no_ident here.
282 * lang-specs.h: Map -Qn to -fno-ident.
283
284 1999-01-28 Jason Merrill <jason@yorick.cygnus.com>
285
286 * cp-tree.h (struct tree_binding): Replace scope field with a union.
287 (BINDING_SCOPE): Adjust.
288 * decl.c (BINDING_LEVEL): Adjust.
289
290 1999-01-26 Jason Merrill <jason@yorick.cygnus.com>
291
292 * pt.c (instantiate_class_template): Set up the DECL_INITIAL of
293 member constants.
294
295 * init.c (expand_member_init): Pull out TYPE_MAIN_VARIANT in
296 a ctor initializer.
297
298 * tree.c (equal_functions): Fix name in prototype.
299
300 * decl.c (push_local_binding): Add FLAGS argument.
301 (pushdecl, push_overloaded_decl): Pass it.
302 * decl2.c (do_local_using_decl): Likewise.
303 * cp-tree.h: Adjust prototype.
304 * decl.c (poplevel): Fix logic.
305
306 * decl.c (push_local_binding): Also wrap used decls in a TREE_LIST.
307 (poplevel): Handle that. Fix logic for removing TREE_LISTs.
308 (cat_namespace_levels): Don't loop forever.
309
310 1999-01-25 Richard Henderson <rth@cygnus.com>
311
312 * typeck.c (build_reinterpret_cast): Fix typo in duplicated test.
313
314 1999-01-25 Jason Merrill <jason@yorick.cygnus.com>
315
316 * class.c (resolve_address_of_overloaded_function): Mark the
317 chosen function used.
318
319 * call.c (build_call): Make sure that a function coming in has
320 been marked used already.
321 * decl.c (expand_static_init): Call mark_used instead of
322 assemble_external.
323 * except.c (call_eh_info, do_pop_exception, expand_end_eh_spec,
324 alloc_eh_object, expand_throw): Likewise.
325 * init.c (build_builtin_delete_call): Likewise.
326 * rtti.c (call_void_fn, get_tinfo_fn, build_dynamic_cast_1,
327 expand_si_desc, expand_class_desc, expand_ptr_desc, expand_attr_desc,
328 expand_generic_desc): Likewise.
329
330 1999-01-25 Martin von Löwis <loewis@informatik.hu-berlin.de>
331
332 * tree.c (equal_functions): New function.
333 (ovl_member): Call it.
334
335 1999-01-24 Jason Merrill <jason@yorick.cygnus.com>
336
337 * cvt.c (cp_convert_to_pointer): Fix conversion of 0 to pmf.
338
339 1999-01-25 Martin von Loewis <loewis@informatik.hu-berlin.de>
340
341 * decl.c (decls_match): Return 1 if old and new are identical.
342 (push_overloaded_decl): Set OVL_USED when PUSH_USING.
343
344 1999-01-24 Jason Merrill <jason@yorick.cygnus.com>
345
346 * decl.c (start_function): Make member functions one_only on windows.
347 * decl2.c (import_export_decl): Likewise.
348
349 * decl.c (grokdeclarator): Don't complain about implicit int in
350 a system header. Change same-name field check to not complain in
351 a system header instead of within extern "C".
352
353 1999-01-21 Mark Mitchell <mark@markmitchell.com>
354
355 * cp-tree.h (PUSH_GLOBAL): New macro.
356 (PUSH_LOCAL): Likewise.
357 (PUSH_USING): Likewise.
358 (namespace_bindings_p): Declare.
359 (push_overloaded_decl): Likewise.
360 * decl.c (push_overloaded_decl): Don't make it static. Check for
361 illegal declarations after using declarations here.
362 (namespace_bindings_p): Likewise.
363 (duplicate_decls): Don't consider declarations from different
364 namespaces to be the same.
365 (pushdecl): Use symbolic PUSH_ constants in calls to
366 push_overloaded_decl.
367 (push_overloaded_decl_1): Likewise.
368 * decl2.c (validate_nonmember_using_decl): Tweak `std' handling.
369 (do_nonmember_using_decl): Check for illegal using declarations
370 after ordinary declarations here.
371 (do_local_using_decl): Call pushdecl to insert declarations.
372
373 1999-01-21 Jason Merrill <jason@yorick.cygnus.com>
374
375 * decl.c (grokdeclarator): Fix lang_c -> lang_name_c typo.
376
377 1999-01-21 Mark Mitchell <mark@markmitchell.com>
378
379 * tree.c (build_cplus_array_type_1): Don't call build_array_type
380 for types involving template parameters.
381
382 * cp-tree.h (PARM_DECL_EXPR): Delete.
383 (convert_default_arg): Change prototype.
384 (check_default_argument): Declare.
385 (search_tree): Likewise.
386 * call.c (convert_default_arg): Take the function to which the
387 default argument belongs as a parameter, and do any necessary
388 instantiation here, instead of ...
389 (build_over_call): Here.
390 * decl.c (local_variable_p): New function.
391 (check_default_argument): Likewise, split out and tidied from ...
392 (grokparms): Here.
393 * error.c (dump_expr): Don't set PARM_DECL_EXPR.
394 * pt.c (tsubst_call_declarator_parms): New function.
395 (for_each_template_parm): Handle ARRAY_REFs. Do the obvious thing
396 with CALL_EXPRs, rather than trying to be clever.
397 (tsubst): Use tsubst_call_declarator_parms.
398 * tree.c (search_tree): Don't make it static.
399 * typeck.c (convert_arguments): Use new interface to
400 convert_default_arg.
401
402 1999-01-20 Mark Mitchell <mark@markmitchell.com>
403
404 * error.c (dump_function_decl): Don't print the argument types for
405 a function when the verbosity level is negative.
406
407 * call.c (build_over_call): Check format attributes at call-time.
408
409 * pt.c (tsubst_copy): Fix comment.
410 (unify): Don't allow unification with variable-sized arrays.
411
412 * semantics.c (finish_stmt_expr): When processing a template make
413 the BIND_EXPR long-lived.
414
415 1999-01-19 Jason Merrill <jason@yorick.cygnus.com>
416
417 * decl2.c (finish_vtable_vardecl): Make vtables comdat here.
418 (import_export_vtable): Not here.
419
420 1999-01-18 Jason Merrill <jason@yorick.cygnus.com>
421
422 * typeck.c (build_component_ref): Wrap an OVERLOAD around a unique
423 non-static member function.
424
425 1999-01-18 Nathan Sidwell <nathan@acm.org>
426
427 * class.c (instantiate_type): Only diagnose illegal address of member
428 function if complaining.
429
430 * decl.c (lookup_name_real): Remove duplicate code.
431
432 1999-01-18 Jason Merrill <jason@yorick.cygnus.com>
433
434 * tree.c (copy_template_template_parm): Use permanent_obstack.
435
436 1999-01-18 Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
437
438 * pt.c (unify): Remove restrictions on deduction of argument
439 of template template parameters.
440
441 1999-01-18 Nathan Sidwell <nathan@acm.org>
442
443 * rtti.c (build_dynamic_cast_1): Resolve OFFSET_REF exprs.
444
445 * class.c (resolve_address_of_overloaded_function): Show list of
446 all candidates, when none of them match.
447
448 1999-01-18 Chip Salzenberg <chip@perlsupport.com>
449
450 * typeck.c (comp_ptr_ttypes_reinterpret): Per ANSI, tighten up
451 definition of 'casting away const' in reinterpret_cast<>.
452
453 1999-01-18 Graham <grahams@rcp.co.uk>
454
455 * cvt.c: Add include for decl.h, remove extern for
456 static_aggregates which is now provided by decl.h.
457
458 * Makefile.in (cvt.o): Add dependency for decl.h and missing
459 dependencies for convert.h and flags.h.
460
461 1999-01-18 Nathan Sidwell <nathan@acm.org>
462
463 * decl2.c (do_dtors): Set current location to that of the
464 decl, for sensible diagnostics and debugging.
465 (check_classfn): Issue `incomplete type' error, if
466 class is not defined.
467
468 1999-01-16 Jason Merrill <jason@yorick.cygnus.com>
469
470 * cp-tree.h: Add prototype for bound_pmf_p.
471
472 1999-01-16 Jason Merrill <jason@yorick.cygnus.com>
473 Manfred Hollstein <manfred@s-direktnet.de>
474
475 * decl.c (grokdeclarator): Don't make 'main(){}' an error with only
476 -Wreturn-type.
477
478 1999-01-16 Nathan Sidwell <nathan@acm.org>
479
480 * cp-tree.h (struct lang_type): Added has_mutable flag.
481 (CLASSTYPE_HAS_MUTABLE): New macro to access it.
482 (TYPE_HAS_MUTABLE_P): New macro to read it.
483 (cp_has_mutable_p): Prototype for new function.
484 * class.c (finish_struct_1): Set has_mutable from members.
485 * decl.c (cp_finish_decl): Clear decl's TREE_READONLY flag, if
486 it contains a mutable.
487 * typeck.c (cp_has_mutable_p): New function.
488
489 1999-01-15 Mark Mitchell <mark@markmitchell.com>
490
491 * pt.c (process_template_parm): Ignore top-level qualifiers on
492 non-type parameters.
493
494 * decl.c (start_function): Use current_function_parms in the call
495 to require_complete_type_for_parms, not the probably empty
496 DECL_ARGUMENTS.
497
498 1999-01-14 Jason Merrill <jason@yorick.cygnus.com>
499
500 * semantics.c (finish_asm_stmt): Don't warn about redundant volatile.
501
502 * decl2.c (import_export_class): MULTIPLE_SYMBOL_SPACES only means
503 that we don't suppress the other copies.
504 * lex.c (handle_cp_pragma): Likewise.
505
506 1999-01-13 Mark Mitchell <mark@markmitchell.com>
507
508 * decl.c (grokdeclarator): Undo 1998-12-14 change.
509 * tree.c (build_cplus_array_type_1): Likewise.
510 * pt.c (instantiate_class_template): Remove misleading comment.
511 (tsubst_aggr_type): Substitute if there are template parameters,
512 regardless of whether or not they use template arguments.
513 (unify): Likewise, but for unification.
514
515 1999-01-12 Richard Henderson <rth@cygnus.com>
516
517 * cp-tree.h (flag_permissive): Declare extern.
518
519 1999-01-06 Mark Mitchell <mark@markmitchell.com>
520
521 * cp-tree.h (IDENTIFIER_TYPENAME_P): Use OPERATOR_TYPENAME_FORMAT
522 here.
523 (lang_type): Add is_partial_instantiation. Decrease width of
524 dummy.
525 (PARTIAL_INSTANTIATION_P): New macro.
526 (OPERATOR_TYPENAME_P): Remove.
527 * decl.c (unary_op_p): Use IDENTIFIER_TYPENAME_P, not
528 OPERATOR_TYPENAME_P.
529 (grok_op_properties): Likewise.
530 * friend.c (do_friend): Handle friends that are member functions
531 correctly.
532 * lex.c (init_parse): Use OPERATOR_TYPENAME_FORMAT.
533 * pt.c (instantiate_class_template): Rework for clarity. Avoid
534 leaving TYPE_BEING_DEFINED set in obscure cases. Don't do
535 any more partial instantiation than is absolutely necessary for
536 implicit typename. Set PARTIAL_INSTANTIATION_P.
537 (tsubst_decl): Use IDENTIFIER_TYPENAME_P.
538 * semantics.c (begin_class_definition): Handle partial
539 specializations of a type that was previously partially
540 instantiated.
541
542 Wed Jan 6 03:18:53 1999 Mark Elbrecht <snowball3@usa.net.
543
544 * g++spec.c (LIBSTDCXX): Provide default definition.
545 (lang_specific_driver): Use LIBSTDCXX instead of "-lstdc++".
546
547 Tue Jan 5 22:11:25 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
548
549 * Make-lang.in (g++.o): Depend on prefix.h.
550
551 1999-01-04 Jason Merrill <jason@yorick.cygnus.com>
552
553 * tree.c (bound_pmf_p): New fn.
554 * typeck.c (build_c_cast): Use it.
555
556 * decl.c (grok_op_properties): Use same_type_p.
557
558 Tue Dec 22 15:09:25 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
559
560 * Makefile.in (cvt.o): Depend on toplev.h.
561
562 * cp-tree.h (check_template_shadow, pod_type_p): Add prototypes.
563
564 * cvt.c: Include toplev.h.
565
566 * except.c (get_eh_caught, get_eh_handlers): Hide prototypes and
567 definitions.
568
569 * init.c (expand_vec_init): Initialize variable `itype'.
570
571 * lex.c (yyerror): Cast the argument passed to a ctype function to
572 an unsigned char.
573
574 * method.c (build_mangled_C9x_name): Wrap prototype and definition
575 in "HOST_BITS_PER_WIDE_INT >= 64".
576
577 * typeck.c (build_binary_op): Mark parameter `convert_p' with
578 ATTRIBUTE_UNUSED.
579
580 1998-12-22 Mark Mitchell <mark@markmitchell.com>
581
582 * cp-tree.h (TYPE_RAISES_EXCEPTIONS): Improve documentation.
583 * tree.c (build_exception_variant): Don't crash on empty throw
584 specs.
585
586 1998-12-18 DJ Delorie <dj@cygnus.com>
587
588 * cvt.c (convert_to_reference): Check for both error_mark_node
589 and NULL_NODE after call to convert_for_initialization.
590
591 1998-12-17 Jason Merrill <jason@yorick.cygnus.com>
592
593 * error.c (interesting_scope_p): New fn.
594 (dump_simple_decl): Use it.
595 (dump_expr, case CONSTRUCTOR): Force a & for a PMF.
596 (dump_expr, case OFFSET_REF): Print ->* if appropriate.
597
598 1998-12-16 Mark Mitchell <mark@markmitchell.com>
599
600 * class.c (resolve_address_of_overloaded_function): Do conversion
601 to correct type here, rather than ...
602 (instantiate_type): Here.
603
604 * cp-tree.h (DECL_TEMPLATE_PARM_P): New macro.
605 (DECL_TEMPLATE_TEMPLATE_PARM_P): Use it.
606 (decl_template_parm_p): Remove.
607 * decl.c (pushdecl): Don't set DECL_CONTEXT for a template
608 paramter.
609 * lex.c (do_identifier): Use DECL_TEMPLATE_PARM_P.
610 * pt.c (push_inline_template_parms_recursive): Set it.
611 (decl_template_parm_p): Remove.
612 (check_template_shadow): Use DECL_TEMPLATE_PARM_P.
613 (process_template_parm): Set it.
614
615 Wed Dec 16 16:33:58 1998 Dave Brolley <brolley@cygnus.com>
616
617 * lang-specs.h (default_compilers): Pass -MD, -MMD and -MG to cc1plus
618 if configured with cpplib.
619
620 1998-12-15 Mark Mitchell <mark@markmitchell.com>
621
622 * decl.c (poplevel): Make sure ns_binding is initialized.
623
624 * decl.c (finish_function): Undo inadvertant change in previous
625 patch.
626
627 1998-12-14 Mark Mitchell <mark@markmitchell.com>
628
629 * class.c (pushclass): Tweak handling of class-level bindings.
630 (resolve_address_of_overloaded_function): Update pointer-to-member
631 handling.
632 (instantiate_type): Likewise.
633 * cvt.c (cp_convert_to_pointer): Likewise.
634 * decl.c (pop_binding): Take the DECL to pop, not just the name.
635 Deal with `struct stat' hack.
636 (binding_level): Add to documentation.
637 (push_binding): Clear BINDING_TYPE.
638 (add_binding): New function.
639 (push_local_binding): Use it.
640 (push_class_binding): Likewise.
641 (poplevel): Adjust calls to pop_binding.
642 (poplevel_class): Likewise.
643 (pushdecl): Adjust handling of TYPE_DECLs; add bindings for hidden
644 declarations to current binding level.
645 (push_class_level_binding): Likewise.
646 (push_overloaded_decl): Adjust handling of OVERLOADs in local
647 bindings.
648 (lookup_namespace_name): Don't crash when confronted with a
649 TEMPLATE_DECL.
650 (lookup_name_real): Do `struct stat' hack in local binding
651 contexts.
652 (build_ptrmemfunc_type): Adjust documentation.
653 (grokdeclarator): Don't avoid building real array types when
654 processing templates unless really necessary.
655 (finish_method): Adjust calls to pop_binding.
656 * decl2.c (reparse_absdcl_as_expr): Recursively call ourselves,
657 not reparse_decl_as_expr.
658 (build_expr_from_tree): Deal with a template-id as the function to
659 call in a METHOD_CALL_EXPR.
660 * pt.c (convert_nontype_argument): Tweak pointer-to-member handling.
661 (maybe_adjust_types_For_deduction): Don't do peculiar things with
662 METHOD_TYPEs here.
663 (resolve_overloaded_unification): Handle COMPONENT_REFs. Build
664 pointer-to-member types where necessary.
665 * tree.c (build_cplus_array_type_1): Don't avoid building real
666 array types when processing templates unless really necessary.
667 (build_exception_variant): Compare the exception lists correctly.
668
669 1998-12-13 Mark Mitchell <mark@markmitchell.com>
670
671 * cp-tree.def (CPLUS_BINDING): Update documentation.
672 * cp-tree.h (LOCAL_BINDING_P): New macro.
673 (lang_identifier): Rename local_value to bindings.
674 (tree_binding): Make `scope' of type `void*', not `tree'.
675 (BINDING_SCOPE): Update documentation.
676 (IDENTIFIER_LOCAL_VALUE): Remove.
677 (IDENTIFIER_CLASS_VALUE): Document.
678 (IDENTIFIER_BINDING): New macro.
679 (IDENTIFIER_VALUE): Likewise.
680 (TIME_IDENTIFIER_TIME): Likewise.
681 (TIME_IDENTIFIER_FILEINFO): Likewise.
682 (IMPLICIT_TYPENAME_P): Likewise.
683 (set_identifier_local_value): Remove.
684 (push_local_binding): New function.
685 (push_class_binding): Likewise.
686 * class.c (pushclass): Update comments; use push_class_binding.
687 * decl.c (set_identifier_local_value_with_scope): Remove.
688 (set_identifier_local_value): Likewise.
689 (push_binding): New function.
690 (pop_binding): Likewise.
691 (binding_level): Update documentation. Remove shadowed.
692 (BINDING_LEVEL): New macro.
693 (free_binding_nodes): New variable.
694 (poplevel): Adjust for new name-lookup scheme. Don't mess up
695 BLOCK_VARs when doing for-scope extension. Remove effectively
696 dead code.
697 (pushlevel_class): Tweak formatting.
698 (poplevel_class): Adjust for new name-lookup scheme.
699 (print_binding_level): Likewise.
700 (store_bindings): Likewise.
701 (pushdecl): Likewise.
702 (pushdecl_class_level): Likewise.
703 (push_class_level_binding): Likewise.
704 (push_overloaded_decl): Update comments. Adjust for new
705 name-lookup scheme.
706 (lookup_name_real): Likewise.
707 (lookup_name_current_level): Likewise.
708 (cp_finish_decl): Likewise.
709 (require_complete_types_for_parms): Likewise. Remove misleading
710 #if 0'd code.
711 (grok_parms): Likewise. Don't call
712 require_complete_types_for_parms here.
713 (grok_ctor_properties): Don't treat templates as copy
714 constructors.
715 (grop_op_properties): Or as assignment operators.
716 (start_function): Document. Adjust for new name-lookup scheme.
717 (finish_function): Likewise.
718 * decl2.c (do_local_using_decl): Use push_local_binding.
719 * lex.c (begin_definition_of_inclass_inline): New function, split
720 out from ...
721 (do_pending_inlines): Here, and ...
722 (process_next_inline): Here.
723 (get_time_identifier): Use TIME_IDENTIFIER_* macros.
724 (init_filename_times): Likewise.
725 (extract_interface_info): Likewise.
726 (ste_typedecl_interface_info): Likewise.
727 (check_newline): Likewise.
728 (dump_time_statistics): Likewise.
729 (handle_cp_pragma): Likewise.
730 (do_identifier): Adjust for new name-lookup scheme.
731 * parse.y (function_try_block): Return ctor_initializer_opt value.
732 (fndef): Use it.
733 (fn.defpen): Pass appropriate values to start_function.
734 (pending_inline): Use functor_try_block value, and pass
735 appropriate values to finish_function.
736 * pt.c (is_member_template): Update documentation; remove handling
737 of FUNCTION_DECLs. As per name, this function should deal only in
738 TEMPLATE_DECLs.
739 (decl_template_parm_p): Change name of olddecl parameter to decl.
740 (check_template_shadow): Adjust for new name-lookup scheme.
741 (lookup_template_class): Likewise.
742 (tsubst_decl): Tweak so as not to confuse member templates with
743 copy constructors and assignment operators.
744 (unify): Handle UNION_TYPEs.
745 * ptree.c (print_lang_identifier): Adjust for new name-lookup scheme.
746 (lang_print_xnode): Adjust for new name-lookup scheme.
747 * typeck.c (mark_addressable): Likewise.
748 (c_expand_return): Likewise.
749
750 1998-12-08 Jason Merrill <jason@yorick.cygnus.com>
751
752 * decl.c (grokdeclarator): Allow field with same name as class
753 in extern "C".
754
755 * decl.c (lookup_name_real): Don't limit field lookup to types.
756 * class.c (check_member_decl_is_same_in_complete_scope): No error
757 if icv and x are the same.
758 * lex.c (do_identifier): Tweak error message.
759
760 1998-12-10 Mark Mitchell <mark@markmitchell.com>
761
762 * decl.c (start_enum): Use push_obstacks, not
763 end_temporary_allocation.
764 (finish_enum): Call pop_obstacks.
765
766 1998-12-10 Mark Mitchell <mark@markmitchell.com>
767
768 * class.c (instantiate_type): Return error_mark_node rather than
769 junk.
770
771 1998-12-09 Mark Mitchell <mark@markmitchell.com>
772
773 * cp-tree.h (most_specialized_instantiation): New function.
774 (print_candidates): Likewise.
775 * class.c (validate_lhs): Remove.
776 (resolve_address_of_overloaded_function): New function, split out
777 and then substantially reworked, from ...
778 (instantiate_type): Use it. Simplify.
779 * cvt.c (convert_to_reference): Complain when caller has indicated
780 that's the right thing to do. Don't crash if instantiate_type
781 fails.
782 * pt.c: Substitute `parameters' for `paramters' throughout.
783 (print_candidates): Don't make it static.
784 (most_specialized_instantiation): Split out from ...
785 (most_specialized): Here.
786
787 Wed Dec 9 15:33:01 1998 Dave Brolley <brolley@cygnus.com>
788
789 * lex.c (lang_init_options): Initialize cpplib.
790 * decl2.c (parse_options,cpp_initialized): Removed.
791 (lang_decode_option): Move initialization of cpplib to
792 lang_init_options.
793
794 1998-12-09 Mark Mitchell <mark@markmitchell.com>
795
796 * decl.c (grokdeclarator): Update the name of the TEMPLATE_DECL, as
797 well as the TYPE_DECL, when a typedef name is assigned to a
798 previously anonymous type.
799
800 1998-12-08 Andrew MacLeod <amacleod@cygnus.com>
801
802 * cp/except.c (call_eh_info): use __start_cp_handler instead of
803 __cp_eh_info for getting the eh info pointer. Add table_index to
804 field list.
805 (push_eh_cleanup): Don't increment 'handlers' data field.
806 (process_start_catch_block): Don't set the 'caught' field.
807
808 * cp/exception.cc (CP_EH_INFO): New macro for getting the
809 exception info pointer within library routines.
810 (__cp_eh_info): Use CP_EH_INFO.
811 (__start_cp_handler): Get exception info pointer, set caught field,
812 and increment the handlers field. Avoids this being done by handlers.
813 (__uncatch_exception, __check_eh_spec): Use CP_EH_INFO macro.
814 (uncaught_exception): Use CP_EH_INFO macro.
815
816 Tue Dec 8 10:48:21 1998 Jeffrey A Law (law@cygnus.com)
817
818 * Make-lang.in (cxxmain.o): Depend on $(DEMANGLE_H), not demangle.h
819
820 Mon Dec 7 17:56:06 1998 Mike Stump <mrs@wrs.com>
821
822 * lex.c (check_newline): Add support for \ as `natural'
823 characters in file names in #line to be consistent with #include
824 handling. We support escape prcessing in the # 1 "..." version of
825 the command. See also support in cp/lex.c.
826
827 1998-12-07 Zack Weinberg <zack@rabi.phys.columbia.edu>
828
829 * cp/decl2.c: s/data/opts/ when initializing cpp_reader
830 structure.
831
832 1998-12-07 Jason Merrill <jason@yorick.cygnus.com>
833
834 * decl.c (build_typename_type): Set DECL_ARTIFICIAL.
835
836 * error.c (dump_simple_decl): Also print namespace context.
837 (dump_function_decl): Likewise.
838
839 * decl2.c (ambiguous_decl): Don't print old value if it's
840 error_mark_node.
841
842 * decl.c (lookup_name_real): Fix handling of local types shadowed
843 by a non-type decl. Remove obsolete code.
844 * cp-tree.h (DECL_FUNCTION_SCOPE_P): New macro.
845
846 * lang-options.h: Add -fpermissive.
847 * decl2.c: Likewise.
848 * cp-tree.h: Add flag_permissive.
849 * decl.c (init_decl_processing): If neither -fpermissive or -pedantic
850 were specified, set flag_pedantic_errors.
851 * call.c (build_over_call): Turn dropped qualifier messages
852 back into pedwarns.
853 * cvt.c (convert_to_reference): Likewise.
854 * typeck.c (convert_for_assignment): Likewise.
855
856 1998-12-05 Jason Merrill <jason@yorick.cygnus.com>
857
858 * decl2.c (coerce_new_type): Use same_type_p.
859 (coerce_delete_type): Likewise.
860
861 * call.c (check_dtor_name): Return 1, not error_mark_node.
862
863 1998-12-04 Jason Merrill <jason@yorick.cygnus.com>
864
865 * lex.c (handle_cp_pragma): Disable #pragma interface/implementation
866 if MULTIPLE_SYMBOL_SPACES.
867
868 * pt.c (check_template_shadow): New fn.
869 * decl2.c (grokfield): Use it.
870 * decl.c (pushdecl): Likewise.
871 (pushdecl_class_level): Likewise.
872 (start_method): Likewise.
873 (xref_tag): Don't try to use 't' if we're defining.
874
875 * call.c (check_dtor_name): Just return an error_mark_node.
876 * pt.c (lookup_template_class): Complain about using non-template here.
877 * parse.y (apparent_template_type): Not here.
878
879 * pt.c (check_explicit_specialization): Complain about specialization
880 with C linkage.
881
882 * lang-options.h: Add -f{no-,}implicit-inline-templates.
883
884 * pt.c (convert_nontype_argument): Don't assume that any integer
885 argument is intended to be a constant-expression.
886
887 1998-12-03 Mark Mitchell <mark@markmitchell.com>
888
889 * class.c (handle_using_decl): Fix comment. Don't lookup
890 constructors in base classes.
891 (validate_lhs): Fix typo in comment.
892 * search.c (lookup_field_1): Don't return a USING_DECL.
893
894 * cp-tree.h (DECL_ACCESS): Improve documentation.
895
896 * decl.c (expand_static_init): Don't set the initialization-done
897 flag until the initialization is done.
898
899 1998-12-02 Mark Mitchell <mark@markmitchell.com>
900
901 * decl2.c (validate_nonmember_using_decl): Complain about using
902 declarations for class members.
903
904 1998-11-29 Jason Merrill <jason@yorick.cygnus.com>
905
906 * typeck2.c (process_init_constructor): Use same_type_p.
907
908 * decl.c (check_tag_decl): Don't warn about null decl inside a
909 class.
910
911 * pt.c (unify, case OFFSET_TYPE): Pass down 'strict' rather than
912 UNIFY_ALLOW_NONE.
913 (convert_nontype_argument): Use TYPE_PTRMEMFUNC_FN_TYPE.
914 (resolve_overloaded_unification): Strip baselinks.
915
916 Fri Nov 27 13:07:23 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
917
918 * g++spec.c: Don't prototype xmalloc.
919
920 1998-11-25 Jason Merrill <jason@yorick.cygnus.com>
921
922 * except.c (expand_throw): Use TYPE_PTR_P to check for pointers.
923
924 * decl.c (check_tag_decl): Do complain about null friend decl at
925 file scope.
926
927 1998-11-25 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
928
929 * lex.c (make_lang_type): Clear the whole struct lang_type, not
930 only the first multiple of sizeof (int).
931
932 1998-11-24 Jason Merrill <jason@yorick.cygnus.com>
933
934 * decl.c (start_decl): An explicit specialization of a static data
935 member is only a definition if it has an initializer.
936
937 * except.c (expand_throw): Use cp_finish_decl for the throw temp.
938 * cvt.c (build_up_reference): Pass DIRECT_BIND down into
939 cp_finish_decl.
940 * init.c (expand_default_init): Check for DIRECT_BIND instead of
941 DECL_ARTIFICIAL.
942
943 * call.c (build_over_call): Use build_decl.
944
945 * except.c (expand_throw): Just use convert, not
946 build_reinterpret_cast.
947
948 * lex.c (handle_generic_pragma): Use token_buffer.
949
950 * decl.c (check_tag_decl): Don't complain about null friend decl.
951
952 1998-11-24 Dave Pitts <dpitts@cozx.com>
953
954 * Make-lang.in (DEMANGLER_PROG): Move the output argumnts to the
955 first position.
956 * lex.c (check_newline): Use ISALPHA.
957 (readescape): Use ISGRAPH.
958 (yyerror): Use ISGRAPH.
959
960 1998-11-24 Nathan Sidwell <nathan@acm.org>
961
962 * search.c (get_abstract_virtuals): Do not use initial
963 CLASSTYPE_ABSTRACT_VIRTUALS.
964 * typeck2.c (abstract_virtuals_error): Show location of abstract
965 declaration.
966 * call.c (build_new_method_call): Use
967 CLASSTYPE_ABSTRACT_VIRTUAL, rather than recalculate.
968 * class.c (finish_struct_bits): Don't bother working out whether
969 get_abstract_virtuals will do anything, just do it.
970
971 1998-11-24 Graham <grahams@rcp.co.uk>
972
973 * typeck.c (build_component_ref): Remove unused statement.
974
975 1998-11-24 Jason Merrill <jason@yorick.cygnus.com>
976
977 * class.c (add_method): Catch invalid overloads.
978
979 * class.c (add_method): Build up OVERLOADs properly for conversion ops.
980 * search.c (lookup_conversions): Handle getting real OVERLOADs.
981 (add_conversions): Likewise. Revert last change.
982 * call.c (add_conv_candidate): Pass totype to add_candidate instead
983 of fn. Don't add a new candidate if the last one was for the same
984 type.
985 (print_z_candidates): Handle getting a type as a function.
986 (joust): If we got two conversion candidates to the same type,
987 just pick one.
988 (build_object_call): Lose 'templates'.
989 (build_user_type_conversion_1): Handle getting real OVERLOADs.
990
991 1998-11-23 Jason Merrill <jason@yorick.cygnus.com>
992
993 * typeck2.c (process_init_constructor): If there are elements
994 that don't have initializers and they need to have constructors
995 run, supply them with initializers.
996
997 * class.c (finish_struct_1): A class with a 0-width bitfield is
998 still empty.
999
1000 1998-11-23 Mark Mitchell <mark@markmitchell.com>
1001
1002 * pt.c (instantiate_class_template): Don't try to figure out what
1003 specialization to use for a partial instantiation. Correct
1004 typos in a couple of comments. Avoid calling uses_template_parms
1005 multiple times.
1006
1007 1998-11-23 Benjamin Kosnik <bkoz@cygnus.com>
1008
1009 * method.c (process_overload_item): Add call to
1010 build_mangled_C9x_name for intTI_type_nodes.
1011 (build_mangled_C9x_name): Add prototype, define.
1012 * decl.c (init_decl_processing): Add names for
1013 TImode_type_node.
1014
1015 1998-11-23 Jason Merrill <jason@yorick.cygnus.com>
1016
1017 * parse.y (named_class_head): Update CLASSTYPE_DECLARED_CLASS.
1018
1019 * class.c (finish_struct_1): Set things up for 0-width bitfields
1020 like we do for others.
1021
1022 * decl.c (check_tag_decl): New fn.
1023 (shadow_tag): Split out from here.
1024 * decl2.c (grok_x_components): Call it.
1025
1026 1998-11-22 Jason Merrill <jason@yorick.cygnus.com>
1027
1028 * decl.c: Lose warn_about_return_type.
1029 (grokdeclarator): Always complain about implicit int, except for
1030 `main () { ... }'.
1031
1032 * decl.c (tag_name): New fn.
1033 (xref_tag): Complain about using typedef-name after class-key.
1034
1035 * init.c (expand_vec_init): Also keep going if from_array.
1036
1037 * tree.c (is_overloaded_fn): Also handle the output of
1038 build_offset_ref.
1039
1040 * decl.c (grokdeclarator): Use constructor_name when comparing
1041 field name against enclosing class.
1042 * class.c (finish_struct_anon): Likewise.
1043
1044 1998-11-22 Mark Mitchell <mark@markmitchell.com>
1045
1046 * decl.c (poplevel): Remove code to handle KEEP == 2.
1047 (finish_function): Don't confuse BLOCK-order when
1048 processing a destructor.
1049
1050 1998-11-21 Jason Merrill <jason@yorick.cygnus.com>
1051
1052 * decl.c (require_complete_types_for_parms): Call layout_decl
1053 after we've completed the type.
1054
1055 1998-11-21 Martin von Löwis <loewis@informatik.hu-berlin.de>
1056
1057 * decl2.c (validate_nonmember_using_decl): Allow using templates
1058 from the global namespace.
1059
1060 1998-11-21 Jason Merrill <jason@yorick.cygnus.com>
1061
1062 Handle specifying template args to member function templates.
1063 * tree.c (build_overload): Always create an OVERLOAD for a template.
1064 * search.c (add_conversions): Handle finding an OVERLOAD.
1065 * decl2.c (check_classfn): Likewise.
1066 * lex.c (identifier_type): See through a baselink.
1067 * parse.y (do_id): Don't call do_identifier if we got a baselink.
1068 * class.c (instantiate_type, case TREE_LIST): Recurse.
1069
1070 * decl.c (grokdeclarator): Allow a boolean constant for array
1071 bounds, odd as that sounds.
1072
1073 * pt.c (unify): Be more strict about non-type parms, except for
1074 array bounds.
1075 (UNIFY_ALLOW_INTEGER): New macro.
1076
1077 1998-11-19 Manfred Hollstein <manfred@s-direktnet.de>
1078
1079 * Make-lang.in (mandir): Replace all uses of $(mandir) by $(man1dir).
1080
1081 1998-11-19 Jason Merrill <jason@yorick.cygnus.com>
1082
1083 * semantics.c (begin_class_definition): Call
1084 maybe_process_partial_specialization before push_template_decl.
1085 Don't call push_template_decl for a specialization.
1086 * search.c (lookup_field): Do return a member template class.
1087 * decl2.c (handle_class_head): Handle member template classes.
1088
1089 * decl.c (grokdeclarator): A parm type need not be complete.
1090
1091 * pt.c (convert_nontype_argument): Fix thinko.
1092
1093 1998-11-18 Mark Mitchell <mark@markmitchell.com>
1094
1095 * cp-tree.h (PTRMEM_CST_CLASS): Fix typo.
1096 (global_delete_fndecl): New variable.
1097 * decl.c (global_delete_fndecl): Define it.
1098 (init_decl_processing): Set it.
1099 * init.c (build_builtin_delete_call): Use it.
1100 * tree.c (mapcar): Recursively call mapcar for the type of EXPR
1101 nodes.
1102
1103 1998-11-18 Jason Merrill <jason@yorick.cygnus.com>
1104
1105 * decl.c (cplus_expand_expr_stmt): Always complain about unresolved
1106 type.
1107
1108 * tree.c (lvalue_p_1): An INDIRECT_REF to a function is an lvalue.
1109 * call.c (build_object_call): Also support references to functions.
1110 * typeck.c (convert_for_initialization): Don't decay a function
1111 if the target is a reference to function.
1112
1113 * search.c (add_conversions): Get all the overloads from a class.
1114
1115 * decl.c (grok_ctor_properties): Complain about any constructor
1116 that will take a single arg of the class type by value.
1117
1118 * typeck2.c (build_functional_cast): Can't create objects of
1119 abstract classes this way.
1120 * cvt.c (ocp_convert): Likewise.
1121
1122 * decl.c (grokfndecl): Member functions of local classes are not
1123 public.
1124
1125 1998-11-18 Mark Mitchell <mark@markmitchell.com>
1126
1127 * Make-lang.in (cc1plus): Add dependency on hash.o.
1128
1129 1998-11-18 Jason Merrill <jason@yorick.cygnus.com>
1130
1131 * search.c (get_abstract_virtuals): Complain about virtuals with
1132 no final overrider.
1133 * typeck2.c (abstract_virtuals_error): Remove handling for virtuals
1134 with no final overrider.
1135 * class.c (override_one_vtable): Don't set DECL_ABSTRACT_VIRTUAL_P
1136 on virtuals with no final overrider.
1137
1138 * lex.c (reinit_parse_for_block): Add a space after the initial ':'.
1139
1140 * class.c (finish_struct_1): Don't remove zero-width bit-fields until
1141 after layout_type.
1142
1143 * friend.c (do_friend): Don't set_mangled_name_for_decl.
1144
1145 * class.c (finish_struct_anon): Complain about non-fields.
1146 * decl2.c (build_anon_union_vars): Likewise.
1147
1148 * decl.c (grokdeclarator): Normal data members can't have the same
1149 name as the class, either.
1150 * class.c (finish_struct_anon): Neither can members of an
1151 anonymous union.
1152
1153 1998-11-17 Mark Mitchell <mark@markmitchell.com>
1154
1155 * cp-tree.h (TYPE_ALIAS_SET): Document language-dependent uses.
1156 (TYPE_BINFO): Likewise.
1157 (IS_AGGR_TYPE): Tweak.
1158 (SET_IS_AGGR_TYPE): New macro.
1159 (CLASS_TYPE_P): Tweak.
1160 (lang_type): Group mark bitfields together. Remove linenum.
1161 (CLASSTYPE_SOURCE_LINE): Remove macro.
1162 (CLASSTYPE_MARKED_N): New macro.
1163 (SET_CLASSTYPE_MARKED_N): Likewise.
1164 (CLEAR_CLASSTYPE_MARKED_N): Likewise.
1165 (CLASS_TYPE_MARKED_*): Use them.
1166 (SET_CLASSTYPE_MARKED_*): Likewise.
1167 (CLEAR_CLASSTYPE_MARKED_*): Likewise.
1168 (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Likewise.
1169 (TYPE_TEMPLATE_INFO): Handle TEMPLATE_TEMPLATE_PARMs as well.
1170 (TYPENAME_TYPE_FULLNAME): Use TYPE_BINFO rather than CLASSTYPE_SIZE.
1171 * class.c (class_cache_obstack): New variable.
1172 (class_cache_firstobj): Likewise.
1173 (finish_struct): Don't set CLASSTYPE_SOURCE_LINE.
1174 (pushclass): Free the cache, when appropriate.
1175 (popclass): Tidy.
1176 (maybe_push_cache_obstack): Use class_cache_obstack.
1177 * decl.c (include hash.h).
1178 (typename_hash): New function.
1179 (typename_compare): Likewise.
1180 (build_typename_type): Check the hash table to avoid creating
1181 duplicates.
1182 (build_ptrmemfunc_type): Use SET_IS_AGGR_TYPE.
1183 (grokdeclarator): Use CLASS_TYPE_P.
1184 (xref_basetypes): Likewise.
1185 (start_function): Likewise. Don't put current_class_ref on the
1186 permanent obstack.
1187 * error.c (dump_type_real): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO
1188 and TYPE_TI_ARGS.
1189 * lex.c (note_got_semicolon): Use CLASS_TYPE_P.
1190 (make_lang_type): Don't create TYPE_LANG_SPECIFIC and associated
1191 fields for types other than class types. Do clear TYPE_ALIAS_SET
1192 for types other than class types, though.
1193 * method.c (build_overload_identifier): Use CLASS_TYPE_P and
1194 TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
1195 * pt.c (process_template_parm): Don't set
1196 CLASSTYPE_GOT_SEMICOLON.
1197 (lookup_template_class) Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
1198 Coerce arguments on the momentary obstack.
1199 (for_each_template_parm): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
1200 (instantiate_class_template): Calculate template arguments on the
1201 momentary obstack. Tidy.
1202 (tsubst_template_arg_vector): Use make_temp_vec.
1203 (tsubst_aggr_type): Put template arguments on the momentary
1204 obstack.
1205 (tsubst_decl): Likewise.
1206 (tsubst): Copy the array bounds index to the permanent obstack
1207 before building index types. Use new macros.
1208 (unify): Use new macros.
1209 (do_type_instantiation): Likewise.
1210 * search.c (lookup_fnfields_1): Use new macros.
1211 (dfs_pushdecls): Build envelopes on the cache obstack.
1212 (dfs_compress_decls): Use new macros.
1213 (push_class_decls): Build on the cache obstack.
1214 * semantics.c (finish_typeof): Don't set CLASSTYPE_GOT_SEMICOLON.
1215 * sign.c (build_signature_pointer_or_reference_type): Use
1216 SET_IS_AGGR_TYPE.
1217 * tree.c (make_binfo): Check CLASS_TYPE_P.
1218 (copy_template_template_parm): Adjust.
1219 (make_temp_vec): Use push_expresion_obstack.
1220 * typeck.c (complete_type): Use new macros.
1221 (comptypes): Likewise.
1222
1223 1998-11-17 Jason Merrill <jason@yorick.cygnus.com>
1224
1225 * pt.c (tsubst): Add diagnostics for invalid array, reference
1226 and pointer to member types.
1227
1228 1998-11-16 Jason Merrill <jason@yorick.cygnus.com>
1229
1230 * typeck2.c (my_friendly_abort): Don't fatal twice in a row.
1231
1232 * typeck.c (c_expand_start_case): Use build_expr_type_conversion.
1233 Simplify.
1234
1235 * parse.y (structsp): Fix cut-and-paste error.
1236
1237 * init.c (build_new): Complain about non-integral size.
1238
1239 * parse.y (unary_expr): Complain about defining types in sizeof.
1240
1241 * typeck.c (expr_sizeof): Complain about sizeof an overloaded fn.
1242
1243 * rtti.c (build_x_typeid): Complain about typeid without
1244 including <typeinfo>.
1245 (get_typeid): Likewise. Complain about typeid of incomplete type.
1246 (get_tinfo_fn_dynamic): Likewise.
1247 (get_typeid_1): Not static anymore.
1248 * except.c (build_eh_type_type): Use get_typeid_1.
1249
1250 * rtti.c (build_dynamic_cast_1): Give errors for dynamic_cast to
1251 ambiguous or private bases. Fix warning for reference cast.
1252
1253 1998-11-16 Mark Mitchell <mark@markmitchell.com>
1254
1255 * cp-tree.h (DECL_TEMPLATE_INSTANTIATED): New macro.
1256 * decl.c (duplicate_decls): Remove special-case code to deal with
1257 template friends, and just do the obvious thing.
1258 * pt.c (register_specialization): Tweak for clarity, and also to
1259 clear DECL_INITIAL for an instantiation before it is merged with a
1260 specialization.
1261 (check_explicit_specialization): Fix indentation.
1262 (tsubst_friend_function): Handle both definitions in friend
1263 declaration and outside friend declarations.
1264 (tsubst_decl): Don't clear DECL_INITIAL for an instantiation.
1265 (regenerate_decl_from_template): Tweak accordingly.
1266 (instantiate_decl): Likewise.
1267
1268 1998-11-16 Jason Merrill <jason@yorick.cygnus.com>
1269
1270 * decl.c (cplus_expand_expr_stmt): Promote warning about naked
1271 member function reference to error.
1272 * cvt.c (ocp_convert): Complain about converting an overloaded
1273 function to void.
1274
1275 * init.c (build_offset_ref): Just return a lone static member
1276 function.
1277
1278 * decl.c (cp_finish_decl): Only complain about real CONSTRUCTORs,
1279 not internal ones.
1280
1281 * typeck.c (build_binary_op_nodefault): Improve error handling.
1282
1283 * decl.c (grokfndecl): Complain about making 'main' a template.
1284
1285 * typeck.c (string_conv_p): Don't convert from wchar_t[] to char*.
1286
1287 * call.c (build_method_call): Handle a BIT_NOT_EXPR around a
1288 TYPE_DECL in a template.
1289
1290 1998-11-15 Jason Merrill <jason@yorick.cygnus.com>
1291
1292 * typeck2.c (my_friendly_abort): Add URL in the other case, too.
1293
1294 * decl.c (struct cp_function): Add named_label_uses.
1295 (push_cp_function_context): Save it.
1296 (pop_cp_function_context): Restore it.
1297 (define_label): Also complain about jumping into the scope of
1298 non-POD objects that don't have constructors.
1299 * tree.c (pod_type_p): New fn.
1300
1301 * pt.c (instantiate_class_template): Clear TYPE_BEING_DEFINED sooner.
1302 * rtti.c (synthesize_tinfo_fn): Call import_export_decl here.
1303 (get_tinfo_fn): Not here.
1304 * repo.c (repo_get_id): Abort if we get called for an incomplete
1305 type.
1306
1307 1998-11-13 Mark Mitchell <mark@markmitchell.com>
1308
1309 * except.c (expand_throw): Make sure first argument to
1310 __cp_push_exception is of type `void*' to avoid spurious error
1311 messages.
1312
1313 1998-11-11 Jason Merrill <jason@yorick.cygnus.com>
1314
1315 * pt.c (try_one_overload): Take orig_targs again. Only check for
1316 mismatches against them; we don't care what a previous call found.
1317 (resolve_overloaded_unification): Adjust.
1318
1319 * search.c (lookup_field): Don't return anything for a non-type
1320 field from a dependent type.
1321 * decl.c (grokdeclarator): Resolve SCOPE_REFs of the current class
1322 in an array declarator.
1323 (start_decl): Push into the class before looking for the field.
1324
1325 1998-11-08 Mark Mitchell <mark@markmitchell.com>
1326
1327 * method.c (build_overload_value): Handle REFERENCE_TYPE.
1328
1329 1998-11-08 Martin von Löwis <loewis@informatik.hu-berlin.de>
1330
1331 * decl.c (grokdeclarator): Allow namespace-scoped members if they
1332 are friends.
1333
1334 1998-11-08 Jason Merrill <jason@yorick.cygnus.com>
1335
1336 * pt.c (tsubst_decl): Don't mess with the global value of an
1337 un-mangled DECL_ASSEMBLER_NAME.
1338
1339 1998-11-03 Christopher Faylor <cgf@cygnus.com>
1340
1341 * decl.c (init_decl_processing): Remove CYGWIN conditional
1342 since CYGWIN is now able to deal with trapping signals.
1343
1344 Sat Nov 7 15:48:02 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1345
1346 * cp-tree.h: Don't include gansidecl.h.
1347 * exception.cc: Include gansidecl.h (since we don't include config.h)
1348 * g++spec.c: Don't include gansidecl.h.
1349
1350 1998-11-06 Mark Mitchell <mark@markmitchell.com>
1351
1352 * cp-tree.h (lang_decl_flags): Add defined_in_class. Decrease
1353 size of dummy.
1354 (DECL_DEFINED_IN_CLASS_P): New macro.
1355 (TEMPLATE_PARMS_FOR_INLINE): Document.
1356 (check_static_variable_definition): New function.
1357 * decl.c (cp_finish_decl): Set DECL_DEFINED_IN_CLASS_P, if
1358 appropriate.
1359 (check_static_variable_definition): Split out from ...
1360 (grokdeclarator): Here.
1361 * pt.c (check_default_tmpl_args): New function, split out from ...
1362 (push_template_decl_real): Here.
1363 (instantiate_template): Fix comment.
1364
1365 1998-11-04 Mark Mitchell <mark@markmitchell.com>
1366
1367 * cp-tree.h (CP_TYPE_CONST_P): Make {0,1}-valued.
1368 (CP_TYPE_VOLATILE_P): Likewise.
1369 (CP_TYPE_RESTRICT_P): Likewise.
1370
1371 1998-11-03 Mark Mitchell <mark@markmitchell.com>
1372
1373 * pt.c (tsubst): Use build_index_type, not build_index_2_type.
1374
1375 1998-11-02 Jason Merrill <jason@yorick.cygnus.com>
1376
1377 * class.c (instantiate_type): Be more helpful.
1378
1379 * decl2.c (import_export_decl): Call import_export_class.
1380
1381 * cp-tree.h (EMPTY_CONSTRUCTOR_P): Check !TREE_HAS_CONSTRUCTOR.
1382 * decl2.c (build_expr_from_tree): Propagate TREE_HAS_CONSTRUCTOR.
1383 * pt.c (tsubst_copy): Likewise.
1384
1385 1998-11-02 Mark Mitchell <mark@markmitchell.com>
1386
1387 * init.c (expand_vec_init): Fix off-by-one error.
1388
1389 1998-11-02 Alexandre Oliva <oliva@dcc.unicamp.br>
1390
1391 * parse.y (apparent_template_type): new type
1392 (named_complex_class_head_sans_basetype): use it
1393 * Makefile.in (CONFLICTS): one new conflict
1394 * parse.c: Regenerated
1395
1396 1998-11-01 Mark Mitchell <mark@markmitchell.com>
1397
1398 * cp-tree.h (COMPARE_STRICT): New macro.
1399 (COMPARE_BASE): Likewise.
1400 (COMPARE_RELAXED): Likewise.
1401 (COMPARE_REDECLARATION): Likewise.
1402 (same_type_p): Likewise.
1403 (same_or_base_type_p): Likewise.
1404 * call.c (standard_conversion): Use them, in place of comptypes
1405 with numeric arguments.
1406 (reference_binding): Likewise.
1407 (convert_like): Likewise.
1408 (build_over_call): Likewise.
1409 (is_subseq): Likewise.
1410 (is_properly_derived_from): Likewise.
1411 (compare_ics): Likewise.
1412 (joust): Likewise.
1413 * class.c (delete_duplicate_fields_1): Likewise.
1414 (resolves_to_fixed_type_p): Likewise.
1415 (instantiate_type): Likewise. Remove #if 0'd code.
1416 * decl.c (decls_match): Likewise. Use COMPARE_REDECLARATION here.
1417 (pushdecl): Likewise.
1418 (lookup_name_real): Likewise.
1419 (grokdeclarator): Likewise. Check for illegal array declarations.
1420 (grokparms): Likewise.
1421 (grok_op_properties): Likewise.
1422 * decl2.c (check_classfn): Likewise.
1423 * friend.c (is_friend): Likewise.
1424 (make_friend_class): Likewise.
1425 * init.c (expand_aggr_init): Likewise.
1426 (expand_vec_init): Likewise.
1427 * pt.c (is_member_template_class): Remove declaration.
1428 (is_specialization_of): Use COMPARE_* and new macros.
1429 (comp_template_parms): Likewise.
1430 (convert_nontype_argument): Likewise.
1431 (coerce_template_template_parms): Likewise.
1432 (template_args_equal): Likewise.
1433 (lookup_template_class): Likewise.
1434 (type_unification_real): Likewise.
1435 (unify): Likewise.
1436 (get_bindings_real): Likewise.
1437 * search.c (covariant_return_p): Likewise.
1438 (get_matching_virtual): Likewise.
1439 * sig.c (match_method_types): Likewise.
1440 * tree.c (vec_binfo_member): Likewise.
1441 (cp_tree_equal): Likewise.
1442 * typeck.c (common_type): Likewise.
1443 (comp_array_types): Likewise. Get issues involving unknown array
1444 bounds right.
1445 (comptypes): Update comments. Use new flags.
1446 (comp_target_types): Use new macros.
1447 (compparms): Likewise.
1448 (comp_target_parms): Likewise.
1449 (string_conv_p): Likewise.
1450 (build_component_ref): Likewise.
1451 (build_indirect_ref): Likewise.
1452 (build_conditional_expr): Likewise.
1453 (build_static_cast): Likewise.
1454 (build_reinterpret_cast): Likewise.
1455 (build_const_cast): Likewise.
1456 (build_modify_expr): Likewise.
1457 (convert_for_assignment): Likewise.
1458 (comp_ptr_ttypes_real): Likewise.
1459 (ptr_reasonably_similar): Likewise.
1460 (comp_ptr_ttypes_const): Likewise.
1461
1462 1998-10-31 Jason Merrill <jason@yorick.cygnus.com>
1463
1464 * rtti.c (build_dynamic_cast_1): Fix cut-and-paste error.
1465
1466 1998-10-30 Mark Mitchell <mark@markmitchell.com>
1467
1468 * decl2.c (delete_sanity): Pass integer_zero_node, not
1469 integer_two_node, to build_vec_delete.
1470 * init.c (build_array_eh_cleanup): Remove.
1471 (expand_vec_init_try_block): New function.
1472 (expand_vec_init_catch_clause): Likewise.
1473 (build_vec_delete_1): Don't deal with case that auto_delete_vec
1474 might be integer_two_node anymore.
1475 (expand_vec_init): Rework for initialization-correctness and
1476 exception-correctness.
1477 * typeck2.c (process_init_constructor): Make mutual exclusivity
1478 of cases more obvious.
1479
1480 1998-10-29 Jason Merrill <jason@yorick.cygnus.com>
1481
1482 * decl.c (lookup_name_real): OK, only warn if not lexing.
1483 Simplify suggested fix.
1484
1485 * cp-tree.h (IDENTIFIER_MARKED): New macro.
1486 * search.c (lookup_conversions): Use breadth_first_search.
1487 (add_conversions): Avoid adding two conversions to the same type.
1488 (breadth_first_search): Work with base binfos, rather
1489 than binfos and base indices.
1490 (get_virtual_destructor): Adjust.
1491 (tree_has_any_destructor_p): Adjust.
1492 (get_matching_virtual): Adjust.
1493
1494 * pt.c (push_template_decl_real): Generalize check for incorrect
1495 number of template parms.
1496 (is_member_template_class): #if 0.
1497
1498 1998-10-29 Richard Henderson <rth@cygnus.com>
1499
1500 * Makefile.in (cc1plus): Put CXX_OBJS, and thence @extra_cxx_objs@,
1501 last.
1502
1503 1998-10-28 Zack Weinberg <zack@rabi.phys.columbia.edu>
1504
1505 * lex.c: Call check_newline from lang_init always. After
1506 calling cpp_start_read, set yy_cur and yy_lim to read from the
1507 cpplib token buffer.
1508
1509 1998-10-28 Jason Merrill <jason@yorick.cygnus.com>
1510
1511 * class.c (instantiate_type): Don't consider templates for a normal
1512 match.
1513
1514 * class.c (finish_struct_1): Don't complain about non-copy
1515 assignment ops in union members.
1516
1517 * class.c (build_vtable): Don't pass at_eof to import_export_vtable.
1518 (prepare_fresh_vtable): Likewise.
1519 (finish_struct_1): Don't call import_export_class.
1520 * decl2.c (finish_vtable_vardecl): Do import/export stuff.
1521 (finish_prevtable_vardecl): Lose.
1522 (finish_file): Don't call it.
1523 * pt.c (instantiate_class_template): Likewise.
1524 * cp-tree.h: Remove it.
1525
1526 * init.c (build_delete): Reset TYPE_HAS_DESTRUCTOR here.
1527 * decl.c (finish_function): Not here.
1528 (start_function): Do set DECL_INITIAL.
1529
1530 * pt.c (push_template_decl_real): Complain about default template
1531 args for enclosing classes.
1532
1533 * call.c (add_function_candidate): Treat conversion functions
1534 as coming from the argument's class.
1535 * cp-tree.h (DECL_CONV_FN_P): New fn.
1536 (DECL_DESTRUCTOR_P): Also check DECL_LANGUAGE.
1537 * class.c (add_method): Use DECL_CONV_FN_P.
1538 * decl2.c (check_classfn): Likewise.
1539 * error.c (dump_function_name): Likewise.
1540 (dump_function_decl): Likewise.
1541 * pt.c (fn_type_unification): Likewise.
1542 * search.c (add_conversions): Likewise.
1543
1544 1998-10-27 Jason Merrill <jason@yorick.cygnus.com>
1545
1546 * lex.c (do_identifier): Also generate LOOKUP_EXPR for RESULT_DECL.
1547 * method.c (hack_identifier): Also check for using RESULT_DECL
1548 from outer context.
1549
1550 1998-10-27 Mark Mitchell <mark@markmitchell.com>
1551
1552 * decl.c (grokdeclarator): Use type_quals, rather than constp,
1553 consistently.
1554
1555 1998-10-27 Jason Merrill <jason@yorick.cygnus.com>
1556
1557 * call.c (standard_conversion): instantiate_type here.
1558 (reference_binding): And here.
1559 (implicit_conversion): Not here.
1560 (build_op_delete_call): No need to cons up an OVERLOAD.
1561 * cvt.c (cp_convert_to_pointer): instantiate_type here.
1562 (convert_to_reference): And here.
1563 * decl.c (grok_reference_init): Not here.
1564 (grokparms): Or here.
1565 * typeck2.c (digest_init): Or here.
1566 * typeck.c (decay_conversion): Take the address of overloaded
1567 functions, too.
1568 (require_instantiated_type): Lose.
1569 (convert_arguments): Don't handle unknown types here.
1570 (build_c_cast): Likewise.
1571 (build_binary_op): Gut.
1572 (build_conditional_expr): Don't require_instantiated_type.
1573 (build_modify_expr): Likewise.
1574 (build_static_cast): Don't instantiate_type.
1575 (build_reinterpret_cast): Likewise.
1576 (build_const_cast): Likewise.
1577 (convert_for_initialization): Likewise.
1578 (build_ptrmemfunc): Use type_unknown_p.
1579 (convert_for_assignment): Also do default_conversion on overloaded
1580 functions. Hand them off to ocp_convert.
1581
1582 1998-10-26 Mark Mitchell <mark@markmitchell.com>
1583
1584 * error.c (dump_decl): Deal with TEMPLATE_DECLs that are
1585 VAR_DECLs. Handle vtables whose DECL_CONTEXT is not a type.
1586
1587 * class.c (finish_struct_1): Use build_cplus_array_type to build
1588 array types.
1589 * decl.c (init_decl_processing): Likewise.
1590 * except.c (expand_end_eh_spec): Likewise.
1591 * search.c (expand_upcast_fixups): Simplify very slightly.
1592
1593 1998-10-26 Jason Merrill <jason@yorick.cygnus.com>
1594
1595 * decl.c (grokdeclarator): Complain about a variable using
1596 constructor syntax coming back null from start_decl.
1597
1598 * friend.c (make_friend_class): Complain about trying to make
1599 a non-class type a friend.
1600
1601 * decl.c (grokfndecl): Set DECL_INITIAL for a defn here.
1602 (start_function): Not here.
1603
1604 1998-10-26 Brendan Kehoe <brendan@cygnus.com>
1605
1606 * decl.c (grokdeclarator): Disallow `explicit' in a friend declaration.
1607
1608 1998-10-26 Jason Merrill <jason@yorick.cygnus.com>
1609
1610 * typeck2.c (process_init_constructor): Only skip anonymous fields
1611 if they are bitfields.
1612
1613 * cp-tree.def (TYPEOF_TYPE): New code.
1614 * error.c (dump_type_real): Handle it.
1615 * pt.c (tsubst): Likewise.
1616 * tree.c (search_tree): Likewise.
1617 * semantics.c (finish_typeof): New fn.
1618 * parse.y (typespec): Use it.
1619 * cp-tree.h: Declare it.
1620
1621 1998-10-26 Manfred Hollstein <manfred@s-direktnet.de>
1622
1623 * cp-tree.h (FORMAT_VBASE_NAME): Make definition unconditional.
1624
1625 1998-10-26 Jason Merrill <jason@yorick.cygnus.com>
1626
1627 * typeck.c (convert_arguments): Don't handle pmf references
1628 specially.
1629
1630 * init.c (build_member_call): Don't try to convert to the base type
1631 if it's ambiguous or pedantic.
1632
1633 * typeck2.c (check_for_new_type): Only depend on pedantic for
1634 C-style casts.
1635
1636 1998-10-25 Mark Mitchell <mark@markmitchell.com>
1637
1638 * decl.c (grokdeclarator): Set DECL_NONCONVERTING_P for all
1639 non-converting constructors.
1640
1641 1998-10-24 Martin von Löwis <loewis@informatik.hu-berlin.de>
1642
1643 * gxxint.texi: Correct documentation for n, N, Q, and B.
1644
1645 1998-10-23 Martin von Löwis <loewis@informatik.hu-berlin.de>
1646
1647 * parse.y (condition): Convert VAR_DECL from reference to indirect
1648 reference.
1649
1650 1998-10-23 Andrew MacLeod <amacleod@cygnus.com>
1651
1652 * exception.cc (__cp_pop_exception): Free the original exception
1653 value, not the potentially coerced one.
1654
1655 1998-10-23 Mark Mitchell <mark@markmitchell.com>
1656
1657 * Makefile.in (hash.h): Run gperf when necessary.
1658
1659 * cp-tree.h (CP_TYPE_READONLY): Remove.
1660 (CP_TYPE_VOLATILE): Likewise.
1661 (CP_TYPE_QUALS): New macro.
1662 (CP_TYPE_CONST_P): Likewise.
1663 (CP_TYPE_VOLATILE_P): Likewise.
1664 (CP_TYPE_RESTRICT_P): Likewise.
1665 (CP_TYPE_CONST_NON_VOLATILE_P): Likewise.
1666 (cp_build_type_variant): Rename to ...
1667 (cp_build_qualified_type): New function.
1668 (c_apply_type_quals_to_decl): Declare.
1669 (SIGNATURE_POINTER_NAME_FORMAT): Modify to allow `restrict'.
1670 (SIGNATURE_REFERENCE_NAME_FORMAT): Likewise.
1671 (cp_type_qual_from_rid): New function.
1672 (compparms): Remove unused parameter. All callers changed.
1673 (cp_type_quals): New function.
1674 (at_least_as_qualified_p): Likewise.
1675 (more_qualified_p): Likewise.
1676
1677 * call.c (standard_conversion): Replace calls to
1678 cp_build_type_variant with cp_build_qualified_type. Use
1679 CP_TYPE_QUALS to get qualifiers and at_least_as_qualified_p to
1680 compare them. Use CP_TYPE_* macros to check qualifiers.
1681 (reference_binding): Likewise.
1682 (implicit_conversion): Likewise.
1683 (add_builtin_candidates): Likewise.
1684 (build_over_call): Likewise.
1685 * class.c (overrides): Compare all qualifiers, not just `const',
1686 on method declarations.
1687 * cvt.c (convert_to_reference): More CP_TYPE_QUALS conversion, etc.
1688 (convert_pointer_to_real): Likewise.
1689 (type_promotes_to): Likewise.
1690 * decl.c (check_for_uninitialized_const_var): New function.
1691 (init_decl_processing): More CP_TYPE_QUALS conversion, etc.
1692 (cp_finish_decl): Use check_for_uninitialized_const_var.
1693 (grokdeclarator): More CP_TYPE_QUALS conversion, etc. Update to
1694 handle `restrict'.
1695 (grok_ctor_properties): Likewise.
1696 (grok_op_properties): Likewise.
1697 (start_function): Likewise.
1698 (rever_static_member_fn): Likewise.
1699 * decl2.c (grok_method_quals): Likewise.
1700 (grokfield): Likewise.
1701 * error.c (dump_readonly_or_volatile): Rename to ...
1702 (dump_qualifiers): New function. Handle `restrict'.
1703 (dump_type_real): Use it.
1704 (dump_aggr_type): Likewise.
1705 (dump_type_prefix): Likewise.
1706 (dump_type_suffix): Likewise.
1707 (dump_function_decl): Likewise.
1708 (cv_as_string): Likewise.
1709 * gxx.gperf: Add __restrict and __restrict__.
1710 * gxxint.texi: Document `u' as used for `__restrict', and a few
1711 other previously undocumented codes.
1712 * hash.h: Regenerated.
1713 * init.c (expand_aggr_init): More CP_TYPE_QUALS conversion, etc.
1714 (build_member_call): Likewise.
1715 (build_new_1): Likewise.
1716 * lex.c (init_parse): Add entry for RID_RESTRICT.
1717 (cons_up_default_function): More CP_TYPE_QUALS conversion, etc.
1718 (cp_type_qual_from_rid): Define.
1719 * lex.h (enum rid): Add RID_RESTRICT.
1720 * method.c (process_modifiers): Deal with `restrict'.
1721 * parse.y (primary): More CP_TYPE_QUALS conversion, etc.
1722 * parse.c: Regenerated.
1723 * pt.c (convert_nontype_argument): More CP_TYPE_QUALS conversion, etc.
1724 (tsubst_aggr_type): Likewise.
1725 (tsubst): Likewise.
1726 (check_cv_quals_for_unify): Likewise.
1727 (unify): Likewise.
1728 * rtti.c (init_rtti_processing): Likewise.
1729 (build_headof): Likewise.
1730 (get_tinfo_var): Likewise.
1731 (buidl_dynamic_cast_1): Likewise. Fix `volatile' handling.
1732 (expand_class_desc): Likewise.
1733 (expand_attr_desc): Likewise.
1734 (synthesize_tinfo_fn): Likewise.
1735 * search.c (covariant_return_p): Likewise. Fix `volatile' handling.
1736 (get_matching_virtual): Likewise.
1737 (expand_upcast_fixups): Likewise.
1738 * sig.c (build_signature_pointer_or_reference_name): Take
1739 type_quals, not constp and volatilep.
1740 (build_signature_pointer_or_reference_type): Likewise.
1741 (match_method_types): More CP_TYPE_QUALS conversion, etc.
1742 (build_signature_pointer_constructor): Likewise.
1743 (build_signature_method_call): Likewise.
1744 * tree.c (build_cplus_array_type): Likewise.
1745 (cp_build_type_variant): Rename to ...
1746 (cp_build_qualified_type): New function. Deal with `__restrict'.
1747 (canonical_type_variant): More CP_TYPE_QUALS conversion, etc.
1748 (build_exception_variant): Likewise.
1749 (mapcar): Likewise.
1750 * typeck.c (qualif_type): Likewise.
1751 (common_type): Likewise.
1752 (comptypes): Likewise.
1753 (comp_cv_target_types): Likewise.
1754 (at_least_as_qualified_p): Define.
1755 (more_qualified_p): Likewise.
1756 (comp_cv_qualification): More CP_TYPE_QUALS conversion, etc.
1757 (compparms): Likewise.
1758 (inline_conversion): Likewise.
1759 (string_conv_p): Likewise.
1760 (build_component_ref): Likewise.
1761 (build_indirect_ref): Likewise.
1762 (build_array_ref): Likewise.
1763 (build_unary_op): Likewise.
1764 (build_conditional_expr): Likewise.
1765 (build_static_cast): Likewise.
1766 (build_c_cast): Likewise.
1767 (build_modify_expr): Likewise.
1768 (convert_For_assignment): Likewise.
1769 (comp_ptr_ttypes_real): Likewise.
1770 (cp_type_quals): New function.
1771
1772 1998-10-23 Jason Merrill <jason@yorick.cygnus.com>
1773
1774 * cp-tree.h (CP_TYPE_READONLY): New macro to handle arrays.
1775 (CP_TYPE_VOLATILE): Likewise.
1776 * decl.c (grokdeclarator): Use them.
1777 * tree.c (canonical_type_variant): Likewise.
1778
1779 1998-10-22 Martin von Löwis <loewis@informatik.hu-berlin.de>
1780
1781 * parse.y (named_class_head): Push into class while parsing the
1782 base class list.
1783 * decl2.c (push_scope, pop_scope): New functions.
1784 * cp-tree.h: Declare them.
1785 * init.c (build_new_1): Delay cleanup until end of full expression.
1786
1787 1998-10-21 Jason Merrill <jason@yorick.cygnus.com>
1788
1789 * typeck.c (build_component_ref): Use of a type here is an error.
1790
1791 1998-10-19 Jason Merrill <jason@yorick.cygnus.com>
1792
1793 Revamp references to member functions.
1794 * method.c (hack_identifier): Call build_component_ref for a
1795 reference to a member function.
1796 * typeck.c (build_component_ref): Only return a single function
1797 if it's static. Otherwise, return a COMPONENT_REF.
1798 (build_x_function_call): Handle a COMPONENT_REF.
1799 (build_unary_op): Handle all unknown-type things.
1800 * decl2.c (arg_assoc): Handle COMPONENT_REF.
1801 * class.c (instantiate_type): Complain if the function we get is a
1802 nonstatic member function. Remove code for finding "compatible"
1803 functions.
1804 * pt.c (tsubst_copy): Handle NOP_EXPR.
1805 * tree.c (build_dummy_object): New fn.
1806 (maybe_dummy_object): New fn.
1807 (is_dummy_object): New fn.
1808 * cp-tree.h: Declare them.
1809 * cvt.c (cp_convert_to_pointer): Use maybe_dummy_object.
1810 * error.c (dump_expr, case OFFSET_REF): Use is_dummy_object.
1811 * init.c (build_member_call): Use maybe_dummy_object and
1812 is_dummy_object.
1813 (build_offset_ref): Use maybe_dummy_object.
1814 (resolve_offset_ref): Use is_dummy_object.
1815 * typeck.c (build_x_function_call): Call build_dummy_object.
1816 (unary_complex_lvalue): Call is_dummy_object.
1817
1818 * typeck.c (build_component_addr): Make sure field is a field.
1819
1820 * call.c (build_new_op): Delete obsolete code.
1821
1822 * pt.c (tsubst, TEMPLATE*PARM*): Abort if we don't have any args.
1823
1824 1998-10-18 Martin von Löwis <loewis@informatik.hu-berlin.de>
1825
1826 * decl2.c (validate_nonmember_using_decl): Fix using-directives of
1827 std if std is ignored.
1828
1829 1998-10-18 Jason Merrill <jason@yorick.cygnus.com>
1830
1831 * decl.c (grokvardecl): Fix thinko.
1832
1833 * decl.c (grokdeclarator): Embedded attrs bind to the right,
1834 not the left.
1835
1836 * parse.y (fn.def2): Fix 'attrs' format.
1837
1838 1998-10-18 Alastair J. Houghton <ajh8@doc.ic.ac.uk>
1839
1840 * Makefile.in (CONFLICTS): Update.
1841 * parse.y (expr_or_declarator_intern): New rule.
1842 (expr_or_declarator, direct_notype_declarator, primary,
1843 functional_cast): Use it.
1844 (notype_declarator_intern): New rule.
1845 (notype_declarator, complex_notype_declarator): Use it.
1846
1847 1998-10-17 Jason Merrill <jason@yorick.cygnus.com>
1848
1849 * decl.c (grokfndecl): Set DECL_CONTEXT to namespace if appropriate.
1850 (grokvardecl): Likewise.
1851
1852 Sat Oct 17 23:27:20 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
1853
1854 * class.c (make_method_vec): Cast 1st argument of `bzero' to (PTR).
1855 (add_method): Likewise for arguments 1 & 2 of `bcopy'.
1856
1857 * decl.c (signal_catch): Mark with ATTRIBUTE_NORETURN.
1858
1859 * pt.c (process_partial_specialization): Cast 1st argument of
1860 `bzero' to (PTR).
1861
1862 * tree.c (build_base_fields): Cast `base_align' to (int) when
1863 comparing against one.
1864
1865 1998-10-16 Mark Mitchell <mark@markmitchell.com>
1866
1867 * decl.c (lookup_name_real): Handle template parameters for member
1868 templates where said parameters have the same name as the
1869 surrounding class.
1870
1871 * decl.c (expand_static_init): Build cleanups before entering the
1872 anonymous function used to do them to avoid access-checking
1873 confusion.
1874
1875 * decl.c (grokfndecl): Add back call to cplus_decl_attributes
1876 accidentally removed by previous change, and make DECL_RTL here.
1877 * class.c (add_method): Don't make DECL_RTL here.
1878
1879 * pt.c (for_each_template_parm): Don't examine uninstantiated
1880 default arguments.
1881
1882 1998-10-16 Dave Brolley <brolley@cygnus.com>
1883
1884 * lex.c (real_yylex): Fix unaligned access of wchar_t.
1885
1886 1998-10-16 Mark Mitchell <mark@markmitchell.com>
1887
1888 * class.c (add_method): Fix documentation to reflect previous
1889 changes. Check for duplicate method declarations here.
1890 * decl.c (decls_match): Handle FUNCTION_DECL vs TEMPLATE_DECL
1891 correctly; such things never match.
1892 (grokfndecl): Don't look for duplicate methods here.
1893 * decl2.c (check_classfn): Don't assume names are mangled.
1894 Don't add bogus member function declarations to a class before the
1895 class type is complete.
1896 (grokfield): Reformat error message.
1897 * method.c (set_mangled_name_for_decl): Don't mangle names while
1898 procesing_template_decl.
1899
1900 1998-10-16 Jason Merrill <jason@yorick.cygnus.com>
1901
1902 * typeck.c (build_indirect_ref): Complain about a pointer to data
1903 member, too.
1904 * typeck2.c (build_m_component_ref): Don't indirect a pointer to
1905 data member.
1906 * init.c (resolve_offset_ref): Don't undo the above.
1907
1908 * cp-tree.h (DECL_C_BIT_FIELD, SET_DECL_C_BIT_FIELD): New macros.
1909 (struct lang_decl_flags): Add `bitfield'.
1910 * class.c (finish_struct_1): Use DECL_C_BIT_FIELD instead of
1911 DECL_BIT_FIELD.
1912 * decl2.c (grokbitfield, grok_alignof): Likewise.
1913 * init.c (build_offset_ref): Likewise.
1914 * typeck.c (build_component_addr, expr_sizeof): Likewise.
1915 * cvt.c (build_up_reference): Don't crash if taking the address
1916 returns error_mark_node.
1917
1918 * decl.c (grokfndecl): Also check ctype when checking for ::main().
1919
1920 1998-10-15 Jason Merrill <jason@yorick.cygnus.com>
1921
1922 * decl.c (grokfndecl): ::main and __builtin_* get C linkage.
1923 Do mangling here.
1924 (grokdeclarator): Instead of here.
1925 * friend.c (do_friend): Lose special handling of ::main and
1926 __builtin_*.
1927 * cp-tree.h (DECL_MAIN_P): Check for C linkage.
1928
1929 * spew.c (yylex): Clear looking_for_typename if we got
1930 'enum { ... };'.
1931
1932 1998-10-15 Mark Mitchell <mark@markmitchell.com>
1933
1934 * class.c (maybe_warn_about_overly_private_class): Improve error
1935 messages for class with only private constructors.
1936
1937 * cp-tree.def (TYPENAME_TYPE): Add to documentation.
1938 * cp-tree.h (TYPENAME_TYPE_FULLNAME): Document.
1939 (build_typename_type): New function.
1940 * decl.c (build_typename_type): Broken out from ...
1941 (make_typename_type): Use it.
1942 * search.c (lookup_field): Likewise.
1943
1944 1998-10-14 Benjamin Kosnik <bkoz@rhino.cygnus.com>
1945
1946 * pt.c (convert_nontype_argument): Check against type_referred_to.
1947 * decl.c (grokvardecl): Check for declarator name before building
1948 DECL_ASSEMBLER_NAME.
1949
1950 1998-10-14 Mark Mitchell <mark@markmitchell.com>
1951
1952 * pt.c (lookup_template_class): Add comment.
1953 (instantiate_class_template): Don't mark the _TYPE node for
1954 member class templates as an instantiation.
1955
1956 1998-10-14 Jason Merrill <jason@yorick.cygnus.com>
1957
1958 * decl.c (grokfndecl): Fix my thinko.
1959
1960 1998-10-13 Jason Merrill <jason@yorick.cygnus.com>
1961
1962 * tinfo2.cc (fast_compare): Remove.
1963 (before): Just use strcmp.
1964 * tinfo.cc (operator==): Just use strcmp.
1965
1966 1998-10-13 Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>
1967
1968 * decl.c (grokfndecl): Don't check for linkage in `extern "C"'
1969 declarations.
1970
1971 1998-10-13 Mark Mitchell <mark@markmitchell.com>
1972
1973 * cp-tree.h (specializations_of_same_template_p): Remove.
1974 * search.c (get_template_base): Don't use it.
1975 (get_template_base_recursive): Likewise.
1976 * pt.c (specializations_of_same_template_p): Remove.
1977 (unify): Don't use it.
1978 (lookup_template_class): Find the correct parent when setting
1979 CLASSTYPE_TI_TEMPLATE.
1980
1981 1998-10-12 Jason Merrill <jason@yorick.cygnus.com>
1982
1983 * tinfo.cc (operator==): Always compare names.
1984
1985 1998-10-12 Herman ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
1986
1987 * decl.c (start_function): Fix cut-and-paste error.
1988
1989 1998-10-12 Jason Merrill <jason@yorick.cygnus.com>
1990
1991 * inc/typeinfo: Add #pragma interface.
1992 (operator!=): Just call operator==.
1993 * tinfo.cc: Add #pragma implementation.
1994 (operator==): Move from inc/typeinfo and tinfo2.cc.
1995 Check __COMMON_UNRELIABLE instead of _WIN32.
1996
1997 * typeck2.c (my_friendly_abort): Add URL.
1998
1999 1998-10-12 Alastair J. Houghton <ajh8@doc.ic.ac.uk>
2000
2001 * decl.c (start_method): Added extra parameter for attributes.
2002 * cp-tree.h (start_method): Update prototype.
2003 * parse.y (fn.def2): Update start_method parameter list.
2004
2005 1998-10-11 Mark Mitchell <mark@markmitchell.com>
2006
2007 * cp-tree.h (specializations_of_same_template_p): Declare.
2008 * pt.c (specializations_of_same_template_p): New function.
2009 (unify): Use it.
2010 * search.c (get_template_base): Use it.
2011 (get_template_base_recursive): Likewise.
2012
2013 1998-10-10 Manfred Hollstein <manfred@s-direktnet.de>
2014
2015 * decl2.c (start_objects): Add new variable `joiner' and
2016 initialize it properly.
2017
2018 1998-10-09 Mark Mitchell <mark@markmitchell.com>
2019
2020 * search.c (expand_upcast_fixups): Tweak to match 1998-10-07
2021 change to vtable types.
2022
2023 * cvt.c (ocp_convert): Avoid infinite recursion caused by
2024 1998-10-03 change.
2025
2026 1998-10-08 Jason Merrill <jason@yorick.cygnus.com>
2027
2028 * pt.c (resolve_overloaded_unification): New fn.
2029 (try_one_overload): Likewise.
2030 (unify): Don't fail on unknown type.
2031 (type_unification_real): Likewise. Use resolve_overloaded_unification
2032 to handle an overloaded argument.
2033 (template_args_equal): Split out...
2034 (comp_template_args): From here.
2035 (determine_specialization): Also allow a template with more
2036 parms than were explicitly specified.
2037 * cp-tree.h: Add template_args_equal.
2038 * call.c (resolve_args): Remove TEMPLATE_ID_EXPR code.
2039
2040 Thu Oct 8 15:58:30 1998 Anthony Green <green@cygnus.com>
2041
2042 * semantics.c (finish_asm_stmt): Revert my 1998-09-28
2043 change.
2044
2045 Thu Oct 8 06:00:19 1998 Jeffrey A Law (law@cygnus.com)
2046
2047 * typeck.c (unsigned_type): Only return TItype nodes when
2048 HOST_BITS_PER_WIDE_INT is >= 64 bits.
2049 (signed_type): Similarly.
2050 * decl.c (intTI_type_node, unsigned_intTI_type_node): Only declare
2051 when HOST_BITS_PER_WIDE_INT is >= 64 bits.
2052 (init_decl_processing): Only create TItype nodes when
2053 HOST_BITS_PER_WIDE_INT is >= 64 bits.
2054 * cp-tree.h (intTI_type_node, unsigned_intTI_type_node): Only declare
2055 when HOST_BITS_PER_WIDE_INT is >= 64 bits.
2056
2057 Wed Oct 7 12:32:44 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2058
2059 * Makefile.in (hash.h): Add -L KR-C -F ', 0, 0' flags to gperf.
2060 (gxx.gperf): Update comments describing invocation flags.
2061 (hash.h): Regenerate using gperf 2.7.1 (19981006 egcs).
2062
2063 1998-10-07 Mark Mitchell <mark@markmitchell.com>
2064
2065 * class.c (finish_struct_1): Add commentary on prevous change.
2066
2067 * cp-tree.h (vtbl_ptr_type_node): New variable.
2068 * class.c (build_vtbl_ref): Don't indirect through the vptr; it's
2069 already of the right type.
2070 (finish_struct_1): Make the vptr be of type vtbl_ptr_type_node.
2071 Simplify code to grow vtable.
2072 * decl.c (vtbl_ptr_type_node): Define.
2073 (init_decl_processing): Initialize it.
2074
2075 1998-10-06 Mark Mitchell <mark@markmitchell.com>
2076
2077 * cp-tree.def (PTRMEM_CST): New tree node.
2078 * cp-tree.h (ptrmem_cst): New type.
2079 (lang_type): Remove local_typedecls.
2080 (dummy): Increase to 12 bits from 11.
2081 (CLASSTYPE_LOCAL_TYPEDECLS): Remove.
2082 (PTRMEM_CST_CLASS): New macro.
2083 (PTRMEM_CST_MEMBER): Likewise.
2084 (current_access_specifier): New variable.
2085 (current_class_type): Remove duplicate declaration.
2086 (finish_struct): Change prototype.
2087 (unreverse_member_declarations): New function.
2088 (pushdecl_class_level): Change prototype.
2089 (grok_enum_decls): Remove.
2090 (fixup_anonymous_union): New function.
2091 (grok_x_components): Change prototype.
2092 (tsubst_chain): Remove.
2093 (finish_member_template_decl): Likewise.
2094 (check_explicit_specialization): Fix indentation.
2095 (finish_class_definition): Change prototype.
2096 (finish_member_class_template): Likewise.
2097 (finish_member_declaration): New function.
2098 (check_multiple_declarators): Likewise.
2099 * class.c (class_stack_node_t): New type.
2100 (current_class_base): Remove.
2101 (current_class_stack): Change type.
2102 (current_access_specifier): New variable.
2103 (grow_method): Remove.
2104 (check_member_decl_is_same_in_complete_scope): Break out from
2105 finish_struct.
2106 (make_method_vec): New function.
2107 (free_method_vec): Likewise.
2108 (add_implicitly_declared_members): Break out from finish_struct_1.
2109 (free_method_vecs): New variable.
2110 (add_method): Rework for direct use from parser.
2111 (handle_using_decl): Watch for NULL_TREE while iterating through
2112 CLASSTYPE_METHOD_VEC.
2113 (finish_struct_methods): Don't build CLASSTYPE_METHOD_VEC here;
2114 just do some error-checking.
2115 (warn_hidden): Change iteration through CLASSTYPE_METHOD_VEC.
2116 (finish_struct_1): Simplify. Use add_implicitly_declared_members.
2117 (finish_struct): Change prototype. Simplify; fields and methods
2118 are already set up at this point.
2119 (init_class_processing): Set up current_class_stack.
2120 (pushclass): Save current_access_specifier.
2121 (popclass): Restore it.
2122 (currently_open_class): Simplify.
2123 (build_self_reference): Remove use of CLASSTYPE_LOCAL_TYPEDECLS.
2124 * decl.c (saved_scope): Add access_specifier.
2125 (maybe_push_to_top_level): Save it.
2126 (pop_from_top_level): Restore it.
2127 (maybe_process_template_type_declaration): Use
2128 finish_member_declaration.
2129 (pushtag): Likewise.
2130 (pushdecl_class_level): Don't return a value.
2131 (fixup_anonymous_union): Break out from grok_x_components.
2132 (shadow_tag): Use it.
2133 (xref_tag): Complain about using an elaborated type specifier to
2134 reference a template type parameter or typedef name.
2135 (xref_basetypes): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
2136 (current_local_enum): Remove.
2137 (build_enumerator): Call finish_member_declaration.
2138 (grok_enum_decls): Remove.
2139 * decl2.c (grok_x_components): Simplify.
2140 (check_classfn): Change iteration through CLASSTYPE_METHOD_VEC.
2141 (grokfield): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
2142 (merge_functions): Add to comment.
2143 (arg_assoc_type): Prototype.
2144 (arg_assoc): Pass as many arguments as there are parameters.
2145 * error.c (dump_expr): Handle PTRMEM_CST. Improve handling of
2146 OFFSET_REF.
2147 * expr.c (cpls_expand_expr): Remove dead code. Handle
2148 PTRMEM_CST.
2149 * friend.c (do_friend): Lookup friends when in nested classes.
2150 Change comments.
2151 * init.c (build_offset_ref): Do lookup even for classes that are
2152 only partially defined.
2153 (decl_constant_value): Remove dead code.
2154 * method.c (build_overload_value): Remove hack where by TYPE was
2155 not a TYPE. Handle PTRMEM_CST.
2156 (build_template_parm_names): Don't pass a PARM_DECL where a TYPE
2157 should go.
2158 * parse.y (components, notype_components, component_decl,
2159 component_decl_1, component_declarator, component_declarator0):
2160 Now all are itype rather than ttype. Rework to add members to
2161 classes on the fly.
2162 (typesqpecqual_reserved): Use check_multiple_declarators.
2163 (structsp): Update class to finish_class_definition.
2164 (do_xref_defn): Unsplit into named_class_head.
2165 (access_specifier): Set current_access_specifier.
2166 * pt.c (set_current_access_from_decl): New function.
2167 (finish_member_template_decl): Don't take the parameters.
2168 (comp_template_args): Make more robust.
2169 (lookup_template_class): Don't use current_local_enum.
2170 (for_each_template_parm): Handle PTRMEM_CST.
2171 (instantiate_class_template): Use set_current_access_from_decl,
2172 finish_member_declaration and unreverse_member_declarations. Set
2173 lineno/input_filename before generating implicit member functions.
2174 (type_unification_real): Don't assume back-unification happens
2175 only for the last argument.
2176 (regenerate_decl_from_template): Call pushclass a bit earlier.
2177 (tsubst_chain): Remove.
2178 (tsubst_enum): Use set_current_access_from_decl.
2179 (set_mangled_name_for_template_decl): Fix indentation.
2180 * search.c (lookup_fnfields_1): Change iteration through
2181 CLASSTYPE_METHOD_VEC.
2182 (dfs_pushdecls): Likewise.
2183 (dfs_compress_decls): Likewise.
2184 (add_conversions): Likewise.
2185 * semantics.c (finish_class_definition): Don't take components.
2186 Change call to finish_struct.
2187 (finish_member_declaration): New function.
2188 (finish_member_class_template): Don't take template parameters.
2189 Change call to grok_x_components. Call finish_member_template_decl.
2190 (check_multiple_declarators): New function.
2191 * sig.c (append_signature_fields): Work from the TYPE_METHODS, not
2192 a passed in fieldlist.
2193 * tree.c (search_tree): Handle PTRMEM_CST.
2194 (mapcar): Likewise.
2195 * typeck.c (unary_complex_lvalue): Build PTRMEM_CSTs, not
2196 INTEGER_CSTs, for pointer-to-data members.
2197
2198 * call.c (resolve_args): Resolve template specializations, if
2199 possible.
2200
2201 Tue Oct 6 07:57:26 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2202
2203 * Makefile.in (spew.o): Depend on toplev.h.
2204
2205 * call.c (compare_ics): Initialize variables `deref_from_type2',
2206 `deref_to_type1' and `deref_to_type2'.
2207
2208 * except.c (get_eh_type): Hide prototype and definition.
2209 (process_start_catch_block_old): Remove unused static prototype.
2210
2211 * pt.c (tsubst_decl): Initialize variable `argvec'.
2212
2213 * spew.c: Include toplev.h.
2214
2215 1998-10-05 Jason Merrill <jason@yorick.cygnus.com>
2216
2217 * pt.c (instantiate_decl): Do save and restore file position.
2218
2219 1998-10-05 Martin von Löwis <loewis@informatik.hu-berlin.de>
2220
2221 * method.c (build_decl_overload_real): Clear
2222 numeric_output_need_bar after __.
2223
2224 1998-10-05 Nathan Sidwell <nathan@acm.org>
2225
2226 * call.c (build_new_method_call): Issue 'incomplete type' error,
2227 if class is not defined.
2228
2229 1998-10-05 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2230
2231 * call.c (build_object_call): Move declaration of variable
2232 `fn' into the scope where it is used. Don't access variable
2233 `fn' when it is uninitialized, instead use `fns'.
2234
2235 1998-10-04 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
2236
2237 * errfn.c (cp_thing): Print buf as a string not as a printf format
2238 to avoid problems with the operator%. Consequently, `%%' sequences
2239 in format are copied as `%' in buf.
2240
2241 1998-10-04 Jason Merrill <jason@yorick.cygnus.com>
2242
2243 * pt.c (pop_tinst_level): Call extract_interface_info.
2244 (instantiate_decl): Don't save and restore file position.
2245
2246 * decl.c (cp_finish_decl): Make statics in extern inlines and
2247 templates common, if possible and the target doesn't support weak
2248 symbols.
2249
2250 * decl.c (grokdeclarator): Remove redundant calls to
2251 build_type_variant and some duplicated code.
2252 * sig.c (build_signature_reference_type): Only take the type parm.
2253 (build_signature_pointer_type): Likewise.
2254 * tree.c (build_cplus_method_type): Adjust.
2255 * cp-tree.h: Update.
2256
2257 1998-10-04 Mark Mitchell <mark@markmitchell.com>
2258
2259 * call.c (build_over_call): Make pedwarns about dropped qualifiers
2260 into full-fledged errors.
2261 * cvt.c (convert_to_reference): Likewise.
2262 * typeck.c (convert_for_assignment): Likewise.
2263
2264 * search.c (expand_upcast_vtables): In addition to unsetting
2265 TREE_READONLY, remove top-level const type qualifier.
2266
2267 1998-10-03 Mark Mitchell <mark@markmitchell.com>
2268
2269 * class.c (current_class_ptr, current_class_ref): Clarify
2270 documentation.
2271 * cvt.c (ocp_convert): Don't expect fold to remove all trivial
2272 NOP type conversions.
2273 * decl.c (decls_match): Use comptypes directly; ignore
2274 qualifiers on the DECL.
2275 (duplicate_decls): Remove qualifier checks on DECL.
2276 (grokdeclarator): Make the type built up include top-level
2277 qualifiers.
2278 * decl2.c (do_dtors): Fix spelling error.
2279 * error.c (dump_simple_decl): Don't look at qualifiers on the decl
2280 when printing type information.
2281 * init.c (build_new_1): Add documentation. Deal with the fact
2282 that type of allocated memory now contains qualifiers.
2283 * lex.c (is_global): Improve error-recovery.
2284 * sig.c (build_member_function_pointer): Don't cast away const
2285 on fields of sigtable_entry_type.
2286 * tree.c (lvalue_type): Don't look at top-level qualifiers on
2287 expressions.
2288 * typeck.c (decay_conversion): Likewise.
2289 (build_component_ref): Make sure the type of the COMPONENT_REF
2290 contains top-level qualifiers, as appropriate. Improve
2291 error-handling.
2292 (build_indirect_ref): Simplify. Don't strip top-level qualifiers.
2293 (build_array_ref): Likewise.
2294 (build_unary_op): Improve error-recovery.
2295 (unary_complex_lvalue): Make taking the address a bound member
2296 function an error, not a sorry.
2297 (build_conditional_expr): Look at the type qualifiers, not the
2298 qualifiers on the expression itself.
2299
2300 1998-10-03 Jason Merrill <jason@yorick.cygnus.com>
2301
2302 * decl2.c (merge_functions): Remove duplicates.
2303
2304 * decl2.c: Add -f{no-,}implicit-inline-templates.
2305 (import_export_decl): Check it.
2306
2307 * decl.c (lookup_name_real): Template parms also take precedence
2308 over implicit typename. Only warn if yylex.
2309
2310 * typeck.c (build_conditional_expr): Only fold if ifexp is an
2311 INTEGER_CST.
2312
2313 * decl2.c (finish_vtable_vardecl): Check DECL_INTERFACE_KNOWN
2314 instead of linkage.
2315
2316 1998-10-01 Jason Merrill <jason@yorick.cygnus.com>
2317
2318 * cp-tree.h (FORMAT_VBASE_NAME): New macro.
2319 * class.c (build_vbase_pointer): Use it.
2320 * rtti.c (expand_class_desc): Likewise.
2321 * tree.c (build_vbase_pointer_fields): Likewise.
2322
2323 Thu Oct 1 10:43:45 1998 Nick Clifton <nickc@cygnus.com>
2324
2325 * decl.c (start_decl): Add invocation of
2326 SET_DEFAULT_DECL_ATTRIBUTES, if defined.
2327 (start_function): Add invocation of
2328 SET_DEFAULT_DECL_ATTRIBUTES, if defined.
2329
2330 * lex.c: Replace occurances of HANDLE_SYSV_PRAGMA with
2331 HANDLE_GENERIC_PRAGMAS.
2332
2333 1998-09-28 Anthony Green <green@cygnus.com>
2334
2335 * semantics.c (finish_asm_stmt): Always permit volatile asms.
2336
2337 1998-09-28 Mark Mitchell <mark@markmitchell.com>
2338
2339 * decl.c (grokdeclarator): Tighten checks for invalid
2340 destructors. Improve error-messages and error-recovery.
2341 * decl2.c (check_classfn): Don't assume that mangled destructor
2342 names contain type information.
2343
2344 1998-09-25 Jason Merrill <jason@yorick.cygnus.com>
2345
2346 * search.c (get_base_distance): Remove assert.
2347
2348 * decl2.c (build_anon_union_vars): Don't process a field with no
2349 name.
2350 (finish_anon_union): Also complain about local anon unions with no
2351 members.
2352
2353 1998-09-25 Martin von Löwis <loewis@informatik.hu-berlin.de>
2354
2355 * decl.c (lookup_namespace_name): If the name is a namespace,
2356 return it immediately.
2357
2358 Fri Sep 25 11:45:38 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2359
2360 * cp-tree.h (define_case_label): Remove unused parameter.
2361 (check_java_method): Likewise.
2362 (grokclassfn): Likewise.
2363 (expand_aggr_init): Likewise.
2364 (build_x_delete): Likewise.
2365 (maybe_end_member_template_processing): Likewise.
2366 (unshare_base_binfos): Add prototype.
2367 (string_conv_p): Likewise.
2368 (my_friendly_abort): Mark with ATTRIBUTE_NORETURN.
2369
2370 * cvt.c (build_up_reference): Remove unused parameter
2371 `checkconst', all callers changed.
2372 (build_type_conversion): Mark parameter `code' with
2373 ATTRIBUTE_UNUSED.
2374 (build_expr_type_conversion): Initialize variable `conv'.
2375
2376 * decl.c (push_namespace): Initialize variable `d'.
2377 (define_case_label): Remove unused parameter `decl', all callers
2378 changed.
2379
2380 * decl2.c (lang_decode_option): If !USE_CPPLIB, mark parameter
2381 `argc' with ATTRIBUTE_UNUSED.
2382 (grokclassfn): Remove unused parameter `cname', all callers
2383 changed.
2384 (check_java_method): Likewise for parameter `ctype'.
2385 (copy_assignment_arg_p): Mark parameter `virtualp' with
2386 ATTRIBUTE_UNUSED.
2387 (finish_prevtable_vardecl): Likewise for parameter `prev'.
2388
2389 * expr.c (extract_init): Likewise for parameters `decl' and `init'.
2390
2391 * init.c (expand_aggr_init_1): Remove unused parameter
2392 `alias_this', all callers changed.
2393 (expand_aggr_init): Likewise.
2394 (expand_default_init): Likewise.
2395 (build_new_1): Initialize variable `susp'.
2396 (build_x_delete): Remove unused parameter `type', all callers
2397 changed.
2398
2399 * lex.c (set_typedecl_interface_info): Mark parameter `prev' with
2400 ATTRIBUTE_UNUSED.
2401 (readescape): Use (unsigned) value in shift.
2402 (real_yylex): Likewise. Likewise. Also cast `sizeof' to int when
2403 comparing to a signed quantity.
2404
2405 * pt.c (maybe_end_member_template_processing): Remove unused
2406 parameter `decl', all callers changed.
2407 (check_explicit_specialization): Add braces around empty body in
2408 an else-statement.
2409 (current_template_args): Initialize variable `args'.
2410 (lookup_template_class): Likewise for variable `prev_local_enum'.
2411 (tsubst_decl): Likewise for variable `r'.
2412 (set_mangled_name_for_template_decl): Initialize variable
2413 `context'.
2414
2415 * spew.c (scan_tokens): Change type of parameter `n' to unsigned.
2416 Likewise for variable `i'.
2417 (yylex): Initialize variable `trrr'.
2418
2419 * typeck.c (compparms): Mark variable `strict' with
2420 ATTRIBUTE_UNUSED.
2421
2422 * xref.c (simplify_type): Cast argument of ctype function to
2423 `unsigned char'.
2424
2425 1998-09-24 Mark Mitchell <mark@markmitchell.com>
2426
2427 * cp-tree.h (language_lvalue_valid): Remove.
2428 * decl.c (grokdeclarator): Don't disallow references to functions.
2429 * tree.c (lvalue_p_1): New function, combining duplicated
2430 code from ...
2431 (lvalue_p): Use it.
2432 (real_lvalue_p): Likewise.
2433 * typeck.c (language_lvalue_valid): Remove.
2434 (build_modify_expr): Treat FUNCTION_TYPEs as readonly, even though
2435 they don't have TREE_READONLY set.
2436 * typeck2.c (readonly_error): Add case for FUNCTION_DECLs.
2437
2438 1998-09-24 Benjamin Kosnik <bkoz@loony.cygnus.com>
2439
2440 * spew.c (yylex): Give diagnostic.
2441 * hash.h (is_reserved_word): Add export.
2442 * gxx.gperf: Ditto.
2443 * lex.h (rid): Add RID_EXPORT.
2444 * lex.c (init_parse): Ditto.
2445
2446 Tue Sep 22 21:01:19 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
2447
2448 * friend.c (do_friend): Make warning a full sentence.
2449
2450 1998-09-22 Mark Mitchell <mark@markmitchell.com>
2451
2452 * parse.y (component_decl_list): Improve error-recovery.
2453
2454 1998-09-22 Benjamin Kosnik <bkoz@loony.cygnus.com>
2455
2456 * decl.c (make_typename_type): Move error to point where name
2457 variable can be used by dump_type.
2458
2459 1998-09-22 Mark Mitchell <mark@markmitchell.com>
2460
2461 * decl.c (grokfndecl): Improve error-recovery.
2462 * decl2.c (grokfield): Likewise.
2463 * pt.c (finish_member_template_decl): Likewise.
2464
2465 1998-09-20 Martin von Löwis <loewis@informatik.hu-berlin.de>
2466
2467 * method.c (hack_identifier): Finding multiple members is always
2468 an error.
2469
2470 1998-09-21 Per Bothner <bothner@cygnus.com>
2471
2472 * Make-lang.in (c++-filt): Link libiberty.a after cxxmain.o.
2473
2474 Mon Sep 21 01:53:05 1998 Felix Lee <flee@cygnus.com>
2475
2476 * lex.c (init_lex): Use getenv ("LANG"), not GET_ENVIRONMENT ().
2477
2478 1998-09-20 Mark Mitchell <mark@markmitchell.com>
2479
2480 * class.c (maybe_warn_about_overly_private_class): Reformat.
2481
2482 1998-09-17 Andrew MacLeod <amacleod@cygnus.com>
2483
2484 * exception.cc (__cplus_type_matcher): realign some code.
2485
2486 1998-09-16 Mark Mitchell <mark@markmitchell.com>
2487
2488 * Make-lang.in (tinfo.o): Use CXXFLAGS when compiling.
2489 (tinfo2.o): Likewise.
2490 (exception.o): Likewise.
2491 (new.o): Likewise.
2492 (opnew.o): Likewise.
2493 (opnewnt.o): Likewise.
2494 (opvnew.o): Likewise.
2495 (opvnewnt.o): Likewise.
2496 (opdel.o): Likewise.
2497 (opdelnt.o): Likewise.
2498 (opvdel.o): Likewise.
2499 (opvdelnt.o): Likewise.
2500
2501 1998-09-16 Richard Henderson <rth@cygnus.com>
2502
2503 * decl.c (init_decl_processing): Kill __builtin_fp and __builtin_sp.
2504
2505 1998-09-15 Alexandre Oliva <oliva@dcc.unicamp.br>
2506
2507 * call.c (build_field_call): handle static data members too
2508
2509 * typeck.c (comptypes): when comparing pointer types, check
2510 whether referred types match even in strictest modes
2511
2512 1998-09-15 Mark Mitchell <mark@markmitchell.com>
2513
2514 * cp-tree.h: Revert previous change.
2515 (finish_struct_methods): Remove declaration.
2516 * class.c: Revert previous change.
2517 (maybe_warn_about_overly_private_class): New function.
2518 (finish_struct_methods): Declare here, and make static. Remove
2519 unnecessary parameters. Tidy slightly. Use
2520 maybe_warn_about_overly_private_class.
2521 (finish_struct_1): Adjust. Remove check for private constructors,
2522 now done elsewhere.
2523 (finish_struct): Adjust.
2524
2525 1998-09-15 Andrew MacLeod <amacleod@cygnus.com>
2526
2527 * except.c (expand_start_catch_block): No need to check for new
2528 exception model.
2529 (process_start_catch_block_old): Deleted.
2530 (process_start_catch_block): Add call to start_decl_1().
2531 (expand_end_catch_block): Add call to end_catch_handler().
2532 * exception.cc (__cplus_type_matcher): Only check the exception
2533 language if there is an exception table.
2534
2535 1998-09-15 Andrew MacLeod <amacleod@cygnus.com>
2536
2537 * search.c (expand_indirect_vtbls_init): Mark temporary stack slots
2538 as used to prevent conflicts with virtual function tables.
2539
2540 1998-09-14 Mark Mitchell <mark@markmitchell.com>
2541
2542 * cp-tree.h (lang_type): Add has_non_private_static_mem_fn.
2543 (CLASSTYPE_HAS_NON_PRIVATE_STATIC_MEM_FN): New macro, to access it.
2544 * class.c (maybe_class_too_private_p): New function.
2545 (finish_struct_methods): Use it.
2546 (finish_struct_1): Likewise.
2547 (finish_struct): Set CLASSTYPE_HAS_NON_PRIVATE_STATIC_MEM_FN if
2548 appropriate.
2549
2550 * pt.c (check_specialization_scope): Fix spelling error.
2551 (check_explicit_specialization): Remove code to handle explicit
2552 specializations in class scope; they are now correctly diagnosed
2553 as errors.
2554
2555 1998-09-10 Mark Mitchell <mark@markmitchell.com>
2556
2557 * decl.c (pushdecl): Don't copy types if the
2558 DECL_ABSTRACT_ORIGIN of the new decl matches the TYPE_NAME of the
2559 type.
2560
2561 1998-09-09 Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
2562
2563 * class.c (get_enclosing_class): New function.
2564 (is_base_of_enclosing_class): Likewise.
2565 * cp-tree.h (get_enclosing_class): Declare.
2566 (is_base_of_enclosing_class): Likewise.
2567 * pt.c (coerce_template_parms): Use them.
2568
2569 1998-09-09 Jason Merrill <jason@yorick.cygnus.com>
2570
2571 * g++spec.c (lang_specific_driver): Check whether MATH_LIBRARY is
2572 null to decide whether to use it.
2573
2574 * error.c (dump_type_real): Handle NAMESPACE_DECL.
2575 * parse.y (base_class.1): Avoid crash on error.
2576
2577 1998-09-08 Martin von Löwis <loewis@informatik.hu-berlin.de>
2578
2579 * decl.c (make_typename_type): If context is a namespace, the code
2580 is in error.
2581
2582 1998-09-08 Mumit Khan <khan@xraylith.wisc.edu>
2583
2584 * parse.y (nomods_initdcl0): Set up the parser stack correctly.
2585
2586 1998-09-08 Mark Mitchell <mark@markmitchell.com>
2587
2588 * cp-tree.h (anonymous_namespace_name): Declare.
2589 * decl.c: Define it.
2590 (push_namespace): Use anonymous_namespace_name, rather than local
2591 static anon_name.
2592 * error.c (dump_decl): If a namespace is named
2593 anonymous_namespace_name, call it {anonymous}.
2594
2595 * decl.c (grokparms): Distinguish between references and pointers
2596 in error message.
2597
2598 1998-09-08 Richard Henderson <rth@cygnus.com>
2599 Mark Mitchell <mark@markmitchell.com>
2600
2601 * pt.c (process_partial_specialization): Consistantly allocate
2602 and zero tpd.parms based on ntparms. Use tpd2.parms, not
2603 tpd.parms, where appropriate.
2604
2605 Sun Sep 6 00:00:51 1998 Jeffrey A Law (law@cygnus.com)
2606
2607 * Makefile.in (INCLUDES): Update after recent toplevel gcc
2608 reorganizations.
2609
2610 1998-09-05 Mark Mitchell <mark@markmitchell.com>
2611
2612 * cp-tree.h (TI_PENDING_SPECIALIZATION_FLAG): Remove.
2613 * class.c (finish_struct): Remove hackery to deal with explicit
2614 specializations in class scope.
2615 * decl.c (grokfndecl): Improve error-recovery.
2616 * decl2.c (grokfield): Likewise.
2617 * pt.c (check_specialization_scope): New function.
2618 (begin_specialization): Call it.
2619 (process_partial_specialization): New function, split out from
2620 push_template_decl. Check partial specializations more
2621 stringently.
2622 (push_template_decl): Call it.
2623 (check_explicit_specialization): Don't attempt to handle explicit
2624 specializations in class scope.
2625 (template_parm_data): Document. Add current_arg and
2626 arg_uses_template_parms.
2627 (mark_template_parm): Set it.
2628 (tsubst_arg_types): Remove unused variable.
2629 * semantics.c (begin_class_definition): Tweak.
2630
2631 1998-09-04 Mark Mitchell <mark@markmitchell.com>
2632
2633 * inc/typeinfo (type_info::type_info(const char*)): Make
2634 `explicit'.
2635
2636 * cp-tree.h (hash_tree_cons_simple): New macro.
2637 * pt.c (tsubst_arg_types): New function. Use hash_tree_cons.
2638 (coerce_template_parms): Use make_temp_vec, instead of
2639 make_tree_vec. Document this behavior.
2640 (lookup_template_class): Likewise.
2641 (tsubst, cases METHOD_TYPE, FUNCTION_TYPE): Use tsubst_arg_types.
2642 Remove dead code (and add ssertion to check its deadness). Fix
2643 bug w.r.t. exception specifications.
2644
2645 1998-09-03 Jason Merrill <jason@yorick.cygnus.com>
2646
2647 * decl2.c (import_export_vtable): Always make artificials comdat.
2648 (import_export_decl): Likewise.
2649 * pt.c (mark_decl_instantiated): Likewise.
2650
2651 1998-09-03 Mark Mitchell <mark@markmitchell.com>
2652
2653 * cp-tree.h (finish_globally_qualified_member_call_expr):
2654 Rename to ...
2655 (finish_qualified_call_expr).
2656 * semantics.c: Likewise.
2657 * parse.y (primary): Use it.
2658 * method.c (hack_identifier): Remove redundant code.
2659
2660 * init.c (resolve_offset_ref): Call convert_from_reference to
2661 handle members of reference type. Improve error recovery.
2662
2663 1998-09-03 Benjamin Kosnik <bkoz@cygnus.com>
2664
2665 * cp-tree.h: Declare warn_nontemplate_friend.
2666 * decl2.c (lang_decode_option): Set.
2667 * lang-options.h: Add -Wnon-template-friend.
2668 * friend.c (do_friend): Use to toggle non-template function warning.
2669
2670 1998-09-03 Mark Mitchell <mark@markmitchell.com>
2671
2672 * decl.c (finish_enum): Don't resolve CONST_DECLs to their
2673 corresponding INTEGER_CSTs when processing_template_decl.
2674 * pt.c (tsubst_enum): Tweak accordingly.
2675
2676 1998-09-03 Benjamin Kosnik <bkoz@rhino.cygnus.com>
2677
2678 * decl.c (pushdecl_class_level): Add warning here.
2679 (pushdecl): Tweak.
2680
2681 1998-09-02 Jason Merrill <jason@yorick.cygnus.com>
2682
2683 * cvt.c (convert_pointer_to_real): Tidy.
2684 * search.c (get_base_distance_recursive): Simplify.
2685 (get_base_distance): Likewise.
2686
2687 * pt.c (unify): Only special-case INTEGER_TYPE if it uses template
2688 parms.
2689
2690 Wed Sep 02 09:25:29 1998 Nick Clifton <nickc@cygnus.com>
2691
2692 * lex.c (check_newline): Call HANDLE_PRAGMA before
2693 HANDLE_SYSV_PRAGMA if both are defined. Generate warning messages
2694 if unknown pragmas are encountered.
2695 (handle_sysv_pragma): Interpret return code from
2696 handle_pragma_token (). Return success/failure indication rather
2697 than next unprocessed character.
2698 (pragma_getc): New function: retrieves characters from the
2699 input stream. Defined when HANDLE_PRAGMA is defined.
2700 (pragma_ungetc): New function: replaces characters back into the
2701 input stream. Defined when HANDLE_PRAGMA is defined.
2702
2703 1998-09-01 Jason Merrill <jason@yorick.cygnus.com>
2704
2705 * decl2.c (output_vtable_inherit): Use %cDIGIT in the operands.
2706 * class.c (build_vtable_entry_ref): Likewise.
2707
2708 1998-09-01 Mark Mitchell <mark@markmitchell.com>
2709
2710 * cp-tree.h (DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION): New macro.
2711 * decl2.c (import_export_decl): Likewise.
2712 * pt.c (instantiate_decl): Use it.
2713
2714 1998-09-01 Jason Merrill <jason@yorick.cygnus.com>
2715
2716 * decl.c (lookup_name_real): Also do implicit typename thing for
2717 artificial TYPE_DECLs.
2718 * search.c (lookup_field): Likewise.
2719 (lookup_fnfields, lookup_field): Adjust for implicit typename kludge.
2720 * semantics.c (begin_constructor_declarator): Use enter_scope_of.
2721 (enter_scope_of): Extract type from implicit typename.
2722 (begin_class_definition): Likewise.
2723 * lex.c (identifier_type): Handle implicit typename when checking
2724 for SELFNAME.
2725
2726 * cp-tree.h: Declare flag_strict_prototype.
2727 * lex.c (do_scoped_id, do_identifier): Don't implicitly_declare if
2728 -fstrict-prototype.
2729 * decl.c (init_decl_processing): If -f{no,-}strict-prototype wasn't
2730 specified, set it to the value of pedantic.
2731
2732 1998-09-01 Mark Mitchell <mark@markmitchell.com>
2733
2734 * decl2.c (arg_assoc): Handle template-id expressions as arguments.
2735
2736 1998-08-31 Mark Mitchell <mark@markmitchell.com>
2737
2738 * decl.c (finish_enum): Handle member enums of classes declared in
2739 template functions.
2740
2741 * decl2.c (grok_x_components): Strip attributres before calling
2742 groktypename.
2743
2744 1998-08-31 Jason Merrill <jason@yorick.cygnus.com>
2745
2746 * cp-tree.h, decl2.c: Remove support for -fall-virtual,
2747 -fenum-int-equivalence and -fno-nonnull-objects.
2748 * class.c (check_for_override): Remove support for -fall-virtual.
2749 (finish_struct_1): Likewise.
2750 * call.c (build_new_op): Remove support for -fenum-int-equivalence.
2751 * typeck.c (build_binary_op_nodefault): Likewise.
2752 * cvt.c (ocp_convert): Likewise.
2753 * call.c (build_vfield_ref): Remove support for -fno-nonnull-objects.
2754 * class.c (build_vbase_path): Likewise.
2755
2756 Sun Aug 30 22:16:31 1998 H.J. Lu (hjl@gnu.org)
2757
2758 * Makefile.in (INTERFACE): New, set to 1.
2759
2760 1998-08-30 Mark Mitchell <mark@markmitchell.com>
2761
2762 * error.c (dump_decl): Use CP_DECL_CONTEXT, not DECL_CONTEXT, when
2763 comparing with global_namespace.
2764 (dump_aggr_type): Likewise.
2765
2766 * decl.c (grokfndecl): Issue error on declaration of friend
2767 templates with explicit template arguments.
2768
2769 * pt.c (convert_template_argument): New function, split out
2770 from...
2771 (coerce_template_parms): Here.
2772 (tsubst): Attempt better error-recovery.
2773
2774 1998-08-28 Benjamin Kosnik <bkoz@loony.cygnus.com>
2775
2776 * pt.c (decl_template_parm_p): Add checks for
2777 TEMPLATE_TEMPLATE_PARM.
2778
2779 1998-08-28 Mark Mitchell <mark@markmitchell.com>
2780
2781 * lex.c (do_identifier): Fix thinko in previous change.
2782
2783 1998-08-28 Jason Merrill <jason@yorick.cygnus.com>
2784
2785 * search.c (dfs_search, binfo_for_vtable, dfs_bfv_helper): New fns.
2786 * decl2.c (output_vtable_inherit): Call binfo_for_vtable.
2787
2788 1998-08-28 Richard Henderson <rth@cygnus.com>
2789
2790 Add support for discarding unused virtual functions.
2791 * lang-options.h: Add -fvtable-gc.
2792 * cp-tree.h: Add flag_vtable_gc.
2793 * decl2.c (output_vtable_inherit): New fn.
2794 (finish_vtable_vardecl): Call it.
2795 * class.c (build_vtable_entry_ref): New fn.
2796 (build_vtbl_ref): Call it.
2797
2798 1998-08-28 Mark Mitchell <mark@markmitchell.com>
2799
2800 * cp-tree.h (build_enumerator): Take the enumeration type as a
2801 paramter.
2802 * decl.c (finish_enum): Don't set the TREE_TYPE for the
2803 enumeration constant values if we're processing_template_decls.
2804 Don't set the type for the CONST_DECLs either; that's done in
2805 build_enumerator.
2806 (build_enumerator): Take the enumeration type as a
2807 parameter.
2808 * lex.c (do_identifier): Don't resolve enumeration constants while
2809 processing template declarations, even if they happen to be
2810 TEMPLATE_PARM_INDEXs.
2811
2812 * parse.y (current_enum_type): New variable.
2813 (primary): Don't allow statement-expression in local classes just
2814 as we don't in global classes.
2815 (structsp): Use current_enum_type.
2816 (enum_list): Likewise.
2817 * pt.c (tsubst_enum): Don't check for NOP_EXPRs introduced by
2818 finish_enum; they no longer occur.
2819
2820 * cp-tree.h (finish_base_specifier): New function.
2821 * parse.y (base_class): Use it.
2822 * semantics.c (finish_base_specifier): Define it.
2823
2824 * parse.y (structsp): Warn on use of typename outside of template
2825 declarations.
2826
2827 1998-08-27 Jason Merrill <jason@yorick.cygnus.com>
2828
2829 * lex.c (handle_cp_pragma): Remove #pragma vtable.
2830 * lang-options.h: Remove +e options.
2831 * decl2.c (lang_decode_option): Likewise.
2832 (import_export_vtable): Don't check write_virtuals.
2833 (finish_vtable_vardecl, finish_file): Likewise.
2834 * search.c (dfs_debug_mark): Likewise.
2835 * semantics.c (begin_class_definition): Likewise.
2836 * class.c (build_vtable, finish_vtbls, finish_struct_1): Likewise.
2837
2838 * call.c (build_over_call): Check flag_elide_constructors.
2839 * decl2.c: flag_elide_constructors defaults to 1.
2840 * typeck.c (convert_arguments): Remove return_loc parm.
2841 (build_function_call_real): Adjust.
2842
2843 * search.c: Tear out all mi_matrix and memoize code.
2844 (lookup_field, lookup_fnfields): Use scratch_tree_cons.
2845 * lang-options.h: Remove documentation for -fhandle-exceptions,
2846 -fmemoize-lookups and -fsave-memoized.
2847 * cp-tree.h: Lose mi_matrix and memoize support.
2848 * decl2.c: Ignore -fmemoize-lookups and -fsave-memoized.
2849 * class.c: Lose struct class_level.
2850 (pushclass, popclass): Lose memoize support.
2851 * init.c (build_offset_ref): Likewise.
2852
2853 Never change BINFO_INHERITANCE_CHAIN.
2854 * init.c (emit_base_init): Change modification of
2855 BINFO_INHERITANCE_CHAIN to an assert.
2856 * search.c (get_base_distance_recursive): Likewise.
2857 (get_base_distance): Likewise.
2858 (lookup_member): Likewise.
2859 (convert_pointer_to_single_level): Likewise.
2860 (lookup_field): Likewise. Lose setting TREE_VIA_* on TREE_LISTs.
2861 (lookup_fnfields): Likewise.
2862 * tree.c (propagate_binfo_offsets): Don't call unshare_base_binfos.
2863 (unshare_base_binfos): Don't call propagate_binfo_offsets.
2864 (layout_basetypes): Call propagate_binfo_offsets instead of
2865 unshare_base_binfos.
2866 * decl.c (xref_basetypes): Call unshare_base_binfos.
2867 * pt.c (instantiate_class_template): Likewise.
2868 * tree.c (reverse_path): Remove 'copy' parm; always make a
2869 temporary copy.
2870 * class.c (build_vbase_path): Just call it.
2871 * search.c (compute_access): Likewise. Don't re-reverse.
2872
2873 1998-08-27 Mark Mitchell <mark@markmitchell.com>
2874
2875 * class.c (build_vbase_path): Use reverse_path.
2876 (finish_base_struct): Move warnings for inaccessible bases to
2877 layout_basetypes.
2878 (modify_one_vtable): Remove check of TREE_USED (binfo).
2879 (fixup_vtable_deltas1): Likewise.
2880 * cp-tree.h (BINFO_INHERITANCE_CHAIN): Document here.
2881 (xref_tag): Remove binfos parameter.
2882 (make_binfo): Remove chain parameter.
2883 (reverse_path): Add copy parameter.
2884 * decl.c (init_decl_processing): Change calls to xref_tag.
2885 (xref_tag): Remove binfos parameter.
2886 (xref_basetypes): Change calls to make_binfo.
2887 * decl2.c (grok_x_components): Change calls to xref_tag.
2888 (handle_class_head): Likewise.
2889 * friend.c (do_friend): Likewise.
2890 * lex.c (make_lang_type): Change calls to make_binfo.
2891 * parse.y (structsp): Change calls to xref_tag.
2892 (named_complex_class_head_sans_basetype): Likewise.
2893 (named_class_head): Likewise.
2894 * rtti.c (init_rtti_processing): Likewise.
2895 * search.c (compute_access): Change calls to reverse_path.
2896 (dfs_get_vbase_types): Change calls to make_binfo.
2897 (get_vbase_types): Remove dead code.
2898 * tree.c (unshare_base_binfos): Change calls to make_binfo.
2899 (layout_basetypes): Warn here about inaccessible bases.
2900 (make_binfo): Remove chain parameter.
2901 (reverse_path): Add copy parameter.
2902
2903 1998-08-27 Jason Merrill <jason@yorick.cygnus.com>
2904
2905 * class.c: #if 0 complete_type_p.
2906 * init.c (build_java_class_ref, build_new_1): Remove unused locals.
2907 * method.c (process_overload_item): Likewise.
2908 * typeck.c (comp_target_types): Likewise.
2909
2910 Stop sharing binfos for indirect virtual bases.
2911 * tree.c (propagate_binfo_offsets): Unshare vbases, too.
2912 (layout_basetypes): Likewise.
2913 (unshare_base_binfos): Copy vbases, too.
2914 * cp-tree.h (BINFO_VIA_PUBLIC, BINFO_BASEINIT_MARKED,
2915 BINFO_VBASE_INIT_MARKED): Remove obsolete macros.
2916 (BINFO_PUSHDECLS_MARKED, SET_BINFO_PUSHDECLS_MARKED,
2917 CLEAR_BINFO_PUSHDECLS_MARKED): New macros.
2918 * search.c (lookup_field, lookup_fnfields, lookup_member): Remove
2919 reference to BINFO_VIA_PUBLIC.
2920 (marked_pushdecls_p, unmarked_pushdecls_p): New fns.
2921 (push_class_decls): Use them.
2922 (dfs_pushdecls): Use SET_BINFO_PUSHDECLS_MARKED.
2923 (dfs_compress_decls): Use CLEAR_BINFO_PUSHDECLS_MARKED.
2924
2925 1998-08-27 Mark Mitchell <mark@markmitchell.com>
2926
2927 * decl.c (build_enumerator): Set DECL_CONTEXT for the
2928 CONST_DECLs.
2929
2930 1998-08-26 Mark Mitchell <mark@markmitchell.com>
2931
2932 * cp-tree.h (finish_enum): Change prototype.
2933 * decl.c (finish_enum): Use TYPE_VALUES, rather than taking a
2934 VALUES parameter. Don't try to compute mins/maxs if
2935 processing_template_decl.
2936 * parse.y (structsp): Use new calling sequence for finish_enum.
2937 * pt.c (tsubst_enum): Likewise. Take the new type as input.
2938 (lookup_template_class): Remove unused variables. Tweak.
2939 Register enums on instantiation list before substituting
2940 enumeration constants.
2941 (tsubst_decl): Remove unused variables.
2942 (regenerate_decl_from_template): Likewise.
2943
2944 * decl.c (duplicate_decls): Don't obliterate the
2945 DECL_TEMPLATE_INFO for a template if we're not replacing it with
2946 anything.
2947
2948 * lex.c (do_identifier): Fix typo in comment.
2949
2950 Wed Aug 26 10:54:51 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
2951
2952 * errfn.c: Remove stdarg.h/varargs.h.
2953 * tree.c: Likewise.
2954
2955 1998-08-25 Brendan Kehoe <brendan@cygnus.com>
2956
2957 * pt.c (tsubst_copy): Only do typename overloading on an
2958 IDENTIFIER_NODE that happens to look like a typename if it actually
2959 has a type for us to use.
2960
2961 1998-08-25 Jason Merrill <jason@yorick.cygnus.com>
2962
2963 * typeck.c (comp_cv_target_types): Split out...
2964 (comp_target_types): From here. Don't allow cv-qual changes under
2965 a pointer if nptrs == 0. Fix OFFSET_TYPE handling.
2966 (build_ptrmemfunc): Pass 1 to nptrs.
2967 * cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.
2968
2969 1998-08-25 Mark Mitchell <mark@markmitchell.com>
2970
2971 * search.c (dependent_base_p): Don't compare a binfo to
2972 current_class_type; use the TREE_TYPE of the binfo instead.
2973
2974 * cp-tree.h (CLASS_TYPE_P): Revise definition.
2975
2976 1998-08-25 Jason Merrill <jason@yorick.cygnus.com>
2977
2978 * decl.c (duplicate_decls): Don't complain about different
2979 exceptions from an internal decl even if pedantic.
2980
2981 * typeck.c (convert_for_assignment): Converting from pm of vbase
2982 to derived is an error, not a sorry.
2983
2984 * call.c (build_over_call): Use convert_pointer_to_real for 'this'.
2985 * class.c (fixed_type_or_null): Rename from
2986 resolves_to_fixed_type_p. Return the dynamic type of the
2987 expression, if fixed, or null.
2988 (resolves_to_fixed_type_p): Use it. Return 0 if the dynamic type
2989 does not match the static type.
2990 (build_vbase_path): Rename 'alias_this' to 'nonnull'. Use
2991 resolves_to_fixed_type_p again.
2992
2993 1998-08-24 Mark Mitchell <mark@markmitchell.com>
2994
2995 * pt.c (tsubst_decl): Move special case code for dealing with
2996 tricky friend templates here from ...
2997 (regenerate_decl_from_template): Here.
2998
2999 1998-08-24 Jason Merrill <jason@yorick.cygnus.com>
3000
3001 * decl.c (start_decl): Remove redundant linkage check.
3002
3003 1998-08-24 Gavin Romig-Koch <gavin@cygnus.com>
3004
3005 * typeck.c (c_expand_return): Handle the case that valtype
3006 is wider than the functions return type.
3007
3008 1998-08-24 Mark Mitchell <mark@markmitchell.com>
3009
3010 * cp-tree.h (CLASS_TYPE_P): New macro.
3011 * decl.c (grokdeclarator): Use it instead of IS_AGGR_TYPE.
3012 * pt.c (process_template_parm): Undo previous change.
3013
3014 1998-08-24 Benjamin Kosnik <bkoz@cygnus.com>
3015
3016 * cp-tree.h: Declare.
3017 * pt.c (decl_template_parm_p): New function.
3018 * decl.c (pushdecl): Check decls for redeclaring template parms.
3019 (xref_tag): Make redeclaration an error, print decl.
3020 * decl2.c (grokfield): Check field_decls for redeclaration as well.
3021
3022 1998-08-24 Jason Merrill <jason@yorick.cygnus.com>
3023
3024 * parse.y (primary): Fix up the type of string constants.
3025
3026 1998-08-24 Mark Mitchell <mark@markmitchell.com>
3027
3028 * typeck.c (convert_for_initialization): Move check for odd uses
3029 of NULL to avoid duplicate warnings.
3030
3031 1998-08-24 Jason Merrill <jason@yorick.cygnus.com>
3032
3033 * tree.c (lvalue_type): Fix for arrays.
3034 * typeck.c (string_conv_p): New fn.
3035 (convert_for_assignment): Use it.
3036 (build_unary_op): Use lvalue_type.
3037 * call.c (standard_conversion, convert_like): Use string_conv_p.
3038 (add_function_candidate): Use lvalue_type.
3039 * cvt.c (convert_to_reference): Likewise.
3040 * decl2.c (lang_decode_option): Ignore -traditional.
3041 * decl.c (init_decl_processing): flag_writable_strings inhibits
3042 flag_const_strings.
3043
3044 1998-08-24 Andrew MacLeod <amacleod@cygnus.com>
3045
3046 * lang-options.h (lang_options): Add fconst-strings to the list
3047 of valid options.
3048 * decl2.c (lang_f_options, lang_decode_option): Likewise.
3049
3050 1998-08-24 Nathan Sidwell <nathan@acm.org>
3051
3052 * lex.c (real_yylex): Don't warn about long long constants if
3053 we're allowing long long.
3054
3055 1998-08-24 Martin von Löwis <loewis@informatik.hu-berlin.de>
3056
3057 * decl.c (pushdecl): Use IDENTIFIER_NAMESPACE_VALUE instead of
3058 accessing bindings directly.
3059
3060 * search.c (my_tree_cons): Reimplement.
3061
3062 * lang-specs.h: Remove __HONOR_STD.
3063 * inc/exception, inc/new, inc/new.h, inc/typeinfo: Likewise.
3064
3065 1998-08-23 Mark Mitchell <mark@markmitchell.com>
3066
3067 * decl.c (grokdeclarator): Complain about in-class initialization
3068 of aggregates and/or references.
3069 * pt.c (process_template_parm): Clear IS_AGGR_TYPE for
3070 TEMPLATE_TYPE_PARMs.
3071
3072 * decl2.c (grok_array_decl): Add comment.
3073 (mark_used): Don't instantiate an explicit instantiation.
3074 * friend.c (make_friend_class): Remove bogus comment. Fix check
3075 for partial specializations.
3076 * pt.c (check_explicit_specialization): Don't
3077 SET_DECL_EXPLICIT_INSTANTIATION here.
3078 (mark_decl_instantiated): Or here.
3079 (do_decl_instantiation): Do it here, instead. Add checks for
3080 duplicate explicit instantiations, etc. Tidy.
3081 (do_type_instantiation): Likewise.
3082 (instantiate_decl): Improve comments. Complain about explicit
3083 instantiations where no definition is available.
3084
3085 * cp-tree.h (ansi_null_node): Remove.
3086 * call.c (build_over_call): Warn about converting NULL to an
3087 arithmetic type.
3088 * cvt.c (build_expr_type_conversion): Likewise. Use
3089 null_ptr_cst_p instead of expanding it inline.
3090 * decl.c (ansi_null_node): Remove.
3091 (init_decl_processing): Make null_node always have integral type.
3092 * except.c (build_throw): Warn about converting NULL to an
3093 arithmetic type.
3094 * lex.c (init_parse): Remove handling of ansi_null_node.
3095 * pt.c (type_unification_real): Don't convert NULL to void* type.
3096 * typeck.c (build_binary_op_nodefault): Fix NULL warnings.
3097 (convert_for_assignment): Warn about converting NULL to an
3098 arithmetic type.
3099 (convert_for_initialization): Likewise.
3100
3101 1998-08-20 Jason Merrill <jason@yorick.cygnus.com>
3102
3103 * tree.c (search_tree, no_linkage_helper, no_linkage_check): New fn.
3104 * pt.c (coerce_template_parms): Use no_linkage_check.
3105 * decl.c (grokvardecl): Likewise.
3106 (grokfndecl): Likewise. Members of anonymous types have no linkage.
3107
3108 * method.c (process_overload_item): Remove useless code.
3109
3110 1998-08-20 Per Bothner <bothner@cygnus.com>
3111
3112 Handle new'ing of Java classes.
3113 * init.c (build_class_classref): New function.
3114 (build_new_1): If type is TYPE_FOR_JAVA: Call _Jv_AllocObject;
3115 constructor does not return this; don't need to exception-protect.
3116
3117 * pt.c (lookup_template_class): Copy TYPE_FOR_JAVA flag.
3118 * decl2.c (acceptable_java_type): Handle template-derived types.
3119
3120 1998-08-20 Per Bothner <bothner@cygnus.com>
3121
3122 * decl2.c (import_export_vtable): Suppress vtables for Java classes.
3123
3124 1998-08-20 Mark Mitchell <mark@markmitchell.com>
3125
3126 * decl.c (duplicate_decls): Always merge the old and new patterns
3127 for templates, regardless of whether or not the new one has
3128 DECL_INITIAL. Don't throw away specializations. Merge
3129 DECL_SAVED_TREE.
3130 * pt.c (tsubst_decl): Use the right pattern when calculating the
3131 complete args for a new template instance.
3132 (do_decl_instantiation): Fix typo in comment.
3133 (regenerate_decl_from_template): Deal with tricky friend template
3134 case.
3135 (instantiate_decl): Likewise.
3136
3137 Thu Aug 20 09:09:45 1998 Jeffrey A Law (law@cygnus.com)
3138
3139 * init.c (build_builtin_delete_call): Add missing assemble_external
3140 call.
3141
3142 1998-08-20 Jason Merrill <jason@yorick.cygnus.com>
3143
3144 * parse.y (notype_unqualified_id): Also accept ~A<int>.
3145
3146 1998-08-19 Mark Mitchell <mark@markmitchell.com>
3147
3148 * typeck.c (build_binary_op_nodefault): Warn on use of NULL in
3149 arithmetic.
3150 * except.c (build_throw): Warn when NULL is thrown, even with
3151 -ansi. Use ansi_null_node, rather than integer_zero_node, in the
3152 thrown expression.
3153
3154 * cp-tree.h (ansi_null_node): New variable.
3155 * decl.c (ansi_null_node): New variable.
3156 (init_decl_processing): Initialize its type.
3157 * lex.c (init_parse): Initialize its value. Use ansi_null_node
3158 for null_node in non-ANSI mode.
3159 * typeck.c (build_binary_op_nodefault): Use ansi_null_node in
3160 place of null_node to avoid spurious errors.
3161
3162 1998-08-17 Mark Mitchell <mark@markmitchell.com>
3163
3164 * cp-tree.h (enter_scope_of): New function.
3165 * parse.y (complex_direct_notype_declarator): Use it.
3166 * semantics.c (enter_scope_of): New function.
3167
3168 1998-08-17 Jason Merrill <jason@yorick.cygnus.com>
3169
3170 * decl.c (grokparms): No, here.
3171
3172 * decl.c (grokdeclarator): Catch parm with pointer to array of
3173 unknown bound here...
3174 * method.c (process_overload_item): ...not here.
3175
3176 * gxxint.texi: Remove obsolete documentation of overloading code.
3177
3178 * decl.c (finish_enum): Also set TYPE_SIZE_UNIT.
3179 * class.c (finish_struct_bits): Likewise.
3180
3181 * tree.c (lvalue_type): Fix for arrays.
3182 * typeck.c (build_unary_op): Use lvalue_type.
3183 * call.c (add_function_candidate): Likewise.
3184 * cvt.c (convert_to_reference): Likewise.
3185
3186 * decl2.c (lang_decode_option): Ignore -traditional.
3187
3188 * init.c (build_offset_ref): Don't mess with error_mark_node.
3189 * lex.c (do_scoped_id): Use cp_error.
3190
3191 * rtti.c (get_tinfo_fn): Don't mess with the context for now.
3192
3193 1998-08-17 Benjamin Kosnik <bkoz@loony.cygnus.com>
3194
3195 * decl.c (grokdeclarator): Allow anonymous types to be cv-qualified.
3196
3197 Mon Aug 17 10:40:18 1998 Jeffrey A Law (law@cygnus.com)
3198
3199 * cp-tree.h (set_identifier_local_value): Provide prototype.
3200
3201 * decl2.c (do_namespace_alias): Remove unused variables `binding'
3202 and `old'.
3203
3204 Fri Aug 14 16:42:27 1998 Nick Clifton <nickc@cygnus.com>
3205
3206 * Makefile.in: Rename BBISON to BISON so that it can be properly
3207 inherited from the parent makefile.
3208
3209 1998-08-13 Jason Merrill <jason@yorick.cygnus.com>
3210
3211 * lang-options.h: Add -finit-priority.
3212 * decl2.c: Likewise. Check flag_init_priority instead of
3213 USE_INIT_PRIORITY.
3214
3215 * decl2.c (setup_initp): New fn.
3216 (start_objects, finish_objects, do_ctors): Handle init_priority.
3217 (do_dtors, finish_file): Likewise.
3218
3219 1998-08-13 Jason Merrill <jason@yorick.cygnus.com>
3220
3221 * pt.c (tsubst_copy): Hush warning.
3222
3223 * rtti.c (get_tinfo_fn): Also set DECL_IGNORED_P.
3224
3225 1998-08-12 Mark Mitchell <mark@markmitchell.com>
3226
3227 * pt.c (print_template_context): Don't abort when instantiating a
3228 synthesized method.
3229
3230 * decl.c (grokdeclarator): Issue errors on namespace qualified
3231 declarators in parameter lists or in class scope.
3232
3233 1998-08-09 Mark Mitchell <mark@markmitchell.com>
3234
3235 * pt.c (check_explicit_specialization): Don't abort on bogus
3236 explicit instantiations.
3237
3238 1998-08-07 Mark Mitchell <mark@markmitchell.com>
3239
3240 * typeck.c (require_complete_type): Use complete_type_or_else.
3241 (complete_type_or_else): Always return NULL_TREE on failure, as
3242 documented.
3243
3244 * pt.c (tsubst_aggr_type): Prototype.
3245 (tsubst_decl): New function, split out from tsubst. Set
3246 input_filename and lineno as appropriate.
3247 (pop_tinst_level): Restore the file and line number saved in
3248 push_tinst_level.
3249 (instantiate_class_template): Set input_filename and lineno as
3250 appropriate.
3251 (tsubst): Move _DECL processing to tsubst_decl. Make sure the
3252 context for a TYPENAME_TYPE is complete.
3253
3254 * decl2.c (grokbitfield): Issue errors on bitfields declared with
3255 function type.
3256 (do_dtors): As in do_ctors, pretend to be a member of the same
3257 class as a static data member while generating a call to its
3258 destructor.
3259
3260 * cvt.c (cp_convert_to_pointer): Handle NULL pointer
3261 conversions, even in complex virtual base class hierarchies.
3262
3263 1998-08-06 Mark Mitchell <mark@markmitchell.com>
3264
3265 * cp-tree.h (ENUM_TEMPLATE_INFO): New macro.
3266 (TYPE_TEMPLATE_INFO): Likewise.
3267 (SET_TYPE_TEMPLATE_INFO): Likewise.
3268 (ENUM_TI_TEMPLATE): Likewise.
3269 (ENUM_TI_ARGS): Likewise.
3270 (lookup_nested_type_by_name): Remove.
3271 * decl.c (maybe_process_template_type_declaration): Handle enums.
3272 (start_enum): Don't check for primary-template enum declarations
3273 here.
3274 (finish_enum): Clean up, document. Make sure template enum
3275 constants get the correct type.
3276 (build_enumerator): Copy initializers for template enumerations,
3277 too.
3278 (grok_enum_decls): Document.
3279 * lex.c (do_identifier): Document use of LOOKUP_EXPR a bit
3280 better. Build LOOKUP_EXPRs for local variables, even if they are
3281 TREE_PERMANENT.
3282 * pt.c (tsubst_enum): Remove field_chain parameter.
3283 (template_class_depth): Include the depth of surrounding function
3284 contexts.
3285 (push_template_decl): Check for primary-template enum declarations
3286 here. Deal with enumeration templates.
3287 (lookup_template_class): Likewise.
3288 (for_each_template_parm): Likewise.
3289 (instantiate_class_template): Don't call tsubst_enum directly,
3290 call tsubst instead, to instantiate enums. Deal with all
3291 field_chain issues here, not in tsubst_enum.
3292 (lookup_nested_type_by_name): Remove.
3293 (tsubst_aggr_type): Revise handling of enumeration types.
3294 (tsubst): Likewise.
3295 (tsubst_copy): Likewise.
3296 (tsubst_expr): Call tsubst, not tsubst_enum for TAG_DEFNs.
3297
3298 1998-08-04 Mark Mitchell <mark@markmitchell.com>
3299
3300 * decl.c (pushtag): Don't mangle the name of a TYPE_DECL if it
3301 uses template parameters.
3302 * method.c (build_template_parm_names): Use the full set of
3303 template arguments for tsubst'ing.
3304 (build_overload_identifier): Pass the full set of template
3305 arguments to build_template_parm_names, not just the
3306 innermost_args.
3307 * pt.c (TMPL_ARGS_DEPTH): Define using
3308 TMPL_ARGS_HAVE_MULTIPLE_LEVELS, for clarity.
3309 (NUM_TMPL_ARGS): New macro.
3310 (add_outermost_template_args): Deal with the case where the outer
3311 args will be completely discarded.
3312 (coerce_template_parms): Use the full set of template arguments
3313 for tsubst'ing. Simplify. Add some asserts. Improve
3314 error messages.
3315 (lookup_template_class): Pass the full set of template arguments
3316 to coerce_template_parms.
3317 (tsubst): Add assertion.
3318 (do_type_instantiation): Don't instantiate member template
3319 classes.
3320
3321 * init.c (build_offset_ref): Deal with a TEMPLATE_ID_EXPR whose
3322 name is a LOOKUP_EXPR, rather than an IDENTIFIER_NODE.
3323
3324 1998-08-03 Jason Merrill <jason@yorick.cygnus.com>
3325
3326 * method.c (set_mangled_name_for_decl): Change return type to void.
3327
3328 * decl.c (lookup_name_real): A namespace-level decl takes priority
3329 over implicit typename. Avoid doing the same lookup twice.
3330
3331 * search.c (dependent_base_p): New fn.
3332 (dfs_pushdecls, dfs_compress_decls): Use it.
3333
3334 * typeck.c (get_member_function_from_ptrfunc): Don't try to handle
3335 virtual functions if the type doesn't have any.
3336
3337 1998-08-03 Mark Mitchell <mark@markmitchell.com>
3338
3339 * decl2.c (grokfield): Don't mangle the name of a TYPE_DECL if it
3340 uses template parameters.
3341
3342 1998-08-02 Mark Mitchell <mark@markmitchell.com>
3343
3344 * cp-tree.def (LOOKUP_EXPR): Document. Remove second argument.
3345 * cp-tree.h (DECL_TI_TEMPLATE): Improve documentation.
3346 * lex.c (do_identifier): Don't use a second argument, or a type,
3347 when building LOOKUP_EXPRs.
3348 (do_identifier): Likewise.
3349 (do_scoped_id): Likewise.
3350 * method.c (hack_identifier): Improve error message.
3351 * pt.c (lookup_template_function): Don't needlessly call
3352 copy_to_permanent or build_min.
3353 (tsubst_copy): Remove #if 0'd code. Tsubst into LOOKUP_EXPRs if
3354 necessary.
3355 (do_decl_instantiation): Improve error message.
3356 * tree.c (mapcar, case LOOKUP_EXPR): Don't be sorry; make a copy.
3357 (build_min): Copy the type to the permanent obstack, too.
3358
3359 1998-08-01 Jason Merrill <jason@yorick.cygnus.com>
3360
3361 * init.c (init_init_processing): Remove BI* handling.
3362 (build_builtin_call): Remove.
3363 (build_builtin_delete_call): New fn.
3364 (build_delete): Use it.
3365
3366 1998-07-31 Mark Mitchell <mark@markmitchell.com>
3367
3368 * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): New macro.
3369 (maybe_check_template_type): New function.
3370 * decl.c (maybe_process_template_type_declaration): New function,
3371 split out from pushtag Call maybe_check_template_type.
3372 (pushtag): Use it. Use PROCESSING_REAL_TEMPLATE_DECL_P.
3373 (xref_tag): Use PROCESSING_REAL_TEMPLATE_DECL_P.
3374 * friend.c (do_friend): Use PROCESSING_REAL_TEMPLATE_DECL_P.
3375 * pt.c (template_class_depth_real): Generalization of ...
3376 (template_class_depth): Use it.
3377 (register_specialization): Use duplicate_decls for duplicate
3378 declarations of specializations.
3379 (maybe_check_template_type): New function.
3380 (push_template_decl_real): Fix comment.
3381 (convert_nontype_argument): Likewise.
3382 (lookup_template_class): Likewise. Avoid an infinite loop on
3383 erroneous code.
3384 (tsubst_friend_function): Fix comment.
3385 (tsubst, case FUNCTION_DECL): Deal with a DECL_TI_TEMPLATE that is
3386 an IDENTIFIER_NODE.
3387 * semantics.c (begin_function_definition): Use
3388 reset_specialization to note that template headers don't apply
3389 directly to declarations after the opening curly for a function.
3390
3391 1998-07-29 Jason Merrill <jason@yorick.cygnus.com>
3392
3393 * decl.c (push_overloaded_decl): Use current_namespace instead of
3394 DECL_CONTEXT (decl) to determine where we go.
3395
3396 * decl.c (lookup_name_real): Fix typo.
3397
3398 1998-07-28 Mark Mitchell <mark@markmitchell.com>
3399
3400 * friend.c (is_friend): Be lenient with member functions to deal
3401 with nested friends.
3402
3403 1998-07-28 Jason Merrill <jason@yorick.cygnus.com>
3404
3405 * class.c (finish_struct_1): Convert integer_zero_node to
3406 ssizetype before passing it to set_rtti_entry.
3407 * typeck2.c (initializer_constant_valid_p): Allow conversion of 0
3408 of any size to a pointer.
3409
3410 1998-07-27 Mark Mitchell <mark@markmitchell.com>
3411
3412 * cp-tree.h (TI_USES_TEMPLATE_PARMS): Remove.
3413 (build_template_decl_overload): Remove.
3414 (set_mangled_name_for_decl): New function.
3415 (innermost_args): Remove is_spec parameter.
3416 (most_specialized, most_specialized_class): Remove declarations.
3417 (lookup_template_class): Add entering_scope parameter.
3418 (maybe_process_partial_specialization): New function.
3419 (finish_template_decl): Likewise.
3420 (finish_template_type): Likewise.
3421 * class.c (finish_struct): Clean up processing of member template
3422 specializations.
3423 * decl.c (pushtag): Fix formatting.
3424 (lookup_tag): Improve handling of pseudo-global levels.
3425 (make_typename_type): Adjust call to lookup_template_class.
3426 (shadow_tag): Use maybe_process_partial_specialization.
3427 (xref_tag): Improve handling of member friends.
3428 (start_function): Call push_nested_class before
3429 push_template_decl. Don't call push_template_decl for
3430 specializations.
3431 * decl2.c (grok_x_components): Don't call xref_tag for
3432 template instantiations. Handle UNION_TYPEs like RECORD_TYPEs.
3433 (grokclassfn): Use set_mangled_name_for_decl.
3434 (arg_assoc_class): Adjust call to innermost_args.
3435 (mark_used): Don't call instantiate_decl for a TEMPLATE_DECL.
3436 * error.c (dump_function_name): Improve printing of template
3437 function names.
3438 * friend.c (is_friend): Don't compare types of decls to determine
3439 friendship, unless flag_guiding_decls.
3440 (make_friend_class): Partial specializations cannot be friends.
3441 (do_friend): Use set_mangled_name_for_decl. Call
3442 push_template_decl_real instead of push_template_decl.
3443 * method.c (build_decl_overload_real): Remove prototype. Give it
3444 external linkage.
3445 (build_overload_identififer): Adjust call to innermost_args.
3446 (build_template_decl_overload): Remove.
3447 (set_mangled_name_for_decl): New function.
3448 * parse.y (.finish_template_type): New non-terminal.
3449 (template_def): Use finish_template_decl. Use template_extdef
3450 instead of extdef.
3451 (template_extdef, template_datadef): New non-terminals, containing
3452 only those rules for things which can be templates.
3453 (datadef): Tidy.
3454 (template_type, self_template_type): Use .finish_template_type.
3455 (named_class_head): Use maybe_process_partial_specialization.
3456 * pt.c (mangle_class_name_for_template): Remove context parameter.
3457 (get_class_bindings): Remove outer_args parameter.
3458 (complete_template_args): Remove.
3459 (add_outermost_template_args): New function.
3460 (register_specialization): Return the specialization.
3461 (unregister_specialization): New function.
3462 (tsubst_template_parms): Likewise.
3463 (most_specialized, most_specialized_class): Prototype here as
3464 static.
3465 (original_template): Rename to most_general_template.
3466 (tsubst_template_parms): New function.
3467 (set_mangled_name_for_template_decl): Likewise.
3468 (TMPL_ARGS_DEPTH): New macro.
3469 (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): Adjust.
3470 (TMPL_ARGS_LEVEL): New macro.
3471 (SET_TMPL_ARGS_LEVEL): Likewise.
3472 (TMPL_ARG): Likewise.
3473 (SET_TMPL_ARG): Likewise.
3474 (TMPL_ARGS_DEPTH): Likewise.
3475 (finish_member_template_decl): Use finish_template_decl.
3476 (maybe_process_partial_specialization): New function, split out
3477 from tsubst.
3478 (inline_needs_template_parms): Use TMPL_PARMS_DEPTH.
3479 (maybe_begin_member_template_processing): Use new macros.
3480 (is_member_template): Likewise.
3481 (is_member_template_class): Likewise.
3482 (add_to_template_args): Likewise. Deal with multiple levels of
3483 args.
3484 (maybe_process_partial_specialization): New function.
3485 (retrieve_specialization): Add consistency check.
3486 (determine_specialization): Return full argument list.
3487 (check_explicit_specialization): Tweak friend handling. Use full
3488 argument lists. Simplify.
3489 (current_template_args): Use new macros.
3490 (push_template_decl_real): Change ill-named mainargs to specargs.
3491 Check that a partial specialization actually specializes at least
3492 one parameter. Improve friend handling. Modify for full
3493 template arguments.
3494 (classtype_mangled_name): Don't mangle the names of
3495 specializations.
3496 (lookup_template_class): Add entering_scope parameter. Use it to
3497 avoid finding a template type when an instantiation is required.
3498 Simplify. Use full template arguments.
3499 (tsubst_friend_function): Use unregister_specialization. Use new
3500 macros. Use full template arguments.
3501 (tsubst_friend_class): Substitute, using tsubst_template_parms,
3502 into the template parameters before passing them to
3503 redeclare_class_template.
3504 (instantiate_class_template): Simplify. Use full template
3505 arguments. Adjust calls to get_class_bindings. Use
3506 SET_IDENTIFIER_TYPE_VALUE where needed. Improve friend handling.
3507 (innermost_args): Use new macros.
3508 (tsubst_aggr_type): New function, split out from tsubst.
3509 (tsubst): Use tsubst_aggr_type, tsubst_template_parms, new calling
3510 conventions for lookup_tmeplate_class. Refine handling of partial
3511 instantiations. Remove calls to complete_template_args.
3512 Simplify. Add consistency checks. Use set_mangled_name_for_decl
3513 and set_mangled_name_for_template_decl.
3514 (tsubst_copy): Use tsubst_aggr_type.
3515 (instantiate_template): Use full template arguments.
3516 (more_specialized): Improve formatting.
3517 (more_specialized_class): Adjust calls to get_class_bindings.
3518 (get_bindings_real): Don't call complete_template_args.
3519 (most_specialized): Don't overwrite input; create a new list.
3520 (most_specialized_class): Use most_general_template.
3521 (regenerate_decl_from_template): Use unregister_specialization.
3522 Use full template arguments.
3523 (instantiate_decl): Use full template arguments.
3524 (set_mangled_name_for_template_decl): New function.
3525 * semantics.c (begin_class_definition): Use
3526 maybe_process_partial_specialization.
3527 (finish_member_class_template): New function.
3528 (finish_template_decl): Likewise.
3529 (finish_template_type): Likewise.
3530 (typeck.c): Don't crash after issuing a compiler_error.
3531 * Makefile.in (CONFLICTS): Adjust; we removed a s/r conflict.
3532
3533 1998-07-27 Jason Merrill <jason@yorick.cygnus.com>
3534
3535 * typeck2.c (build_functional_cast): Handle default-initialization.
3536
3537 * call.c (build_over_call): Pass 1 to popclass.
3538
3539 * parse.y (direct_notype_declarator): Add precedence declaration
3540 to notype_unqualified_id case.
3541 * Makefile.in (EXPECT): Adjust.
3542
3543 * tree.c (ovl_member): Fix for single function in OVL.
3544
3545 1998-07-27 Dave Brolley <brolley@cygnus.com>
3546
3547 * c-lex.c (yylex): Fix boundary conditions in character literal and
3548 string literal loops.
3549
3550 1998-07-24 Jason Merrill <jason@yorick.cygnus.com>
3551
3552 * decl.c (lookup_name_real): OK, do return the from_obj value
3553 unless got_object depends on template parms.
3554
3555 * parse.y (nested_name_specifier_1): Pull out the TYPE_MAIN_VARIANT.
3556
3557 * pt.c (coerce_template_parms): Also complain about local enums.
3558
3559 * cp-tree.h: Add prototype for set_identifier_local_value.
3560 * decl.c (set_identifier_local_value_with_scope): Make static,
3561 prototype.
3562 * search.c (covariant_return_p): Likewise.
3563 * except.c (build_terminate_handler, alloc_eh_object): Likewise.
3564
3565 * call.c (build_method_call): Only pull out the type of a destructor
3566 if it's a template type parm.
3567 * decl.c (lookup_name_real): Never return the from_obj value.
3568
3569 1998-07-23 Jason Merrill <jason@yorick.cygnus.com>
3570
3571 * except.c (process_start_catch_block_old): Call start_decl_1 for
3572 catch parm.
3573 * decl.c (start_decl_1): Avoid duplicate error.
3574
3575 * init.c (expand_default_init): Only perform the initialization if
3576 it will do something.
3577
3578 1998-07-23 H.J. Lu (hjl@gnu.org)
3579
3580 * parse.y (base_class): Check for invalid base class.
3581
3582 1998-07-23 Jason Merrill <jason@yorick.cygnus.com>
3583
3584 * decl2.c (import_export_template): Fold in...
3585 (import_export_class): ...to here. Handle dllimport/export.
3586
3587 * class.c (build_vtable): Pass at_eof to import_export_vtable.
3588 (prepare_fresh_vtable): Likewise.
3589 * decl2.c (import_export_class): Split out...
3590 (finish_prevtable_vardecl): From here.
3591 * class.c (finish_struct_1): Call import_export_class if at_eof.
3592
3593 * decl.c (start_function): #if 0 mysterious code I wrote and have
3594 forgotten why.
3595 * rtti.c (get_tinfo_fn): If this is for a class type, set
3596 DECL_CONTEXT.
3597
3598 1998-07-22 Jason Merrill <jason@yorick.cygnus.com>
3599
3600 * inc/exception: Change terminate and unexpected to ().
3601
3602 * parse.y (named_class_head_sans_basetype_defn): A
3603 named_class_head_sans_basetype followed by '{' or ':' is a defn.
3604
3605 1998-07-21 Jason Merrill <jason@yorick.cygnus.com>
3606
3607 * tree.c (canonical_type_variant): New fn to handle arrays.
3608 * cp-tree.h (CANONICAL_TYPE_VARIANT): Remove.
3609 * pt.c (unify, default case): Also fold arg. Fix array bounds case.
3610 * method.c (process_overload_item): Use build_overload_value for
3611 arrays.
3612
3613 1998-07-20 Dave Brolley <brolley@cygnus.com>
3614
3615 * lex.c (mbchar.h): #include it.
3616 (GET_ENVIRONMENT): New macro.
3617 (init_parse): Set character set based on LANG environment variable.
3618 (real_yylex): Handle multibyte characters in character literals.
3619 (real_yylex): Handle multibyte characters in string literals.
3620
3621 1998-07-19 Jason Merrill <jason@yorick.cygnus.com>
3622
3623 * lex.c (do_identifier): Look for class value even if we don't
3624 have a global value. Do implicit declaration if parsing is 2.
3625 * semantics.c (finish_call_expr): Pass 2 if we're doing Koenig
3626 lookup.
3627
3628 1998-07-19 Mark Mitchell <mark@markmitchell.com>
3629
3630 * decl.c (pushtag): Revert previous change.
3631 * pt.c (lookup_template_class): Don't put out debugging
3632 information for types that use template parameters.
3633
3634 * decl.c (pushtag): Don't put out debugging information for
3635 compiler-generated typedefs.
3636
3637 * error.c (dump_type_real): Don't crash when presented with
3638 intQI_type_node or the like.
3639
3640 * semantics.c (finish_translation_unit): Fix spelling error in
3641 comment.
3642
3643 1998-07-17 Jason Merrill <jason@yorick.cygnus.com>
3644
3645 * decl.c (lookup_name_real): Pull out single function here.
3646 (select_decl): Not here.
3647 (unqualified_namespace_lookup): Use CP_DECL_CONTEXT.
3648
3649 * decl.c (qualify_lookup): Tweak again.
3650
3651 * pt.c (lookup_template_class): Don't mess with the context of the
3652 instantiation.
3653 * decl2.c (current_decl_namespace): Remove special handling for
3654 templates.
3655
3656 * pt.c (tsubst, case FUNCTION_DECL): Fix getting complete args for
3657 a member template specialization.
3658
3659 * tree.c (ovl_member): Use decls_match to compare functions.
3660 * decl.c (decls_match): Check the context of a function.
3661
3662 * parse.y (primary): Use notype_unqualified_id instead of IDENTIFIER
3663 in Koenig lookup support rules.
3664 * semantics.c (finish_call_expr): Handle the new cases.
3665
3666 * typeck.c (build_x_function_call): Handle overloaded methods.
3667
3668 * decl.c (grokvardecl): Don't call build_static_name for extern "C".
3669
3670 1998-07-16 Mark Mitchell <mark@markmitchell.com>
3671
3672 * semantics.c (finish_object_call_expr): Revert previous change.
3673 * call.c (build_new_method_call): Likewise. Instead, convert
3674 TYPE_DECLs to IDENTIFIERs here, in the presence of templates.
3675
3676 1998-07-16 Jason Merrill <jason@yorick.cygnus.com>
3677
3678 * decl.c (qualify_lookup): Handle templates.
3679
3680 * decl2.c (do_using_directive): Don't pass ancestor.
3681 * decl.c (push_using_directive): Calculate ancestor.
3682
3683 * decl2.c (do_nonmember_using_decl): Allow for type shadowing.
3684 * decl.c (pushdecl): Move type shadowing handling from here...
3685 (duplicate_decls): ...to here.
3686 * decl.c (set_identifier_local_value_with_scope): New fn.
3687 (pushdecl): Use it.
3688 (set_identifier_local_value, lookup_type_current_level): New fns.
3689 * decl2.c (do_local_using_decl): Handle types and binding level
3690 stuff properly.
3691
3692 * init.c (build_offset_ref): Don't call mark_used on an OVERLOAD.
3693 * decl.c (select_decl): Extract a lone function from an OVERLOAD.
3694 (lookup_namespace_name): Likewise.
3695 * typeck.c (build_unary_op): Not here anymore.
3696
3697 * decl2.c (do_class_using_decl): Make sure we get an identifier.
3698 * class.c (handle_using_decl): Ignore TYPE_DECLs.
3699
3700 * decl.c (qualify_lookup): New fn.
3701 (lookup_name_real): Use it.
3702
3703 1998-07-16 Martin v. Loewis <loewis@informatik.hu-berlin.de>
3704
3705 * decl2.c (add_using_namespace): When directly using a namespace
3706 that was indirect before, promote it.
3707
3708 * cp-tree.h (LOOKUP_PREFER_TYPES, LOOKUP_PREFER_NAMESPACES,
3709 LOOKUP_PREFER_BOTH, LOOKUP_NAMESPACES_ONLY, LOOKUP_TYPES_ONLY,
3710 LOOKUP_QUALIFIERS_ONLY, LOOKUP_TEMPLATES_EXPECTED): New macros.
3711 * decl.c (select_decl): Replace two flag parameters by one.
3712 (unqualified_namespace_lookup): Likewise, pass flag.
3713 (lookup_flags): New function.
3714 (lookup_name_real): Compute flags, pass them.
3715 (lookup_namespace_name): Call with zero-flag.
3716 * decl2.c (ambiguous_decl): Add flag parameter, complain only
3717 according to flags.
3718 (lookup_using_namespace, qualified_lookup_using_namespace):
3719 Add flag parameter, pass them through.
3720 * lex.c (do_scoped_id): Call with zero-flag.
3721
3722 1998-07-16 Jason Merrill <jason@yorick.cygnus.com>
3723
3724 * typeck.c (convert_for_assignment): Use comptypes.
3725
3726 1998-07-16 Mark Mitchell <mark@markmitchell.com>
3727
3728 * semantics.c (finish_object_call_expr): Move test for the
3729 function called being a TYPE_DECL to ...
3730 * call.c (build_new_method_call): Here.
3731
3732 1998-07-15 Jason Merrill <jason@yorick.cygnus.com>
3733
3734 * decl2.c (arg_assoc_class): Also look at template arguments, if any.
3735 (arg_assoc): Handle error_mark_node and multiple levels of TREE_LIST.
3736
3737 * lex.c (looking_for_typename): Don't initialize.
3738
3739 * decl2.c (ambiguous_decl): Clarify error message.
3740
3741 * decl.c (push_using_directive): Iterate over namespaces used
3742 indirectly.
3743
3744 1998-07-15 Martin v. Löwis <loewis@informatik.hu-berlin.de>
3745
3746 * decl2.c (add_using_namespace): Iterate over namespaces used
3747 indirectly.
3748
3749 * decl.c (lookup_name_real): Accept namespace aliases as locals.
3750 (cat_namespace_levels): Ignore aliases.
3751 (duplicate_decls): Ignore duplicate aliases.
3752 * decl2.c (do_namespace_alias): Process block level namespace
3753 aliases. Store alias with pushdecl. Remove odr errors.
3754 * parse.y (namespace_alias): New non-terminal.
3755 (extdef): Use it.
3756
3757 1998-07-15 Jason Merrill <jason@yorick.cygnus.com>
3758
3759 * decl2.c (arg_assoc_type): Handle METHOD_TYPE like FUNCTION_TYPE.
3760 Handle TEMPLATE_TYPE_PARM.
3761 (arg_assoc): Rewrite.
3762
3763 * pt.c (complete_template_args): Don't look at the context unless
3764 we have to.
3765
3766 * method.c (build_decl_overload_real): Fix namespace handling.
3767
3768 * typeck.c (build_unary_op): Extract a lone function from an
3769 OVERLOAD.
3770
3771 * call.c (build_scoped_method_call): Handle getting a namespace
3772 for basetype in a destructor call.
3773 (check_dtor_name): Handle enums.
3774
3775 * parse.y (using_directive): New nonterminal.
3776 (extdef, simple_stmt): Use it.
3777
3778 1998-07-14 Martin von Löwis <loewis@informatik.hu-berlin.de>
3779
3780 * decl2.c (add_function): Move error message ...
3781 (arg_assoc_namespace): ... from here.
3782
3783 1998-07-14 Jason Merrill <jason@yorick.cygnus.com>
3784
3785 * parse.y (namespace_qualifier): Fix multiple level handling.
3786 * decl2.c (namespace_ancestor): Use CP_DECL_CONTEXT.
3787 (arg_assoc): Don't skip the first argument of a function.
3788
3789 Tue Jul 14 20:09:22 1998 Jeffrey A Law (law@cygnus.com)
3790
3791 * search.c (my_tree_cons): Clean up.
3792
3793 1998-07-14 Jason Merrill <jason@yorick.cygnus.com>
3794
3795 * call.c (joust): Don't warn about "confusing" conversions to the
3796 same type.
3797
3798 1998-07-14 Martin von Löwis <loewis@informatik.hu-berlin.de>
3799
3800 * class.c (push_nested_class): Complain about namespaces.
3801 * decl.c (start_decl): Enter the object's namespace.
3802 (cp_finish_decl): Leave it.
3803 (grokdeclarator): Likewise.
3804 * decl2.c (check_decl_namespace): New function.
3805 (finish_file): Call it.
3806 * parse.y (complex_direct_notype_declarator): Set complexity
3807 of namespace-qualified ids to -1, enter the namespace.
3808
3809 * method.c (build_template_decl_overload): Expect _DECL as first
3810 parameter. Put context temporarily into current_namespace.
3811 * pt.c (check_explicit_specialization): Change caller.
3812 (tsubst): Likewise.
3813
3814 * init.c (build_offset_ref): Call mark_used and
3815 convert_from_reference for namespace members.
3816
3817 Mon Jul 13 23:25:28 1998 Martin von Löwis <loewis@informatik.hu-berlin.de>
3818
3819 * search.c (my_tree_cons): The bitfield is at index 2.
3820
3821 Mon Jul 13 17:21:01 1998 Nick Clifton <nickc@cygnus.com>
3822
3823 * lang-options.h: Format changed to work with new --help support
3824 in gcc/toplev.c
3825
3826 1998-07-12 Martin von Löwis <loewis@informatik.hu-berlin.de>
3827
3828 * decl2.c (build_expr_from_tree): Change calls of do_identifier.
3829 Do Koenig lookup in CALL_EXPR.
3830 (arg_assoc): Handle error_mark.
3831 * lex.c (is_global): New function.
3832 (do_identifier): Expect arguments for Koenig lookup.
3833 * parse.y (primary): Add rules for calls of unqualified function calls.
3834 (do_id): Change call of do_identifier.
3835 * pt.c (finish_stmt_expr): Likewise.
3836 * semantics.c (finish_id_expr): Likewise.
3837 (finish_call_expr): Add integer parameter to indicate
3838 argument-dependent lookup.
3839
3840 * decl.c (struct binding_level): New field using_directives.
3841 (push_using_decl): Not sorry anymore.
3842 (push_using_directive): New function.
3843 (lookup_tag): Use CP_DECL_CONTEXT to iterate.
3844 (unqualified_namespace_lookup): New function, code from ...
3845 (lookup_name_real): ... here.
3846 * decl2.c (lookup_using_namespace): Pass using list instead of
3847 initial scope.
3848 (validate_nonmember_using_decl): New function.
3849 (do_nonmember_using_decl): New function.
3850 (do_toplevel_using_decl): Use them.
3851 (do_local_using_decl): New function.
3852 (do_using_directive): Support block-level directives.
3853 * parse.y (simple_stmt): Support using declarations and
3854 directives.
3855 (namespace_qualifier, namespace_using_decl): New non-terminals.
3856
3857 * xref.c (classname): New function.
3858 (GNU_xref_hier): Change class and base parameters to tree.
3859 * decl.c (xref_baseypes): Change caller.
3860 * friend.c (make_friend_class): Likewise.
3861
3862 1998-07-12 Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
3863
3864 * typeck.c (comptypes, case TEMPLATE_TEMPLATE_PARM): Add parameter
3865 comparison.
3866
3867 * pt.c (for_each_template_parm, case TEMPLATE_DECL): If it is a
3868 template template parameter, record its use.
3869 (for_each_template_parm, case TEMPLATE_TEMPLATE_PARM): Traverse
3870 its template arguments if exists.
3871
3872 * pt.c (coerce_template_template_parms): New function equivalent
3873 to coerce_template_parms when IS_TMPL_PARM is true.
3874 (coerce_template_parms): Use it. Remove the IS_TMPL_PARM parameter,
3875 all callers changed.
3876
3877 (coerce_template_parms): Access ARGLIST properly when creating a
3878 new vector. Only accept implicit TYPE_DECL as valid argument for
3879 a template template parameter when it is a base class of
3880 current_class_type. Don't display error message when COMPLAIN is
3881 false.
3882
3883 1998-07-12 Klaus Kaempf (kkaempf@progis.de)
3884
3885 * repo.c (get_base_filename): Use file_name_nondirectory.
3886 (open_repo_file): Ditto.
3887 * cp-tree.h (file_name_nondirectory): Add prototype.
3888
3889 1998-07-12 Jason Merrill <jason@yorick.cygnus.com>
3890
3891 * friend.c (do_friend): Pull the identifier out of declarator.
3892 Use cp_error and friends.
3893 * decl2.c (qualified_lookup_using_namespace): Fix call to
3894 purpose_member.
3895 * decl.c (lookup_name_real): Don't call complete_type on a namespace.
3896 (grokvardecl): Use DECL_CLASS_SCOPE_P.
3897 * cvt.c (convert_pointer_to_real): Check for error_mark_node sooner.
3898 * class.c (warn_hidden): Fix for OVERLOAD.
3899 From grahams@rcp.co.uk:
3900 * cp-tree.h (DEFARG_NODE_CHECK): New macro.
3901 (DEFARG_LENGTH, DEFARG_POINTER): Use it.
3902
3903 Sun Jul 12 01:20:57 1998 Jeffrey A Law (law@cygnus.com)
3904
3905 * g++.1 (-traditional): Remove duplicated documentation.
3906
3907 1998-07-11 Mark Mitchell <mark@markmitchell.com>
3908
3909 * method.c (flush_repeats): Add nrepeats parameter.
3910 (issue_nrepeats): Likewise.
3911 (is_back_referenceable_type): New function. Don't back-reference
3912 TEMPLATE_TYPE_PARMs as well as simple types like integers.
3913 (build_mangled_name_for_type): Likewise.
3914 (build_mangled_name_for_type_with_Gcode): Likewise.
3915 (lasttype): Remove.
3916 (nrepeats): Likewise.
3917 (Nrepeats): Likewise.
3918 (start_squangling): Don't clear the variables removed above.
3919 (end_squangling): Likewise.
3920 (flush_repeats): Tidy. Use nrepeats parameter rather than
3921 Nrepeats global.
3922 (issue_nrepeats): Likewise, but with nrepeats global. Use
3923 is_backreferenceable_type.
3924 (build_overload_nested_name): Tidy. Add comment. Use
3925 build_mangled_name_for_type.
3926 (build_underscore_int): Comment.
3927 (build_overload_scope_ref): Use build_mangled_name_for_type.
3928 (build_overload_int): Likewise.
3929 (build_template_template_parm_names): Tidy.
3930 (build_template_parm_names): Use build_mangled_name_for_type.
3931 (build_overload_identifier): Add comments.
3932 (build_mangled_name_for_type_with_Gcode): Split out from
3933 build_mangled_name.
3934 (build_mangled_name_for_type): Use it.
3935 (build_mangled_name): Rework to use build_mangled_name_for_type
3936 and to not use global nrepeats/Nrepeats. Tidy.
3937 (process_modifiers): Tidy.
3938 (check_btype): Use is_backreferenceable_type. Add comment.
3939 Rename `node' to `type'.
3940 (process_overload_item): Set numeric_output_need_bar here.
3941 Use build_mangled_name_for_type. Tidy.
3942 (build_decl_overload_real): Tidy. Don't use Nrepeats. Use
3943 build_mangled_name_for_type.
3944
3945 * pt.c (push_template_decl_real): Don't look at DECL_TEMPLATE_INFO
3946 for TYPE_DECLs.
3947
3948 1998-07-08 Vladimir N. Makarov <vmakarov@cygnus.com>
3949
3950 * cp-tree.h (warn_long_long): Define.
3951 * decl.c (grokdeclarator): Add flag `warn_long_long' as guard for
3952 warning "ANSI C++ does not support `long long'".
3953 * decl2.c (warn_long_long): Define.
3954 (lang_decode_option): Parse -Wlong-long, -Wno-long-long options.
3955
3956 1998-07-07 Jason Merrill <jason@yorick.cygnus.com>
3957
3958 * decl.c (xref_tag): Handle attributes between 'class' and name.
3959 * parse.y (aggr): Likewise.
3960 * semantics.c (finish_class_definition): Likewise.
3961 * Makefile.in (EXPECTED): Adjust.
3962
3963 * cp-tree.h: Declare flag_optional_diags and warn_multichar.
3964 * decl2.c: Define them.
3965 (lang_decode_option): Handle them.
3966 * lang-options.h: Add -foptional-diags.
3967 * class.c (finish_struct): Don't complain about multiple meanings of
3968 name if -fno-optional-diags.
3969 * decl.c (pushdecl_class_level): Likewise.
3970 * lex.c (real_yylex): Check warn_multichar.
3971
3972 1998-07-06 Jason Merrill <jason@yorick.cygnus.com>
3973
3974 * decl.c (lookup_tag): Use CP_DECL_CONTEXT.
3975
3976 * tree.c (make_binfo): Fix length.
3977
3978 1998-06-30 Benjamin Kosnik <bkoz@bliss.nabi.net>
3979
3980 * decl2.c (lang_decode_option): Remove warn_template_debugging.
3981 * lang-options.h: Ditto.
3982
3983 Mon Jun 29 20:17:40 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
3984
3985 * except.c (build_eh_type_type_ref): Remove unused variable `susp'.
3986 (process_start_catch_block): Likewise for variables
3987 `false_label_rtx', `call_rtx' and `return_value_rtx'.
3988
3989 1998-06-29 Brendan Kehoe <brendan@cygnus.com>
3990
3991 * tree.c (build_srcloc): Make sure we allocate this node on the
3992 permanent obstack.
3993
3994 Sat Jun 27 23:34:18 1998 Fred Fish <fnf@ninemoons.com>
3995
3996 * g++spec.c (NEED_MATH_LIBRARY): Define to 1 if not already defined.
3997 (lang_specific_driver): Initialize need_math with NEED_MATH_LIBRARY.
3998 (lang_specific_driver): Only add -lm automatically if need_math is
3999 nonzero.
4000
4001 Sat Jun 27 12:22:56 1998 Jeffrey A Law (law@cygnus.com)
4002
4003 * Make-lang.in (g++): Depend on mkstemp.o. Link in mkstemp.o
4004
4005 Sat Jun 27 07:36:09 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4006
4007 * Makefile.in (EXPR_H): New dependency variable.
4008 (decl2.o): Depend on $(EXPR_H).
4009 (typeck.o): Likewise.
4010 (init.o): Likewise.
4011 (expr.o): Likewise.
4012
4013 1998-06-25 Benjamin Kosnik <bkoz@lisa.cygnus.com>
4014
4015 * decl.c (start_enum): Put local enums on permanent_obstack.
4016
4017 1998-06-25 Mark Mitchell <mark@markmitchell.com>
4018
4019 * cp-tree.h (c_get_alias_set): Declare.
4020 * decl.c (init_decl_processing): Set lang_get_alias_set.
4021
4022 1998-06-25 Andrew MacLeod <amacleod@cygnus.com>
4023
4024 * cp-tree.h (mark_all_runtime_matches): Add function prototype.
4025 * except.c (mark_all_runtime_matches): Set TREE_SYMBOL_REFERENCED
4026 flag for all function decls which are in the exception table.
4027 * exception.cc (__cplus_type_matcher): Check for CATCH_ALL_TYPE match.
4028 * decl2.c (finish_file): Call mark_all_runtime_matches to make sure
4029 code is emitted for any referenced rtti function.
4030
4031 1998-06-25 Dave Brolley <brolley@cygnus.com>
4032
4033 * lang-specs.h: Use new | syntax to eliminate
4034 string concatenation.
4035
4036 1998-06-25 Jason Merrill <jason@yorick.cygnus.com>
4037
4038 * cp-tree.h (CP_DECL_CONTEXT): New macro.
4039 * decl2.c (is_namespace_ancestor, lookup_using_namespace): Use it.
4040 * method.c (build_overload_nested_name): Likewise.
4041 * sig.c (build_signature_pointer_or_reference_type): Don't set
4042 DECL_CONTEXT.
4043
4044 1998-06-24 Martin v. Löwis <loewis@informatik.hu-berlin.de>
4045
4046 Set DECL_CONTEXT for globals to NULL_TREE instead of global_namespace.
4047 * cp-tree.h (FROB_CONTEXT): New macro.
4048 (DECL_MAIN_P): ::main should have a DECL_CONTEXT of NULL_TREE.
4049 * decl.c (namespace_binding): Replace NULL_TREE with
4050 global_namespace.
4051 (set_namespace_binding, pop_namespace, lookup_name_real): Likewise.
4052 * decl2.c (is_namespace_ancestor, lookup_using_namespace):
4053 Likewise.
4054 * decl.c (pushtag): Use FROB_CONTEXT.
4055 (pushdecl, make_typename_type, define_function, grokdeclarator):
4056 Likewise.
4057 * decl2.c (set_decl_namespace, do_namespace_alias): Likewise.
4058 * pt.c (push_template_decl_real, lookup_template_class, tsubst):
4059 Likewise.
4060 * decl2.c (decl_namespace): Return global_namespace if no context.
4061 * method.c (build_overload_nested_name): Expect null as context.
4062 * pt.c (mangle_class_name_for_template): Do nothing for null
4063 contexts.
4064 (lookup_template_class): Allow for null id_context.
4065
4066 1998-06-25 Richard Henderson <rth@cygnus.com>
4067
4068 * method.c (emit_thunk): Set current_function_is_thunk for the
4069 ASM_OUTPUT_MI_THUNK case as well.
4070
4071 1998-06-23 Andrew MacLeod <amacleod@cygnus.com>
4072
4073 * exception.cc (__cplus_type_matcher): Get a match_info pointer
4074 instead of an exception table entry as a parameter.
4075
4076 1998-06-23 Andrew MacLeod <amacleod@cygnus.com>
4077
4078 * parse.y (function_try_block): Don't call start_catch_handler.
4079 * except.c (call_eh_info): Remove coerced field from declaration.
4080 (build_eh_type_type_ref): New function to create an address of a
4081 rtti function for the new style exception tables.
4082 (expand_start_catch_block): Split function, this contains the
4083 common part.
4084 (process_start_catch_block_old): New function to perform the rest
4085 of expand_start_catch_block under old style exceptions.
4086 (process_start_catch_block_old): New function to perform the rest
4087 of expand_start_catch_block under new style exceptions.
4088 (expand_end_catch_block): Only pop the false label off the stack under
4089 the old style of exceptions.
4090 * semantics.c (finish_try_block): Don't call start_catch_handler.
4091 * exception.cc (struct cp_eh_info): Add original_value field.
4092 (__cplus_type_matcher): Perform type matching on the original exception
4093 value, and if we have a match, set the current value.
4094 (__cp_push_exception): Set the original expcetion value.
4095
4096 1998-06-23 Jason Merrill <jason@yorick.cygnus.com>
4097
4098 * call.c (joust): Fix confusing conversion warning.
4099
4100 * call.c (build_op_delete_call): Add placement parm. Check
4101 LOOKUP_SPECULATIVELY.
4102 * cp-tree.h, decl2.c, init.c: Adjust.
4103 * decl.c (finish_function): Use it.
4104
4105 * pt.c (tsubst): Diagnose creating void fields or variables.
4106
4107 Mon Jun 22 08:50:26 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4108
4109 * call.c (build_scoped_method_call): Remove unused variable `tmp'.
4110
4111 * cp-tree.h (check_dtor_name): Add prototype.
4112
4113 * init.c (expand_member_init): Remove unused variables
4114 `ptr_type_node', `parm' and `rval'.
4115
4116 * ptree.c (print_lang_type): Use HOST_WIDE_INT_PRINT_DEC specifier
4117 in call to fprintf.
4118 (lang_print_xnode): Likewise.
4119
4120 * typeck2.c (enum_name_string): Cast argument to sprintf to long
4121 and use %ld specifier.
4122
4123 * xref.c (GNU_xref_end_scope): Use HOST_WIDE_INT_PRINT_DEC
4124 specifier in call to fprintf.
4125 (GNU_xref_member): Cast argument to sprintf to int.
4126
4127 Fri Jun 19 23:22:42 1998 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
4128
4129 * typeck2.c (pop_init_level): Warn about implicit zero initialization
4130 of struct members.
4131
4132 Thu Jun 18 09:32:32 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4133
4134 * cp-tree.h: Prototype function `check_java_method'.
4135
4136 1998-06-17 Jason Merrill <jason@yorick.cygnus.com>
4137
4138 * class.c (finish_struct): Make conflicting use of id a pedwarn.
4139 * decl.c (pushdecl_class_level): Likewise.
4140
4141 1998-06-17 Mark Mitchell <mark@markmitchell.com>
4142
4143 * pt.c (convert_nontype_argument): Issue an error when presented
4144 with an integer (real) constant that cannot be simplified to an
4145 INT_CST (REAL_CST).
4146
4147 * cp-tree.h (c_get_alias_set): Remove declaration added in
4148 1998-06-13 change that should never have been checked in.
4149
4150 1998-06-17 Jason Merrill <jason@yorick.cygnus.com>
4151
4152 * typeck.c (build_binary_op_nodefault): Change % in format strings
4153 to %%.
4154
4155 * decl.c (grokvardecl): Don't build_static_name for decls that
4156 aren't at namespace scope.
4157
4158 * init.c (perform_member_init): Catch default-initialization of
4159 references.
4160
4161 1998-06-17 Mark Mitchell <mark@markmitchell.com>
4162
4163 * errfn.c (cp_thing): Handle the `%%' formatting sequence.
4164
4165 1998-06-17 Jason Merrill <jason@yorick.cygnus.com>
4166
4167 * method.c (hack_identifier): Complain about getting a namespace
4168 or class template.
4169 * typeck.c (decay_conversion): Remove check for namespaces.
4170 * typeck2.c (incomplete_type_error): Likewise.
4171 * parse.y (template_arg): Add PTYPENAME expansion.
4172
4173 1998-06-16 Andrew MacLeod <amacleod@cygnus.com>
4174
4175 * decl.c (grokvardecl): Don't build external assembler names for
4176 TYPENAMEs in other namespaces as there is no declarator.
4177 * error.c (cp_file_of, cp_line_of): Don't extract file or line number
4178 info from DECL_CONTEXT if it is NULL.
4179
4180 1998-06-16 Jason Merrill <jason@yorick.cygnus.com>
4181
4182 * call.c (check_dtor_name): Split out.
4183 (build_scoped_method_call): Use it.
4184 (build_method_call): Use it.
4185 * init.c (build_offset_ref): Use it.
4186
4187 * typeck.c (build_static_cast): Fix handling of pointers to members.
4188
4189 * decl.c (finish_function): Just return nothing from a constructor.
4190 * typeck.c (c_expand_return): Complain about returning a void
4191 expression from a destructor.
4192
4193 1998-06-13 Mark Mitchell <mark@markmitchell.com>
4194
4195 * class.c (alter_access): Accept a BINFO explaining how to get
4196 from the entity whose accessed is being altered to the type doing
4197 the altering.
4198 (handle_using_decl): New function containing code split out from ...
4199 (finish_struct_1): Here.
4200
4201 * cp-tree.h (complete_type_or_else): Declare.
4202 * init.c (build_new_1, build_delete): Use it.
4203 * typeck.c (require_complete_type): Use complete_type, rather than
4204 expanding it inline.
4205 (complete_type_or_else): New function.
4206 (build_component_ref): Use it.
4207 (pointer_int_sum): Make sure the type pointed to is complete.
4208 (pointer_diff): Likewise.
4209
4210 * pt.c (for_each_template_parm): Traverse the TYPE_CONTEXT for
4211 types.
4212
4213 * search.c (get_matching_virtual): Note that member templates
4214 cannot override virtual functions.
4215
4216 1998-06-12 Brendan Kehoe <brendan@cygnus.com>
4217
4218 * pt.c (check_explicit_specialization): If DECLARATOR turned into
4219 an error_mark_node from lookup_template_function, return the same.
4220 (determine_specialization): Also make sure TEMPLATE_ID isn't an
4221 error_mark_node, before we try to read its operands.
4222 * decl.c (grokdeclarator): If we got an error_mark_node from
4223 check_explicit_specialization, just return it right back.
4224
4225 1998-06-12 Mark Mitchell <mark@markmitchell.com>
4226
4227 * class.c (instantiate_type): Don't treat template-ids that don't
4228 specify any template arguments as equivalent to ordinary
4229 identifiers. Use OFFSET_REF instead of SCOPE_REF to refer to
4230 pointer-to-members for member templates. Tidy slightly.
4231 * cp-tree.def (TEMPLATE_ID_EXPR): Revise documentation.
4232 * init.c (build_offset_ref): Handle template-ids like ordinary
4233 identifiers, for the most part, but store a TEMPLATE_ID_EXPR in the
4234 offset part of the OFFSET_REF.
4235 * typeck.c (build_unary_op): Change check for unknown types to
4236 look for OFFSET_REFs, not SCOPE_REFs.
4237
4238 1998-06-11 Mark Mitchell <mark@markmitchell.com>
4239
4240 * pt.c (is_member_template_class): New function.
4241 (push_template_decl_real): Use it.
4242
4243 1998-06-11 Benjamin Kosnik <bkoz@elmo.cygnus.com>
4244
4245 * friend.c (do_friend): Add support for nested classes using
4246 member functions of the enclosing class as friends.
4247
4248 1998-06-10 Mark Mitchell <mark@markmitchell.com>
4249
4250 * call.c (convert_default_arg): Make global, not static.
4251 (convert_arg_for_ellipsis): Split out from ...
4252 (build_over_call): Here.
4253 * cp-tree.h (convert_default_arg); Declare.
4254 (convert_arg_to_ellipsis): Likewise.
4255 (do_member_init): Remove.
4256 * init.c (do_member_init): Remove; this code is dead.
4257 (expand_member_init): Remove much of this code; it is dead.
4258 * typeck.c (convert_arguments): Use convert_default_arg and
4259 convert_arg_for_ellipsis, rather than duplicating here.
4260
4261 * call.c (convert_like): Don't fail silently if
4262 build_user_type_conversion fails. Always return error_mark_node
4263 for failure.
4264
4265 1998-06-10 Jason Merrill <jason@yorick.cygnus.com>
4266
4267 * search.c (covariant_return_p): Complain about ambiguous base.
4268
4269 * typeck.c (build_component_ref): Diagnose ref to nested type.
4270
4271 1998-06-10 Brendan Kehoe <brendan@cygnus.com>
4272
4273 * decl.c (grokparms): Check that INIT isn't an error_mark_node
4274 before giving error about invalid type for default arg.
4275
4276 1998-06-10 Jason Merrill <jason@yorick.cygnus.com>
4277
4278 * call.c (build_method_call): Fix thinko.
4279
4280 1998-06-10 Dave Brolley <brolley@cygnus.com>
4281
4282 * decl2.c (lang_decode_option): New argc/argv interface.
4283 * cp-tree.h (lang_decode_option): New argc/argv interface.
4284 * lang-specs.h (default_compilers): Only call cpp if -E, -M or -MM is
4285 specified for cpplib-enabled compilers.
4286 * lex.c (lang_init): Don't check_newline for cpplib.
4287 (init_parse): Don't initialize cpplib here.
4288
4289 1998-06-10 Brendan Kehoe <brendan@cygnus.com>
4290
4291 * typeck.c (build_component_ref): Make sure FIELD has a lang_specific
4292 piece before checking DECL_MUTABLE_P.
4293
4294 1998-06-10 John Carr <jfc@mit.edu>
4295
4296 * tree.c (debug_binfo): Make printf format match arguments.
4297
4298 * error.c (OB_PUTI): Make printf format match arguments.
4299
4300 1998-06-10 Jason Merrill <jason@yorick.cygnus.com>
4301
4302 * init.c (perform_member_init): Handle default-initialization.
4303
4304 * except.c (build_throw): Handle throwing NULL.
4305
4306 * typeck.c (build_x_function_call): Use resolve_offset_ref.
4307
4308 * search.c (compute_access): Only strip an anonymous union
4309 for a FIELD_DECL.
4310
4311 * call.c (add_builtin_candidates): Tweak.
4312
4313 * cvt.c (build_expr_type_conversion): Restore code for conversion
4314 from class types.
4315 * decl2.c (delete_sanity): Use it. Clean up.
4316
4317 * typeck.c (comp_ptr_ttypes_real): Fix cv-qual comparisons.
4318
4319 1998-06-10 Branko Cibej <branko.cibej@hermes.si>
4320
4321 * typeck.c (c_expand_return): Don't warn about void expressions on
4322 return statements in functions returning void.
4323
4324 1998-06-09 Mark Mitchell <mark@markmitchell.com>
4325
4326 * pt.c (fn_type_unification): Revise documentation. Tidy.
4327 (type_unification): Likewise.
4328
4329 1998-06-09 Andrew MacLeod <amacleod@cygnus.com>
4330
4331 * semantics.c (finish_try_block): Rename expand_start_catch, and delete
4332 expand_end_catch.
4333 * parse.y (function_try_block): Rename expand_start_catch, and delete
4334 expand_end_catch.
4335 * except.c (expand_end_eh_spec): Rename expand_start_catch, and delete
4336 expand_end_catch.
4337
4338 1998-06-09 Jason Merrill <jason@yorick.cygnus.com>
4339
4340 * search.c (lookup_member): New fn.
4341 * class.c (finish_struct_1): Use it.
4342 * decl.c (lookup_name_real): Use it.
4343
4344 Mon Jun 8 20:45:52 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4345
4346 * Makefile.in (decl2.o): Depend on dwarf2out.h and dwarfout.h.
4347
4348 * cp-tree.h: Add prototype for `maybe_print_template_context' and
4349 `maybe_make_one_only'.
4350
4351 * decl.c (auto_function): Remove unused variable `decl'.
4352
4353 * decl2.c: Include dwarf2out.h and dwarfout.h.
4354
4355 * lex.c: Remove redundant declarations of `set_float_handler' and
4356 `asm_out_file'.
4357
4358 1998-06-08 Andrew MacLeod <amacleod@cygnus.com>
4359
4360 * except.c (init_exception_processing): Remove NEW_EH_MODEL compile
4361 time flag. Call __cp_eh_info instead of __cp_exception_info.
4362 * exception.cc (struct cp_eh_info): Remove NEW_EH_MODEL flag.
4363 (__cp_exception_info): Return offset into cp_eh_info structure to
4364 match what use to be the start of this structure.
4365 (__cp_eh_info): New function to return a pointer to cp_eh_info struct.
4366 (__cplus_type_matcher, __cp_push_exception): Remove NEW_EH_MODEL
4367 compile time flag.
4368 (__uncatch_exception, __check_eh_spec, std::uncaught_exception): Call
4369 __cp_eh_info instead of __cp_exception_info.
4370
4371 1998-06-08 Jason Merrill <jason@yorick.cygnus.com>
4372
4373 * decl.c (cp_finish_decl): Disable inlining of extern inlines
4374 with static variables.
4375
4376 1998-06-08 Mark Mitchell <mark@markmitchell.com>
4377
4378 * init.c (build_offset_ref): Correct previous change to use build,
4379 not build_min.
4380
4381 1998-06-07 Mark Mitchell <mark@markmitchell.com>
4382
4383 * class.c (instantiate_type): Handle pointer-to-members where the
4384 member is a template.
4385 * init.c (build_offset_ref): Likewise.
4386 * typeck.c (build_unary_op): Likewise.
4387
4388 1998-06-07 Richard Henderson <rth@cygnus.com>
4389
4390 * lex.c (lang_init_options): New function.
4391 (lang_init): Remove flag_exceptions == 2 hack.
4392
4393 1998-06-05 Jason Merrill <jason@yorick.cygnus.com>
4394
4395 * search.c (envelope_add_decl): Tweak for implicit typename.
4396
4397 * call.c (joust): Also warn about confusing conversion op/constructor
4398 overload resolution.
4399
4400 * spew.c (yylex): Also return the TYPE_DECL if got_object.
4401 Don't clear got_object after '~'.
4402 * call.c (build_scoped_method_call): Tweak destructor handling.
4403 (build_method_call): Likewise.
4404 * pt.c (tsubst_copy, case METHOD_CALL_EXPR): Don't mess with
4405 TYPE_MAIN_VARIANT for destructors.
4406 * semantics.c (finish_object_call_expr): Complain about calling a
4407 TYPE_DECL.
4408
4409 1998-06-05 Per Bothner <bothner@cygnus.com>
4410
4411 * g++spec.c (lang_specific_pre_link, lang_specific_extra_ofiles):
4412 Define - update needed by gcc.c change.
4413
4414 1998-06-05 Jason Merrill <jason@yorick.cygnus.com>
4415
4416 * error.c (cp_printers): Use 'o' instead of '_' for the null entry.
4417
4418 1998-06-05 Martin v. Loewis <loewis@informatik.hu-berlin.de>
4419
4420 * cp-tree.h (DECL_NAMESPACE_ALIAS, ORIGINAL_NAMESPACE): Declare.
4421 * decl.c (lookup_name_real): Add namespaces_only parameter.
4422 If set, return only NAMESPACE_DECLs.
4423 (select_decl): Likewise.
4424 (identifier_type_value): Give additional parameter.
4425 (lookup_name_nonclass): Likewise.
4426 (lookup_name): Likewise.
4427 (find_binding): Skip namespace aliases.
4428 (binding_for_name): Likewise.
4429 (push_namespace): Check for namespace aliases.
4430 (lookup_name_namespace_only): New function.
4431 (begin_only_namespace_names, end_only_namespace_names): New functions.
4432 * decl2.c (set_decl_namespace): Skip namespace aliases.
4433 (do_using_directive): Likewise.
4434 (do_namespace_alias): Produce namespace aliases, fix alias
4435 redeclaration.
4436 * error.c (dump_decl): Support SCOPE_REF.
4437 * parse.y (extdef): Wrap lookup with namespace_only for namespace
4438 aliases and using declarations.
4439
4440 1998-06-04 Jason Merrill <jason@yorick.cygnus.com>
4441
4442 * tree.c (really_overloaded_fn): Only see through one TREE_LIST.
4443
4444 * error.c (dump_expr): Clean up NEW_EXPR case.
4445
4446 1998-06-04 Martin von Löwis <loewis@informatik.hu-berlin.de>
4447
4448 Suggested by Brendan Kehoe
4449 * decl2.c (do_toplevel_using_decl): When decl is a TYPE_DECL,
4450 treat it as using ::decl.
4451
4452 * decl2.c (arg_assoc_type): Process unknown_type_node and OFFSET_TYPE.
4453
4454 * tree.c (mapcar): Support NEW_EXPR.
4455
4456 * error.c (dump_expr): Support NEW_EXPR.
4457
4458 1998-06-03 Jason Merrill <jason@yorick.cygnus.com>
4459
4460 * method.c (make_thunk): Use overload machinery to make name.
4461 * search.c (covariant_return_p): New fn.
4462 (get_matching_virtual): Use it.
4463
4464 * init.c (build_new_1): Fix check for void.
4465
4466 1998-06-01 Per Bothner <bothner@cygnus.com>
4467
4468 * cp-tree.h (TYPE_FOR_JAVA): New macro.
4469 * decl.c, cp-tree.h (java_byte_type_node, java_short_type_node,
4470 java_int_type_node, java_long_type_node, java_float_type_node,
4471 java_double_type_node, java_char_type_node, java_boolean_type_node):
4472 New "primitive" types, with predefined names __java_byte etc.
4473 (record_builtin_java_type): New function.
4474 (init_decl_processing): Make Java types with record_builtin_java_type.
4475 (pushtag, grokdeclarator): Set TYPE_FOR_JAVA if in extern "JAVA".
4476 (xref_baseypes): If base class was TYPE_FOR_JAVA, so is this class.
4477 (grokfndecl): Call check_java_method for Java classes.
4478 * method.c (is_java_type): Removed. Replaced with TYPE_FOR_JAVA.
4479 (process_overload_item): Match types against specific
4480 java_XX_type_node types, rather than using is_java_type.
4481 * class.c (finish_struct_1): Don't add default copy constructor
4482 or operator= if TYPE_FOR_JAVA.
4483 (pop_lang_conext): Restore strict_prototyp proper if Java.
4484 * decl2.c (acceptable_java_type, check_java_method): New functions.
4485 * pt.c (instantiate_class_template): Copy TYPE_FOR_JAVA from pattern.
4486 (tsubst): Move common statement after if statement.
4487 * typeck.c (comptypes): If strict, TYPE_FOR_JAVA must match.
4488
4489 1998-06-01 Jason Merrill <jason@yorick.cygnus.com>
4490
4491 * pt.c (for_each_template_parm): Use first_rtl_op.
4492
4493 * tree.c (build_cplus_array_type_1): Also check index_type for
4494 template parms.
4495
4496 1998-05-31 Jason Merrill <jason@yorick.cygnus.com>
4497
4498 * pt.c (tsubst): Always copy BINFO_BASETYPES.
4499
4500 1998-05-29 scott snyder <snyder@d0sgif.fnal.gov>
4501
4502 * tree.c (layout_basetypes): If we change TYPE_SIZE, change
4503 TYPE_SIZE_UNIT too.
4504
4505 1998-05-29 Mark Mitchell <mark@markmitchell.com>
4506
4507 * decl.c (grokdeclarator): Don't complain about in-class
4508 initialization of static consts if we don't really know the type
4509 of the variable.
4510
4511 1998-05-29 Jason Merrill <jason@yorick.cygnus.com>
4512
4513 * cp-tree.h (DECL_DESTRUCTOR_P): New macro.
4514 * method.c (build_destructor_name): New fn.
4515 * decl2.c (maybe_retrofit_in_chrg): Split out...
4516 (grokclassfn): From here. Reorganize.
4517 * decl.c (grok_ctor_properties): Make sure ctors for types with
4518 vbases have the in_chrg parm.
4519 * pt.c (instantiate_class_template): Update
4520 TYPE_USES_VIRTUAL_BASECLASSES from tsubsted bases. Don't call
4521 grok_*_properties.
4522 (tsubst): Call grok_ctor_properties and maybe_retrofit_in_chrg.
4523
4524 1998-05-28 Mark Mitchell <mark@markmitchell.com>
4525
4526 * pt.c (instantiate_decl): Make test for whether or not static
4527 variables should be instantiated early match its comment.
4528
4529 1998-05-28 Jason Merrill <jason@yorick.cygnus.com>
4530
4531 * decl.c (start_decl): Always pedwarn about vacuously redeclaring
4532 a member.
4533 (start_function): Call check_default_args.
4534 * decl2.c (grokfield): Don't call check_default_args.
4535 (check_default_args): Use cp_error_at.
4536 * lex.c (do_pending_defargs): Call check_default_args.
4537
4538 1998-05-27 Brendan Kehoe <brendan@cygnus.com>
4539
4540 * call.c (build_method_call): Make sure get_type_value returns
4541 something before we try to use its TYPE_MAIN_VARIANT.
4542 (build_scoped_method_call): Likewise.
4543
4544 1998-05-27 Jason Merrill <jason@yorick.cygnus.com>
4545
4546 * typeck2.c (digest_init): Complain about getting a TREE_LIST to
4547 initialize an array.
4548
4549 * search.c (expand_upcast_fixups): Don't set DECL_CONTEXT and
4550 DECL_VIRTUAL_P.
4551
4552 * friend.c (do_friend): Clarify template warning.
4553
4554 1998-05-27 Mark Mitchell <mark@markmitchell.com>
4555
4556 * decl.c (shadow_label): Don't treat decls as identifiers.
4557 (maybe_push_to_top_level): Clear shadowed_labels.
4558
4559 * pt.c (instantiate_decl): Reset lineno and filename after calling
4560 regenerate_decl_from_template.
4561
4562 * decl.c (grokdeclarator): Don't try to use TYPE_OBSTACK on an
4563 error_mark_node.
4564
4565 1998-05-27 Kevin Buhr <buhr@stat.wisc.edu>
4566
4567 * parse.y (base_class): Use is_aggr_type, not IS_AGGR_TYPE.
4568
4569 1998-05-26 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
4570
4571 * pt.c (process_template_parm): Accept TYPENAME_TYPE nodes.
4572 (convert_nontype_argument): Handle cases when nontype template
4573 parameters become classes after substitution.
4574
4575 1998-05-26 Mark Mitchell <mark@markmitchell.com>
4576
4577 * friend.c (is_friend): Use comptypes, rather than == to compare
4578 types. Modify for new representation of template friends.
4579 (make_friend_class): Likewise.
4580 * pt.c (tsubst_friend_class): Undo 1998-05-21 change. Tweak.
4581 (instantiate_class_template): Deal with template friends.
4582
4583 * decl.c (store_parm_decls): Remove redundant call to
4584 expand_main_function.
4585
4586 1998-05-26 Benjamin Kosnik <bkoz@loony.cygnus.com>
4587
4588 * decl.c (start_decl): Check for DECL_LANG_SPECIFIC before
4589 DECL_USE_TEMPLATE.
4590
4591 1998-05-26 Per Bothner <bothner@cygnus.com>
4592
4593 * language_as_string: Handle lang_java.
4594
4595 1998-05-26 Jason Merrill <jason@yorick.cygnus.com>
4596
4597 * decl.c (pushdecl): Don't copy the type_decl.
4598
4599 1998-05-26 Martin v. Löwis <loewis@informatik.hu-berlin.de>
4600
4601 * class.c (pushclass): Always store TYPE_MAIN_VARIANT in
4602 current_class_type.
4603 * decl.c (grokdeclarator): Put typedefs on the type's obstack.
4604
4605 * parse.y (complex_direct_notype_declarator): Use $1 to access
4606 scope of notype_qualified_id.
4607
4608 1998-05-26 Dave Brolley <brolley@cygnus.com>
4609
4610 * lex.c (parse_options,yy_cur,yy_lim): Add for cpplib.
4611 (init_parse): Initialize cpplib interface.
4612
4613 * Makefile.in (CXX_OBJS): Make sure dependencies never end with an
4614 empty continuation.
4615
4616 1998-05-26 Mark Mitchell <mark@markmitchell.com>
4617
4618 * decl.c (pushtag): Avoid crashing on erroneous input.
4619
4620 1998-05-25 Martin v. Löwis <loewis@informatik.hu-berlin.de>
4621
4622 * decl.c (push_namespace): Only produce one unique name for
4623 anonymous namespaces.
4624 (get_unique_name): Remove.
4625
4626 1998-05-25 Mark Mitchell <mark@markmitchell.com>
4627
4628 * call.c (tourney): Don't do any extra comparisons.
4629
4630 * decl2.c (build_anon_union_vars): Don't crash on empty sub-unions.
4631
4632 * cp-tree.h (processing_template_parmlist): Declare.
4633 * decl.c (pushtag): Don't call push_template_decl when we
4634 shouldn't.
4635 * pt.c (processing_template_parmlist): New variable.
4636 (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): New macro.
4637 (complete_template_args): Use it.
4638 (add_to_template_args): Likewise.
4639 (innermost_args): Likewise.
4640 (tsubst): Likewise.
4641 (begin_template_parm_list): Use processing_template_parmlist.
4642 (end_template_parm_list): Likewise.
4643
4644 * cp-tree.h (ANON_UNION_TYPE_P): New macro.
4645 * decl.c (grokdeclarator): Use it.
4646 * decl2.c (grok_x_components): Likewise.
4647 * init.c (initializing_context): Likewise.
4648 * method.c (do_build_copy_constructor): Likewise.
4649 (do_build_assign_ref): Likewise.
4650 * search.c (compute_access): Likewise.
4651 * typeck.c (build_component_ref): Likewise.
4652
4653 * decl.c (grokdeclarator): Don't give a cv-qualified version of an
4654 unnamed type a typedef name "for linkage purposes".
4655
4656 * pt.c (lookup_template_class): Don't look at
4657 IDENTIFIER_CLASS_VALUE when there's no current_class_type.
4658
4659 * method.c (build_overload_int): Handle error cases gracefully.
4660
4661 * pt.c (instantiate_decl): Handle static member variables
4662 correctly.
4663
4664 * pt.c (tsubst): Use the tsubst'd type when producing new
4665 TEMPLATE_PARM_INDEX nodes.
4666
4667 1998-05-24 Mark Mitchell <mark@markmitchell.com>
4668
4669 * tree.c (cp_tree_equal): Handle pointers to member functions.
4670
4671 * call.c (maybe_handle_implicit_object): Handle QUAL_CONVs. Make
4672 sure the type of the REF_BIND is a reference type.
4673 (maybe_handle_ref_bind, compare_ics): Rename reference_type to
4674 target_type for clarity.
4675
4676 * parse.y (xcond): Move call to condition_conversion ...
4677 * semantics.c (finish_for_cond): Here.
4678 * parse.c: Regenerated.
4679
4680 1998-05-24 Jason Merrill <jason@yorick.cygnus.com>
4681
4682 * decl.c (push_namespace): Namespaces have type void.
4683 * typeck2.c (incomplete_type_error): Complain about namespace
4684 used as expression.
4685 * typeck.c (decay_conversion): Likewise.
4686
4687 1998-05-24 Martin von Löwis <loewis@informatik.hu-berlin.de>
4688
4689 * error.c (dump_expr): Support namespaces.
4690
4691 1998-05-23 Jason Merrill <jason@yorick.cygnus.com>
4692
4693 * cp-tree.def: Add SRCLOC.
4694 * cp-tree.h: Add struct tree_srcloc and accessor macros.
4695 * tree.c (build_srcloc, build_srcloc_here): New fns.
4696 * pt.c (add_pending_template): Use build_srcloc_here.
4697 (push_tinst_level): Update last_template_error_tick before erroring.
4698 (instantiate_decl): Restore lineno and input_filename before
4699 calling add_pending_template.
4700 * decl2.c (finish_file): Set up lineno and input_filename for
4701 pending templates.
4702
4703 1998-05-22 Jason Merrill <jason@yorick.cygnus.com>
4704
4705 * decl.c (lang_print_error_function): New fn.
4706 (init_decl_processing): Set print_error_function to use it.
4707 * errfn.c (cp_thing): Don't call maybe_print_template_context here.
4708
4709 * call.c (maybe_handle_ref_bind): Propagate ICS_USER_FLAG and
4710 ICS_BAD_FLAG.
4711
4712 * cvt.c (ocp_convert): Don't set LOOKUP_NO_CONVERSION for
4713 copy-initialization.
4714
4715 * class.c (build_vtable_entry): Use int_fits_type_p.
4716 (build_vtable): Pass a signed offset to build_vtable_entry.
4717 (prepare_fresh_vtable, modify_one_vtable, fixup_vtable_deltas1,
4718 set_rtti_entry): Likewise.
4719
4720 1998-05-22 Per Bothner <bothner@cygnus.com>
4721
4722 * cp-tree.h: Add comments documenting which LANG_FLAGS are used.
4723 (C_TYPE_VARIABLE_SIZE, C_DECL_VARIABLE_SIZE): Removed, not used.
4724
4725 1998-05-22 Jason Merrill <jason@yorick.cygnus.com>
4726
4727 * pt.c (print_template_context): Use fprintf instead of cp_error.
4728
4729 * pt.c (determine_specialization): Just return an error_mark_node.
4730 Also print the decl we want in error messages. If we complain,
4731 return error_mark_node.
4732 (tsubst_friend_function): Set lineno and input_filename so
4733 error messages will be useful.
4734 (instantiate_template): Just return an error_mark_node.
4735 (check_explicit_specialization): Don't mess with a returned
4736 error_mark_node.
4737
4738 * pt.c (print_template_context): Add new argument.
4739 (maybe_print_template_context): New fn.
4740 (push_tinst_level): Increment tinst_level_tick.
4741 (pop_tinst_level): Likewise.
4742 * errfn.c (cp_thing): Call maybe_print_template_context. Use
4743 xrealloc instead of xmalloc.
4744
4745 * typeck.c (build_unary_op, CONVERT_EXPR): Propagate TREE_CONSTANT.
4746
4747 1998-05-21 Jason Merrill <jason@yorick.cygnus.com>
4748
4749 * pt.c (tsubst_friend_class): Don't call redeclare_class_template
4750 if the template we looked up is the same as the one we already
4751 have.
4752
4753 Thu May 21 11:54:44 1998 Dave Brolley <brolley@cygnus.com>
4754
4755 * lex.c: (handle_sysv_pragma): FILE* parameter not used.
4756 (cpp_reader,parse_in): Add for cpplib.
4757 (check_newline): Call handle_sysv_pragma with new interface.
4758 (check_newline): Call GET_DIRECTIVE_LINE, not get_directive_line.
4759
4760 * input.c: (yy_cur,yy_lim,yy_get_token,GETC): Add for cpplib.
4761 (sub_getch): Call GETC for cpplib.
4762
4763 * cp-tree.h: (get_directive_line): Different prototype for cpplib.
4764 (GET_DIRECTIVE_LINE): Macro wrapper for get_directive_line.
4765
4766 * Makefile.in (CXX_OBJS): add @extra_cxx_objs@ for cpplib.
4767
4768 1998-05-21 Jason Merrill <jason@yorick.cygnus.com>
4769
4770 * decl2.c (maybe_make_one_only): New fn.
4771 (import_export_vtable): Use it.
4772 (import_export_decl): Likewise.
4773 * pt.c (mark_decl_instantiated): Likewise.
4774
4775 1998-05-21 Mark Mitchell <mmitchell@usa.net>
4776
4777 * decl2.c (find_representative_member): Rename to ...
4778 (build_anon_union_vars): New function.
4779 (finish_anon_union): Fix stupidity of previous change.
4780
4781 1998-05-20 Jason Merrill <jason@yorick.cygnus.com>
4782
4783 * decl.c (grokfndecl): Handle definition of specialization in
4784 friend declaration.
4785
4786 * error.c (dump_decl): Fix LOOKUP_EXPR handling.
4787
4788 1998-05-20 Mark Mitchell <mmitchell@usa.net>
4789
4790 * class.c (delete_duplicate_fields_1): Use DECL_DECLARES_TYPE_P
4791 to look for type declarations.
4792 (finish_struct): Deal with templates on the CLASSTYPE_TAGS list.
4793 * cp-tree.h (DECL_DECLARES_TYPE_P): New macro.
4794 (finish_member_class_template): Declare.
4795 * decl.c (pushtag): Put member class templates on the
4796 CLASSTYPE_TAGS list, just as for ordinary member classes.
4797 (pushdecl_class_level): Use DECL_DECLARES_TYPE_P.
4798 (lookup_tag): Look for IDENTIFIER_CLASS_VALUEs, just as with
4799 IDENTIFIER_NAMESPACE_VALUEs.
4800 * parse.y (component_decl): Move code to ...
4801 * semantics.c (finish_member_class_template): New function.
4802 Don't put member class templates on the list of components for a
4803 class.
4804 * parse.c: Regenerated.
4805 * pt.c (classtype_mangled_name): Don't try DECL_CONTEXT on types.
4806 In fact, don't use DECL_CONTEXT at all here.
4807
4808 1998-05-20 Martin von Loewis <loewis@informatik.hu-berlin.de>
4809
4810 * decl.c (record_unknown_type): New function.
4811 (init_decl_processing): Call it for the unknown and global type
4812 nodes.
4813
4814 1998-05-20 Mark Mitchell <mmitchell@usa.net>
4815
4816 * decl2.c (find_representative_member): New function.
4817 (finish_anon_union): Use it.
4818
4819 * cp-tree.h (MAIN_NAME_P): New macro.
4820 (DECL_MAIN_P): Likwise.
4821 * decl.c (pushdecl): Avoid crashing on redefinitions of `main'.
4822 (grokfndecl): Use the new macros.
4823 (grokdeclarator): Likewise.
4824 (start_function): Likewise.
4825 (store_parm_decls): Likewise.
4826 (finsh_function): Likewise.
4827 * friend.c (do_friend): Likewise.
4828 * typeck.c (build_function_call_real): Likewise.
4829 (build_unary_op): Likewise.
4830
4831 Wed May 20 02:16:01 1998 Jason Merrill <jason@yorick.cygnus.com>
4832
4833 * decl2.c (start_objects, finish_objects, do_dtors,
4834 do_ctors): Split out from...
4835 (finish_file): ...here.
4836
4837 Tue May 19 20:36:23 1998 Jason Merrill <jason@yorick.cygnus.com>
4838
4839 * tree.c (is_overloaded_fn): Don't abort on placeholders from
4840 push_class_decls.
4841
4842 Tue May 19 15:16:22 1998 Brendan Kehoe <brendan@cygnus.com>
4843
4844 * class.c (is_empty_class): Return 0 if TYPE is an error_mark_node.
4845
4846 * error.c (dump_expr): Handle an ARROW_EXPR.
4847
4848 Tue May 19 15:13:39 1998 Mark Mitchell <mmitchell@usa.net>
4849
4850 * decl.c (saveable_obstack): Declare.
4851 (pushdecl): Copy TYPE_DECLs to the same obstack as the type they
4852 declare, if necessary.
4853
4854 Tue May 19 14:50:27 1998 Mark Mitchell <mmitchell@usa.net>
4855
4856 * call.c (compare_qual): Remove.
4857 (is_subseq): Tweak.
4858 (is_properly_derived_from): New function.
4859 (maybe_handle_ref_bind): Likewise.
4860 (maybe_handle_implicit_object): Likewise.
4861 (compare_ics): Modify substantially to bring into conformance with
4862 the standard.
4863 * cp-tree.h (TYPE_PTRMEMFUNC_OBJECT_TYPE): New macro.
4864 (comp_cv_qualification): Declare.
4865 (comp_cv_qual_signature): Likewise.
4866 * typeck.c (comp_cv_qualification): Likewise.
4867 (comp_cv_qual_signature): Likewise.
4868
4869 Tue May 19 10:05:02 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
4870
4871 * Makefile.in (parse.o): Depend on toplev.h.
4872
4873 * class.c (typecode_p): Remove prototype and definition.
4874
4875 * cp-tree.h (currently_open_class, is_empty_class, member_p):
4876 Add prototype.
4877
4878 * decl.c (push_overloaded_decl_top_level): Remove prototype and
4879 definition.
4880
4881 * errfn.c (cp_error): Cast function pointer `error' to (errorfn *)
4882 in call to `cp_thing'.
4883 (cp_warning): Likewise for function pointer `warning'.
4884
4885 * except.c (do_function_call): Remove prototype and definition.
4886 (call_eh_info): Wrap variable `t1' in macro NEW_EH_MODEL.
4887
4888 * method.c (is_java_type): Add prototype and make it static.
4889
4890 * parse.y: Include toplev.h.
4891
4892 * pt.c (type_unification): Remove unused variable `arg'.
4893 (instantiate_decl): likewise for `save_ti'.
4894
4895 * tree.c (propagate_binfo_offsets): Likewise for `base_binfos'.
4896
4897 Tue May 19 02:43:25 1998 Jason Merrill <jason@yorick.cygnus.com>
4898
4899 * init.c (build_member_call): Handle template_ids.
4900 * parse.y (primary): Add global_scope template_id.
4901
4902 Mon May 18 23:22:52 1998 Jason Merrill <jason@yorick.cygnus.com>
4903
4904 * decl2.c (get_sentry): Use end_temporary_allocation.
4905 Don't declare permanent_obstack.
4906
4907 Mon May 18 12:28:44 1998 Mark Mitchell <mmitchell@usa.net>
4908
4909 * parse.y (.finish_new_placement): New non-terminal.
4910 (unary_expr, new_type_id): Use it.
4911 * parse.c: Regenerated.
4912
4913 Mon May 18 12:20:27 1998 Brendan Kehoe <brendan@cygnus.com>
4914
4915 * pt.c (redeclare_class_template): Say where the original definition
4916 of the template-parameter's default argument appeared.
4917
4918 Mon May 18 03:00:57 1998 Jason Merrill <jason@yorick.cygnus.com>
4919
4920 * call.c (build_over_call): Tweak empty class handling.
4921
4922 * decl.c (make_typename_type): Use currently_open_class.
4923
4924 * class.c (instantiate_type): Don't abort on TREE_NONLOCAL_FLAG.
4925
4926 Mon May 18 01:43:01 1998 Martin v. Loewis <loewis@informatik.hu-berlin.de>
4927
4928 * decl.c (lookup_name_real): Don't look at IDENTIFIER_LOCAL_VALUE
4929 for a type unless it is one.
4930
4931 * class.c (finish_struct_1): Use OVL_CURRENT in error message.
4932
4933 Mon May 18 01:24:08 1998 Jeffrey A Law (law@cygnus.com)
4934
4935 * Makefile.in (program_transform_name, objdir): Define.
4936
4937 * Makefile.in (BISON): Use bison from the build tree if it exists.
4938 (FLEX): Similarly.
4939
4940 Sun May 17 14:52:08 1998 Martin v. Loewis <loewis@informatik.hu-berlin.de>
4941
4942 * typeck.c (type_unknown_p): Return true for TREE_LIST also.
4943
4944 * call.c (build_method_call): Use TYPE_MAIN_VARIANT on typedefs.
4945
4946 Sun May 17 14:51:41 1998 Jason Merrill <jason@yorick.cygnus.com>
4947
4948 * call.c (build_scoped_method_call): Likewise.
4949
4950 Sun May 17 13:53:48 1998 Mark Mitchell <mmitchell@usa.net>
4951
4952 * init.c (build_new_1): Call suspend_momentary around the creation
4953 of values that must be saved for exception handling.
4954 * parse.y (.build_new_placement): New non-terminal.
4955 (unary_expr, new_placement): Use it.
4956 * parse.c: Regenerated.
4957
4958 Sun May 17 12:32:08 1998 Jason Merrill <jason@yorick.cygnus.com>
4959
4960 * decl.c (duplicate_decls): Use CANONICAL_TYPE_VARIANT to compare
4961 old and new types.
4962
4963 * pt.c (tsubst): Make sure that BINFO_TYPE of new binfos is the
4964 canonical type.
4965
4966 * call.c (build_over_call): Don't use IS_SIGNATURE on a namespace.
4967
4968 Fri May 15 20:28:00 1998 Jason Merrill <jason@yorick.cygnus.com>
4969
4970 * decl.c (start_decl): Revert problem change.
4971
4972 * Makefile.in (CONFLICTS): Fix.
4973
4974 Fri May 15 15:34:02 1998 Benjamin Kosnik <bkoz@rhino.cygnus.com>
4975
4976 * decl.c (duplicate_decls): Clean up, add DECL_DATA_AREA bits.
4977
4978 Fri May 15 00:46:05 1998 Jason Merrill <jason@yorick.cygnus.com>
4979
4980 * class.c (finish_struct_1): Use BINFO_SIZE.
4981
4982 * decl.c (start_decl): Use 'tem'.
4983
4984 Thu May 14 16:30:47 EDT 1998 Andrew MacLeod <amacleod@cygnus.com>
4985
4986 * exception.cc: Include eh-common.h.
4987 (struct cp_eh_info): add eh_info struct with NEW_EH_MODEL.
4988 (__cplus_type_matcher): First stab at new C++ runtime type matcher.
4989 (__cp_push_exception): Initialize eh_info struct as well.
4990 * except.c: Remove local structs and include eh-common.h.
4991 (init_exception_processing): Set language and version codes.
4992 (call_eh_info): add presence of eh_info to runtime description of
4993 struct cp_eh_info.
4994 (expand_end_eh_spec): call start_catch_block() and end_catch_block().
4995 * semantics.c (finish_try_block): call start_catch_block() and
4996 end_catch_block().
4997 * parse.y (function_try_block): call start_catch_block() and
4998 end_catch_block().
4999
5000 Thu May 14 12:27:34 1998 Brendan Kehoe <brendan@cygnus.com>
5001
5002 * typeck.c (original_type): New function.
5003 (common_type): Use it to get the DECL_ORIGINAL_TYPE for T1 and T2,
5004 to see if they're actually the same.
5005 * cp-tree.h (original_type): Declare.
5006
5007 Wed May 13 12:54:30 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
5008
5009 * Makefile.in (lex.o): Depend on output.h.
5010
5011 * call.c (add_function_candidate): Remove unused variable `cand'.
5012 (add_conv_candidate): Likewise.
5013 (build_builtin_candidate): Likewise.
5014
5015 * cp-tree.h: Add prototype for `types_overlap_p'.
5016
5017 * decl.c (signal_catch): Mark parameter `sig' with ATTRIBUTE_UNUSED.
5018
5019 * decl2.c (merge_functions): Remove unused variables `tmp' and
5020 `tempn'.
5021
5022 * error.c (expr_as_string): Mark parameter `v' with ATTRIBUTE_UNUSED.
5023 (code_as_string): Likewise.
5024 (language_as_string): Likewise.
5025 (parm_as_string): Likewise.
5026 (op_as_string): Likewise.
5027 (assop_as_string): Likewise.
5028 (cv_as_string): Likewise.
5029
5030 * lex.c: Include output.h.
5031
5032 * pt.c (type_unification): Cast first argument of `bzero' to a char*.
5033
5034 * search.c (dfs_no_overlap_yet): Mark parameter `t' with
5035 ATTRIBUTE_UNUSED.
5036
5037 * tinfo.cc (__class_type_info::dcast): Change the type of variable
5038 `i' from int to size_t.
5039
5040 * typeck.c (language_lvalue_valid): Mark parameter `exp' with
5041 ATTRIBUTE_UNUSED.
5042
5043 Tue May 12 21:37:49 1998 Jason Merrill <jason@yorick.cygnus.com>
5044
5045 * error.c (dump_simple_decl): Use DECL_CLASS_SCOPE_P and/or
5046 DECL_NAMESPACE_SCOPE_P.
5047 (lang_decl_name): Likewise.
5048 * pt.c (tsubst_friend_function, tsubst): Likewise.
5049 * decl.c (pushdecl, redeclaration_error_message, start_decl,
5050 cp_finish_decl, start_function): Likewise.
5051 * class.c (finish_struct_1): Likewise.
5052 * call.c (build_over_call): Likewise.
5053 (compare_ics): Use DERIVED_FROM_P.
5054
5055 Tue May 12 07:24:18 1998 Mark Mitchell <mmitchell@usa.net>
5056
5057 * cp-tree.h (CANONICAL_TYPE_VARIANT): New macro.
5058 * method.c (build_mangled_name): Use it.
5059 (build_decl_overload_real): Likewise.
5060
5061 * error.c (dump_simple_decl): New function, broken out from ...
5062 (dump_decl): Use it.
5063
5064 Mon May 11 11:38:07 1998 Mark Mitchell <mmitchell@usa.net>
5065
5066 * ptree.c (lang_print_xnode): Add missing `break'.
5067
5068 * pt.c (tsubst): Remove duplicate check for IDENTIFIER_NODE.
5069
5070 * call.c (add_template_candidate): Adjust for changes to
5071 fn_type_unification.
5072 (add_template_candidate_real): Likewise.
5073 (add_template_conv_candidate): Likewise.
5074 (build_user_type_conversion_1): Likewise.
5075 (build_new_function_call): Likewise.
5076 (build_object_call): Likewise.
5077 (build_new_op): Likewise.
5078 (build_new_method_call): Likewise.
5079 * class.c (instantiate_type): Likewise.
5080 * cp-tree.h (unification_kind_t): New type.
5081 (fn_type_unification): Adjust prototype.
5082 (type_unificaiton): Likewise.
5083 * pt.c (UNIFY_ALLOW_NONE): New macro.
5084 (UNIFY_ALLOW_MORE_CV_QUAL): Likewise.
5085 (UNIFY_ALLOW_LESS_CV_QUAL): Likewise.
5086 (UNIFY_ALLOW_DERIVED): Likewise.
5087 (unify): Change prototype.
5088 (maybe_adjust_types_for_deduction): New function.
5089 (check_cv_quals_for_unify): Likewise.
5090 (determine_specialization): Adjust.
5091 (fn_type_unification): Likewise.
5092 (type_unification): Likewise.
5093 (type_unification_real): Likewise. Use
5094 maybe_adjust_types_for_deduction. Fix mishandling of
5095 back-unification of template functions passed as arguments. Pass
5096 appropriate combination of UNIFY_ALLOW_* to unify.
5097 (unify): Remove unused NTPARMS parameter. Use
5098 check_cv_quals_for_unify. Remove bogus code that allowed
5099 too-generous unification in order to adhere more closely to standard.
5100 (get_bindings_real): Adjust.
5101 (get_class_bindings): Likewise.
5102
5103 * method.c (build_overload_identifier): Only use the innermost
5104 template arguments when mangling.
5105 * pt.c (tsubst_template_argument_vector): New function.
5106 (complete_template_args): Deal with the situation where the
5107 extra_args contain more than one level of arguments.
5108 (lookup_template_class): Deal with member template classes, which
5109 may have more than one level of arguments.
5110 (tsubst): Don't tsbust into the TREE_TYPE of an IDENTIFIER_NODE.
5111 Improve handling of member template classes. Use
5112 DECL_PRIMARY_TEMPLATE instead of inline expansion. Use
5113 tsubst_template_argument_vector where appropriate.
5114 (regenerate_decl_from_template): Break out from ...
5115 (instantiate_decl): Here.
5116
5117 * lex.c (yyprint): Remove TYPENAME_ELLIPSIS.
5118 * parse.h: Regenerated.
5119 * parse.c: Really regenerated.
5120
5121 * cp-tree.h (finish_unary_op_expr): New function.
5122 (finish_id_expr): Likewise.
5123 (begin_new_placement): Likewise.
5124 (finish_new_placement): Likewise.
5125 (finish_declarator): Likewise.
5126 (finish_translation_unit): Likewise.
5127 (finish_parmlist): Likewise.
5128 (begin_class_definition): Likewise.
5129 (finish_class_definition): Likewise.
5130 (finish_default_args): Likewise.
5131 (finish_inline_definitions): Likewise.
5132 * parse.y (GCC_ASM_KEYWORD): Remove.
5133 (TYPENAME_ELLIPSIS): Likewise.
5134 * parse.c: Regenerated.
5135 Use new functions in semantics.c in the actions for many rules.
5136 * gxx.gperf (GCC_ASM_KEYWORD): Just use ASM_KEYWORD.
5137 * hash.h: Regenerated.
5138 * semantics.c (finish_expr_stmt): Allow NULL expr.
5139 (finish_unary_op_expr): New function, containing
5140 code previously in parse.y.
5141 (finish_id_expr): Likewise.
5142 (begin_new_placement): Likewise.
5143 (finish_new_placement): Likewise.
5144 (finish_declarator): Likewise.
5145 (finish_translation_unit): Likewise.
5146 (finish_parmlist): Likewise.
5147 (begin_class_definition): Likewise.
5148 (finish_class_definition): Likewise.
5149 (finish_default_args): Likewise.
5150 (finish_inline_definitions): Likewise.
5151
5152 Sun May 10 23:43:13 1998 Mark Mitchell <mmitchell@usa.net>
5153
5154 * typeck.c (build_c_cast): Don't decay arrays and functions to
5155 pointer type when converting to a class type.
5156
5157 Sun May 10 22:53:56 1998 Jason Merrill <jason@yorick.cygnus.com>
5158
5159 * cp-tree.h (DECL_NAMESPACE_SCOPE_P): New macro.
5160 (DECL_CLASS_SCOPE_P): Likewise.
5161
5162 Sun May 10 22:48:22 1998 H.J. Lu (hjl@gnu.org)
5163
5164 * class.c (finish_struct_1): Use OVL_CURRENT on TREE_VEC_ELT.
5165 * decl2.c (constructor_name_full): Likewise.
5166
5167 Sun May 10 22:48:12 1998 Mike Stump <mrs@wrs.com>
5168
5169 * tree.c (mapcar): Add OVERLOAD support.
5170
5171 * init.c (resolve_offset_ref): We must use basetype_path before we
5172 destroy it with a call to convert_pointer_to.
5173
5174 Sat May 9 14:44:37 1998 Jason Merrill <jason@yorick.cygnus.com>
5175
5176 * class.c (currently_open_class): New fn.
5177 * decl.c (lookup_name_real): Use it.
5178 * search.c (lookup_field): Likewise.
5179
5180 Fri May 8 23:32:42 1998 Martin von Loewis <loewis@informatik.hu-berlin.de>
5181
5182 * cp-tree.def (OVERLOAD): New node.
5183 * cp-tree.h (BINDING_TYPE, SET_IDENTIFIER_GLOBAL_VALUE,
5184 SET_IDENTIFIER_NAMESPACE_VALUE): Define.
5185 (NAMESPACE_BINDING): Remove.
5186 (IDENTIFIER_GLOBAL_VALUE, IDENTIFIER_NAMESPACE_VALUE): Use
5187 namespace_binding.
5188 (OVL_FUNCTION, OVL_CHAIN, OVL_CURRENT, OVL_NEXT, OVL_USED):
5189 Define.
5190 (tree_overload): New struct.
5191 (IDENTIFIER_TYPE_VALUE): Use identifier_type_value.
5192 (REAL_IDENTIFIER_TYPE_VALUE): Define.
5193 (IDENTIFIER_HAS_TYPE_VALUE): Use IDENTIFIER_TYPE_VALUE.
5194 (lang_decl_flags): Remove in_namespace.
5195 (lang_decl): Remove chain.
5196 (DECL_CHAIN, DECL_NAMESPACE): Remove.
5197 (flag_honor_std): Declare extern.
5198 (identifier_type_value, pushdecl_namespace_level, push_using_decl,
5199 namespace_binding, set_namespace_binding,
5200 lookup_function_nonclass, cat_namespace_levels,
5201 set_decl_namespace, lookup_arg_dependent, binding_init, ovl_cons,
5202 scratch_ovl_cons, ovl_member, build_overload): Declare.
5203 (decl_list_length, get_namespace_id, current_namespace_id,
5204 overloaded_globals_p): Remove.
5205 (lookup_using_namespace, qualified_lookup_using_namespace): Change
5206 return type.
5207 (push_scratch_obstack): New macro.
5208 * call.c (add_function_candidate): Special-case type of OVERLOAD node.
5209 (build_user_conversions_1): Iterate using OVL_NEXT for ctors,
5210 convs, fns.
5211 (build_new_function_call): Iterate using OVL_CHAIN.
5212 Print DECL_NAME in when reporting ambiguities.
5213 (build_object_call): Iterate using OVL_NEXT for fns, convs.
5214 (build_new_op): Call lookup_function_nonclass.
5215 Iterate using OVL_NEXT.
5216 (build_op_delete_call): Change detection of members.
5217 Do not wrap TREE_LIST around fields and single global functions.
5218 (build_over_call): Don't push a class level if the context is a
5219 namespace.
5220 (build_new_method_call): Iterate using OVL_NEXT.
5221 * class.c (add_method): Chain overloaded members using
5222 build_overload. Remove copying of method.
5223 (grow_method): When iterating through the obstack, expect OVERLOAD
5224 nodes. Chain overload members.
5225 (finish_struct_methods): Chain overload members. Unpack OVERLOAD
5226 nodes in call to get_baselinks.
5227 (duplicate_tag_error): Expect OVERLOAD nodes when unchaining.
5228 (finish_struct_1): Iterate over ctor using OVL_NEXT. Handle
5229 fdecls that are OVERLOAD nodes.
5230 (validate_lhs): New function.
5231 (instantiate_type): Do not copy OVERLOAD nodes. Remove dead
5232 code. Use DECL_NAME in error messages. Split code between global
5233 and member function processing.
5234 * decl.c (global_type_node): New static variable.
5235 (in_std): New global.
5236 (struct binding_level): New field usings.
5237 (resume_binding_level): Assert that we are not in a class.
5238 (toplevel_bindings_p): Just check for namespace_p or
5239 pseudo_global.
5240 (resume_level): Remove.
5241 (find_binding): New function.
5242 (binding_for_name): Call it.
5243 (namespace_binding, set_namespace_binding): New functions.
5244 (push_namespace): Associate binding level with new namespace,
5245 resume_binding_level for existing namespace. Remove old code.
5246 Fake std by counting.
5247 (store_bindings): Use REAL_IDENTIFIER_TYPE_VALUE.
5248 (maybe_push_to_top_level): Save current namespace.
5249 (pop_from_top_level): Restore saved namespace.
5250 (pop_namespace): Call suspend_binding_level. Remove old code.
5251 (cat_namespace_levels): New function.
5252 (set_identifier_type_value_with_scope): For namespace bindings,
5253 set BINDING_TYPE, and use global_type_node.
5254 Use REAL_IDENTIFIER_TYPE_VALUE otherwise.
5255 (identifier_type_value): New function.
5256 (pushtag): If no context, use current_namespace.
5257 (duplicate_decls): Don't process DECL_CHAIN.
5258 (pushdecl): Set DECL_CONTEXT to current_namespace, if it is not
5259 already set. Never reset it to NULL_TREE. Lookup global variables
5260 in their namespace. Push overloaded templates if they are on
5261 namespace level.
5262 (pushdecl_namespace_level): New function.
5263 (pushdecl_top_level): Implement using pushdecl_namespace_level.
5264 (pushdecl_using_decl): New function.
5265 (overloaded_globals_p): Remove.
5266 (push_overloaded_decl): Create OVERLOAD nodes, and iterate through
5267 them. Use namespace_binding and set_namespace_value.
5268 (redeclaration_error_message): Complain if the declarations come
5269 from different namespaces.
5270 (lookup_tag): On namespace level, look in the BINDING_TYPE.
5271 (lookup_namespace_name): Pass tree_bindings from stack. Remove
5272 old code.
5273 (select_decl): New function.
5274 (lookup_name_real): Call it for qualified and unqualified lookup.
5275 Pass tree_bindings from the stack.
5276 If prefer_type is 1, also accept namespaces.
5277 (lookup_function_nonclass): New function.
5278 (init_decl_processing): Set the binding level of the global
5279 namespace to global_binding_level.
5280 Build a proper type list for __builtin_apply.
5281 Initialize std_node to "fake std" if flag_honor_std is set.
5282 Initialize global_type_node.
5283 Allocated bad_alloc in namespace std if flag_honor_std.
5284 (define_function): Set the DECL_CONTEXT to the current_namespace.
5285 (start_decl): A namespace is not considered as a context here. If
5286 the DECL_CONTEXT is a namespace, push the decl.
5287 (cp_finish_decl): Check for namespaces used as initializers.
5288 (grokfndecl): Add namespace parameter. Remove processing of
5289 DECL_CHAIN.
5290 (grokvardecl): Add namespace parameter.
5291 (grokdeclarator): Process SCOPEs that are namespaces. For
5292 mangling, temporarily set the DECL_CONTEXT on anonymous structs.
5293 (start_function): Check for contexts that are namespaces.
5294 Set context for declarations that have not been pushed.
5295 (store_parm_decls): Check for ::main only.
5296 (finish_function): Likewise.
5297 (start_method): Check for contexts that are namespaces.
5298 (start_method): Remove DECL_CHAIN processing.
5299 * decl2.c (flag_honor_std): Declare.
5300 (lang_decode_option): Set it if -fhonor-std or -fnew-abi is given.
5301 (decl_namespace_list): New static global.
5302 (grok_x_components): Ignore namespaces as type contexts.
5303 (check_classfn): Expect OVERLOAD nodes.
5304 (grokfield): Remove DECL_CHAIN processing.
5305 (finish_file): Call cat_namespace_levels.
5306 (merge_functions): New function.
5307 (ambiguous_decl): Rewrite.
5308 (lookup_using_namespace): Produce tree_bindings.
5309 (qualified_lookup_using_namespace): Likewise.
5310 (set_decl_namespace, decl_namespace, current_decl_namespace,
5311 push_decl_namespace, pop_decl_namespace): New functions.
5312 (arg_lookup): New struct.
5313 (add_function, arg_assoc_namespace, arg_assoc_class,
5314 arg_assoc_type, arg_assoc_args, arg_assoc, lookup_arg_dependent):
5315 New functions.
5316 (get_namespace_id, current_namespace_id): Remove.
5317 (do_toplevel_using_decl): Rewrite.
5318 (do_class_using_decl): Complain about namespace qualifiers.
5319 (do_using_directive): Sorry if not on namespace level. Complain
5320 about unknown namespaces.
5321 * error.c (dump_aggr_type): Check for namespace contexts.
5322 * except.c (init_exception_processing): Push terminate into std.
5323 * friend.c (is_friend): A namespace is not a context, here.
5324 * init.c (expand_member_init): Remove DECL_CHAIN processing.
5325 (build_offset_ref): Process OVERLOAD nodes.
5326 * lang-specs.h (__HONOR_STD): Define if -fnew-abi or -fhonor-std.
5327 * lex.c (identifier_type): Loop using OVL_CHAIN.
5328 (see_typename): Set looking_for_typename to 2.
5329 (real_yylex): Likewise.
5330 (do_identifier): Expect OVERLOAD nodes instead of TREE_LISTs.
5331 (do_scoped_id): Expect OVERLOAD nodes.
5332 Change calling convention for qualified_lookup_using_namespace.
5333 (build_lang_decl): Don't set in_namespace anymore.
5334 * method.c (typevec_size): New global.
5335 (build_overload_nested_name): Return if global_namespace.
5336 Otherwise, always expect a declaration context.
5337 (build_qualified_name): Likewise.
5338 Make sure we don't write beyond typevec_size.
5339 (build_decl_overload_real): Likewise.
5340 Allocate one extra slot for the namespace.
5341 (hack_identifier): Mark code dead.
5342 Process OVERLOAD and NAMESPACE_DECL nodes.
5343 * parse.y (program): Pop namespaces until in global namespace.
5344 (extdef): In a using-declaration, don't discard the identifier if
5345 there is no declaration.
5346 (left_curly): Ignore type contexts which are namespaces.
5347 (typename_sub2): Use IDENTIFIER_TYPE_VALUE to retrieve the type
5348 used as scope.
5349 * pt.c (template_class_depth): Expect types to be namespaces.
5350 (determine_specialization): Simplify by expecting OVERLOAD nodes.
5351 (push_template_decl): Push into namespace level.
5352 Reset ctx if it is a namespace.
5353 Set DECL_CONTEXT to current_namespace if not set already.
5354 Ignore real contexts that are namespaces.
5355 (mangle_class_name_for_template): Skip global_namespace.
5356 Mangle other namepaces as declarations.
5357 (lookup_template_function): Set type of OVERLOAD nodes to unknown.
5358 (lookup_template_class): Push into namespace of context.
5359 If the context is a namespace, set it to global_namespace.
5360 Use id_context for mangling.
5361 (for_each_template_parm): Handle OVERLOAD and NAMESPACE_DECL nodes.
5362 (tsubst_friend_function): Ignore namespace contexts.
5363 Push into namespace level.
5364 (tsubst): Handle NAMESPACE_DECL nodes.
5365 Remove DECL_CHAIN processing.
5366 (type_unification_real): Recognize OVERLOAD instead of TREE_LIST nodes.
5367 * ptree.c (print_lang_identifier): Print bindings.
5368 (lang_print_xnode): Print OVERLOAD nodes.
5369 * rtti.c (init_rtti_processing): Push type_info into std.
5370 * search.c (lookup_fnfields_here): Expect OVERLOAD nodes.
5371 (lookup_fnfields_1, get_virtuals_named_this, get_matching_virtual,
5372 dfs_debug_mark, dfs_pushdecls, dfs_compress_decls, add_conversions,
5373 lookup_fnfields_here): Likewise.
5374 Process all nodes, instead of going through TREE_CHAIN.
5375 * sig.c (build_signature_pointer_or_reference_type): Set context
5376 to global_namespace.
5377 (build_signature_table_constructor): Expect OVERLOAD nodes.
5378 * spew.c (yylex): Save old setting of looking_for_typename.
5379 * tree.c (decl_list_length): Remove.
5380 (binding_init): New function.
5381 (count_functions): Rewrite.
5382 (is_overloaded_fn): Expect OVERLOAD nodes.
5383 (really_overloaded_fn, get_first_fn, lvalue_type): Likewise.
5384 (ovl_cons, scratch_ovl_cons, build_overload, build_overload_after,
5385 ovl_member): New functions.
5386 * typeck.c (require_complete_type): Expect OVERLOAD nodes.
5387 (type_unknown_p): Likewise.
5388 (require_instantiated_type): Likewise.
5389 (build_component_ref): Declare code dead.
5390 (build_x_function_call): Create and expect OVERLOAD nodes.
5391 (build_function_call_real): Check for ::main only.
5392 (build_unary_op): Likewise. Expect OVERLOAD nodes.
5393 (convert_for_assignment): Check for TREE_LIST before accessing
5394 TREE_VALUE.
5395 * decl.c (duplicate_decls): Check for namespace bindings instead
5396 of global bindings.
5397 (pushdecl, push_overloaded_decl, lookup_tag, lookup_name_real,
5398 lookup_name_current_level, start_decl, xref_tag,
5399 finish_enum): Likewise.
5400 * init.c (build_offset_ref): Likewise.
5401 * search.c (lookup_field): Likewise.
5402 (lookup_fnfields): Likewise.
5403 (dfs_debug_mark): Likewise.
5404 * decl.c (poplevel): Use SET_IDENTIFIER_TYPE_VALUE.
5405 (poplevel_class, pop_from_top_level): Likewise.
5406 * decl2.c (finish_method): Likewise.
5407 * class.c (build_vtable): Use SET_IDENTIFIER_GLOBAL_VALUE.
5408 * decl.c (record_builtin_type): Likewise.
5409 (init_decl_processing, grokfndecl): Likewise.
5410 * lex.c (get_time_identifier, do_identifier, do_scoped_id): Likewise.
5411 (make_lang_type): Likewise.
5412 * parse.y (make_thunk): Likewise.
5413 * pt.c (tsubst): Likewise.
5414 * tree.c (debug_binfo): Likewise.
5415 * exception.cc, new.cc, new1.cc, new2.cc, tinfo.cc, tinfo.h,
5416 tinfo2.cc, inc/new.h: Add std qualifications.
5417 * inc/new: Wrap with namespace std if __HONOR_STD.
5418 * inc/typeinfo: Likewise.
5419
5420 Fri May 8 00:43:50 1998 Jason Merrill <jason@yorick.cygnus.com>
5421
5422 * call.c (build_user_type_conversion_1): Handle second_conv
5423 properly for templates.
5424
5425 Thu May 7 17:09:25 EDT 1998 Andrew MacLeod <amacleod@cygnus.com>
5426
5427 * method.c (build_decl_overload_real): Set TREE_USED flag to
5428 zero for build_type_variants nodes as well.
5429
5430 Wed May 6 19:27:09 1998 Jason Merrill <jason@yorick.cygnus.com>
5431
5432 * pt.c (tsubst): Don't tsubst the type of an IDENTIFIER_NODE.
5433
5434 Wed May 6 16:49:48 1998 Jim Wilson <wilson@cygnus.com>
5435
5436 * Makefile.in (call.o, class.o, decl.o, decl2.o, errfn.o, error.o,
5437 except.o, expr.o, friend.o, init.o, lex.o, method.o, pt.o, repo.o,
5438 rtti.o, search.o, semantics.o, sig.o, tree.o, typeck.o, typeck2.o,
5439 xref.o): Add toplev.h dependencies.
5440
5441 Wed May 6 16:44:58 1998 Jeffrey A Law (law@cygnus.com)
5442
5443 * errfn.c (cp_error, cp_warning): Remove declarations for
5444 error and warning respectively.
5445
5446 Wed May 6 14:28:18 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
5447
5448 * error.c: Convert to using ctype macros defined in system.h.
5449 * method.c: Likewise.
5450 * xref.c: Likewise.
5451 * lex.c: Likewise. Also remove redundant system header stuff.
5452
5453 Wed May 6 06:36:41 1998 Robert Lipe <robertl@dgii.com>
5454
5455 * call.c, class.c, decl.c, decl2.c, errfn.c, error.c, except.c,
5456 expr.c, friend.c, init.c, lex.c, method.c, pt.c, repo.c, rtti.c,
5457 search.c, semantics.c, sig.c, tree.c, typeck.c, typeck2.c,
5458 xref.c: Add include of toplev.h.
5459
5460 Wed May 6 02:33:39 1998 Jason Merrill <jason@yorick.cygnus.com>
5461
5462 * tree.c (perm_manip): Also regenerate the RTL of an extern.
5463 (copy_to_permanent): Use end_temporary_allocation.
5464
5465 Tue May 5 23:54:04 1998 Jason Merrill <jason@yorick.cygnus.com>
5466
5467 * init.c (expand_vec_init): The initialization of each array
5468 element is a full-expression.
5469
5470 Tue May 5 18:24:13 EDT 1998 Andrew MacLeod <amacleod@cygnus.com>
5471
5472 * method.c (build_mangled_name): Add a call to build_type_variant
5473 to get the right type.
5474
5475 Tue May 5 01:25:03 1998 Jason Merrill <jason@yorick.cygnus.com>
5476
5477 * Makefile.in: Add .SUFFIXES.
5478
5479 * cp-tree.def: Remove NAMESPACE_DECL.
5480
5481 Sun May 3 01:32:14 1998 Jason Merrill <jason@yorick.cygnus.com>
5482
5483 * call.c (build_over_call): Do evaluate arg even if it has empty
5484 class type.
5485 * decl.c (start_function): Don't push a member function.
5486
5487 Thu Apr 30 18:59:23 1998 Jim Wilson <wilson@cygnus.com>
5488
5489 * Makefile.in (g++FAQ.info): Put -o option before input file.
5490
5491 Thu Apr 30 13:05:33 EDT 1998 Andrew MacLeod <amacleod@cygnus.com>
5492
5493 * gxxint.texi: Add info for squangling codes K and B.
5494
5495 Tue Apr 28 13:22:01 1998 Mark Mitchell <mmitchell@usa.net>
5496
5497 * semantics.c (begin_stmt_expr): Avoid duplicating the effect of
5498 the expression in templates.
5499 (finish_stmt_expr): Likewise.
5500
5501 1998-04-28 Brendan Kehoe <brendan@cygnus.com>
5502
5503 * decl2.c (ambiguous_decl): Fix NAME parm to be a tree, not int.
5504
5505 Mon Apr 27 13:58:10 1998 Mark Mitchell <mmitchell@usa.net>
5506
5507 * decl.c (maybe_push_to_top_level): Always clear
5508 current_template_parms and processing_template_decl.
5509 (pushtag): Remove check of current_class_type and some comments,
5510 since maybe_push_to_top_level no longer creates confusion.
5511
5512 Sun Apr 26 12:10:18 1998 Mark Mitchell <mmitchell@usa.net>
5513
5514 * cp-tree.h (CLASSTYPE_IS_TEMPLATE): New macro.
5515 (DECL_CLASS_TEMPLATE_P): Likewise.
5516 (DECL_PRIMARY_TEMPLATE): Likewise.
5517 (PRIMARY_TEMPLATE_P): Use it.
5518 (push_template_decl_real): New function.
5519 (redeclare_class_template): Take new template parameters as
5520 input.
5521 (is_specialization_of): New function.
5522 (comp_template_args): Declare.
5523 * decl.c (pushtag): Handle friend template classes.
5524 (xref_tag): Likewise. Use new calling convention for
5525 redeclare_class_template.
5526 * decl2.c (grok_x_components): Handle friend templates.
5527 * friend.c (is_friend): Use is_specialization_of where
5528 appropriate. Deal with friend class templates.
5529 (make_friend_class): Let a class template be friends with itself.
5530 * pt.c (comp_template_args): Remove declaration.
5531 (tsubst_friend_class): New function.
5532 (push_template_decl_real): New function.
5533 (push_template_decl): Use it.
5534 (redeclare_class_template): Adjust for new calling convention.
5535 (comp_template_args): Give it external linkage.
5536 (instantiate_class_type): Use tsubst_friend_class to deal
5537 with friend templates.
5538 * typeck.c (comptypes): Use comp_template_args, rather than
5539 expanding it inline.
5540 * parse.y (component_decl): Handle a nested template type
5541 like other component type declarations.
5542
5543 * pt.c (check_explicit_specialization): Handle overloaded
5544 constructors correctly.
5545
5546 * pt.c (mabybe_get_template_decl_from_type_decl): New function.
5547 (lookup_template_class): Use it.
5548
5549 Thu Apr 23 21:19:06 1998 Jason Merrill <jason@yorick.cygnus.com>
5550
5551 * cp-tree.def: Add WRAPPER. USER_CONV now only has two ops.
5552 * cp-tree.h: Add WRAPPER support.
5553 * call.c (add_candidate): Split out from add_*_candidate fns.
5554 (build_over_call): Take the candidate instead of function and args.
5555 Enforce access control here. Emit overload warnings here.
5556 (add_warning): New fn.
5557 (joust): Add WARN parm. If not set, call add_warning instead of
5558 printing a warning. Reenable some warnings.
5559 (tourney): Pass it.
5560 (convert_like): Adjust.
5561 (build_new_op): Adjust.
5562 (build_new_function_call): Adjust.
5563 (build_user_type_conversion_1): Adjust.
5564 (USER_CONV_FN): Adjust.
5565 * tree.c (build_expr_wrapper, build_expr_ptr_wrapper,
5566 build_int_wrapper): New fns.
5567
5568 Thu Apr 23 18:27:53 1998 Mark P. Mitchell <mmitchell@usa.net>
5569
5570 * pt.c (unify): Fix typo in previous change.
5571
5572 Thu Apr 23 09:32:58 1998 Jason Merrill <jason@yorick.cygnus.com>
5573
5574 * error.c (dump_type_real): Declare canonical_name.
5575
5576 * typeck.c (comp_target_types): Fix PMFs.
5577
5578 Wed Apr 22 13:24:48 1998 Mark Mitchell <mmitchell@usa.net>
5579
5580 * class.c (finish_struct): Set TREE_PRIVATE and TREE_PROTECTED for
5581 the DECL_RESULTs of a member TEMPLATE_DECL, not just the
5582 TEMPLATE_DECL.
5583
5584 * pt.c (tsubst): Decrease the template-level of
5585 TEMPLATE_TEMPLATE_PARMS. Likewise for the DECL_INITIAL of a
5586 TEMPLATE_PARM_INDEX.
5587 (template_decl_level): New function.
5588 (unify): Make sure to record unifications for template
5589 parameters, even when the parameters exactly match the arguments.
5590 Combine duplicated code for TEMPLATE_TEMPLATE_PARMs and
5591 TEMPLATE_TYPE_PARMS. Don't try to unify template parameters that
5592 aren't from the level we're currently working on.
5593
5594 Tue Apr 21 22:00:04 1998 Mark Mitchell <mmitchell@usa.net>
5595
5596 * errfn.c (cp_thing): Use xrealloc, not xmalloc, to copy memory.
5597
5598 * decl2.c (check_member_template): Set DECL_IGNORED for member
5599 class templates, too.
5600
5601 * decl2.c (grokfield): Remangle the name of a member TYPE_DECL.
5602
5603 Tue Apr 21 18:59:11 1998 Benjamin Kosnik <bkoz@rhino.cygnus.com>
5604
5605 * decl.c (duplicate_decls): Only check DECL_FRIEND_P if function.
5606
5607 Tue Apr 21 14:22:00 1998 Jeffrey A Law (law@cygnus.com)
5608
5609 * cp-tree.h (intTI_type_node, unsigned_intTI_type_node): Declare.
5610 * decl.c (intTI_type_node, unsigned_intTI_type_node): Define.
5611 (init_decl_processing): Handle TI types.
5612 * typeck.c (unsigned_type, signed_type): Handle TI types.
5613
5614 Sat Apr 18 15:25:21 1998 Jim Wilson <wilson@cygnus.com>
5615
5616 * g++spec.c (lang_specific_driver): New argument in_added_libraries.
5617 New local added_libraries. Increment count when add library to
5618 arglist.
5619
5620 Fri Apr 17 21:25:00 1998 Mark Mitchell <mmitchell@usa.net>
5621
5622 * cp-tree.h (type_as_string_real): New function.
5623 * pt.c (mangle_class_name_for_template): Use it.
5624 * error.c (dump_aggr_type): Change prototype.
5625 (dump_type_prefix): Likewise.
5626 (dump_type_suffix): Likewise.
5627 (dump_type_real): Convert from dump_type. If desired, the
5628 "canonica" name of a typedef, i.e., the name of the underlying
5629 type, can be printed.
5630 (dump_type): Call dump_type_real.
5631
5632 Fri Apr 17 14:30:45 1998 Jason Merrill <jason@yorick.cygnus.com>
5633
5634 * decl2.c (lang_decode_option): -fnew-abi implies -fvtable-thunks.
5635
5636 * typeck.c (comp_target_types): Tweak pedantic case.
5637 (comp_target_parms): Tweak pedantic case. Clean up somewhat.
5638 Return -1 or 1 instead of 1 or 2.
5639 (compparms): Remove STRICT handling.
5640 (convert_for_assignment): Fix handling of pmfs.
5641
5642 Fri Apr 17 14:04:16 1998 Mark Mitchell <mmitchell@usa.net>
5643
5644 * typeck.c (comp_target_types): Handle references like pointers.
5645 (comp_target_parms): Note that return code from comp_target_types
5646 can be negative to indicate failure.
5647
5648 Fri Apr 17 09:10:52 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
5649
5650 * Make-lang.in (c++.all.build): Don't depend on $(DEMANGLER_PROG),
5651 which requires a working target compiler to build.
5652
5653 Fri Apr 17 08:57:35 1998 Jeffrey A Law (law@cygnus.com)
5654
5655 * tree.c (avoid_overlap): Add prototype.
5656
5657 * spew.c (num_tokens): Add prototype.
5658 (nth_noken, add_token, consume_token, debug_yychar): Likewise.
5659
5660 * search.c (dfs_check_overlap): Add prototype.
5661 (dfs_no_overlap_yet): Likewise.
5662
5663 * pt.c (original_template): Add prototype.
5664 (inline_needs_template_parms): Likewise.
5665 (push_inline_template_parms_recursive): Likewise.
5666 (retrieve_specialization, register_specialization): Likewise.
5667 (print_candidates, reduce_template_parm_level): Likewise.
5668 (build_template_decl, mark_template_parm): Likewise.
5669 (tsubst_friend_function, get_bindings_real): Likewise.
5670
5671 * method.c (start_squangling): Add prototype.
5672 (end_squangling, check_ktype, issue_ktype): Likewise.
5673 (build_overloaded_scope_ref, check_btype): Likewise.
5674 (build_mangled_template_parm_index): Likewise.
5675
5676 * lex.c (init_cpp_parse): Add prototype.
5677 (handle_cp_pragma, handle_sysv_pragma): Likewise.
5678 (reduce_cmp, token_cmp): Likewise.
5679
5680 * except.c (call_eh_info): Add prototype.
5681 (push_eh_info, get_eh_info, get_eh_value, get_eh_type): Likewise.
5682 (get_eh_caught, get_eh_handlers, do_pop_exception): Likewise.
5683
5684 * decl2.c (is_namespace_ancestor): Add prototype.
5685 (namespace_ancestor, add_using_namespace): Likewise.
5686 (ambiguous_decl): Likewise.
5687
5688 * decl.c (indent): Add prototype.
5689
5690 * call.c (add_template_candidate_real): Add prototype.
5691
5692 Fri Apr 17 01:57:12 1998 Jason Merrill <jason@yorick.cygnus.com>
5693
5694 * decl2.c (build_expr_from_tree): Just return a PMF.
5695
5696 Fri Apr 17 00:45:12 1998 Mark Mitchell <mmitchell@usa.net>
5697
5698 * typeck2.c (process_init_constructor): Don't strip cv-qualifiers
5699 when doing initializations.
5700
5701 * pt.c (unify): Use comptypes to compare type args.
5702
5703 Fri Apr 17 00:24:22 1998 Jason Merrill <jason@yorick.cygnus.com>
5704
5705 * decl.c (duplicate_decls): Fix check for when it's safe to free
5706 the new decl.
5707
5708 * pt.c (mangle_class_name_for_template): Don't pass a typedef type
5709 to type_as_string.
5710
5711 Thu Apr 16 17:47:30 1998 Jeffrey A Law (law@cygnus.com)
5712
5713 * pt.c (build_template_parm_index): Add prototype.
5714
5715 * search.c (my_tree_cons): Don't clear words outside the
5716 newly allocated node.
5717
5718 Wed Apr 15 15:34:44 1998 Dave Brolley <brolley@cygnus.com>
5719
5720 * lex.c (init_parse): Now returns char* containing the filename.
5721
5722 Wed Apr 15 13:20:06 1998 John Carr <jfc@mit.edu>
5723 Jeff Law <law@cygnus.com>
5724
5725 * errfn.c: Rework to avoid problems when HOST_WIDE_INT is longer
5726 than a pointer.
5727
5728 Sun Apr 12 22:31:19 1998 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
5729
5730 * cvt.c (cp_convert_to_pointer): Use TYPE_PRECISION.
5731
5732 Fri Apr 10 12:16:49 1998 Benjamin Kosnik <bkoz@loony.cygnus.com>
5733
5734 * decl.c (duplicate_decls): Don't warn for redundant decls if
5735 friend: let add_friend take care of it.
5736
5737 Thu Apr 9 02:40:48 1998 Jason Merrill <jason@yorick.cygnus.com>
5738
5739 * sig.c (build_signature_pointer_constructor): Don't set
5740 TREE_HAS_CONSTRUCTOR for a signature pointer.
5741 * cvt.c (ocp_convert): Don't force a temporary for internal structs.
5742 * init.c (resolve_offset_ref): Warn about implicit & on pmfs
5743 here, too.
5744 * typeck.c (build_unary_op): Only allow taking the address of a
5745 real constructor.
5746 * typeck2.c (digest_init): Simplify.
5747 (store_init_value): Don't pedwarn about using { } for pmfs.
5748
5749 Thu Apr 9 22:16:57 1998 Per Bothner <bothner@cygnus.com>
5750
5751 * cp-tree.h (start_decl): Update prototype.
5752 * decl.c (start_decl): Like the C version, new parameters
5753 for the attributes. Call cplus_decl_attributes here,
5754 (pushdecl): Like C version, do build_type_copy if TYPE_DECL,
5755 (grokdeclarator): Pass NULL for new start_decl arguments.
5756 * pt.c (tsubst_expr): Likewise.
5757 * parse.y: Merge cplus_decl_attribute calls into start_decl calls.
5758 * typeck.c (common_type): Check TYPE_MAIN_VARIANT.
5759 * lex.c (build_lang_decl): Add lang_name_java.
5760 * class.c (push_lang_context): Add lang_name_java.
5761 * method.c (build_mangled_name): Check for is_java_type.
5762
5763 Thu Apr 9 22:16:57 1998 Benjamin Kosnik <bkoz@loony.cygnus.com>
5764
5765 * decl.c (grokdeclarator): Check TYPE_MAIN_VARIANT.
5766 * call.c (build_scoped_method_call): Check for TREE_CODE for
5767 VOID_TYPE instead of type == void_type_node.
5768 (build_method_call): Ditto.
5769 * decl.c (lookup_name_real): Ditto.
5770 (grokdeclarator): Ditto.
5771 (start_decl): Ditto.
5772 (grokparms): Ditto.
5773 (start_function): Ditto.
5774 (finish_function): Ditto.
5775 (start_method): Ditto.
5776
5777 Thu Apr 9 00:18:44 1998 Dave Brolley (brolley@cygnus.com)
5778
5779 * lex.c (finput): New variable.
5780 (init_cpp_parse): Renamed from init_parse.
5781 (init_parse): Handle !USE_CPPLIB. Call init_cpp_parse when finished.
5782 (finish_parse): New function.
5783 * cp-tree.h (init_lex, init_parse): Remove declarations.
5784
5785 Mon Apr 6 02:25:05 1998 Jason Merrill <jason@yorick.cygnus.com>
5786
5787 * call.c (build_call): Still evaluate the actual argument.
5788 * class.c (is_empty_class): Update for -fnew-abi.
5789
5790 * decl2.c: -fnew-abi implies -fsquangle.
5791
5792 * method.c (do_build_assign_ref): Don't do anything to copy
5793 an empty class.
5794 (do_build_copy_constructor): Likewise.
5795 * call.c (build_over_call): Likewise.
5796
5797 Sat Apr 4 18:43:58 1998 Jason Merrill <jason@yorick.cygnus.com>
5798
5799 * tree.c (avoid_overlap): Return a value.
5800
5801 Sat Apr 4 12:52:35 1998 Jeffrey A Law (law@cygnus.com)
5802
5803 * method.c (check_btype): Add missing argument to xrealloc.
5804 (check_ktype): Likewise.
5805
5806 Fri Apr 3 02:22:59 1998 Jason Merrill <jason@yorick.cygnus.com>
5807
5808 Implement empty base optimization.
5809 * class.c (finish_struct_1): Add vbase fields earlier. Set
5810 CLASSTYPE_SIZE of an empty base to 0. Types with bases can be empty.
5811 * search.c (dfs_check_overlap, dfs_no_overlap_yet): New fns.
5812 (types_overlap_p): New fn.
5813 * tree.c (avoid_overlap): New fn.
5814 (build_base_fields): Use it to avoid overlapping empty bases.
5815 * cp-tree.h, decl2.c, lang-options.h: Add -fnew-abi.
5816
5817 * decl.c (cplus_expand_expr_stmt): Strip unused INDIRECT_REFs.
5818
5819 Re-implement allocation of base class subobjects.
5820 * tree.c (unshare_base_binfos): New fn.
5821 (layout_basetypes): Use it. Now handles offsets of both virtual and
5822 non-virtual bases, after layout_type.
5823 (layout_vbasetypes): Remove.
5824 (build_base_fields): Generate FIELD_DECLs for each non-virtual base.
5825 (build_vbase_pointer_fields): Split out from old layout_basetypes.
5826 * class.c (finish_base_struct): Lose offset handling code.
5827 Move nonvdtor warning here. Don't mess with t_binfo anymore.
5828 (finish_struct_1): Don't mess with t_binfo anymore. Use fns above.
5829 * cp-tree.h: Adjust.
5830
5831 Thu Apr 2 14:25:13 1998 Jason Merrill <jason@yorick.cygnus.com>
5832
5833 * cp-tree.h: Lose CLASSTYPE_VBASE_SIZE, some unused stuff.
5834 * decl.c, decl2.c, pt.c, ptree.c, lex.c: Likewise.
5835 * class.c (duplicate_tag_error): Likewise.
5836 (finish_struct_1): Set CLASSTYPE_SIZE, CLASSTYPE_MODE, CLASSTYPE_ALIGN.
5837 * tree.c (layout_vbasetypes): Update from layout_record, remove
5838 var_size support, use CLASSTYPE_SIZE instead of CLASSTYPE_VBASE_SIZE.
5839 (layout_basetypes): Likewise.
5840
5841 Wed Apr 1 18:22:25 1998 Jeffrey A Law (law@cygnus.com)
5842
5843 * class.c, Make sure system.h is included just after config.h.
5844 Delete lingering stdio and errno references too.
5845 * decl.c, errfn.c, parse.y, ptree.c search.c, xref.c: Likewise.
5846
5847 Wed Apr 1 15:38:36 1998 Jason Merrill <jason@yorick.cygnus.com>
5848
5849 * friend.c (is_friend): Fix access control for local classes.
5850
5851 * class.c (is_empty_class): New fn.
5852 * call.c (build_call): Don't pass empty class objects to a function.
5853
5854 Wed Apr 1 14:58:35 1998 Mark Mitchell <mmitchell@usa.net>
5855
5856 * call.c (build_over_call): Do name resolution for default
5857 arguments of function templates in the scope of the templates.
5858
5859 Tue Mar 31 13:43:57 1998 Jeffrey A Law (law@cygnus.com)
5860
5861 * call.c: Include system.h. Remove includes, declarations and
5862 defines provided by system.h.
5863 * class.c, cvt.c, decl.c, decl2.c, errfn.c error.c: Likewise.
5864 * except.c, expr.c friend.c, g++spec.c, init.c, input.c: Likewise.
5865 * lex.c, parse.y, pt.c, ptree.c repo.c rtti.c, search.c: Likewise.
5866 * semantics.c, sig.c, spew.c, tree.c, typeck.c: Likewise.
5867 * typeck2.c, xref.c: Likewise.
5868 * Makefile.in: Dependencies updated as appropriate.
5869 * Make-lang.in: Likewise.
5870
5871 Mon Mar 30 12:15:00 1998 Mark Mitchell <mmitchell@usa.net>
5872
5873 * pt.c (fn_type_unification): Allow incomplete unification without
5874 an immediate error message.
5875
5876 Mon Mar 30 08:55:42 1998 Jason Merrill <jason@yorick.cygnus.com>
5877
5878 * tree.c (member_p): New fn.
5879 * decl2.c (finish_file): Only set DECL_STATIC_FUNCTION_P for
5880 initializing class members.
5881
5882 * cp-tree.def (TEMPLATE_PARM_INDEX): Class 'x'.
5883 * ptree.c (lang_print_xnode): Handle TEMPLATE_PARM_INDEX.
5884
5885 * call.c (build_method_call): Handle non-scoped destructors, too.
5886 * pt.c (tsubst_copy): Likewise.
5887
5888 * pt.c (print_template_context): Split out...
5889 (push_tinst_level): ...from here.
5890
5891 * friend.c (is_friend): Don't pass a type to decl_function_context.
5892
5893 * typeck.c (convert_for_initialization): Always hand off
5894 conversions to class type.
5895
5896 Sun Mar 29 20:01:59 1998 Jason Merrill <jason@yorick.cygnus.com>
5897
5898 * friend.c (is_friend): Local classes have the same access as the
5899 enclosing function.
5900
5901 Sun Mar 29 00:47:32 1998 Jeffrey A Law (law@cygnus.com)
5902
5903 * typeck.c (expand_target_expr): Delete dead function.
5904
5905 * search.c: Put various prototypes inside #ifdef MI_MATRIX.
5906
5907 * repo.c (save_string): Delete dead function.
5908
5909 * method.c (thunk_printable_name): Delete dead function.
5910
5911 * lex.c (yynextch): Delete dead function.
5912
5913 * expr.c (tree_extract_aggr_init): #if 0 out.
5914
5915 * except.c (do_unwind): Delete dead function.
5916 (easy_expand_asm): Likewise.
5917
5918 * cvt.c (build_conversion_type_1): Delete dead function.
5919
5920 * cp-tree.h (push_expression_obstack): Declare.
5921
5922 * call.c (source_type): #if 0 out.
5923
5924 * class.c (alter_access): Remove unused label. Add braces
5925 around empty else clause.
5926
5927 * lex.c (yyprint): Fix argument to printf.
5928
5929 Sat Mar 28 17:43:52 1998 Mark Mitchell <mmitchell@usa.net>
5930
5931 * pt.c (tsubst): Clear TREE_USED for new FUNCTION_DECLs.
5932
5933 * pt.c (instantiate_class_template): Make sure template
5934 arguments are permanent.
5935 * init.c (resolve_offset_ref): Don't go looking around in
5936 template types.
5937
5938 * semantics.c: Add routines to handle expressions, and some
5939 declaration processing.
5940 * parse.y: Use them.
5941 (current_class_depth): Move declaration to cp-tree.h.
5942 * parse.c: Regenerated.
5943 * cp-tree.h: Use them.
5944 (current_class_depth): Declare.
5945 * pt.c (tsubst_copy): Use begin_stmt_expr and finish_stmt_expr.
5946
5947 Fri Mar 27 20:23:18 1998 Mark Mitchell <mmitchell@usa.net>
5948
5949 * error.c (dump_decl): Be a bit more explicit with template
5950 type arguments, when verbose.
5951
5952 Fri Mar 27 18:16:40 1998 Jason Merrill <jason@yorick.cygnus.com>
5953
5954 * inc/exception: Reorder closing braces.
5955
5956 Fri Mar 27 13:22:18 1998 Mark Mitchell <mmitchell@usa.net>
5957
5958 * pt.c (redeclare_class_template): New function.
5959 * cp_tree.h (redeclare_class_template): Declare it.
5960 * decl.c (xref_tag): Use it.
5961
5962 Thu Mar 26 11:16:30 1998 Jason Merrill <jason@yorick.cygnus.com>
5963
5964 * call.c (build_over_call): Check IS_AGGR_TYPE, not
5965 TYPE_LANG_SPECIFIC.
5966 * typeck.c (convert_arguments): Likewise.
5967
5968 * decl.c (grokdeclarator): Remove const and volatile from type after
5969 setting constp and volatilep.
5970
5971 * class.c (finish_struct_1): Don't warn about bool bitfield larger
5972 than one bit.
5973
5974 Thu Mar 26 10:25:52 1998 Mark Mitchell <mmitchell@usa.net>
5975
5976 * pt.c (convert_nontype_argument): STRIP_NOPS where appropriate.
5977
5978 Thu Mar 26 10:24:05 1998 Mark Mitchell <mmitchell@usa.net>
5979
5980 * call.c (build_object_call): Complain about ambiguous operator(),
5981 rather that crashing.
5982 (build_new_op): Likewise.
5983 (build_op_delete_call): Likewise.
5984
5985 Thu Mar 26 10:23:24 1998 Mark Mitchell <mmitchell@usa.net>
5986
5987 * cvt.c (perform_qualification_conversions): Use comp_target_types
5988 instead of comp_ptr_ttypes.
5989
5990 Wed Mar 25 16:10:50 1998 Mark Mitchell <mmitchell@usa.net>
5991
5992 * cp-tree.h (enforce_access): Declare.
5993 * call.c (enforce_access): Make it extern, not static.
5994 * class.c (alter_access): Use enforce_access; modify code for ISO
5995 compliance, rather than ARM rules.
5996
5997 Wed Mar 25 12:10:45 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
5998
5999 * cp-tree.h: Fix typo.
6000
6001 Wed Mar 25 02:01:02 1998 Jason Merrill <jason@yorick.cygnus.com>
6002
6003 * expr.c (cplus_expand_expr): Only do PCC_STATIC_STRUCT_RETURN thing
6004 if (aggregate_value_p (type)).
6005
6006 * decl2.c (constructor_name_full): Handle TYPENAME_TYPE.
6007
6008 Tue Mar 24 16:12:01 1998 Mark Mitchell <mmitchell@usa.net>
6009
6010 * tree.c (mapcar): When dealing with a DECL, use it's constant
6011 value, if any.
6012 * pt.c (lookup_template_class): Don't mangle the names of template
6013 classes whose arguments are unknown.
6014
6015 * pt.c (tsubst_expr): Handle GOTO_STMT correctly.
6016
6017 Tue Mar 24 12:21:55 1998 Benjamin Kosnik <bkoz@lisa.cygnus.com>
6018
6019 * decl.c (init_decl_processing): Set TYPE_PRECISON for bools to 1.
6020
6021 Tue Mar 24 12:21:48 1998 Jim Wilson <wilson@cygnus.com>
6022
6023 * decl.c (init_decl_processing): Initialize TYPE_MAX_VALUE for
6024 boolean_type_node to 1.
6025
6026 Tue Mar 24 10:23:47 1998 Mark Mitchell <mmitchell@usa.net>
6027
6028 * error.c (dump_expr): Remove unused variable `l'.
6029
6030 * pt.c (for_each_template_parm): New function, created by
6031 converting uses_template_parms.
6032 (tree_fn_t): New typedef.
6033 (uses_template_parms): Use it.
6034 (mark_template_parm): New function.
6035 (push_template_decl): Check that the argument list of a partial
6036 specialization uses all the template parameters.
6037
6038 * Make-lang.in (c++filt): Don't delete cxxmain.c after we're done
6039 with it; we might want it for debugging.
6040 * cp-tree.h (type_unification): Change interface.
6041 * class.c (finish_struct_1): Skip nested template types, just like
6042 ordinary nested types.
6043 (instantiate_type): Use new interface to type_unification.
6044 * lex.c (init_lex): Add __sz as opname for sizeof.
6045 * method.c (build_overload_scope_ref): New function.
6046 (build_overload_int): Handle complex expressions. Set
6047 numeric_output_need_bar if necessary.
6048 (build_overload_value): Handle non-PARM_DECL nodes; this
6049 routine is now used by build_overload_int. Remove some
6050 assignments to numeric_output_need_bar. Use
6051 build_overload_scope_ref.
6052 (build_qualified_name): Note that some template mangled names end
6053 with digits, and set numeric_output_need_bar appropriately. Use
6054 build_underscore_int.
6055 * pt.c (unify): Change interface.
6056 (type_unification_real): Likewise.
6057 (determine_specialization): Use new interfaces.
6058 (tsubst): Deal gracefully with situations in which the argument
6059 vector is not fully filled.
6060 (fn_type_unification): Use new interfaces.
6061 (type_unification): Likewise. Remove NOP_EXPR hack.
6062 (type_unification_real): Likewise.
6063 (unify): Likewise. Deal with unification of complex expresions.
6064
6065 Mon Mar 23 12:24:37 1998 Jason Merrill <jason@yorick.cygnus.com>
6066
6067 * pt.c (complete_template_args): Initialize skip properly.
6068
6069 * decl.c (make_typename_type): Revert.
6070 (make_implicit_typename): Remove.
6071 (lookup_name_real): Don't call it. Call lookup_field if we see a
6072 TYPE_DECL from a template base.
6073 * search.c (lookup_field): Do implicit typename stuff.
6074
6075 Sun Mar 22 00:50:42 1998 Nick Clifton <nickc@cygnus.com>
6076 Geoff Noer <noer@cygnus.com>
6077
6078 * Makefile.in: Various fixes for building cygwin32 native toolchains.
6079 * Make-lang.in: Likewise.
6080
6081 Fri Mar 20 18:07:39 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
6082
6083 * pt.c (tsubst, TEMPLATE_TEMPLATE_PARM): Simplify.
6084
6085 Fri Mar 20 10:42:07 1998 Jason Merrill <jason@yorick.cygnus.com>
6086
6087 * decl.c (make_implicit_typename): Rewrite removed code.
6088 (make_typename_type): Call it if the type we look up comes from
6089 a base that uses template parms.
6090
6091 * pt.c (complete_template_args): Rewrite.
6092 (tsubst, FUNCTION_DECL): Use it.
6093
6094 Fri Mar 20 08:12:43 1998 H.J. Lu (hjl@gnu.org)
6095
6096 * semantics.c (finish_asm_stmt): Fix combine strings. Call
6097 c_expand_asm_operands () if output_operands, input_operands or
6098 clobbers is not NULL_TREE.
6099
6100 Fri Mar 20 00:10:19 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
6101
6102 * pt.c (complete_template_args): New function.
6103 (get_bindings): Deal with specializations of function templates
6104 with return type containing parameters from outer class
6105 templates.
6106 (tsubst, TEMPLATE_TEMPLATE_PARM): When reducing parameter level,
6107 substitute arguments and compose a new type.
6108
6109 Thu Mar 19 19:01:48 1998 Mark Mitchell <mmitchell@usa.net>
6110
6111 * pt.c (tsubst): Clear DECL_PENDING_INLINE_INFO for new
6112 FUNCTION_DECLs.
6113
6114 Thu Mar 19 11:51:58 1998 Jason Merrill <jason@yorick.cygnus.com>
6115
6116 * decl.c (make_implicit_typename): Lose useless code.
6117
6118 * call.c (standard_conversion): Handle A* -> const A* properly.
6119
6120 * pt.c (get_bindings_real): Rename from get_bindings. Add
6121 check_rettype parm.
6122 (get_bindings): Pass 1.
6123 (get_bindings_overload): Pass 0.
6124
6125 Wed Mar 19 09:08:12 1998 Mark Mitchell <mmitchell@usa.net>
6126
6127 * pt.c (check_explicit_specialization): When reverting a static
6128 member function, also remove the `this' parameter from
6129 last_function_parms.
6130
6131 Thu Mar 19 02:27:48 1998 Jason Merrill <jason@yorick.cygnus.com>
6132
6133 * pt.c (tsubst_copy, CONST_DECL): Don't bother tsubsting
6134 a function context.
6135
6136 * decl.c (store_bindings): Use free_binding_vecs.
6137 (pop_from_top_level): Likewise.
6138
6139 Wed Mar 18 12:41:43 1998 Jason Merrill <jason@yorick.cygnus.com>
6140
6141 * decl.c (make_implicit_typename): Only change the type of a
6142 TYPENAME_TYPE.
6143
6144 Wed Mar 18 10:09:51 1998 Mark Mitchell <mmitchell@usa.net>
6145
6146 * semantics.c: New file, containing routines to perform the
6147 semantic phase of parsing.
6148 * parse.y: Use it.
6149 * pt.c (tsubst_expr): Likewise.
6150 * cp-tree.h: Declare the various functions in semantics.c.
6151 Provide macros to access _STMT tree nodes.
6152 * cp-tree.def: Add ASM_STMT tree node.
6153 * Makefile.in, Make-lang.in: Add dependencies on and for
6154 semantics.c.
6155
6156 Wed Mar 18 00:24:10 1998 Jason Merrill <jason@yorick.cygnus.com>
6157
6158 * pt.c (push_template_decl): Only check primary templates.
6159
6160 * pt.c (check_explicit_specialization): Complain about default args
6161 in explicit specialization.
6162
6163 * parse.y (nomods_initdcl0): Also call cp_finish_decl for a
6164 constructor_declarator.
6165
6166 Tue Mar 17 14:44:54 1998 Mark Mitchell <mmitchell@usa.net>
6167
6168 * typeck2.c (build_x_arrow): Don't crash when an aggregate type
6169 has no overloaded operator ->.
6170
6171 * call.c (build_field_call): Don't crash when presented with a
6172 field that is actually a nested type.
6173
6174 * decl.c (pushtag): Deal with friend class injection in local
6175 classes.
6176
6177 * call.c (build_object_call): Don't crash if OBJ is a
6178 pointer-to-member-function.
6179
6180 Tue Mar 17 11:40:26 1998 Jason Merrill <jason@yorick.cygnus.com>
6181
6182 * pt.c (push_template_decl): Complain about template with C linkage,
6183 anonymous template class.
6184
6185 Mon Mar 16 12:10:39 1998 Jason Merrill <jason@yorick.cygnus.com>
6186
6187 * class.c (pushclass): Only use the mi_matrix stuff #ifdef MI_MATRIX.
6188 * search.c: Likewise.
6189
6190 * lex.c (do_pending_defargs): Only call
6191 maybe_{begin,end}_member_template_processing for FUNCTION_DECLs.
6192
6193 * parse.y (initdcl0_innards): Move maybeasm back into initdcl0 et al.
6194
6195 Mon Mar 16 10:47:22 1998 Mark Mitchell <mmitchell@usa.net>
6196
6197 * parse.y: Deal with CONSTRUCTORS in new_initializers.
6198
6199 Mon Mar 16 10:54:21 1998 Mark Mitchell <mmitchell@usa.net>
6200
6201 * pt.c (tsubst_copy): Deal with BIND_EXPR in a way that more
6202 closely mimics the behavior in parse.y.
6203 (tsubst_expr): Return the resuting BLOCK when making a tsubst'ing
6204 into a compound statement.
6205
6206 Sun Mar 15 02:07:26 1998 Jason Merrill <jason@yorick.cygnus.com>
6207
6208 * cp-tree.h (TEMPLATE_PARMS_FOR_INLINE): New macro.
6209 * pt.c (inline_needs_template_parms): New fn.
6210 (original_template): New fn.
6211 (push_inline_template_parms_recursive): New fn.
6212 (maybe_begin_member_template_processing): Use them.
6213 (maybe_end_member_template_processing): Likewise.
6214 (is_member_or_friend_template): Rename to is_member_template.
6215 Member functions of local classes are never member templates.
6216
6217 Sun Mar 15 01:14:22 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
6218
6219 * lex.c (do_identifier): Handle TEMPLATE_DECL that was
6220 added in the class scope to catch redefinition error.
6221
6222 * pt.c (reduce_template_parm_level): Also copy
6223 the DECL_TEMPLATE_PARMS field.
6224
6225 Sun Mar 15 10:54:08 1998 Mark Mitchell <mmitchell@usa.net>
6226
6227 * pt.c (tsubst): Clear TYPE_REFERENCE_TO when creating a
6228 reduced-level template type parameter.
6229
6230 Sun Mar 15 12:26:02 1998 Manfred Hollstein <manfred@s-direktnet.de>
6231
6232 * cp-tree.h (struct lang_decl_flags): Add needs_final_overrider.
6233 (DECL_NEEDS_FINAL_OVERRIDER_P): New macro.
6234 * class.c (override_one_vtable): Set DECL_NEEDS_FINAL_OVERRIDER_P.
6235 * decl.c (duplicate_decls): Propagate it.
6236 * typeck2.c (abstract_virtuals_error): Use two loops to emit
6237 abstract virtual functions and virtual functions which need a
6238 final overrider separately.
6239
6240 Thu Mar 12 09:39:40 1998 Manfred Hollstein <manfred@s-direktnet.de>
6241
6242 * lang-specs.h: Properly put brackets around array elements in
6243 initializer.
6244
6245 * typeck.c (build_binary_op_nodefault): Correctly place parens around
6246 && and || in expression.
6247
6248 Thu Mar 12 09:26:04 1998 Manfred Hollstein <manfred@s-direktnet.de>
6249
6250 * call.c (default_parm_conversions): Remove prototype definition.
6251 (build_method_call): Remove unused variable result.
6252
6253 * cvt.c (ocp_convert): Remove unused variable conversion.
6254
6255 * decl2.c (ambiguous_decl): Add explicit parameter definition for name.
6256
6257 * except.c (do_unwind): #if 0 definition of unused variables fcall
6258 and next_pc.
6259
6260 * expr.c (extract_scalar_init): #if 0 prototype and function
6261 definition.
6262
6263 * init.c (expand_aggr_init_1): Remove unused variable init_type.
6264 (build_new_1): Remove unused variable t.
6265
6266 * pt.c (instantiate_class_template): Remove unused variable newtag;
6267 cast called function return value to void.
6268 (do_decl_instantiation): Remove unused variables name and fn.
6269
6270 * tree.c (get_type_decl): Add default return to shut up compiler from
6271 complaining control reaches end of non-void function.
6272
6273 * typeck.c (build_x_conditional_expr): Remove unused variable rval.
6274
6275 Thu Mar 12 09:12:15 1998 Manfred Hollstein <manfred@s-direktnet.de>
6276
6277 * call.c (default_parm_conversions): Remove prototype definition.
6278 (build_method_call): Remove unused variable result.
6279 (build_over_call): Add default case in enumeration switch.
6280
6281 Thu Mar 12 08:39:13 1998 Manfred Hollstein <manfred@s-direktnet.de>
6282
6283 * decl2.c (lang_decode_option): Change j's type to size_t.
6284
6285 * tree.c (layout_vbasetypes): record_align and desired_align are of
6286 type unsigned int; const_size and nonvirtual_const_size likewise.
6287
6288 Wed Mar 11 07:25:20 1998 Mark Mitchell <mmitchell@usa.net>
6289
6290 * parse.y (new_initializer): Make sure all initializers are
6291 lists.
6292
6293 Tue Mar 10 07:32:36 1998 Mark Mitchell <mmitchell@usa.net>
6294
6295 * decl2.c (import_export_decl): Mark tinfo functions for
6296 cv-qualified versions of class types as DECL_NOT_REALLY_EXTERN.
6297
6298 Fri Mar 6 23:27:35 1998 Jeffrey A Law (law@cygnus.com)
6299
6300 * method.c: Fix typo.
6301
6302 Fri Mar 6 10:06:59 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
6303
6304 * method.c: Include "system.h" to get stdlib.h, stdio.h,
6305 ctype.h, string.h, etc.
6306 (issue_nrepeats): Add default case in enumeration switch.
6307 (check_btype): Likewise.
6308 (process_overload_item): Likewise.
6309
6310 * Makefile.in (method.o): Depend on system.h.
6311
6312 Wed Mar 4 22:26:53 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
6313
6314 * lex.c (do_scoped_id): Fix parenthesizing.
6315
6316 Wed Mar 4 12:11:53 1998 Michael Tiemann <tiemann@axon.cygnus.com>
6317
6318 * rtti.c (get_tinfo_fn_dynamic): If this function is called an
6319 FLAG_RTTI is unset, initialize type info machinery and continue
6320 with FLAG_RTTI enabled.
6321 (get_typeid): Ditto.
6322
6323 Wed Mar 4 11:47:55 1998 Jason Merrill <jason@yorick.cygnus.com>
6324
6325 * typeck.c (unary_complex_lvalue): &D::i has type B::* if i comes
6326 from B.
6327
6328 Wed Mar 4 11:28:08 1998 Mark Mitchell <mmitchell@usa.net>
6329
6330 * pt.c (finish_member_template_decl): Deal more gracefully with
6331 invalid declarations.
6332
6333 Tue Mar 3 01:38:17 1998 Jason Merrill <jason@yorick.cygnus.com>
6334
6335 * cvt.c, decl.c, decl2.c, init.c, rtti.c, typeck.c, typeck2.c,
6336 cp-tree.h: Clean up more old overloading code, old RTTI code, and
6337 some formatting quirks.
6338
6339 * call.c, class.c, cp-tree.h, cvt.c, decl.c, init.c, lex.c,
6340 method.c, pt.c, ptree.c, typeck.c: Remove support for
6341 -fno-ansi-overloading and overloading METHOD_CALL_EXPR.
6342 * class.h: Remove.
6343 * Makefile.in: Adjust.
6344
6345 * pt.c (unify): Don't allow reduced cv-quals when strict.
6346
6347 * call.c, class.c, pt.c, cp-tree.h: Remove nsubsts parm from
6348 *type_unification* and unify.
6349
6350 Mon Mar 2 12:11:06 1998 Jason Merrill <jason@yorick.cygnus.com>
6351
6352 * parse.y (explicit_template_type): Remove TEMPLATE keyword.
6353 (nested_name_specifier): And add it before this use.
6354 (typename_sub0): And this use. Also add use without the keyword.
6355 (typename_sub1): Likewise.
6356 * pt.c (instantiate_class_template): Don't actually instantiate
6357 anything if our type uses template parms.
6358
6359 Mon Mar 2 11:04:59 1998 Jim Wilson <wilson@cygnus.com>
6360
6361 * decl.c (start_function): Don't call temporary_allocation for a
6362 nested function.
6363
6364 Sun Mar 1 21:06:37 1998 Jason Merrill <jason@yorick.cygnus.com>
6365
6366 * pt.c (instantiate_class_template): Don't mess with friends if
6367 our type uses template parms.
6368
6369 Sat Feb 28 12:06:44 1998 Jason Merrill <jason@yorick.cygnus.com>
6370
6371 * parse.y (nested_name_specifier): Use explicit_template_type.
6372 (typename_sub): Allow a template_type, an explicit_template_type,
6373 or an implicit template type at the end.
6374 * lex.c (yyprint): Handle a PTYPENAME being a TEMPLATE_DECL.
6375 * decl.c (make_typename_type): Handle template-id where the name
6376 is a TEMPLATE_DECL.
6377 * call.c (build_scoped_method_call): Handle member template
6378 destructor call.
6379 * pt.c (tsubst_copy, METHOD_CALL_EXPR): Don't assume a member
6380 destructor is represented by the type.
6381
6382 * cp-tree.h (TYPENAME_TYPE_FULLNAME): New macro.
6383 * parse.y (nested_name_specifier): Add 'template' case.
6384 (explicit_template_type): New rule.
6385 (typename_sub): Use it.
6386 * decl.c (make_typename_type): Handle getting a template-id for NAME.
6387 * pt.c (tsubst): Likewise.
6388
6389 Fri Feb 27 11:17:50 1998 Jason Merrill <jason@yorick.cygnus.com>
6390
6391 * pt.c (add_to_template_args): Fix thinko.
6392 (instantiate_class_template): Call it later.
6393
6394 * pt.c (get_class_bindings): Add outer_args parm.
6395 (most_specialized_class): Likewise.
6396 (instantiate_class_template): Pass it.
6397 (more_specialized_class): Likewise.
6398 (lookup_template_class): Get context from template if none
6399 was specified.
6400 (finish_member_template_decl): Don't do anything with a
6401 partial specialization.
6402 * decl2.c (check_member_template): Use IS_AGGR_TYPE instead of
6403 AGGREGATE_TYPE_P.
6404 * class.c (finish_struct): Member class templates have already been
6405 checked for name clashes.
6406 * decl.c (pushdecl_with_scope): Handle pushing at class level.
6407
6408 Fri Feb 27 02:25:16 1998 Jason Merrill <jason@yorick.cygnus.com>
6409
6410 * pt.c (tsubst, TEMPLATE_DECL): Support member class templates.
6411 (tsubst, *_PARM): Support multiple levels of template classes.
6412 (instantiate_class_template): Look up the pattern from the
6413 original template.
6414 (lookup_template_class): Handle getting a template for d1.
6415 (push_template_decl): Correct setting of 'primary'.
6416 (reduce_template_parm_level): Add 'levels' parm.
6417 (finish_member_template_decl): Support member class templates.
6418 (template_class_depth): Handle multiple levels.
6419 * parse.y (component_decl_1, fn.def2): Remove member template case.
6420 (component_decl): Add member template cases.
6421 * decl2.c (check_member_template): We now handle member template
6422 classes.
6423 * decl.c (pushtag): Handle member templates.
6424 * method.c (do_inline_function_hair): Don't touch
6425 IDENTIFIER_GLOBAL_VALUE.
6426 * init.c (build_offset_ref): If name isn't an identifier, just
6427 return it.
6428 * spew.c (yylex): Handle PTYPENAME like TYPENAME.
6429
6430 * typeck.c (get_delta_difference): Do adjust for conversions to
6431 and from virtual base.
6432
6433 Wed Feb 25 09:51:29 1998 Jason Merrill <jason@yorick.cygnus.com>
6434
6435 * typeck.c (get_delta_difference): Give hard error for conversion
6436 from virtual base.
6437
6438 * cp-tree.h: Tweak formatting.
6439
6440 Wed Feb 25 00:35:33 1998 Jason Merrill <jason@yorick.cygnus.com>
6441
6442 * decl.c (push_namespace): Handle redeclaration error.
6443
6444 * cp-tree.h (IDENTIFIER_NAMESPACE_VALUE): New macro.
6445 (IDENTIFIER_NAMESPACE_BINDINGS): New macro.
6446 (NAMESPACE_BINDING): New macro.
6447 (IDENTIFIER_GLOBAL_VALUE): Use NAMESPACE_BINDING.
6448 * *.c: Use them.
6449
6450 * pt.c (push_template_decl): Use innermost_args.
6451
6452 * decl.c (get_unique_name): Tweak from earlier in the name.
6453
6454 Tue Feb 24 22:15:04 1998 Martin von Loewis <loewis@informatik.hu-berlin.de>
6455
6456 * cp-tree.def: Add CPLUS_BINDING node.
6457 * cp-tree.h (tree_binding): new struct
6458 (BINDING_SCOPE, BINDING_VALUE): new macros
6459 (current_namespace, global_namespace): declare extern
6460 (struct lang_decl_flags): new field in_namespace
6461 (DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): new macros
6462 (DECL_NAMESPACE, SET_DECL_NAMESPACE): new macros
6463 (TREE_INDIRECT_USING): new macro
6464 * decl2.c (current_namespace, global_namespace): Declare. The
6465 value is a NAMESPACE_DECL now, not a TREE_LIST.
6466 (is_namespace_ancestor, namespace_ancestor):new static functions.
6467 (add_using_namespace, ambiguous_decl): likewise.
6468 (lookup_using_namespace): new support function for lookup_name.
6469 (qualified_lookup_using_namespace): new support function for
6470 do_scoped_id and lookup_namespace_name
6471 (get_namespace_id): mark as obsolete.
6472 (current_namespace_id): Likewise.
6473 (do_namespace_alias): Implement.
6474 (do_using_directive): Implement as call to add_using_namespace.
6475 * decl.c (binding_for_name): new function.
6476 (push_namespace, pop_namespace): implement.
6477 (push_decl): don't install a FUNCTION_DECL in the global branch.
6478 (lookup_namespace_name): implement using qualified lookup.
6479 (lookup_name_real): For global scoping, lookup in
6480 global_namespace. For namespace scoping, lookup in given
6481 namespace. For unscoped lookup, iterate over namespace,
6482 considering using directives.
6483 (init_decl_processing): initialize global_namespace.
6484 (grokvardecl): Build assembler name as static name for globals.
6485 (grokdeclarator): Remove old namespace mangling.
6486 (xref_tag): When installing a global binding for the
6487 tag, make sure we have an identifier.
6488 * method.c (build_overload_nested_name): mangle namespaces.
6489 (build_qualified_name): Likewise.
6490 (build_decl_overload_real): Likewise.
6491 * lex.c (build_lang_decl): set namespace for new declaration to
6492 current_namespace.
6493 (do_scoped_id): find global names in global or current
6494 namespace, or using qualified namespace lookup, depending on
6495 context.
6496 * init.c (build_member_call): When scope is namespace, use
6497 build_x_function_call instead.
6498 (build_offset_ref): When scope is namespace, collapse processing
6499 to lookup_namespace_name instead.
6500 * error.c (dump_decl): Support NAMESPACE_DECL.
6501 * decl.c (pushdecl): Bind globals to current namespace.
6502 (push_overloaded_decl): Likewise.
6503 (lookup_tag): Likewise.
6504 (lookup_name_current_level): Likewise.
6505 (xref_tag): Likewise.
6506 (start_function): Likewise.
6507 * lex.c (do_identifier): Likewise.
6508 (identifier_typedecl_value): Likewise.
6509 (real_yylex): Likewise.
6510 * method.c (do_inline_function_hair): Likewise.
6511 * parse.y (unscoped): Likewise.
6512 * pt.c (check_explicit_specialization): Likewise.
6513 (lookup_template_class): Likewise.
6514 * rtti.c (call_void_fn): Likewise.
6515 * sig.c (build_sigtable): Likewise.
6516 * ptree.c (lang_print_xnode): New function.
6517
6518 Tue Feb 24 01:40:24 1998 Jason Merrill <jason@yorick.cygnus.com>
6519
6520 * pt.c (instantiate_class_template): Don't instantiate if pedantic
6521 and the args use template parms.
6522
6523 * pt.c (push_tinst_level): If the instantiaton uses template parms,
6524 fail silently.
6525 * decl.c (xref_basetypes): Do call complete_type for basetypes
6526 that involve template parameters.
6527
6528 Tue Feb 24 00:36:43 1998 Jason Merrill <jason@yorick.cygnus.com>
6529
6530 * typeck2.c (process_init_constructor): Fix labeled init check.
6531
6532 Mon Feb 23 05:08:55 1998 Jason Merrill <jason@yorick.cygnus.com>
6533
6534 * pt.c, call.c, decl.c, method.c, cp-tree.h: Remove unused NARGS
6535 argument to tsubst and friends.
6536
6537 * pt.c (tsubst, FUNCTION_DECL): Tidy.
6538
6539 * typeck.c (build_x_function_call): Handle static member function
6540 templates like non-templates. Handle friend templates like normal
6541 function templates.
6542 * pt.c (tsubst, *_PARM): Don't use orig_level.
6543 (get_bindings): Don't call add_to_template_args.
6544 (instantiate_template): Likewise.
6545 (tsubst, FUNCTION_DECL): Call add_to_template_args as appropriate.
6546 * ptree.c (print_lang_type): Print index/level for template parms.
6547
6548 Mon Feb 23 02:52:29 1998 Mark Mitchell <mmitchell@usa.net>
6549
6550 * Make-lang.in (cc1plus): Note that cc1plus depends on
6551 cp/cp-tree.h and cp/cp-tree.def.
6552
6553 * cp-tree.def (TEMPLATE_CONST_PARM): Remove.
6554 (TEMPLATE_PARM_INDEX): New tree code, used to indicate a
6555 position in a template parameter list.
6556 * cp-tree.h (template_parm_index): New structure, used as the tree
6557 structure for a TEMPLATE_PARM_INDEX.
6558 (TEMPLATE_PARM_IDX): New macro.
6559 (TEMPLATE_PARM_LEVEL): Likewise.
6560 (TEMPLATE_PARM_DESCENDANTS): Likewise.
6561 (TEMPLATE_PARM_ORIG_LEVEL): Likewise.
6562 (TEMPLATE_PARM_DECL): Likewise.
6563 (TEMPLATE_TYPE_PARM_INDEX): Likewise.
6564 (TEMPLATE_TYPE_ORIG_LEVEL): Likewise.
6565 (TEMPLATE_TYPE_DECL): Likewise.
6566 (TEMPLATE_CONST_IDX): Remove.
6567 (TEMPLATE_CONST_LEVEL): Likewise.
6568 (TEMPLATE_CONST_SET_INFO): Likewise.
6569 (TEMPLATE_TYPE_SET_INFO): Likewise.
6570 (TEMPLATE_TYPE_IDX): Redefine in terms of TEMPLATE_PARM_INDEX
6571 node.
6572 (TEMPLATE_TYPE_LEVEL): Likewise.
6573 * decl.c (decls_match): Call comp_template_parms, rather than
6574 expanding it inline.
6575 (duplicate_decls): If two template declarations are being merged,
6576 then their TEMPLATE_INFOs should be merged as well.
6577 (grokfndecl): Save template-id information when declaring a friend
6578 with explicit template arguments. Pass arguments to
6579 check_explicit_specialization via correct convention; at some
6580 point check_explicit_specialization changed, but these call-sites
6581 did not.
6582 (grokdeclarator): Tidy up slightly.
6583 * decl2.c (check_classfn): Tidy up slightly. Don't assume that
6584 two template functions with the same DECL_ASSEMBLER_NAME the same,
6585 since the names are not yet mangled.
6586 * error.c (dump_decl): Use TEMPLATE_PARM_INDEX instead of
6587 TEMPLATE_CONST_PARM.
6588 (dump_expr): Likewise. Use the TEMPLATE_PARM_DECL to get at the
6589 decl for a non-type parameter, rather than printing `<tparm ...>'.
6590 * friend.c (is_friend): Handle TEMPLATE_DECL friends.
6591 (do_friend): Deal with template friends.
6592 * lex.c (do_pending_inlines): Call
6593 maybe_begin_member_template_processing, rather than
6594 conditionally calling begin_member_template_processing.
6595 (process_next_inline): Likewise. Call
6596 maybe_end_member_template_processing, rather than
6597 conditionally calling end_member_template_processing.
6598 (do_pending_defargs): Likewise.
6599 (do_identifier): Use TEMPLATE_PARM_INDEX instead of
6600 TEMPLATE_CONST_PARM.
6601 * method.c (build_mangled_template_parm_index): New function.
6602 (build_overload_value): Use it.
6603 (build_overload_name): Likewise.
6604 * pt.c (finish_member_template_decl): Allow friend declarations.
6605 (template_class_depth): New function.
6606 (is_member_template): Rename, and modify, to become...
6607 (is_member_or_friend_template): New function.
6608 (end_member_template_processing): Rename, and modify, to become...
6609 (maybe_end_member_template_processing).
6610 (build_template_parm_index): New function.
6611 (reduce_template_parm_level): New function.
6612 (process_template_parm): Modify to use build_template_parm_index.
6613 (push_template_decl): Deal with friend templates.
6614 (uses_template_parms): Use TEMPLATE_PARM_INDEX instead of
6615 TEMPLATE_CONST_PARM.
6616 (tsubst_friend_function): New function.
6617 (instantiate_class_template): Generate the DECL_FRIENDLIST
6618 for a new instantiation by using tsubst_friend_function rather
6619 than just tsubst.
6620 (tsubst): Don't tsubst into a type which is a TEMPLATE_DECL.
6621 Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM, and the
6622 appropriate new macros. Use reduce_template_parm_level to
6623 generate lower-level template parameters. Handle tsubst'ing into
6624 TEMPLATE_DECLS that declare TEMPLATE_TEMPLATE_PARMS. Don't forget
6625 to tsubst the DECL_CONTEXT and DECL_CLASS_CONTEXT of newly created
6626 templates. Similarly for the template parameters for a new
6627 template.
6628 (tsubst_copy): Tidy up slightly. Use TEMPLATE_PARM_INDEX instead
6629 of TEMPLATE_CONST_PARM. Handle TYPE_DECLs by tsubsting into them.
6630 (unify): Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM.
6631 (get_bindings): Call add_to_template_args if necessary.
6632 (instantiate_decl): Handle instantiations of friend templates.
6633 * search.c (lookup_field_1): Don't treat the TYPE_FIELDS of a
6634 TEMPLATE_TYPE_PARM as a list of fields; it's not!
6635 * spew.c (yylex): Do a little manual constant propogation to
6636 clarify the code.
6637
6638 Sun Feb 22 19:53:29 1998 Jeffrey A Law (law@cygnus.com)
6639
6640 * error.c: Include sys/types.h.
6641
6642 Thu Feb 19 14:49:09 1998 Jeffrey A Law (law@cygnus.com)
6643
6644 * method.c (build_mangled_name): Start CPP directives in column zero.
6645
6646 Thu Feb 19 10:36:48 1998 Jason Merrill <jason@yorick.cygnus.com>
6647
6648 * typeck2.c (process_init_constructor): Sorry about non-trivial
6649 labeled initializers.
6650 * parse.y (initlist): Reenable labeled initializers.
6651
6652 Thu Feb 19 10:15:55 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
6653
6654 * pt.c (coerce_template_parms) Add a new parameter, is_tmpl_parm,
6655 all callers changed. Rely on the new parameter instead of arg
6656 being a TREE_LIST when determine whether we are working inside
6657 template template parameter. Clean up is_type test.
6658
6659 Thu Feb 19 10:04:12 1998 Jason Merrill <jason@yorick.cygnus.com>
6660
6661 * cvt.c (cp_convert_to_pointer): Preserve TREE_CONSTANT.
6662 * typeck2.c (initializer_constant_valid_p): Allow conversions
6663 between pointers and refrerences.
6664
6665 1998-02-19 Brendan Kehoe <brendan@cygnus.com>
6666
6667 * typeck.c (build_unary_op): Only warn about incr/decr a pointer
6668 if pedantic || warn_pointer_arith.
6669
6670 Thu Feb 19 09:37:21 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
6671
6672 * pt.c (unify): Handle TEMPLATE_DECL.
6673
6674 1998-02-18 Brendan Kehoe <brendan@cygnus.com>
6675
6676 * cp-tree.h (strip_attrs): Remove decl.
6677
6678 1998-02-18 Doug Evans <devans@cygnus.com>
6679
6680 * decl.c (duplicate_decls): Call merge_machine_decl_attributes.
6681 Update olddecl's attributes too.
6682 (strip_attrs): Remove function.
6683 * typeck.c (common_type): Call merge_machine_type_attributes.
6684
6685 Tue Feb 17 14:07:52 1998 Mark Mitchell <mmitchell@usa.net>
6686
6687 * parse.y (initdcl0_innards): New grammar symbol.
6688 (nomods_initdecls, nomods_initdcl0): Change type from itype to
6689 none, since the resulting value is never used.
6690 (parse_decl): New function.
6691 (datadef): Remove redundant actions.
6692 (initdcl0, notype_initdcl0, nomods_initdcl0): Use initdcl0_innards.
6693 * parse.c: Regenerated.
6694
6695 Tue Feb 17 11:54:16 1998 Jason Merrill <jason@yorick.cygnus.com>
6696
6697 * parse.y (simple_stmt): Use getdecls() to check for decl.
6698
6699 Sat Feb 14 11:50:51 1998 Manfred Hollstein <manfred@s-direktnet.de>
6700
6701 * Make-lang.in (DEMANGLER_INSTALL_NAME, DEMANGLER_CROSS_NAME): New
6702 macros.
6703 (c++.install-common): Install c++filt properly as native or as cross
6704 variant.
6705 (c++.uninstall): Add c++filt.
6706
6707 Fri Feb 13 14:55:37 1998 Jason Merrill <jason@yorick.cygnus.com>
6708
6709 * call.c (standard_conversion): Fix multi-level ptr conversions.
6710
6711 Fri Feb 13 14:06:22 1998 Mike Stump <mrs@wrs.com>
6712
6713 * init.c (build_new): Propagate error_mark_node up.
6714
6715 Fri Feb 13 13:24:32 1998 Jason Merrill <jason@yorick.cygnus.com>
6716
6717 * parse.y (simple_stmt): If the condition isn't a declaration,
6718 start the controlled block after the test.
6719
6720 Fri Feb 13 02:26:10 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
6721
6722 * call.c (build_over_call): Convert builtin abs, labs and fabs to
6723 tree-codes.
6724 * decl.c (init_decl_processing): Reenable abs, labs and fabs as
6725 builtins.
6726
6727 Fri Feb 13 01:36:42 1998 Jason Merrill <jason@yorick.cygnus.com>
6728
6729 * call.c (standard_conversion): A BASE_CONV replaces an RVALUE_CONV.
6730
6731 Fri Feb 13 00:21:59 1998 Jason Merrill <jason@yorick.cygnus.com>
6732
6733 * cp-tree.h: Add access_protected_virtual_node.
6734 * class.c (init_class_processing): Initialize it.
6735 * decl.c (xref_basetypes): Use it.
6736 * parse.y (base_class_access_list): Likewise.
6737
6738 * Make-lang.in (DEMANGLER_PROG): Add $(exeext).
6739 (c++.install-common): Install c++filt.
6740
6741 Thu Feb 12 12:46:51 1998 Benjamin Kosnik <bkoz@rhino.cygnus.com>
6742
6743 * decl.c (shadow_tag): Give error for typedef-ing built-in types.
6744
6745 Wed Feb 11 23:28:05 1998 Mark Mitchell <mmitchell@usa.net>
6746
6747 * call.c (reference_binding): Use comptypes when comparing
6748 TYPE_MAIN_VARIANTS to handle non-canonical array/index types.
6749
6750 Wed Feb 11 16:42:04 1998 Mark Mitchell <mmitchell@usa.net>
6751
6752 * tree.c (is_overloaded_fn): Use really_overloaded_fn.
6753 (really_overloaded_fn): Move check here from is_overloaded_fn.
6754 (get_first_fn): Use really_overloaded_fn and is_overloaded_fn.
6755
6756 Wed Feb 11 15:54:18 1998 Mark Mitchell <mmitchell@usa.net>
6757
6758 * typeck.c (build_ptrmemfunc): Type-check pointer-to-member
6759 conversions.
6760
6761 Mon Feb 9 22:23:31 1998 Mark Mitchell <mmitchell@usa.net>
6762
6763 * cp-tree.h (push_template_decl): Return the decl passed in, or an
6764 equivalent duplicate.
6765 * decl.c (pushtag): Use the return value from push_template_decl.
6766 (duplicate_decls): When duplicating a template declaration, merge
6767 the DECL_TEMPLATE_RESULTs as well.
6768 (make_implicit_typename): Don't try to dive into typename types to
6769 find a context for making a new implicit typename.
6770 (start_decl): Use the return value from push_template_decl.
6771 (grokdeclarator): Complain about declarations list `const operator
6772 int'. Since we don't correctly handle in-class initializations of
6773 non-static data members, complain about this (now illegal)
6774 practice. Issue an error for initializations of non-const statics
6775 since that is illegal as well, and since we don't handle that case
6776 correctly either.
6777 (start_function): Use the return value from push_template_decl.
6778 (start_method): Likewise.
6779 * decl2.c (grokfield): Likewise. Since the change to
6780 grokdeclarator ensures that all initialized fields are in fact
6781 static, remove a redundant test for TREE_PUBLIC.
6782 * parse.y (initlist): Disable labeled initializers since they do
6783 not work as per the documentation, and since they do not use the
6784 same syntax as the C front end.
6785 * pt.c (push_template_decl): Return the decl passed in, or an
6786 equivalent duplicate.
6787 (lookup_template_class): When searching in a nested context,
6788 use the right arguments.
6789 (uses_template_parms): Handle the DECL_INITIAL for a CONST_DECL.
6790 * typeck.c (build_component_ref): Assign the correct type to the
6791 result of build_vfn_ref.
6792
6793 Tue Feb 10 23:56:46 1998 Jason Merrill <jason@yorick.cygnus.com>
6794
6795 * pt.c (convert_nontype_argument): Fix typo.
6796 (check_explicit_specialization): Allow old-style specialization
6797 of class template members.
6798
6799 Tue Feb 10 20:36:52 1998 Jason Merrill <jason@yorick.cygnus.com>
6800 Manfred Hollstein <manfred@s-direktnet.de>
6801
6802 * decl.c (grokdeclarator): Use DECL_USE_TEMPLATE instead
6803 when deciding to override DECL_ASSEMBLER_NAME.
6804
6805 Tue Feb 10 15:30:55 EST 1998 Andrew MacLeod <amacleod@torpedo.to.cygnus.com>
6806
6807 * decl2.c (lang_f_options): Add -fsquangle to option processing list.
6808 * cp-tree.h (flag_do_squangling): Add declaration.
6809 * lang-options.h: Add -fsquangle and -fno-squangle.
6810 * method.c: Add macros and static variables for squangling.
6811 (build_overload_name): Rename to build_mangled_name, add logic for B
6812 compression, and split into process_modifiers and
6813 process_overload_item.
6814 (process_modifiers): New function, to handle constant, reference,
6815 and pointer types.
6816 (process_overload_item): New function, handles issue of type codes.
6817 (build_overload_name): New function, start squangling and call
6818 build_mangled_name.
6819 (ALLOCATE_TYPEVEC, DEALLOCATE_TYPEVEC): Remove macro and expand inline.
6820 (start_squangling): New function to initialize squangling structs.
6821 (end_squangling): New function to destroy squangling structs.
6822 (nrepeats): Rename variable to Nrepeats.
6823 (issue_nrepeats): New function for issuing 'n' type repeats.
6824 (check_ktype): New function to check for type K name compression.
6825 (build_overload_nested_name): Add a check for K name compression.
6826 (build_qualified_name): Add a check for K name compression and don't
6827 use DECL_ASSEMBLER_NAME when squangling is on.
6828 (check_btype): New function, checks for B type compression.
6829 (build_static_name, build_decl_overload_real): Initiate squangling.
6830 (build_typename_overload, build_overload_with_type): Initiate
6831 squangling
6832
6833 Sun Feb 8 23:47:38 1998 scott snyder <sss@d0linux01.fnal.gov>
6834
6835 * method.c (make_thunk): Avoid name buffer overflow.
6836
6837 Sat Feb 7 16:48:54 1998 Jason Merrill <jason@yorick.cygnus.com>
6838
6839 * pt.c (instantiate_decl): Call cp_finish_decl for vars even if we
6840 don't define them yet.
6841
6842 * parse.y (nomods_initdcl0): Add constructor_declarator case.
6843
6844 Fri Feb 6 21:32:25 1998 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
6845
6846 * config-lang.in (diff_excludes): Use basename only.
6847
6848 Thu Feb 5 19:10:40 1998 Jason Merrill <jason@yorick.cygnus.com>
6849
6850 * tinfo2.cc: Add tinfo for signed char.
6851
6852 Thu Feb 5 14:38:23 1998 Mike Stump <mrs@wrs.com>
6853
6854 * search.c (compute_access): Handle protected constructors in derived
6855 classes as accessible.
6856
6857 Wed Feb 4 01:26:49 1998 Jason Merrill <jason@yorick.cygnus.com>
6858
6859 * expr.c (cplus_expand_expr, PCC_STATIC_STRUCT_RETURN code):
6860 Call convert_from_reference sooner.
6861
6862 Tue Feb 3 23:50:52 1998 Mark Mitchell <mmitchell@usa.net>
6863
6864 * cvt.c (ocp_convert): Obtain the constant values from constant
6865 decls even if the destination type is the same as the type of the
6866 decl.
6867
6868 * decl2.c (finish_file): Make sure that static inlines with
6869 definitions are not marked DECL_EXTERNAL before returning.
6870
6871 Tue Feb 3 22:43:42 1998 Jason Merrill <jason@yorick.cygnus.com>
6872
6873 * decl.c: Lose arg_looking_for_template.
6874 (lookup_name_real): Likewise.
6875 * parse.y: Lose processing_template_arg, template_arg1
6876 (primary): Likewise.
6877 * spew.c (yylex): Set lastiddecl for PTYPENAMEs, too.
6878
6879 Tue Feb 3 22:04:01 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
6880
6881 * error.c (dump_decl): Fix type of default arguments for template
6882 template parameters and nontype template parameters.
6883 * parse.y (template_parm): Handle invalid default template
6884 template arguments here.
6885
6886 * parse.y (template_parm): Use template_arg instead of PTYPENAME
6887 for default template template argument.
6888 * pt.c (coerce_template_parms): Merge default template argument
6889 codes. Can treat RECORD_TYPE as template name if it is implicitly
6890 created. Fix argument index in error message.
6891 * typeck.c (comptypes): Merge template argument comparison codes in
6892 TEMPLATE_TEMPLATE_PARM and RECORD_TYPE.
6893
6894 Tue Jan 6 01:42:44 1998 Mumit Khan <khan@xraylith.wisc.edu>
6895
6896 * lex.c (file_name_nondirectory): Also check for '/'.
6897
6898 Mon Feb 2 11:24:22 1998 Mark Mitchell <mmitchell@usa.net>
6899
6900 * parse.y (primary): Deal with statement-expressions in
6901 templates.
6902 * pt.c (tsubst_copy): Handle BIND_EXPR.
6903 * tree.c (mapcar): Likewise.
6904
6905 * call.c (add_template_candidate_real): Pass extra parameter to
6906 fn_type_unification.
6907 * cp-tree.h (fn_type_unification): Add parameter.
6908 * pt.c (fn_type_unification): Add additional parameter to deal with
6909 static member functions.
6910 (get_bindings): Deal with static member functions.
6911
6912 * cp-tree.h (DECL_NONSTATIC_MEMBER_FUNCTION_P): New macro.
6913 (revert_static_member_fn): Declare.
6914 * decl.c (revert_static_member_fn): Remove declaration. Change
6915 linkage from internal to external.
6916 (cp_finish_decl): Deal with virtual functions in classes local to
6917 template functions.
6918 * decl2.c (finish_file): Don't forget to emit increment/decrement
6919 expressions in initializers for file-scope variables.
6920 * parse.y (typename_sub2): If the typename doesn't names a
6921 template, rather than a type, issue an error message.
6922 * pt.c (check_explicit_specialization): Handle specializations of
6923 static member functions.
6924 (coerce_template_parms): Handle offset references to lists of
6925 member functions.
6926 * search.c (note_debug_info_needed): Don't crash when handed a
6927 type which is being defined.
6928 * typeck.c (complete_type): Don't crash when handed NULL_TREE;
6929 that can happen with some illegal code.
6930
6931 Mon Feb 2 00:57:38 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
6932
6933 * call.c (user_harshness): Initialize `code' to 0.
6934 (build_method_call): Initialize `candidates', `cp' and `len' to 0.
6935 (null_ptr_cst_p): Add parentheses around && within ||.
6936 (standard_conversion): Likewise.
6937 (z_candidate): Likewise.
6938 (build_user_type_conversion_1): Initialize `args' to NULL_TREE.
6939 (build_object_call): Likewise for `mem_args'.
6940 (build_new_op): Likewise for `mem_arglist'. Add `return' from
6941 default case in enumeration switch.
6942
6943 * class.c (build_vtable_entry): Add explicit braces to avoid
6944 ambiguous `else'.
6945 (build_class_init_list): Likewise.
6946 (finish_struct_1): Initialize `width' to 0.
6947 (instantiate_type): Initialize `name' to NULL_TREE. Add
6948 explicit braces to avoid ambiguous `else'.
6949
6950 * cvt.c (convert_to_aggr): Add explicit braces to avoid ambiguous
6951 `else'.
6952
6953 * decl.c (grok_reference_init): Eliminate unused parameter, all
6954 callers changed.
6955 (record_builtin_type): Initialize `tdecl' to NULL_TREE.
6956 (init_decl_processing): Initialize `vb_off_identifier' to NULL_TREE.
6957 (cp_finish_decl): Initialize `ttype' to NULL_TREE.
6958 (grokdeclarator): Add parentheses around && within ||. Add
6959 explicit braces to avoid ambiguous `else'.
6960 (grokparms): Initialize `type' to NULL_TREE.
6961 (xref_tag): Remove unused label `just_return'.
6962 (finish_enum): Initialize `minnode' and `maxnode' to NULL_TREE.
6963 (finish_function): Initialize `cond' and `thenclause' to NULL_TREE.
6964 (hack_incomplete_structures): Add parentheses around assignment
6965 used as truth value.
6966
6967 * decl2.c (coerce_delete_type): Hide definition of `e3'.
6968
6969 * error.c: Include <stdlib.h>.
6970 (dump_expr): Change the type of `i' to size_t. Remove unused
6971 label `error'.
6972
6973 * except.c (init_exception_processing): Remove unused variable `d'.
6974 (expand_throw): Likewise for `label'.
6975
6976 * friend.c (add_friends): Add explicit braces to avoid ambiguous
6977 `else'.
6978
6979 * init.c (sort_member_init): Initialize `last_field' to NULL_TREE.
6980 (sort_base_init): Likewise for `binfo'.
6981 (expand_member_init): Likewise for `rval'.
6982 (build_member_call): Add parentheses around assignment used as
6983 truth value.
6984 (build_offset_ref): Add explicit braces to avoid ambiguous `else'.
6985 (build_new): Initialize `nelts' to NULL_TREE. Initialize
6986 `old_immediate_size_expand' to 0.
6987 (build_new_1): Initialize `nelts' and `alloc_node' to NULL_TREE.
6988 (build_vec_delete_1): Remove unused variable `block'.
6989 (expand_vec_init): Initialize `itype' to NULL_TREE.
6990
6991 * lex.c: Include <strings.h> if we don't have <string.h>. Protect
6992 declaration of `index' and `rindex' with autoconf macros.
6993 (reinit_parse_for_expr): Remove unused variables
6994 `look_for_semicolon' and `look_for_lbrac'.
6995 (cons_up_default_function): Initialize `args' to NULL_TREE.
6996 (readescape): Initialize `firstdig' to 0.
6997 (real_yylex): Add parentheses around assignment used as truth value.
6998
6999 * method.c: Include <strings.h> if we don't have <string.h>.
7000 Protect declaration of `index' with autoconf macro.
7001
7002 * parse.y (primary): Add explicit braces to avoid ambiguous `else'.
7003 Initialize `type' to NULL_TREE.
7004 (structsp): Remove unused variable `id'.
7005
7006 * pt.c (coerce_template_parms): Add explicit braces to avoid
7007 ambiguous `else'.
7008 (lookup_template_class): Initialize `template' to NULL_TREE.
7009 (instantiate_class_template): Remove unused variable `name' and `e'.
7010 (tsubst): Likewise for `i'. Initialize `last' to NULL_TREE.
7011 (do_poplevel): Initialize `saved_warn_unused' to 0.
7012 (type_unification): Remove unused varable `parm'.
7013 (unify): Likewise for `j'.
7014
7015 * repo.c (init_repo): Add parentheses around assignment used as
7016 truth value.
7017 (finish_repo): Remove unused varable `p'.
7018
7019 * search.c (get_binfo): Initiize `type' to NULL_TREE.
7020 (get_base_distance): Likewise.
7021 (lookup_field): Initialize `rval_binfo_h', `type', `basetype_path'
7022 and `new_v' to NULL_TREE.
7023 (lookup_fnfields): Likewise for `rval_binfo_h'.
7024 (breadth_first_search): Add parentheses around assignment used as
7025 truth value.
7026 (get_template_base): Initialize `type' to NULL_TREE.
7027
7028 * sig.c (append_signature_fields): Initialize `last_mfptr' to
7029 NULL_TREE.
7030 (build_signature_table_constructor): Likewise for
7031 `last_rhs_field', `pfn' and `vt_off'.
7032 (build_sigtable): Likewise for `init'.
7033
7034 * tree.c (break_out_calls): Initialize `t2' to NULL_TREE.
7035 (propagate_binfo_offsets): Likewise for `delta'.
7036 (hash_tree_cons): Initialize hashcode to 0.
7037 (can_free): Likewise for `size'.
7038 (cp_tree_equal): Add explicit braces to avoid ambiguous `else'.
7039
7040 * typeck.c (convert_sequence): Hide prototype.
7041 (common_type): Add explicit braces to avoid ambiguous `else'.
7042 (comp_target_types): Likewise.
7043 (build_x_function_call): Initialize `ctypeptr' to NULL_TREE.
7044 (build_function_call_real): Add explicit braces to avoid ambiguous
7045 `else'.
7046 (convert_arguments): Initialize `called_thing' to 0.
7047 (convert_for_initialization): Initialize `savew' and `savee' to 0.
7048
7049 * typeck2.c (incomplete_type_error): Initialize `errmsg' to 0.
7050 (digest_init): Initialize `old_tail_contents' to NULL_TREE.
7051 (build_x_arrow): Likewise for `last_rval'.
7052
7053 * xref.c (GNU_xref_decl): Initialize `cls' to 0.
7054
7055 Sun Feb 1 12:45:34 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
7056
7057 * decl.c (init_decl_processing): Use set_sizetype.
7058 * decl2.c (sizetype): Don't declare.
7059 * typeck.c (c_sizeof): Convert result of *_DIV_EXPR to sizetype.
7060 (c_sizeof_nowarn, build_binary_op_nodefault): Likewise.
7061 (build_component_addr, unary_complex_lvalue): Likewise.
7062 * rtti.c (expand_class_desc): Likewise.
7063 * class.c (get_vfield_offset): Likewise.
7064
7065 Thu Jan 29 10:39:30 1998 Mark Mitchell <mmitchell@usa.net>
7066
7067 * pt.c (convert_nontype_argument): Move check for is_overloaded_fn
7068 early to avoid bogus error. Handle overloaded function
7069 names provided as template arguments correctly.
7070 (coerce_template_parms): Don't mishandle overloaded functions when
7071 dealing with template template parameters.
7072 (lookup_template_class): Issue an error message, rather than
7073 crashing, when the TYPE_DECL provided is not a template type.
7074
7075 Wed Jan 28 23:14:44 1998 Jason Merrill <jason@yorick.cygnus.com>
7076
7077 * class.c (instantiate_type): Don't just return a known type if
7078 it's wrong.
7079
7080 Wed Jan 28 11:04:07 1998 Mark Mitchell <mmitchell@usa.net>
7081
7082 * class.c (instantiate_type): Remove handling of FUNCTION_DECL
7083 since that code could never be reached.
7084
7085 * error.c (dump_decl): Avoid aborting in the midst of printing an
7086 error message about an illegal template declaration.
7087
7088 * parse.y (structsp): Print an error message, rather than crashing,
7089 when a class-head does not name a class.
7090
7091 * pt.c (convert_nontype_argument): Allow REAL_TYPE and COMPLEX_TYPE
7092 template arguments as a g++ extension.
7093
7094 * cp-tree.def (ALIGNOF_EXPR): New tree code.
7095 * decl2.c (grok_alignof): If processing_template_decl, just store
7096 the expression.
7097 * typeck.c (c_alignof): Likewise.
7098 * decl2.c (build_expr_from_tree): Handle ALIGNOF_EXPR.
7099 * error.c (dump_expr): Likewise.
7100 * pt.c (tsubst_copy): Likewise.
7101 * tree.c (cp_tree_equal): Likewise.
7102 * pt.c (uses_template_parms): Correctly determine whether or not a
7103 SIZEOF_EXPR/ALIGNOF_EXPR uses template parameters so that constant
7104 folding can be done.
7105
7106 * cp-tree.h (grok_enum_decls): Remove type parameter.
7107 * decl.c (grok_enum_decls): Likewise.
7108 * decl2.c (grok_x_components): Call grok_enum_decls
7109 unconditionally, since it will do nothing if there is no
7110 current_local_enum. Use the new calling sequence.
7111 * pt.c (tsubst_enum): Use the new calling sequence for
7112 grok_enum_decls.
7113
7114 * decl.c (start_function): Make member functions of local classes
7115 in extern inline functions have comdat linkage here...
7116 (grokdeclarator): Rather than here.
7117
7118 Wed Jan 28 10:55:47 1998 Jason Merrill <jason@yorick.cygnus.com>
7119
7120 * pt.c (convert_nontype_argument): Use decl_constant_value.
7121
7122 Tue Jan 27 16:42:21 1998 Mark Mitchell <mmitchell@usa.net>
7123
7124 * call.c (add_template_candidate_real): New function.
7125 (add_template_candidate): Use it.
7126 (add_template_conv_candidate): Likewise.
7127 (joust): Pass extra argument to more_specialized.
7128 * class.c (instantiate_type): Handle a single FUNCTION_DECL.
7129 (is_local_class): Remove.
7130 (finish_struct): Check TI_PENDING_SPECIALIZATION_FLAG.
7131 * cp-tree.h (is_local_class): Remove.
7132 (perform_array_to_pointer_conversion): Likewise.
7133 (finish_member_template_decl): Add.
7134 (check_explicit_specialization): Return a tree, not an int.
7135 (more_specialized): Take additional argument.
7136 (get_bindings): Likewise.
7137 (TI_PENDING_SPECIALIZATION_FLAG): New macro.
7138 * cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.
7139 (perform_array_to_pointer_conversion): Remove.
7140 * decl.c (saved_scope): Add processing_specialization,
7141 processing_explicit_instantiation fields.
7142 (maybe_push_to_top_level): Save them.
7143 (pop_from_top_level): Restore them.
7144 (grokfndecl): Use new return value from
7145 check_explicit_specialization.
7146 (start_decl): Don't check flag_guiding_decls before pushing
7147 decls.
7148 (cp_finish_decl): Remove previous (bogus) change.
7149 (grok_declarator): Use decl_function_context rather than
7150 is_local_class.
7151 * decl2.c (finish_file): Pass extra argument to get_bindings.
7152 (build_expr_from_tree): Let build_x_component_ref check
7153 validity of arguments rather than doing it here.
7154 * lex.c (cons_up_default_function): Remove code fooling with
7155 processing_specialization, processing_explicit_instantiation
7156 flags, as that is now done in {maybe_push_top,pop_from}_top_level.
7157 * method.c (build_overload_identifier): Mangle local classes in
7158 template functions correctly.
7159 * parse.y (finish_member_template_decl): Move to pt.c.
7160 * pt.c (finish_member_template_decl): Moved here from parse.y.
7161 (print_candidates): New function.
7162 (determine_specialization): Change interface. Properly look for
7163 most specialized versions of template candidates.
7164 (check_explicit_specialization): Fully process explicit
7165 instantiations.
7166 (push_template_decl): Avoid looking at CLASSTYPE fields in
7167 FUNCTION_DECLS.
7168 (determine_overloaded_function): Remove.
7169 (convert_nontype_argument): Change name from
7170 convert_nontype_parameter. Use determine_overloaded_function
7171 instead of instantiate_type.
7172 (mangle_class_name_for_template): Handle type contexts as well as
7173 function contexts.
7174 (classtype_mangled_name): Likewise.
7175 (lookup_template_class): Likewise.
7176 (tsubst): Likewise.
7177 (more_specialized): Take explict template arguments as a
7178 parameter.
7179 (most_specialized): Likewise.
7180 (get_bindings): Likewise. Check that return types match before
7181 proclaiming a function a match.
7182 (do_decl_instantiation): Remove code searching for function to
7183 instantiate; that is now done in check_explicit_specialization.
7184 (add_maybe_template): Pass extra argument to get_bindings.
7185 * tree.c (really_overloaded_fn): Use is_overloaded_fn to simplify
7186 implementation.
7187 * typeck.c (build_component_ref): Check for invalid arguments.
7188
7189 Tue Jan 27 01:44:02 1998 Jason Merrill <jason@yorick.cygnus.com>
7190
7191 * expr.c (cplus_expand_expr, AGGR_INIT_EXPR): Don't check that
7192 return_target and call_target are equivalent.
7193
7194 * pt.c (type_unification_real): Just accept function parms that
7195 don't use any template parms.
7196
7197 Sun Jan 25 03:30:00 1998 Jason Merrill <jason@yorick.cygnus.com>
7198
7199 * decl.c (cp_finish_decl): When bailing on a comdat variable, also
7200 unset DECL_NOT_REALLY_EXTERN.
7201
7202 * parse.y (typename_sub*): Fix std::.
7203
7204 Sat Jan 24 12:13:54 1998 Jason Merrill <jason@yorick.cygnus.com>
7205
7206 * error.c (dump_decl): Fix type default template args.
7207 (dump_type): Hand TEMPLATE_DECL off to dump_decl.
7208
7209 Fri Jan 23 18:34:37 1998 Mumit Khan <khan@xraylith.wisc.edu>
7210
7211 * lex.c (DIR_SEPARATOR): Define to be '/' if not already defined.
7212 (file_name_nondirectory): Use.
7213
7214 Wed Jan 21 10:29:57 1998 Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
7215
7216 * pt.c (coerce_template_parms): Don't access elements of ARGLIST
7217 that are not really present. Substitute default arguments in
7218 template template arguments. Correctly convert TEMPLATE_DECL to
7219 TEMPLATE_TEMPLATE_PARM.
7220 (comp_template_args): TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM
7221 are no longer treated specially here.
7222 * parse.y (template_template_parm): Fix copy error.
7223 * decl.c (grokdeclarator): Warn about missing `typename' for nested
7224 type created from template template parameters.
7225 * parse.y (bad_parm): Likewise
7226
7227 * class.c (finish_struct): Handle TEMPLATE_TEMPLATE_PARM.
7228 (push_nested_class): Likewise.
7229 * cp-tree.def (TEMPLATE_TEMPLATE_PARM): New tree code.
7230 * cp-tree.h (DECL_TEMPLATE_TEMPLATE_PARM_P): New macro.
7231 (copy_template_template_parm): Declare.
7232 * decl.c (arg_looking_for_template): New variable.
7233 (lookup_name_real): Handle TEMPLATE_TEMPLATE_PARM.
7234 Try to return TEMPLATE_DECL or TEMPLATE_TEMPLATE_PARM
7235 node if arg_looking_for_template is nonzero.
7236 (pushdecl): Handle TEMPLATE_TEMPLATE_PARM.
7237 (grok_op_properties, xref_tag, xref_basetypes): Likewise.
7238 (grokdeclarator): Handle TEMPLATE_DECL.
7239 * decl2.c (constructor_name_full): Handle TEMPLATE_TEMPLATE_PARM.
7240 * error.c (dump_type): Add TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM.
7241 (dump_type_prefix, dump_type_suffix) Handle TEMPLATE_TEMPLATE_PARM.
7242 (dump_decl): Handle unnamed template type parameters.
7243 Handle template template parameters.
7244 (dump_function_name): Handle template template parameters.
7245 * init.c (is_aggr_typedef, is_aggr_type, get_aggr_from_typedef):
7246 Handle TEMPLATE_TEMPLATE_PARM.
7247 * method.c (build_template_template_parm_names): New function.
7248 (build_template_parm_names): Handle TEMPLATE_DECL.
7249 (build_overload_nested_name, build_overload_name):
7250 Handle TEMPLATE_TEMPLATE_PARM.
7251 * parse.y (maybe_identifier): New nonterminal.
7252 (template_type_parm): Use it.
7253 (template_template_parm, template_arg1): New nonterminal.
7254 (template_parm): Add template_template_parm rules.
7255 (template_arg): Set processing_template_arg.
7256 (template_arg1): Rules moved from template_arg.
7257 (primary, nonnested_type): Set arg_looking_for_template if we are
7258 processing template arguments.
7259 * pt.c (begin_member_template_processing): Handle TEMPLATE_DECL.
7260 (process_template_parm): Handle template template parameters.
7261 (coerce_template_parms, comp_template_args): Likewise.
7262 (mangle_class_name_for_template, lookup_template_class): Likewise.
7263 (uses_template_parms): Handle TEMPLATE_DECL and
7264 TEMPLATE_TEMPLATE_PARM.
7265 (current_template_args): Handle TEMPLATE_DECL.
7266 (tsubst, tsubst_copy, unify): Handle TEMPLATE_TEMPLATE_PARM.
7267 * search.c (dfs_walk, dfs_record_inheritance):
7268 Handle TEMPLATE_TEMPLATE_PARM.
7269 * tree.c (copy_template_template_parm): New function.
7270 (mapcar): Handle TEMPLATE_TEMPLATE_PARM.
7271 * typeck.c (comptypes): Handle TEMPLATE_TEMPLATE_PARM.
7272
7273 Mon Jan 19 22:40:03 1998 Mark Mitchell <mmitchell@usa.net>
7274
7275 * decl.c (start_decl): Don't allow duplicate definitions of static
7276 data members.
7277
7278 * call.c (build_user_type_conversion_1): Handle user-defined
7279 template conversion operators correctly.
7280
7281 * decl2.c (build_expr_from_tree): Issue an error message if the
7282 object in a COMPONENT_REF is a TEMPLATE_DECL.
7283
7284 * typeck.c (incomplete_type_error): Handle TEMPLATE_TYPE_PARMs.
7285
7286 * class.c (is_local_class): New function.
7287 * cp-tree.h (is_local_class): Declare it.
7288 (last_tree): Likewise.
7289 (begin_tree): Likewise.
7290 (end_tree): Likewise.
7291 (lookup_template_class): Change prototype.
7292 * decl.c (cp_finish_decl): Check for NULL where necesary.
7293 Consider FUNCTION_DECLS to declare objects with top-level binding,
7294 when calling make_decl_rtl.
7295 (grokdeclarator): Give members of local classes internal linkage.
7296 (start_function): Remove declaration of last_tree.
7297 (finish_function): Set flag_keep_inline_functions around call to
7298 rest_of_compilation if we are processing a member function in a
7299 local class.
7300 (start_method): Call push_template_decl for member functions of
7301 local classes in template functions.
7302 * decl2.c (import_export_decl): Don't give external linkage to
7303 instantiations of templates with internal linkage.
7304 * parse.y (last_tree): Remove declaration.
7305 (template_type): Pass extra parameter to lookup_template_class.
7306 (self_template_type): Likewise.
7307 (structsp): Move call to reset_specialization into left_curly.
7308 (left_curly): Call reset_specialization, and begin_tree.
7309 * pt.c (saved_trees): New variable.
7310 (mangle_class_name_for_template): Change prototype. Use
7311 additional function context to name local classes in templates
7312 correctly.
7313 (classtype_mangled_name): Pass the context.
7314 (push_template_decl): Handle local classes and templates, and
7315 member functions for such classes.
7316 (convert_nontype_parameter): Fix handling of pointer-to-member
7317 constants.
7318 (lookup_template_class): Handle local classes in templates.
7319 (tsubst): Likewise. Don't assume that template instantiations
7320 have external linkage; pay attention to the template declaration.
7321 (mark_decl_instantiated): Likewise.
7322 (begin_tree): New function.
7323 (end_tree): Likewise.
7324
7325 * decl.c (xref_basetypes): Don't call complete_type for basetypes
7326 that involve template parameters; that can lead to infinite
7327 recursion unnecessarily.
7328
7329 * pt.c (register_specialization): Do not register specializations
7330 that aren't ready to be registered yet.
7331 (check_explicit_specialization): Handle explicit specialization of
7332 constructors and destructors.
7333 (build_template_decl): New function.
7334 (push_template_delc): Handle out-of-class specializations of
7335 member templates.
7336
7337 * pt.c (check_explicit_specialization): Set up the template
7338 information before registering the specialization.
7339 (coerce_template_parms): Fix thinko.
7340 (tsubst): Handle specializations of member templates correctly.
7341
7342 * class.c (finish_struct_methods): Remove calls to
7343 check_explicit_specialization from here.
7344 (finish_struct): And insert them here.
7345 * cp-tree.h (perform_qualification_conversions): New function.
7346 (perform_array_to_pointer_conversion): Likewise.
7347 (begin_explicit_instantiation): Likewise.
7348 (end_explicit_instantiation): Likewise.
7349 (determine_specialization): Renamed from
7350 determine_explicit_specialization.
7351 (comp_template_parms): New function.
7352 (processing_explicit_instantiation): New variable.
7353 * cvt.c (perform_qualification_conversions): New function.
7354 (perform_array_to_pointer_conversion): Likewise.
7355 * decl.c (duplicate_decls): Don't consider template functions
7356 alike unless they have the same parameters. Refine handling of
7357 instantiation/specialization mismatches.
7358 (start_decl): Don't call pushdecl for template specializations,
7359 since they don't affect overloading.
7360 (start_function): Likewise
7361 (grokfndecl): Call check_explicit_specialization a little later.
7362 Don't call duplicate_decls for memberm template specializations.
7363 (grokdeclarator): Don't update template_count for classes that are
7364 themselves specializations. Remove use of `2' as parameter to
7365 grokfndecl since that value isn't used.
7366 * lex.c (cons_up_default_function): Save and restore
7367 processing_explicit_instantiation around calls to grokfield.
7368 * parse.y (finish_member_template_decl): New function.
7369 (component_decl_1): Use it.
7370 (fn.def2): Likewise.
7371 (template_arg_list_opt): New nonterminal.
7372 (template_type): Use it.
7373 (self_template_type): Likewise.
7374 (template_id): Likewise.
7375 (object_template_id): Likewise.
7376 (notype_template_declarator): Likwise.
7377 (begin_explicit_instantiation): Likewise.
7378 (end_explicit_instantiation): Likewise.
7379 (explicit_instantiation): Use them.
7380 * pt.c (coerce_template_parms): Add parameters.
7381 (processing_explicit_instantiation): New variable.
7382 (convert_nontype_parameter): New function.
7383 (determine_overloaded_function): Likewise.
7384 (begin_explicit_instantiation): Likewise.
7385 (end_explicit_instantiation): Likewise.
7386 (retrieve_specialization): Likewise.
7387 (register_specialization): Likewise.
7388 (processing_explicit_specialization): Removed.
7389 (determine_specialization): Handle specializations of member
7390 functions of template class instantiations.
7391 (check_explicit_specialization): Refine to conform to standard.
7392 (comp_template_parms): New function.
7393 (coerce_template_parms): Call convert_nontype_parameter.
7394 (tsubst): Refine handling of member templates. Use
7395 register_specialization.
7396 (instantiate_template): Use retrieve_specialization.
7397 (do_decl_instantiation): Likewise.
7398 (instantiate_decl): Likewise.
7399 (type_unification): Improve handling of explict template
7400 arguments.
7401 * tree.c (mapcar): Return error_mark_node, rather than aborting,
7402 on VAR_DECLS, FUNCTION_DECLS, and CONST_DECLS.
7403 * typeck.c (build_unary_op): Call determine_specialization, rather
7404 than determine_explicit_specialization.
7405
7406 Mon Jan 19 13:18:51 1998 Jason Merrill <jason@yorick.cygnus.com>
7407
7408 * cvt.c (build_up_reference): A TARGET_EXPR has side effects.
7409
7410 Fri Jan 16 11:40:50 1998 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
7411
7412 * error.c (dump_decl): For enum tags, output the tag, not its value.
7413
7414 1998-01-13 Brendan Kehoe <brendan@cygnus.com>
7415
7416 * decl.c (init_decl_processing): Only call init_rtti_processing
7417 FLAG_RTTI is set.
7418
7419 Mon Jan 12 01:35:18 1998 Jason Merrill <jason@yorick.cygnus.com>
7420
7421 * init.c (build_new_1): Split out from build_new.
7422 (build_new): Just return a NEW_EXPR.
7423 * expr.c (cplus_expand_expr): Handle NEW_EXPR.
7424
7425 * decl2.c (get_temp_regvar): Tweak.
7426
7427 * cp-tree.h (TREE_CALLS_NEW): Comment out.
7428 * class.c (resolves_to_fixed_type_p): Remove use.
7429 * method.c (build_opfncall): Likewise.
7430 * call.c (build_new_op): Likewise.
7431
7432 Wed Jan 7 23:47:13 1998 Jason Merrill <jason@yorick.cygnus.com>
7433
7434 * exception.cc (__eh_alloc, __eh_free): New fns.
7435 (__cp_push_exception, __cp_pop_exception): Use them.
7436 (__uncatch_exception): Call terminate here if no exception.
7437 * except.c (build_terminate_handler): New fn.
7438 (expand_start_catch_block): Use it.
7439 (expand_exception_blocks): Likewise.
7440 (alloc_eh_object): New fn.
7441 (expand_throw): Use it. Protect exception init with terminate.
7442 * typeck.c (build_modify_expr): Remove code that ignores trivial
7443 methods.
7444
7445 Mon Dec 22 11:36:27 1997 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
7446
7447 * call.c (add_builtin_candidate): Add default case in enumeration
7448 switch.
7449 (build_new_op): Likewise.
7450 (convert_like): Likewise.
7451 * cvt.c (build_expr_type_conversion): Likewise.
7452 * tree.c (real_lvalue_p): Likewise.
7453 (lvalue_p): Likewise.
7454 (cp_tree_equal): Likewise.
7455 * typeck.c (comptypes): Likewise.
7456 (build_component_ref): Likewise.
7457 (build_function_call_real): Likewise.
7458 (build_binary_op_nodefault): Likewise.
7459 (build_unary_op): Likewise.
7460 (build_modify_expr): Likewise.
7461 * typeck2.c (initializer_constant_valid_p): Likewise.
7462
7463 Sun Dec 21 15:59:00 1997 Nick Clifton <nickc@cygnus.com>
7464
7465 * decl2.c (lang_decode_option): Add support for -Wunknown-pragmas.
7466
7467 Thu Dec 18 14:51:50 1997 Mark Mitchell <mmitchell@usa.net>
7468
7469 * pt.c (coerce_template_parms): Make sure to digest_init if
7470 possible.
7471
7472 * decl.c (duplicate_decls): Make the newdecl virtual if the
7473 olddecl was, just as is done with other attributes of olddecl.
7474
7475 Thu Dec 18 14:43:19 1997 Jason Merrill <jason@yorick.cygnus.com>
7476
7477 * typeck.c (unary_complex_lvalue): Ignore op0 when taking the
7478 address of an OFFSET_REF.
7479
7480 * cp-tree.def: Add AGGR_INIT_EXPR.
7481 * error.c, tree.c, typeck.c: Replace uses of NEW_EXPR with
7482 AGGR_INIT_EXPR where appropriate.
7483 * expr.c (cplus_expand_expr): Likewise. Simplify.
7484
7485 * decl2.c (finish_file): Remove call to register_exception_table.
7486
7487 Wed Dec 17 17:08:52 1997 Benjamin Kosnik <bkoz@rhino.cygnus.com>
7488
7489 * pt.c (instantiate_class_template): Don't do injection when
7490 processing_template_decl is true, as pollutes current_binding_level
7491 for base classes.
7492
7493 Wed Dec 17 21:17:39 1997 Peter Schmid <schmid@ltoi.iap.physik.tu-darmstadt.de>
7494
7495 * pt.c (maybe_fold_nontype_arg): Add prototype.
7496
7497 Tue Dec 16 10:31:20 1997 Jason Merrill <jason@yorick.cygnus.com>
7498
7499 * tree.c (mapcar): Handle TRY_CATCH_EXPR et al.
7500 * error.c (dump_expr): Likewise.
7501
7502 Mon Dec 15 12:22:04 1997 Jason Merrill <jason@yorick.cygnus.com>
7503
7504 * typeck.c (build_function_call_real): Remove "inline called before
7505 definition" pedwarn.
7506
7507 * pt.c (coerce_template_parms): Use maybe_fold_nontype_arg.
7508
7509 Sun Dec 14 22:34:20 1997 Jason Merrill <jason@yorick.cygnus.com>
7510
7511 * cvt.c (cp_convert_to_pointer): Fix base conversion of pm's.
7512
7513 * pt.c (type_unification_real): Change __null to type void* with
7514 a warning.
7515
7516 Sun Dec 14 20:38:35 1997 Mark Mitchell <mmitchell@usa.net>
7517
7518 * call.c (implicit_conversion): Don't call
7519 build_user_type_conversion_1 with a NULL expr, since it will
7520 crash.
7521
7522 * pt.c (unify): Don't try to unify array bounds if either array is
7523 unbounded.
7524
7525 Fri Dec 12 16:09:14 1997 Jason Merrill <jason@yorick.cygnus.com>
7526
7527 * errfn.c (cp_pedwarn, cp_pedwarn_at, cp_error_at, cp_warning_at):
7528 Replace extern decls with casts.
7529
7530 * decl.c (expand_start_early_try_stmts): Don't mess with a sequence.
7531 Update last_parm_cleanup_insn.
7532 (store_after_parms): Remove.
7533 * cp-tree.h: Adjust.
7534
7535 Thu Dec 11 22:18:37 1997 Jason Merrill <jason@yorick.cygnus.com>
7536
7537 * decl2.c (comdat_linkage): Also set DECL_COMDAT.
7538 (finish_file): Check DECL_COMDAT instead of weak|one_only.
7539 (import_export_vtable): Use make_decl_one_only instead of
7540 comdat_linkage for win32 tweak.
7541 (import_export_decl): Likewise.
7542 * pt.c (mark_decl_instantiated): Likewise.
7543
7544 * decl2.c (finish_file): Lose handling of templates in pending_statics.
7545
7546 Thu Dec 11 21:12:09 1997 Jason Merrill <jason@yorick.cygnus.com>
7547
7548 * decl2.c (finish_file): Lose call to expand_builtin_throw.
7549 * except.c (expand_builtin_throw): Remove.
7550 * cp-tree.h: Remove ptr_ptr_type_node.
7551 * decl.c: Likewise.
7552
7553 Thu Dec 11 20:43:33 1997 Teemu Torma <tot@trema.com>
7554
7555 * decl.c (ptr_ptr_type_node): Define.
7556 (init_decl_processing): Initialize it.
7557 * cp-tree.h: Declare it.
7558 * exception.cc (__cp_exception_info): Use __get_eh_info.
7559 (__cp_push_exception): Ditto.
7560 (__cp_pop_exception): Ditto.
7561
7562 From Scott Snyder <snyder@d0sgif.fnal.gov>:
7563 * except.c (expand_builtin_throw): Use get_saved_pc_ref instead of
7564 saved_pc.
7565 (init_exception_processing): Removed saved_pc initialization.
7566
7567 Wed Dec 10 11:04:45 1997 Jason Merrill <jason@yorick.cygnus.com>
7568
7569 * pt.c (instantiate_decl): Defer all templates but inline functions.
7570
7571 Mon Dec 8 23:17:13 1997 Jason Merrill <jason@yorick.cygnus.com>
7572
7573 * init.c (expand_vec_init): Don't fold a list of parameters.
7574
7575 * decl.c (copy_args_p): Handle copy elision for types with virtual
7576 bases.
7577 * call.c (build_over_call): Likewise.
7578
7579 Sun Dec 7 22:38:12 1997 Mark Mitchell <mmitchell@usa.net>
7580
7581 * pt.c (lookup_template_function): Copy the template arguments,
7582 not just the list containing them, to the permanent obstack.
7583
7584 Sun Dec 7 15:53:06 1997 Jason Merrill <jason@yorick.cygnus.com>
7585
7586 * except.c (expand_start_catch_block): suspend_momentary for the
7587 terminate handler.
7588
7589 * error.c (dump_decl): Handle LOOKUP_EXPR.
7590
7591 Sun Dec 7 15:45:07 1997 Mark Mitchell <mmitchell@usa.net>
7592
7593 * rtti.c (build_dynamic_cast): Copy the cast-to type to the
7594 permanent obstack if we are processing a template decl.
7595 * typeck.c (build_static_cast): Likewise.
7596 (build_const_cast): Likewise.
7597 (build_reinterpret_cast): Likewise.
7598
7599 * pt.c (coerce_template_parms): Coerce some expressions, even
7600 when processing_template_decl.
7601
7602 Sun Dec 7 01:46:33 1997 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
7603
7604 * typeck.c (build_binary_op_nodefault, pointer_diff): Symmetric
7605 handling of pointer difference expressions.
7606
7607 * typeck.c (comp_target_types): Comparison of function/method types
7608 is independent of nptrs.
7609
7610 Sun Dec 7 01:40:27 1997 Mark Mitchell <mmitchell@usa.net>
7611
7612 * pt.c (tsubst): Avoid creating pointer to reference and
7613 reference to reference types.
7614
7615 Sat Dec 6 01:29:37 1997 Jason Merrill <jason@yorick.cygnus.com>
7616
7617 * parse.y (do_id): New nonterminal.
7618 (template_id): Use it.
7619
7620 Fri Dec 5 01:17:34 1997 Jason Merrill <jason@yorick.cygnus.com>
7621
7622 * parse.y (template_id): do_identifier for PFUNCNAMEs, too.
7623 * spew.c (yylex): Don't do_identifier here.
7624 * decl2.c (build_expr_from_tree): Revert last change.
7625
7626 * decl2.c (build_expr_from_tree): Expand the name for a method call.
7627 * parse.y (object_template_id): Don't try to take the DECL_NAME.
7628
7629 Wed Dec 3 20:02:39 1997 Jason Merrill <jason@yorick.cygnus.com>
7630
7631 * init.c (build_new): Use a TARGET_EXPR instead of SAVE_EXPR for
7632 alloc_expr.
7633 * call.c (build_op_delete_call): Adjust.
7634
7635 * except.c (expand_end_catch_block): Lose rethrow region.
7636 (expand_start_catch_block): Likewise.
7637 (expand_end_catch_block): Don't expand_leftover_cleanups.
7638
7639 Wed Dec 3 13:24:04 1997 Benjamin Kosnik <bkoz@rhino.cygnus.com>
7640
7641 * pt.c (tsubst): Remove tree_cons call (places redundant info into
7642 DECL_TEMPLATE_INSTANTIATION).
7643
7644 Wed Dec 3 11:44:52 1997 Jason Merrill <jason@yorick.cygnus.com>
7645
7646 * tree.c (is_overloaded_fn): Handle getting a fn template.
7647 (really_overloaded_fn): Likewise.
7648 * error.c (dump_decl): Handle TEMPLATE_ID_EXPRs better.
7649 * pt.c (check_explicit_specialization): Tweak.
7650 (determine_explicit_specialization): Tweak.
7651
7652 * tree.c, cp-tree.h (get_target_expr): New fn.
7653
7654 Wed Dec 3 08:47:27 1997 Paul Eggert <eggert@twinsun.com>
7655
7656 * pt.c (check_explicit_specialization): Fix misspelling in
7657 diagnostic: `preceeded'.
7658 * typeck.c (get_delta_difference): Fix misspelling in diagnostic:
7659 `conversiona'.
7660
7661 1997-12-02 Mark Mitchell <mmitchell@usa.net>
7662
7663 * pt.c (determine_explicit_specialization): Avoid an internal
7664 error for bad specializations.
7665
7666 * method.c (build_overload_value): Handle SCOPE_REF.
7667
7668 Tue Dec 2 19:18:50 1997 Mike Stump <mrs@wrs.com>
7669
7670 * class.c (prepare_fresh_vtable): Enable even more complex MI
7671 vtable names.
7672
7673 Tue Dec 2 01:37:19 1997 Jason Merrill <jason@yorick.cygnus.com>
7674
7675 * exception.cc (__check_eh_spec): Optimize a bit.
7676
7677 * exception.cc (__cp_pop_exception): Lose handler arg.
7678 * except.c (do_pop_exception): Likewise.
7679 (push_eh_cleanup): Let the cleanup mechanism supply the handler.
7680 (expand_end_catch_block): Likewise.
7681
7682 Fri Nov 28 01:58:14 1997 Jason Merrill <jason@yorick.cygnus.com>
7683
7684 * pt.c (check_explicit_specialization): Complain about using a
7685 template-id for a non-specialization.
7686
7687 Fri Nov 28 12:35:19 1997 Scott Christley <scottc@net-community.com>
7688
7689 * repo.c: Prototype rindex only if needed.
7690 * xref.c: Likewise.
7691
7692 Fri Nov 28 01:56:35 1997 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
7693
7694 * error.c (dump_decl): Handle TEMPLATE_ID_EXPR.
7695
7696 Thu Nov 27 00:59:46 1997 Jason Merrill <jason@yorick.cygnus.com>
7697
7698 * typeck.c (build_const_cast): Handle references here instead of
7699 handing off to convert_to_reference.
7700
7701 * except.c: Lose Unexpected, SetTerminate, SetUnexpected,
7702 TerminateFunctionCall.
7703 (init_exception_processing): Likewise. Terminate et al are now
7704 the fns, not ADDR_EXPRs.
7705 (various): Lose redundant assemble_external calls.
7706 (do_unwind): s/BuiltinReturnAddress/builtin_return_address_fndecl/.
7707
7708 * cp-tree.h (struct lang_decl_flags): Add comdat.
7709 (DECL_COMDAT): New macro.
7710 * decl.c (duplicate_decls): Propagate it.
7711 (cp_finish_decl): Handle it.
7712 * decl2.c (import_export_decl): Just set DECL_COMDAT on VAR_DECLs.
7713
7714 * class.c: Remove static pending_hard_virtuals.
7715 (add_virtual_function): Take pointers to pending_virtuals
7716 and pending_hard_virtuals.
7717 (finish_struct_1): Pass them. Declare pending_hard_virtuals.
7718
7719 Wed Nov 26 20:28:49 1997 Jason Merrill <jason@yorick.cygnus.com>
7720
7721 * decl2.c (import_export_vtable): If we support one_only but not
7722 weak symbols, mark instantiated template vtables one_only.
7723 (import_export_decl): Likewise for tinfo functions.
7724 (finish_vtable_vardecl): Also write out vtables from explicitly
7725 instantiated template classes.
7726 * pt.c (mark_class_instantiated): Revert last change.
7727
7728 * except.c (expand_throw): Call mark_used on the destructor.
7729
7730 Wed Nov 26 15:13:48 1997 Jeffrey A Law (law@cygnus.com)
7731
7732 * lex.c (lang_init): Enable flag_exceptions by default if no
7733 command line switch was specified.
7734
7735 1997-11-26 Mark Mitchell <mmitchell@usa.net>
7736
7737 * pt.c (unify): Handle `void' template parameters in
7738 specializations.
7739
7740 Wed Nov 26 01:11:24 1997 Jason Merrill <jason@yorick.cygnus.com>
7741
7742 * rtti.c (build_dynamic_cast): Handle template case here.
7743 (build_dynamic_cast_1): Not here.
7744
7745 * typeck2.c (digest_init): Make copies where appropriate.
7746
7747 * decl2.c (delete_sanity): resolve_offset_ref.
7748
7749 * except.c: Call terminate without caching so many bits.
7750
7751 * except.c (expand_start_catch_block): Fix catching a reference
7752 to pointer.
7753
7754 Tue Nov 25 11:28:21 1997 Jason Merrill <jason@yorick.cygnus.com>
7755
7756 * init.c (build_new): Copy size to the saveable obstack.
7757
7758 * init.c (build_new): Stick a CLEANUP_POINT_EXPR inside the
7759 TRY_CATCH_EXPR for now.
7760
7761 Mon Nov 24 12:15:55 1997 Jason Merrill <jason@yorick.cygnus.com>
7762
7763 * typeck.c (mark_addressable): Don't assume a FUNCTION_DECL
7764 has DECL_LANG_SPECIFIC.
7765
7766 * exception.cc (struct cp_eh_info): Add handlers field.
7767 (__cp_push_exception): Initialize it.
7768 (__cp_pop_exception): Decrement it. Don't pop unless it's 0.
7769 (__throw_bad_exception): Remove.
7770 * except.c (call_eh_info): Add handlers field.
7771 (get_eh_handlers): New fn.
7772 (push_eh_cleanup): Increment handlers.
7773
7774 Fri Nov 21 12:22:07 1997 Jason Merrill <jason@yorick.cygnus.com>
7775
7776 * except.c (expand_start_eh_spec): Use the try/catch code.
7777 (expand_end_eh_spec): Likewise. Call __check_eh_spec instead of
7778 doing everything inline.
7779 (init_exception_processing): throw_type_match now takes
7780 const void pointers.
7781 * exception.cc (__check_eh_spec): New fn.
7782 * inc/exception: Neither terminate nor unexpected return.
7783 * decl.c: Make const_ptr_type_node public.
7784 * tinfo2.cc (__throw_type_match_rtti): Take the typeinfos constly.
7785
7786 * except.c (expand_start_catch_block): We only need the rethrow
7787 region for non-sjlj exceptions.
7788 (expand_end_catch_block): Likewise. Use outer_context_label_stack.
7789
7790 Thu Nov 20 14:40:17 1997 Jason Merrill <jason@yorick.cygnus.com>
7791
7792 * Make-lang.in (CXX_LIB2FUNCS): Add new op new and op delete objs.
7793 (various.o): Likewise.
7794 * inc/new: Add placement deletes. Add throw specs for default new.
7795 * new.cc (set_new_handler): Move here from libgcc2.
7796 * new1.cc (new (nothrow)): Catch a bad_alloc thrown from the handler.
7797 (new): Move from libgcc2. Throw bad_alloc.
7798 * new2.cc: Move the rest of the op news and op deletes from libgcc2.
7799 * decl.c (init_decl_processing): Update exception specs on new and
7800 delete.
7801
7802 * method.c (build_decl_overload_real): Don't mess with global
7803 placement delete.
7804
7805 * init.c (build_new): Check for null throw spec, not nothrow_t.
7806
7807 * decl.c (duplicate_decls): Don't complain about different exceptions
7808 from an internal declaration.
7809
7810 * call.c (build_op_delete_call): Fix check for member fns again.
7811
7812 * decl2.c (import_export_decl): Interface hackery affects
7813 virtual synthesized methods.
7814
7815 Wed Nov 19 18:24:14 1997 Jason Merrill <jason@yorick.cygnus.com>
7816
7817 * decl.c (start_decl): Don't just complain about a mismatched
7818 scope, fix it.
7819
7820 * decl.c (make_implicit_typename): Handle case where t is not
7821 actually from context.
7822 * tree.c (get_type_decl): Lose identifier case.
7823 * spew.c (yylex): Lose useless call to identifer_typedecl_value.
7824 * parse.y (nonnested_type): Just use lookup_name.
7825 (complex_type_name): Just use IDENTIFIER_GLOBAL_VALUE.
7826
7827 Wed Nov 19 11:45:07 1997 Michael Tiemann <tiemann@axon.cygnus.com>
7828
7829 * error.c (dump_function_name): Test DECL_LANG_SPECIFIC in case
7830 T was built in C language context (for example, by
7831 output_func_start_profiler).
7832
7833 Wed Nov 19 10:39:27 1997 Jason Merrill <jason@yorick.cygnus.com>
7834
7835 * decl.c (make_implicit_typename): New fn.
7836 (lookup_name_real): Use it. Use current_class_type as the context.
7837
7838 Mon Nov 17 23:42:03 1997 Bruno Haible <haible@ilog.fr>
7839
7840 * pt.c (do_poplevel): Don't prohibit jumps into this contour.
7841
7842 Mon Nov 17 02:01:28 1997 Jason Merrill <jason@yorick.cygnus.com>
7843
7844 * friend.c (do_friend): Warn about non-template friends in templates.
7845
7846 * call.c (build_op_delete_call): Fix handling of inherited delete.
7847
7848 * search.c (dfs_record_inheritance): Ignore template type parms.
7849
7850 Sat Nov 15 00:30:51 1997 Jason Merrill <jason@yorick.cygnus.com>
7851
7852 * call.c (build_new_op): Fix copy error.
7853 (build_op_new_call): New fn.
7854 (build_op_delete_call): New fn.
7855 * cp-tree.h: Declare them.
7856 * init.c (build_new): Use them. Support placement delete.
7857 (build_x_delete): Use build_op_delete_call.
7858 (build_delete): Likewise.
7859 * decl2.c (delete_sanity): Likewise.
7860 (coerce_delete_type): Don't complain about placement delete.
7861
7862 Thu Nov 13 01:52:36 1997 Jason Merrill <jason@yorick.cygnus.com>
7863
7864 * call.c (build_new_function_call): Remove unused 'obj' parm.
7865 * cp-tree.h, typeck.c: Adjust.
7866
7867 * init.c (build_new): Make the cleanup last longer.
7868 (expand_vec_init): Call do_pending_stack_adjust.
7869
7870 Wed Nov 12 11:04:33 1997 Jason Merrill <jason@yorick.cygnus.com>
7871
7872 * pt.c (do_type_instantiation): Fix typo.
7873 (mark_class_instantiated): If we support one_only but not weak
7874 symbols, don't mark this as known.
7875
7876 * init.c (build_new): Handle vec delete in EH cleanup.
7877
7878 Wed Nov 12 08:11:55 1997 Benjamin Kosnik <bkoz@rhino.cygnus.com>
7879
7880 * call.c (build_method_call): Call complete_type before checking
7881 for destructor.
7882
7883 Sun Nov 9 01:29:55 1997 Jim Wilson (wilson@cygnus.com)
7884
7885 * decl.c (add_block_current_level): Delete.
7886 * init.c (build_vec_delete_1): Delete build_block and
7887 add_block_current_level calls.
7888
7889 Wed Nov 12 00:48:16 1997 Jason Merrill <jason@yorick.cygnus.com>
7890
7891 * init.c (build_new): Handle freeing allocated memory when the
7892 constructor throws.
7893
7894 * call.c (build_new_method_call): Fix flags arg.
7895
7896 * pt.c (do_type_instantiation): Don't try to instantiate
7897 member templates.
7898 (mark_decl_instantiated): If we support one_only but not
7899 weak symbols, mark this one_only.
7900 * decl2.c (import_export_vtable): Don't defer handling of vtables
7901 if MULTIPLE_SYMBOL_SPACES.
7902
7903 Tue Nov 11 12:02:12 1997 Jason Merrill <jason@yorick.cygnus.com>
7904
7905 * except.c (expand_end_catch_block): Lose call to __sjpopnthrow.
7906
7907 Tue Nov 11 02:53:44 1997 Jason Merrill <jason@lasher.cygnus.com>
7908
7909 * except.c (do_pop_exception): Return a value.
7910
7911 Mon Nov 10 20:25:31 1997 Jason Merrill <jason@yorick.cygnus.com>
7912
7913 * call.c (build_new_method_call): Handle getting a
7914 TEMPLATE_ID_EXPR around a TEMPLATE_DECL. Don't look for a field
7915 if we got template parms.
7916 * typeck.c (build_x_function_call): Remember the TEMPLATE_ID_EXPR,
7917 not just the args.
7918 * decl2.c (build_expr_from_tree): Tweak last change.
7919 * pt.c (tsubst_copy): Use get_first_fn instead of TREE_VALUE.
7920 (maybe_fold_nontype_arg): Split out from tsubst_copy.
7921 * tree.c (get_first_fn): Just return a TEMPLATE_ID_EXPR.
7922
7923 Mon Nov 10 20:08:38 1997 Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
7924
7925 * pt.c (tsubst_copy): Handle explicit template arguments in
7926 function calls.
7927 * typeck.c (build_x_function_call): Likewise.
7928 * decl2.c (build_expr_from_tree): Lookup function name if it
7929 hasn't been done.
7930
7931 * pt.c (tsubst): Instantiate template functions properly when
7932 template parameter does not appear in function arguments and return
7933 type.
7934 (comp_template_args): Handle member templates required by tsubst.
7935
7936 Mon Nov 10 20:08:38 1997 Jason Merrill <jason@yorick.cygnus.com>
7937
7938 * decl.c (grokdeclarator): Tweak conditions for pedwarn in
7939 previous change.
7940
7941 Mon Nov 10 20:08:29 1997 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
7942
7943 * pt.c (coerce_template_parms): Tweak error message.
7944
7945 * decl.c (grokdeclarator): If -Wreturn-type, warn everytime a
7946 return type defaults to `int', even if there are storage-class
7947 specifiers.
7948
7949 Mon Nov 10 03:04:20 1997 Jason Merrill <jason@yorick.cygnus.com>
7950
7951 Complete nested exception support.
7952 * except.c (do_pop_exception): Split out...
7953 (push_eh_cleanup): From here. Handle the EH region by hand.
7954 (expand_start_catch_block): Add a new level for the catch parm.
7955 Move the rethrow region outside the two cleanup regions.
7956 Protect the initializer for the catch parm with terminate.
7957 (expand_end_catch_block): Likewise. End the region for the eh_cleanup.
7958 * exception.cc (__cp_pop_exception): Now takes two parms. Handle
7959 popping off the middle of the stack.
7960 * tree.c (lvalue_p, real_lvalue_p): Handle TRY_CATCH_EXPR,
7961 WITH_CLEANUP_EXPR, and UNSAVE_EXPR.
7962 (build_cplus_new): Only wrap CALL_EXPRs.
7963 * init.c (expand_default_init): Handle a TRY_CATCH_EXPR around
7964 the constructor call.
7965
7966 Sun Nov 9 18:00:26 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
7967
7968 * Make-lang.in (c++.distdir): Make inc subdirectory.
7969
7970 Fri Nov 7 11:57:28 1997 Jason Merrill <jason@yorick.cygnus.com>
7971
7972 * decl2.c (finish_file): Put back some code.
7973
7974 Thu Nov 6 11:28:14 1997 Jason Merrill <jason@yorick.cygnus.com>
7975
7976 * decl2.c (finish_file): Remove redundant code.
7977 * method.c (emit_thunk): Don't let the backend defer generic thunks.
7978
7979 Wed Nov 5 23:52:50 1997 Jason Merrill <jason@yorick.cygnus.com>
7980
7981 * except.c (call_eh_info): Split out...
7982 (push_eh_info): From here.
7983 (expand_builtin_throw): Use it.
7984 (expand_start_catch_block): Move region start back.
7985
7986 Tue Nov 4 13:45:10 1997 Doug Evans <devans@canuck.cygnus.com>
7987
7988 * lex.c (MULTIBYTE_CHARS): #undef if cross compiling.
7989 (real_yylex): Record wide strings using target endianness, not host.
7990
7991 1997-11-03 Brendan Kehoe <brendan@lisa.cygnus.com>
7992
7993 * repo.c (rindex): Add decl unconditionally.
7994 (get_base_filename, open_repo_file): Don't cast rindex.
7995 * xref.c (rindex): Add decl unconditionally.
7996 (index): Remove unused decl.
7997 (open_xref_file): Don't cast rindex.
7998
7999 Sun Nov 2 15:04:12 1997 Jason Merrill <jason@yorick.cygnus.com>
8000
8001 * class.c (build_vbase_path): Propagate the result type properly.
8002
8003 1997-11-01 Brendan Kehoe <brendan@lisa.cygnus.com>
8004
8005 * except.c (expand_builtin_throw) [!DWARF2_UNWIND_INFO]: Replace
8006 remaining use of saved_throw_type with a call to get_eh_type.
8007
8008 1997-10-31 Brendan Kehoe <brendan@lisa.cygnus.com>
8009
8010 * lex.c (FILE_NAME_NONDIRECTORY): Delete macro.
8011 (file_name_nondirectory): New function, doing the same as the macro.
8012 (set_typedecl_interface_info): Use it instead of the macro.
8013 (check_newline): Likewise.
8014 (handle_cp_pragma): Likewise.
8015
8016 * repo.c (get_base_filename): Cast result of rindex to char*.
8017 (open_repo_file): Likewise.
8018 * xref.c (open_xref_file): Likewise.
8019 * error.c (dump_char): Make its arg int, not char.
8020
8021 * except.c (push_eh_info): Pass the number of fields - 1 down, not
8022 the exact number of fields.
8023
8024 Fri Oct 31 01:47:57 1997 Jason Merrill <jason@yorick.cygnus.com>
8025
8026 Support for nested exceptions.
8027 * tinfo2.cc (__is_pointer): New fn.
8028 * exception.cc (struct cp_eh_info): Define.
8029 (__cp_exception_info, __uncatch_exception): New fns.
8030 (__cp_push_exception, __cp_pop_exception): New fns.
8031 * except.c: Lose saved_throw_{type,value,cleanup,in_catch}.
8032 Lose empty_fndecl.
8033 (init_exception_processing): Likewise. __eh_pc is now external.
8034 (push_eh_info): New fn.
8035 (get_eh_{info,value,type,caught}): New fns.
8036 (push_eh_cleanup): Just call __cp_pop_exception.
8037 (expand_start_catch_block): Use push_eh_info. Start the eh region
8038 sooner.
8039 (expand_end_eh_spec): Use push_eh_info.
8040 (expand_throw): Call __cp_push_exception to set up the exception info.
8041 Just pass the destructor or 0 as the cleanup. Call __uncatch_exception
8042 when we rethrow.
8043 (expand_builtin_throw): Don't refer to empty_fndecl.
8044
8045 Thu Oct 23 02:01:30 1997 Jason Merrill <jason@yorick.cygnus.com>
8046
8047 * pt.c (instantiate_decl): SET_DECL_IMPLICIT_INSTANTIATION on new decl.
8048
8049 1997-10-22 Brendan Kehoe <brendan@cygnus.com>
8050
8051 * method.c (build_template_parm_names, build_decl_overload_real):
8052 Add static to definitions.
8053 * pt.c (add_to_template_args, note_template_header,
8054 processing_explicit_specialization, type_unification_real): Likewise.
8055 ({determine,check}_explicit_specialization): Use a single string for
8056 error messages.
8057
8058 Mon Oct 20 12:06:34 1997 Jason Merrill <jason@yorick.cygnus.com>
8059
8060 * except.c (expand_exception_blocks): Call do_pending_stack_adust.
8061 (expand_end_catch_block): Likewise.
8062 (expand_end_eh_spec): Likewise.
8063
8064 Mon Oct 20 11:44:20 1997 Mark Mitchell <mmitchell@usa.net>
8065
8066 * decl.c (duplicate_decls): Handle template specializations
8067 correctly.
8068 * error.c (dump_function_name): Fix printing of specializations of
8069 member functions that are not member templates.
8070 * cp-tree.h (processing_specialization): Make global.
8071 * pt.c (processing_specialization): Likewise.
8072 * lex.c (cons_up_default_function): Save and restore
8073 processing_specialization to avoid confusion.
8074
8075 Mon Oct 20 10:52:22 1997 Jason Merrill <jason@yorick.cygnus.com>
8076
8077 * decl.c (init_decl_processing): Give null_node unknown* type.
8078 * typeck.c (comp_target_types): Handle UNKNOWN_TYPE.
8079 (common_type): Likewise.
8080 * error.c (args_as_string): Recognize null_node.
8081
8082 Sun Oct 19 09:13:01 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
8083
8084 * typeck.c (rationalize_conditional_expr): Handle {MIN,MAX}_EXPR.
8085 (unary_complex_lvalue): Call it for {MIN,MAX}_EXPR.
8086
8087 * decl.c (init_decl_processing): Call using_eh_for_cleanups.
8088
8089 * Make-lang.in (g++): Include prefix.o.
8090
8091 Thu Oct 16 15:31:09 1997 Judy Goldberg <judygold@sanwafp.com>
8092
8093 * pt.c (determine_explicit_specialization): Initialize "dummy"
8094 to keep Purify quiet.
8095
8096 Thu Oct 16 00:14:48 1997 Jason Merrill <jason@yorick.cygnus.com>
8097
8098 * method.c (build_overload_value): Handle TEMPLATE_CONST_PARMs here.
8099 (build_overload_int): Not here.
8100
8101 Wed Oct 15 00:35:28 1997 Mike Stump <mrs@wrs.com>
8102
8103 * class.c (build_type_pathname): Remove.
8104 (prepare_fresh_vtable): Fix problem with complex MI vtable names.
8105
8106 1997-10-14 Brendan Kehoe <brendan@lisa.cygnus.com>
8107
8108 * parse.y (unary_expr): Give a pedwarn if someone tries to use the
8109 &&label GNU extension.
8110
8111 Tue Oct 14 12:01:00 1997 Mark Mitchell <mmitchell@usa.net>
8112
8113 * decl.c (pushtag): Unset DECL_ASSEMBLER_NAME before setting it,
8114 so as to avoid incorrect manglings.
8115 * method.c (build_decl_overload_real): Don't mangle return types
8116 for constructors.
8117
8118 Tue Oct 14 11:46:14 1997 Jason Merrill <jason@yorick.cygnus.com>
8119
8120 * cp-tree.h (scratchalloc, build_scratch_list, make_scratch_vec,
8121 scratch_tree_cons): Define as macros for now.
8122 * call.c, class.c, cvt.c, decl.c, decl2.c, except.c, expr.c, init.c,
8123 lex.c, method.c, parse.y, pt.c, rtti.c, search.c, tree.c, typeck.c,
8124 typeck2.c: Use them and the expression_obstack variants.
8125
8126 Mon Oct 13 17:41:26 1997 Benjamin Kosnik <bkoz@rhino.cygnus.com>
8127
8128 * decl.c (store_return_init): Allow classes with explicit ctors to
8129 be used with the named return values extension.
8130
8131 Fri Oct 10 12:21:11 1997 Jason Merrill <jason@yorick.cygnus.com>
8132
8133 * pt.c (instantiate_decl): Fix previous change.
8134
8135 Thu Oct 9 12:08:21 1997 Jason Merrill <jason@yorick.cygnus.com>
8136
8137 * pt.c (tsubst): Fix thinko.
8138 (instantiate_decl): Really use the original template.
8139
8140 * call.c (build_new_method_call): Use simple constructor_name for
8141 error messages.
8142
8143 Wed Oct 8 22:44:42 1997 Jeffrey A Law (law@cygnus.com)
8144
8145 * method.c (build_underscore_int): Don't use ANSI specific
8146 features.
8147
8148 Wed Oct 8 00:18:22 1997 Jason Merrill <jason@yorick.cygnus.com>
8149
8150 * decl2.c (finish_prevtable_vardecl): Check DECL_REALLY_EXTERN
8151 for our key method; it might have been inlined by -O3.
8152
8153 Tue Oct 7 23:00:12 1997 Mark Mitchell <mmitchell@usa.net>
8154
8155 * decl.c (make_typename_type): Do not try to call lookup_field for
8156 non-aggregate types.
8157
8158 Tue Oct 7 22:52:10 1997 Jason Merrill <jason@yorick.cygnus.com>
8159
8160 * typeck.c (build_reinterpret_cast): Tweak.
8161
8162 Tue Oct 7 22:45:31 1997 Alexandre Oliva <oliva@dcc.unicamp.br>
8163
8164 * typeck.c (build_reinterpret_cast): converting a void pointer
8165 to function pointer with a reinterpret_cast produces a warning
8166 if -pedantic is issued
8167
8168 Tue Oct 7 22:43:43 1997 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
8169
8170 * typeck.c (c_expand_return): Don't warn about returning a
8171 reference-type variable as a reference.
8172
8173 Tue Oct 7 21:11:22 1997 Jason Merrill <jason@yorick.cygnus.com>
8174
8175 * method.c (build_static_name): Fix typo.
8176
8177 1997-10-07 Brendan Kehoe <brendan@lisa.cygnus.com>
8178
8179 * decl.c (duplicate_decls): Make sure DECL_LANG_SPECIFIC is set on
8180 OLDDECL before we try to do DECL_USE_TEMPLATE.
8181
8182 Tue Oct 7 00:48:36 1997 Jason Merrill <jason@yorick.cygnus.com>
8183
8184 * decl.c (duplicate_decls): Don't warn about template instances.
8185
8186 * typeck.c (mark_addressable): Lose ancient code that unsets
8187 DECL_EXTERNAL.
8188
8189 * pt.c (do_decl_instantiation): Lose support for instantiating
8190 non-templates.
8191
8192 * call.c (build_new_function_call): Fix handling of null explicit
8193 template args.
8194 (build_new_method_call): Likewise.
8195
8196 Mon Oct 6 23:44:34 1997 Mark Mitchell <mmitchell@usa.net>
8197
8198 * method.c (build_underscore_int): Fix typo.
8199
8200 1997-10-06 Brendan Kehoe <brendan@lisa.cygnus.com>
8201
8202 * tree.c (print_lang_statistics): #if 0 call to
8203 print_inline_obstack_statistics until its definition is checked in.
8204
8205 Mon Oct 6 09:27:29 1997 Jason Merrill <jason@yorick.cygnus.com>
8206
8207 * decl2.c (finish_file): Move dump_tree_statistics to end.
8208
8209 * pt.c (instantiate_decl): Look for the original template.
8210 (tsubst): Set DECL_IMPLICIT_INSTANTIATION on partial instantiations
8211 of member templates.
8212
8213 Wed Oct 1 08:41:38 1997 Jason Merrill <jason@yorick.cygnus.com>
8214
8215 * Makefile.in (g++FAQ.*): New rules.
8216 (CONFLICTS): Update.
8217 * g++FAQ.texi: Moved from libg++.
8218
8219 * parse.y (PFUNCNAME): Only specify the type once.
8220
8221 1997-10-01 Brendan Kehoe <brendan@lasher.cygnus.com>
8222
8223 * lex.c (real_yylex): Clean up the code to fully behave the way
8224 the c-lex.c parser does for complex and real numbers.
8225
8226 Tue Sep 30 08:51:36 1997 Jason Merrill <jason@yorick.cygnus.com>
8227
8228 * method.c (build_decl_overload_real): Reformat.
8229
8230 Tue Sep 30 00:18:26 1997 Jason Merrill <jason@yorick.cygnus.com>
8231
8232 * method.c (synthesize_method): If at_eof, determine our linkage.
8233
8234 1997-09-29 Paul Eggert <eggert@twinsun.com>
8235
8236 * lex.c (real_yylex): Treat `$' just like `_', except issue a
8237 diagnostic if !dollars_in_ident or if pedantic.
8238
8239 * lang-specs.h (@c++): -ansi no longer implies -$.
8240
8241 * decl2.c (lang_decode_option):
8242 -traditional and -ansi now do not mess with
8243 dollars_in_ident.
8244
8245 Mon Sep 29 19:57:51 1997 H.J. Lu (hjl@gnu.ai.mit.edu)
8246
8247 * Makefile.in (parse.o, decl.o): Also depend on
8248 $(srcdir)/../except.h $(srcdir)/../output.h.
8249 (decl2.o): Also depend on $(srcdir)/../expr.h ../insn-codes.h
8250 $(srcdir)/../except.h $(srcdir)/../output.h.
8251 (typeck.o, init.o): Also depend on $(srcdir)/../expr.h
8252 ../insn-codes.h.
8253
8254 * call.c, cp-tree.h, decl.c, tree.c: Finish prototyping.
8255
8256 * expr.c (cplus_expand_expr): Make it static.
8257
8258 * decl2.c, init.c, typeck.c: Include "expr.h".
8259 (expand_expr): Use proper values when calling the function.
8260
8261 Mon Sep 29 11:05:54 1997 Alexandre Oliva <oliva@dcc.unicamp.br>
8262
8263 * lang-options.h: new -Wold-style-cast flag.
8264 * cp-tree.h (warn_old_style_cast): new variable.
8265 * decl2.c (warn_old_style_cast): ditto.
8266 (lang_decode_option): support -Wold-style-cast.
8267 (reparse_absdcl_as_casts): produce old-style-cast warning.
8268
8269 Mon Sep 29 09:20:53 1997 Benjamin Kosnik <bkoz@rhino.cygnus.com>
8270
8271 * decl.c (cp_finish_decl): Allow expand_aggr_init to set
8272 TREE_USED, reset value based on already_used.
8273
8274 * init.c (expand_member_init): Revert change.
8275
8276 Mon Sep 29 08:57:53 1997 Jason Merrill <jason@yorick.cygnus.com>
8277
8278 * cp-tree.h, decl.c, decl2.c, pt.c:
8279 Lose DECL_C_STATIC and DECL_PUBLIC. Don't pretend statics are public.
8280
8281 * decl2.c (lang_decode_option): Add missing ;.
8282
8283 Sat Sep 27 16:22:48 1997 Jason Merrill <jason@yorick.cygnus.com>
8284
8285 * friend.c (do_friend): Disable injection for all template-derived
8286 decls.
8287 * decl2.c (lang_decode_option): Handle -fguiding-decls.
8288 * parse.y (notype_template_declarator): New nonterminal.
8289 (direct_notype_declarator): Use it.
8290 (complex_direct_notype_declarator): Likewise.
8291 (object_template_id): Accept any kind of identifier after TEMPLATE.
8292 (notype_qualified_id): Don't add template declarators here.
8293
8294 Sat Sep 27 16:21:58 1997 Mark Mitchell <mmitchell@usa.net>
8295
8296 * call.c (add_template_candidate): Add explicit_targs parameter.
8297 (build_scoped_method_call): Use it.
8298 (build_overload_call_real): Likewise.
8299 (build_user_type_conversion_1): Likewise.
8300 (build_new_function_call): Likewise.
8301 (build_object_call): Likewise.
8302 (build_new_op): Likewise.
8303 (build_new_method_call): Likewise.
8304 (build_new_function_call): Handle TEMPLATE_ID_EXPR.
8305 (build_new_method_call): Likewise.
8306
8307 * class.c (finish_struct_methods): Add specialization pass to
8308 determine which methods were specializing which other methods.
8309 (instantiate_type): Handle TEMPLATE_ID_EXPR.
8310
8311 * cp-tree.def (TEMPLATE_ID_EXPR): New tree code.
8312
8313 * cp-tree.h (name_mangling_version): New variable.
8314 (flag_guiding_decls): Likewise.
8315 (build_template_decl_overload): New function.
8316 (begin_specialization): Likewise.
8317 (reset_specialization): Likewise.
8318 (end_specialization): Likewise.
8319 (determine_explicit_specialization): Likewise.
8320 (check_explicit_specialization): Likewise.
8321 (lookup_template_function): Likewise.
8322 (fn_type_unification): Add explicit_targs parameter.
8323 (type_unification): Likewise.
8324
8325 * decl.c (duplicate_decls): Add smarts for explicit
8326 specializations.
8327 (grokdeclarator): Handle TEMPLATE_ID_EXPR, and function
8328 specializations.
8329 (grokfndecl): Call check_explicit_specialization.
8330
8331 * decl2.c (lang_decode_option): Handle -fname-mangling-version.
8332 (build_expr_from_tree): Handle TEMPLATE_ID_EXPR.
8333 (check_classfn): Handle specializations.
8334
8335 * error.c (dump_function_name): Print specialization arguments.
8336
8337 * friend.c (do_friend): Don't call pushdecl for template
8338 instantiations.
8339
8340 * init.c (build_member_call): Handle TEMPLATE_ID_EXPR.
8341
8342 * lang-options.h: Add -fname-mangling-version, -fguiding-decls,
8343 and -fno-guiding-decls.
8344
8345 * lex.c (identifier_type): Return PFUNCNAME for template function
8346 names.
8347
8348 * method.c (build_decl_overload_real): New function.
8349 (build_template_parm_names): New function.
8350 (build_overload_identifier): Use it.
8351 (build_underscore_int): New function.
8352 (build_overload_int): Use it. Add levels for template
8353 parameters.
8354 (build_overload_name): Likewise. Also, handle TYPENAME_TYPEs.
8355 (build_overload_nested_names): Handle template type parameters.
8356 (build_template_decl_overload): New function.
8357
8358 * parse.y (YYSTYPE): New ntype member.
8359 (nested_name_specifier): Use it.
8360 (nested_name_specifier_1): Likewise.
8361 (PFUNCNAME): New token.
8362 (template_id, object_template_id): New non-terminals.
8363 (template_parm_list): Note specializations.
8364 (template_def): Likewise.
8365 (structsp): Likewise.
8366 (fn.def2): Handle member template specializations.
8367 (component_decl_1): Likewise.
8368 (direct_notype_declarator): Handle template-ids.
8369 (component_decl_1): Likewise.
8370 (direct_notype_declarator): Handle template-ids.
8371 (primary): Handle TEMPLATE_ID_EXPR, and template-ids.
8372
8373 * pt.c (processing_specializations): New variable.
8374 (template_header_count): Likewise.
8375 (type_unification_real): New function.
8376 (processing_explicit_specialization): Likewise.
8377 (note_template_header): Likewise.
8378 (is_member_template): Handle specializations.
8379 (end_template_decl): Call reset_specialization.
8380 (push_template_decl): Handle member template specializations.
8381 (tsubst): Likewise.
8382 (tsubst_copy): Handle TEMPLATE_ID_EXPR.
8383 (instantiate_template): Handle specializations.
8384 (instantiate_decl): Likewise.
8385 (fn_type_unification): Handle explicit_targs.
8386 (type_unification): Likewise. Allow incomplete unification
8387 without an error message, if allow_incomplete.
8388 (get_bindings): Use new calling sequence for fn_type_unification.
8389
8390 * spew.c (yylex): Handle PFUNCNAME.
8391
8392 * tree.c (is_overloaded_fn): Handle TEMPLATE_ID_EXPR.
8393 (really_overloaded_fn): Likewise.
8394 (get_first_fn): Handle function templates.
8395
8396 * typeck.c (build_x_function_call): Use really_overloaded_fn.
8397 Handle TEMPLATE_ID_EXPR.
8398 (build_x_unary_op): Likewise.
8399 (build_unary_op): Likewise.
8400 (mark_addressable): Templates whose address is taken are marked
8401 as used.
8402
8403 1997-09-25 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
8404
8405 * decl.c (init_decl_processing): Declare __builtin_constant_p as
8406 accepting any kind of type, not only int.
8407
8408 Fri Sep 26 00:22:56 1997 Jason Merrill <jason@yorick.cygnus.com>
8409
8410 * search.c (get_matching_virtual): Notice virtual bases when sorrying
8411 about covariant returns.
8412
8413 * parse.y (member_init): Also imply typename here. Remove ancient
8414 extension for initializing base members.
8415
8416 Thu Sep 25 11:11:13 1997 Jason Merrill <jason@yorick.cygnus.com>
8417
8418 Handle multi-level typenames and implicit typename in base list.
8419 * parse.y (typename_sub{,[0-2]}): New rules.
8420 (structsp, rule TYPENAME_KEYWORD): Use typename_sub.
8421 (nonnested_type): New rule.
8422 (complete_type_name): Use it.
8423 (base_class.1): Use typename_sub and nonnested_type.
8424 (nested_name_specifier): Don't elide std:: here.
8425 * decl.c (make_typename_type): Handle getting a type for NAME.
8426 (lookup_name_real): Turn std:: into :: here.
8427
8428 Rvalue conversions were removed in London.
8429 * call.c (is_subseq): Don't consider lvalue transformations.
8430 (build_conv): LVALUE_CONV and RVALUE_CONV get IDENTITY_RANK.
8431 (joust): Reenable ?: kludge.
8432
8433 1997-09-22 Brendan Kehoe <brendan@lisa.cygnus.com>
8434
8435 * decl.c (start_function): Up warning of no return type to be a
8436 pedwarn.
8437
8438 Mon Sep 22 14:15:34 1997 Benjamin Kosnik <bkoz@rhino.cygnus.com>
8439
8440 * init.c (expand_member_init): Don't set TREE_USED.
8441 * decl.c (cp_finish_decl): Mark decls used if type has TREE_USED
8442 set,don't clear TREE_USED wholesale.
8443
8444 Sat Sep 20 15:31:00 1997 Jason Merrill <jason@yorick.cygnus.com>
8445
8446 * call.c (build_over_call): Do require_complete_type before
8447 build_cplus_new.
8448
8449 Thu Sep 18 16:47:52 1997 Jason Merrill <jason@yorick.cygnus.com>
8450
8451 * search.c (lookup_field): Call complete_type in all cases.
8452
8453 * decl.c (finish_function): Just warn about flowing off the end.
8454
8455 Wed Sep 17 10:31:25 1997 Jason Merrill <jason@yorick.cygnus.com>
8456
8457 * decl.c (grokparms): Don't bash a permanent list node if we're
8458 in a function.
8459
8460 1997-09-17 Brendan Kehoe <brendan@lisa.cygnus.com>
8461
8462 * Makefile.in (CONFLICTS): Fix s/r conflict count to 18.
8463
8464 Tue Sep 16 14:06:56 1997 Jason Merrill <jason@yorick.cygnus.com>
8465
8466 * call.c (build_new_op): Give better error for syntactically
8467 correct, but semantically invalid, use of undeclared template.
8468
8469 * call.c (compare_qual): Handle pmfs.
8470
8471 * decl.c (store_parm_decls): last_parm_cleanup_insn is the insn
8472 after the exception spec.
8473
8474 Mon Sep 15 11:52:13 1997 Jason Merrill <jason@yorick.cygnus.com>
8475
8476 * call.c (null_ptr_cst_p): Integer type, not integral type.
8477
8478 * call.c (joust): Disable warnings until they can be moved to the
8479 right place.
8480
8481 Fri Sep 12 16:11:13 1997 Per Bothner <bothner@cygnus.com>
8482
8483 * Makefile.in, config-lang.in: Convert to autoconf.
8484
8485 Thu Sep 11 17:14:55 1997 Jason Merrill <jason@yorick.cygnus.com>
8486
8487 * decl.c (lookup_name_real): Add implicit 'typename' to types from
8488 base classes.
8489
8490 * pt.c (most_specialized_class): Fix typo.
8491 (tsubst): Move constant folding to TREE_VEC case.
8492
8493 Thu Sep 11 10:08:45 1997 Mark Mitchell <mmitchell@usa.net>
8494
8495 * pt.c (do_poplevel): Don't warn about unused local variables
8496 while processing_template_decl since we don't always know whether
8497 or not they will need constructing/destructing.
8498
8499 * pt.c (uses_template_parms): Check the values of an enumeration
8500 type to make sure they don't depend on template parms.
8501
8502 * decl.c (make_typename_type): Don't lookup the field if the
8503 context uses template parms, even if we're not
8504 processing_template_decl at the moment.
8505
8506 * pt.c (coerce_template_parms): Avoid looking at the
8507 TYPE_LANG_DECL portion of a typename type, since there won't be
8508 one.
8509 (tsubst): Do constant folding as necessary to make sure that
8510 arguments passed to lookup_template_class really are constants.
8511
8512 Wed Sep 10 11:21:55 1997 Jason Merrill <jason@yorick.cygnus.com>
8513
8514 * except.c (expand_builtin_throw): #ifndef DWARF2_UNWIND_INFO.
8515 * decl2.c (finish_file): Only register exception tables if we
8516 need to.
8517
8518 * decl.c (init_decl_processing): Add __builtin_[fs]p.
8519
8520 Tue Sep 9 19:49:38 1997 Jason Merrill <jason@yorick.cygnus.com>
8521
8522 * pt.c (unify): Just return 0 for a TYPENAME_TYPE.
8523
8524 Tue Sep 9 17:57:25 1997 Mark Mitchell <mmitchell@usa.net>
8525
8526 * error.c (dump_decl): Avoid crashing when presented with a
8527 uninitialized constant, as can occur with a template parameter.
8528 (dump_expr): Make sure that there are enough levels of
8529 current_template_parms before we start diving through them.
8530
8531 1997-09-09 Brendan Kehoe <brendan@lisa.cygnus.com>
8532
8533 * typeck.c (build_indirect_ref): Heed FLAG_VOLATILE similar to
8534 c-typeck.c.
8535
8536 Tue Sep 9 09:36:39 1997 Benjamin Kosnik <bkoz@rhino.cygnus.com>
8537
8538 * except.c (expand_throw): Call build_delete for all
8539 exception types, not just objects with destructors.
8540
8541 Mon Sep 8 02:33:20 1997 Jody Goldberg <jodyg@idt.net>
8542
8543 * decl.c (current_local_enum): Remove static.
8544 * pt.c (tsubst_enum): Save and restore value of current_local_enum
8545 in case template is expanded in enum decl.
8546 (instantiate_class_template) : Use new tsubst_enum signature.
8547 (tsubst_expr): Likewise.
8548
8549 Mon Sep 8 01:21:43 1997 Mark Mitchell <mmitchell@usa.net>
8550
8551 * pt.c (begin_member_template_processing): Take a function as
8552 argument, not a set of template arguments. Use the template
8553 parameters, rather than the arguments. Handle non-type parameters
8554 correctly. Push a binding level for the parameters so that multiple
8555 member templates using the same parameter names can be declared.
8556 (end_member_template_processing): Pop the binding level.
8557 (push_template_decl): Mark member templates as static when
8558 appropriate.
8559
8560 * lex.c (do_pending_inlines): Pass the function, not its template
8561 arguments, to begin_member_template_processing.
8562 (process_next_inline): Likewise.
8563 (do_pending_defargs): Likewise.
8564
8565 * error.c (dump_expr): Obtain the correct declaration for a
8566 TEMPLATE_CONST_PARM.
8567
8568 * call.c (add_template_conv_candidate): New function.
8569 (build_object_call): Handle member templates, as done in the other
8570 build_ functions.
8571
8572 Sat Sep 6 10:20:27 1997 Mark Mitchell <mmitchell@usa.net>
8573
8574 * decl.c (replace_defag): Undo previous change.
8575 * lex.c (do_pending_defargs): Deal with member templates.
8576
8577 * pt.c (is_member_template): Avoid crashing when passed a
8578 non-function argument.
8579
8580 Fri Sep 5 17:27:38 1997 Jason Merrill <jason@yorick.cygnus.com>
8581
8582 * class.c (grow_method): Remove check for redeclaration.
8583
8584 Fri Sep 5 01:37:17 1997 Mark Mitchell <mmitchell@usa.net>
8585
8586 * cp-tree.h (INNERMOST_TEMPLATE_PARMS): New macro.
8587 (DECL_INNERMOST_TEMPLATE_PARMS): Likewise.
8588 (PRIMARY_TEMPLATE_P): Use it.
8589 * call.c (build_overload_call_real): Use it.
8590 * class.c (instantiate_type): Likewise.
8591 * decl.c (decls_match): Likewise.
8592 * method.c (build_overload_identifier): Likewise.
8593 * pt.c (push_template_decl): Likewise.
8594 (classtype_mangled_name): Likewise.
8595 (lookup_template_class): Likewise.
8596
8597 * cp-tree.h (DECL_NTPARMS): Change name from DECL_NT_PARMS to
8598 DECL_NTPARMS to conform to usage elsewhere.
8599 * call.c (add_template_candidate): Likewise.
8600 * class.c (instantiate_type): Likewise.
8601 * pt.c (instantiate_template): Likewise.
8602 (get_bindings): Likewise.
8603
8604 * class.c (grow_method): Use DECL_FUNCTION_TEMPLATE_P instead of
8605 is_member_template.
8606
8607 * pt.c (unify): Undo changes to allow multiple levels of template
8608 parameters.
8609 (type_unification): Likewise.
8610 (fn_type_unification): Likewise.
8611 (get_class_bindings): Likewise.
8612 * cp-tree.h (Likewise).
8613
8614 * decl.c (replace_defarg): Check that the type of the default
8615 parameter does not invlove a template type before complaining
8616 about the initialization.
8617
8618 * error.c (dump_expr): Deal with template constant parameters in
8619 member templates correctly.
8620
8621 * pt.c (is_member_template): Deal with class specializations
8622 correctly.
8623 (tsubst): Handle "partial instantiation" of member templates
8624 correctly.
8625
8626 Wed Sep 3 12:30:24 1997 Mark Mitchell <mmitchell@usa.net>
8627
8628 * pt.c (type_unification): Change calling squence to allow for
8629 multiple levels of template parameters.
8630 (tsubst_expr): Likewise.
8631 (tsubst): Likewise.
8632 (tsubst_copy): Likewise.
8633 (instantiate_template): Likewise.
8634 (unify): Likewise.
8635 * call.c (build_overload_call_real): Use it.
8636 (add_builtin_candidate): Use it.
8637 (build_new_method_call): Use it.
8638 * class.c (instantiate_type): Use it.
8639 * decl.c (grokdeclarator): Use it.
8640 * decl2.c (finish_file): Use it.
8641 * method.c (build_overload_identifier): Use it.
8642
8643 * call.c (add_template_candidate): Add additional parameter for
8644 the function return type. Call fn_type_unification istead of
8645 type_unification.
8646 (build_user_type_conversion_1): Handle member templates.
8647 (build_new_function_call): Likewise.
8648 (build_new_op): Likewise.
8649 (build_new_method_call): Likewise.
8650
8651 * class.c (grow_method): Don't give an error message indicating
8652 that two member templates with the same name are ambiguous.
8653 (finish_struct): Treat member template functions just like member
8654 functions.
8655
8656 * cp-tree.h (check_member_template): Add declaration.
8657 (begin_member_template_processing): Likewise.
8658 (end_member_template_processing): Likewise.
8659 (fn_type_unification): Likewise.
8660 (is_member_template): Likewise.
8661 (tsubst): Change prototype.
8662 (tsubst_expr): Likewise.
8663 (tsubst_copy): Likewise.
8664 (instantiate_template): Likewise.
8665 (get_bindings): Likewise.
8666
8667 * decl.c (decls_match): Handle multiple levels of template
8668 parameters.
8669 (pushdecl): Handle template type params just like other type
8670 declarations.
8671 (push_class_level_binding): Return immediately if the
8672 class_binding_level is NULL.
8673 (grokfndecl): If check_classfn() returns a member_template, use
8674 the result of the template, not the template itself.
8675
8676 * decl2.c (check_member_template): New function. Check to see
8677 that the entity declared to be a member template can be one.
8678 (check_classfn): Allow redeclaration of member template functions
8679 with different types; the new functions can be specializations or
8680 explicit instantiations.
8681
8682 * error.c (dump_decl): Handle multiple levels of template
8683 parameters.
8684 (dump_function_decl): Update to handle function templates.
8685
8686 * lex.c (do_pending_inlines): Set up template parameter context
8687 for member templates.
8688 (process_next_inline): Likewise.
8689
8690 * method. (build_overload_identifier): Adjust for multiple levels
8691 of template parameters.
8692
8693 * parse.y (fn.def2): Add member templates.
8694 (component_decl_1): Likewise.
8695
8696 * pt.c (begin_member_template_processing): New function.
8697 (end_member_template_processing): Likewise.
8698 (is_member_template): Likewise.
8699 (fn_type_unification): Likewise.
8700 (current_template_parms): Return a vector of all the template
8701 parms, not just the innermost level of parms.
8702 (push_template_decl): Deal with the possibility of member
8703 templates.
8704 (lookup_template_class): Likewise.
8705 (uses_template_parms): Likewise.
8706 (tsubst): Modify processing to TEMPLATE_TYPE_PARM and
8707 TEMPLATE_CONST_PARM to deal with multiple levels of template
8708 arguments. Add processing of TEMPLATE_DECL to produce new
8709 TEMPLATE_DECLs from old ones.
8710 (do_decl_instantiation): Handle member templates.
8711
8712 * search.c (lookup_fnfields_1): Handle member template conversion
8713 operators.
8714
8715 * tree.c (cp_tree_equal): Check the levels, as well as the
8716 indices, of TEMPLATE_CONST_PARMs.
8717
8718 * typeck.c (comptypes): Check the levels, as well as the indices,
8719 fo TEMPLATE_TYPE_PARMs.
8720 (build_x_function_call): Treat member templates like member
8721 functions.
8722
8723 Wed Sep 3 11:09:25 1997 Jason Merrill <jason@yorick.cygnus.com>
8724
8725 * typeck.c (c_expand_return): Always convert_for_initialization
8726 before checking for returning a pointer to local.
8727
8728 * pt.c (type_unification): If strict and the function parm doesn't
8729 use template parms, just compare types.
8730
8731 Wed Sep 3 10:35:49 1997 Klaus Espenlaub <kespenla@student.informatik.uni-ulm.de>
8732
8733 * method.c (build_overloaded_value): Replace direct call
8734 to the floating point emulator with REAL_VALUE_TO_DECIMAL macro.
8735
8736 Wed Sep 3 00:02:53 1997 Jason Merrill <jason@yorick.cygnus.com>
8737
8738 * typeck.c (convert_arguments): Don't arbitrarily choose the first
8739 of a set of overloaded functions.
8740
8741 Tue Sep 2 12:09:13 1997 Jason Merrill <jason@yorick.cygnus.com>
8742
8743 * lex.c (real_yylex): Don't elide __FUNCTION__.
8744
8745 * method.c (build_overload_value): Add in_template parm.
8746 (build_overload_int): Likewise.
8747 (build_overload_identifier): Pass it.
8748
8749 * decl.c (duplicate_decls): Don't bash a previous template
8750 definition with a redeclaration.
8751
8752 * pt.c (unify): float doesn't match double.
8753
8754 * pt.c (do_type_instantiation): Handle getting a _TYPE or a
8755 TYPE_DECL. Handle getting non-template types.
8756 * parse.y (explicit_instantiation): Use typespec instead of
8757 aggr template_type.
8758
8759 Tue Sep 2 10:27:08 1997 Richard Henderson <rth@cygnus.com>
8760
8761 * typeck.c (build_ptrmemfunc1): Clean up ptr->int cast warnings.
8762
8763 Mon Sep 1 13:19:04 1997 Eugene Mamchits <eugin@ips.ras.ru>
8764
8765 * call.c (add_builtin_candidate): Add missing TREE_TYPE.
8766 (compare_ics): Likewise.
8767
8768 Mon Sep 1 13:19:04 1997 Jason Merrill <jason@yorick.cygnus.com>
8769
8770 * call.c (joust): Warn about choosing one conversion op over
8771 another because of 'this' argument when the other return type is
8772 better.
8773 (source_type): New fn.
8774
8775 * call.c (build_new_op): Strip leading REF_BIND from first operand
8776 to builtin operator.
8777
8778 * decl2.c (mark_vtable_entries): Mark abort_fndecl as used when we
8779 use its RTL.
8780
8781 Thu Aug 28 09:45:23 1997 Jason Merrill <jason@yorick.cygnus.com>
8782
8783 * call.c (null_ptr_cst_p): Remove support for (void*)0.
8784
8785 Wed Aug 27 02:03:34 1997 Jeffrey A Law (law@cygnus.com)
8786
8787 * typeck.c (expand_target_expr): Make definition match declaration.
8788
8789 * class.c (get_basefndecls): Make definition match declaration.
8790
8791 Mon Aug 25 14:30:02 1997 Jason Merrill <jason@yorick.cygnus.com>
8792
8793 * input.c (sub_getch): Eventually give up and release the input file.
8794
8795 * decl.c (cp_finish_decl): If #p i/i, put inline statics in the
8796 right place.
8797
8798 * call.c (joust): Tweak message.
8799
8800 Sat Aug 23 18:02:59 1997 Mark Mitchell <mmitchell@usa.net>
8801
8802 * error.c (type_as_string): Put const/volatile on template type
8803 parameters where appropriate.
8804
8805 Sat Aug 23 17:47:22 1997 Jeffrey A Law (law@cygnus.com)
8806
8807 * call.c (strictly_better): Make arguments unsigned ints.
8808
8809 Thu Aug 21 18:48:44 1997 Jason Merrill <jason@yorick.cygnus.com>
8810
8811 * lex.c (real_yylex): Refer to __complex instead of complex.
8812
8813 Thu Aug 21 22:25:46 1997 J"orn Rennecke <amylaar@cygnus.co.uk>
8814
8815 * lex.c (real_yylex): Don't use getc directly.
8816
8817 Wed Aug 20 17:25:08 1997 Jason Merrill <jason@yorick.cygnus.com>
8818
8819 * call.c (is_subseq): Don't try to be clever.
8820
8821 Wed Aug 20 03:13:36 1997 H.J. Lu (hjl@gnu.ai.mit.edu)
8822
8823 * parse.y, pt.c: Include "except.h".
8824 * call.c, class.c, class.h, cp-tree.h, cvt.c, decl.c, decl2.c,
8825 error.c, except.c, expr.c, friend.c, g++spec.c, init.c, input.c,
8826 lex.c, lex.h, method.c, parse.y, pt.c, repo.c, rtti.c, search.c,
8827 sig.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c: Finish
8828 prototyping.
8829
8830 Wed Aug 20 01:34:40 1997 Jason Merrill <jason@yorick.cygnus.com>
8831
8832 * decl2.c (mark_vtable_entries): Instead of replacing pure
8833 virtuals with a reference to __pure_virtual, copy the decl and
8834 change the RTL.
8835
8836 Tue Aug 19 02:26:07 1997 Jason Merrill <jason@yorick.cygnus.com>
8837
8838 * pt.c (lookup_nested_type_by_name): Handle typedef wierdness.
8839
8840 * typeck2.c (my_friendly_abort): Report bugs to egcs-bugs@cygnus.com.
8841
8842 * pt.c (instantiate_class_template): Call repo_template_used
8843 before finish_prevtable_vardecl.
8844
8845 * call.c (is_subseq): New fn.
8846 (compare_ics): Use it.
8847
8848 * repo.c (finish_repo): Don't crash on no args.
8849
8850 * parse.y (named_complex_class_head_sans_basetype): Handle
8851 explicit global scope.
8852 * decl2.c (handle_class_head): New fn.
8853
8854 * pt.c (unify): Add CONST_DECL case.
8855
8856 Thu Aug 14 10:05:13 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
8857
8858 * rtti.c (permanent_obstack): Fix decl to not be a pointer.
8859
8860 * cp-tree.h (report_type_mismatch): Add prototype.
8861 * call.c (build_overload_call_real): Remove erroneous fourth
8862 argument to report_type_mismatch.
8863 (build_user_type_conversion_1): Remove erroneous second arg to
8864 tourney.
8865 (build_new_function_call): Likewise.
8866 (build_object_call): Likewise.
8867 (build_new_op): Likewise.
8868 (build_new_method_call): Likewise.
8869
8870 Wed Aug 13 19:19:25 1997 Jason Merrill <jason@yorick.cygnus.com>
8871
8872 * error.c (dump_decl): Don't bother processing a function with no
8873 DECL_LANG_SPECIFIC.
8874
8875 * method.c (emit_thunk): Call init_function_start in the macro case.
8876
8877 Wed Aug 13 10:46:19 1997 H.J. Lu (hjl@gnu.ai.mit.edu)
8878
8879 * decl2.c (DEFAULT_VTABLE_THUNKS): Define to be 0 if not
8880 defined and used to set flag_vtable_thunks.
8881
8882 Tue Aug 12 20:13:57 1997 Jason Merrill <jason@yorick.cygnus.com>
8883
8884 * parse.y: Don't clear the inlines from their obstack until they've
8885 all been processed.
8886
8887 * decl.c (duplicate_decls): Don't complain about exception
8888 specification mismatch if flag_exceptions is off.
8889
8890 Mon Aug 11 15:01:56 1997 Marc Lehmann <pcg@goof.com>
8891
8892 * Make-lang.in (c++.distclean): Remove g++.c on make distclean.
8893
8894 Sun Aug 10 12:06:09 1997 Paul Eggert <eggert@twinsun.com>
8895
8896 * cp-tree.h: Replace STDIO_PROTO with PROTO in include files.
8897 * cvt.c, error.c, except.c, expr.c, friend.c, init.c, rtti.c:
8898 Include <stdio.h> before include files that formerly used STDIO_PROTO.
8899
8900 * decl.c, g++spec.c, lex.c, method.c, repo.c:
8901 Include "config.h" first, as per autoconf manual.
8902
8903 Fri Aug 8 11:47:48 1997 Jason Merrill <jason@yorick.cygnus.com>
8904
8905 * decl.c (duplicate_decls): Tweak wording.
8906 * lex.c (do_pending_defargs): Don't die if we see a default arg
8907 that isn't a DEFAULT_ARG.
8908 * error.c (dump_expr): Handle DEFAULT_ARG.
8909
8910 * decl2.c (lang_decode_option): Handle -fhandle-exceptions.
8911 * lang-options.h: Add -fhandle-exceptions.
8912
8913 * class.c (build_vtable): vtables are artificial.
8914 (prepare_fresh_vtable): Likewise.
8915
8916 Wed Aug 6 11:02:36 1997 Jason Merrill <jason@yorick.cygnus.com>
8917
8918 * cvt.c (ocp_convert): After converting to the target type, set
8919 LOOKUP_NO_CONVERSION.
8920
8921 * call.c (joust): Warn about potentially confusing promotion rules
8922 with -Wsign-promo.
8923 * cp-tree.h, lang-options.h, decl2.c: Support -Wsign-promo.
8924
8925 Tue Aug 5 15:15:07 1997 Michael Meissner <meissner@cygnus.com>
8926
8927 * exception.cc: Declare __terminate_func with noreturn attribute.
8928
8929 Fri Aug 1 03:18:15 1997 Jason Merrill <jason@yorick.cygnus.com>
8930
8931 * parse.y: Break out eat_saved_input, handle errors.
8932 (function_try_block): Use compstmt instead of compstmt_or_error.
8933
8934 Thu Jul 31 17:14:04 1997 Jason Merrill <jason@yorick.cygnus.com>
8935
8936 * tree.c (build_cplus_new): Don't set TREE_ADDRESSABLE.
8937
8938 Fri Jul 4 01:45:16 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
8939
8940 * Make-lang.in (cplib2.txt, cplib2.ready): Instead of checking for
8941 existence of cc1plus check whether $(LANGUAGES) contains C++.
8942
8943 Wed Jul 30 13:04:21 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
8944
8945 * method.c (do_build_copy_constructor): When copying an anonymous
8946 union member loop around to handle nested anonymous unions. Use
8947 the offset of the member relative to the outer structure, not the
8948 union.
8949
8950 Tue Jul 29 21:17:29 1997 Jason Merrill <jason@yorick.cygnus.com>
8951
8952 * call.c (resolve_args): New fn.
8953 (build_new_function_call): Use it.
8954 (build_object_call): Likewise.
8955 (build_new_method_call): Likewise.
8956
8957 Mon Jul 28 16:02:36 1997 Jason Merrill <jason@yorick.cygnus.com>
8958
8959 * call.c (build_over_call): tsubst all default parms from templates.
8960
8961 Wed Jul 23 13:36:25 1997 Jason Merrill <jason@yorick.cygnus.com>
8962
8963 * decl.c (struct cp_function): Add static_labelno.
8964 (push_cp_function_context): Save it.
8965 (pop_cp_function_context): Restore it.
8966
8967 Tue Jul 22 14:43:29 1997 Jason Merrill <jason@yorick.cygnus.com>
8968
8969 * typeck.c (build_component_ref_1): Convert from reference.
8970
8971 Tue Jul 22 11:06:23 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
8972
8973 * parse.y (current_declspecs, prefix_attributes): Initialize to
8974 NULL_TREE.
8975
8976 * parse.y (initdcl0): Make sure CURRENT_DECLSPECS is non-nil
8977 before we try to force it to be a TREE_LIST.
8978 (decl): Make sure $1.t is non-nil.
8979
8980 Sun Jul 20 11:53:07 1997 Jason Merrill <jason@yorick.cygnus.com>
8981
8982 * pt.c (uses_template_parms): Handle template first-parse codes.
8983
8984 * decl.c (cp_finish_decl): Only warn about user-defined statics.
8985
8986 Fri Jul 18 17:56:08 1997 Jason Merrill <jason@yorick.cygnus.com>
8987
8988 * pt.c (unify): Handle BOOLEAN_TYPE.
8989
8990 * cp-tree.h: Lose PARM_DEFAULT_FROM_TEMPLATE.
8991 * pt.c (tsubst): Don't set it.
8992 * call.c (build_over_call): Use uses_template_parms.
8993
8994 Thu Jul 17 18:06:30 1997 Jason Merrill <jason@yorick.cygnus.com>
8995
8996 * method.c (build_overload_nested_name): Use static_labelno
8997 instead of var_labelno.
8998 (build_qualified_name): New fn.
8999 (build_overload_name): Split out from here.
9000 (build_static_name): Use build_qualified_name.
9001 * decl.c (cp_finish_decl): Statics in extern inline functions
9002 have comdat linkage.
9003 (start_function): Initialize static_labelno.
9004
9005 Thu Jul 17 11:20:17 1997 Benjamin Kosnik <bkoz@rhino.cygnus.com>
9006
9007 * class.c (finish_struct_methods): add check of warn_ctor_dtor_privacy
9008 before "all member functions in class [] are private"
9009
9010 Wed Jul 16 23:47:08 1997 Jason Merrill <jason@yorick.cygnus.com>
9011
9012 * lex.c (do_scoped_id): convert_from_reference.
9013 * init.c (build_offset_ref): Likewise.
9014
9015 Wed Jul 16 12:34:29 1997 Benjamin Kosnik <bkoz@lisa.cygnus.com>
9016
9017 * error.c (dump_expr): Check TREE_OPERAND before dump_expr_list.
9018
9019 Mon Jul 14 03:23:46 1997 Jason Merrill <jason@yorick.cygnus.com>
9020
9021 * typeck.c (get_member_function_from_ptrfunc): Promote index
9022 before saving it.
9023
9024 Sun Jul 13 00:11:52 1997 Jason Merrill <jason@yorick.cygnus.com>
9025
9026 * tree.c (layout_basetypes): Move non-virtual destructor warning.
9027 * decl.c (xref_basetypes): Remove non-virtual destructor warning.
9028
9029 Sat Jul 12 12:47:12 1997 Jason Merrill <jason@yorick.cygnus.com>
9030
9031 * decl.c (grokdeclarator): Call add_defarg_fn for the function
9032 type, too.
9033 * lex.c (add_defarg_fn): Adjust.
9034 (do_pending_defargs): Adjust. Don't skip the first parm.
9035
9036 Fri Jul 11 01:39:50 1997 Jason Merrill <jason@yorick.cygnus.com>
9037
9038 * decl.c (build_enumerator): Global enumerators are also readonly.
9039
9040 * rtti.c (build_dynamic_cast_1): Renamed from build_dynamic_cast.
9041 (build_dynamic_cast): Call it and convert_from_reference.
9042
9043 * lex.c (add_defarg_fn): New fn.
9044 (snarf_defarg): Don't add to defarg_types.
9045 (do_pending_defargs): Lose defarg_types. All fns we process now
9046 have defargs.
9047 * decl.c (grokfndecl): Call add_defarg_fn.
9048
9049 * Makefile.in (CONFLICTS): Expect 18 s/r conflicts.
9050 * cp-tree.def: Add DEFAULT_ARG.
9051 * spew.c (yylex): Call snarf_defarg as appropriate.
9052 * parse.y: New tokens DEFARG and DEFARG_MARKER.
9053 (defarg_again, pending_defargs, defarg, defarg1): New rules.
9054 (structsp): Use pending_defargs.
9055 (parms, full_parm): Use defarg.
9056 * lex.c (init_lex): Initialize inline_text_firstobj.
9057 (do_pending_inlines): Never pass the obstack to feed_input.
9058 (process_next_inline): Call end_input instead of restore_pending_input.
9059 (clear_inline_text_obstack, reinit_parse_for_expr, do_pending_defargs,
9060 finish_defarg, feed_defarg, snarf_defarg, maybe_snarf_defarg): New fns.
9061 * input.c (end_input): New fn.
9062 (sub_getch): At the end of some fed input, just keep returning EOF
9063 until someone calls end_input.
9064 Remove 'obstack' field from struct input_source.
9065 * decl.c (grokparms): Handle DEFAULT_ARG.
9066 (replace_defarg): New fn.
9067 * cp-tree.h (DEFARG_LENGTH, DEFARG_POINTER): New macros.
9068
9069 Wed Jul 9 13:44:12 1997 Jason Merrill <jason@yorick.cygnus.com>
9070
9071 * call.c (implicit_conversion): If nothing else works, try binding
9072 an rvalue to a reference.
9073
9074 Wed Jul 9 13:04:38 1997 Geoffrey Noer <noer@cygnus.com>
9075
9076 * decl.c (init_decl_processing): fix Jun 30 patch -- move
9077 ifndef for Cygwin32 to include SIGSEGV.
9078
9079 Thu Jul 3 01:44:05 1997 Jason Merrill <jason@yorick.cygnus.com>
9080
9081 * class.c (finish_struct_1): Only complain about pointers without
9082 copy stuff if there are any constructors.
9083
9084 * rtti.c (build_dynamic_cast): Call complete_type on the types.
9085
9086 * decl.c (grokfndecl): If the function we chose doesn't actually
9087 match, die.
9088
9089 * decl2.c (grokclassfn): Don't specify 'const int' for the
9090 artificial destructor parm.
9091
9092 * pt.c (type_unification): If we are called recursively, nothing
9093 decays.
9094
9095 Mon Jun 30 17:53:21 1997 Geoffrey Noer <noer@cygnus.com>
9096
9097 * decl.c (init_decl_processing): Stop trying to catch signals
9098 other than SIGABRT since the Cygwin32 library doesn't support
9099 them correctly yet. This fixes a situation in which g++ causes
9100 a hang on SIGSEGVs and other such signals in our Win32-hosted
9101 tools.
9102
9103 Mon Jun 30 14:50:01 1997 Jason Merrill <jason@yorick.cygnus.com>
9104
9105 * tree.c (mapcar, case CALL_EXPR): Handle all the parse node data.
9106
9107 Fri Jun 27 15:18:49 1997 Jason Merrill <jason@yorick.cygnus.com>
9108
9109 * typeck2.c (store_init_value): Always return the value if our
9110 type needs constructing.
9111
9112 * method.c (hack_identifier): Convert class statics from
9113 reference, too.
9114
9115 Thu Jun 26 11:44:46 1997 Jason Merrill <jason@yorick.cygnus.com>
9116
9117 * Make-lang.in (cplib2.ready): Add $(LANGUAGES) dependency.
9118
9119 Thu Jun 19 16:49:28 1997 Mike Stump <mrs@cygnus.com>
9120
9121 * typeck.c (c_expand_return): Make sure we clean up temporaries at
9122 the end of return x;
9123
9124 Thu Jun 19 12:28:43 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9125
9126 * lex.c (check_for_missing_semicolon): Also check for CV_QUALIFIER.
9127
9128 Tue Jun 17 18:35:57 1997 Mike Stump <mrs@cygnus.com>
9129
9130 * except.c (expand_builtin_throw): Add support
9131 -fno-sjlj-exceptions -fPIC exception handling on the SPARC.
9132
9133 Mon Jun 16 01:24:37 1997 Jason Merrill <jason@yorick.cygnus.com>
9134
9135 * repo.c (extract_string): Null-terminate.
9136
9137 * cp-tree.h (TI_SPEC_INFO): New macro.
9138 (CLASSTYPE_TI_SPEC_INFO): New macro.
9139 * pt.c (push_template_decl): Correctly determine # of template parms
9140 for partial specs.
9141
9142 * call.c (compare_ics): Really fix 'this' conversions.
9143
9144 * pt.c (do_decl_instantiation): Don't crash on explicit inst of
9145 non-template fn.
9146
9147 * pt.c (push_template_decl): Complain about mismatch in # of
9148 template parms between a class template and a member template.
9149
9150 Sun Jun 15 02:38:20 1997 Jason Merrill <jason@yorick.cygnus.com>
9151
9152 * method.c (synthesize_method): You can't call
9153 function_cannot_inline_p after finish_function.
9154 * decl.c (finish_function): Turn on flag_inline_functions and turn
9155 off DECL_INLINE before handing a synthesized method to the
9156 backend.
9157
9158 Thu Jun 12 17:35:28 1997 Jason Merrill <jason@yorick.cygnus.com>
9159
9160 * method.c (synthesize_method): Remove July 30 change to never set
9161 DECL_INLINE if at_eof.
9162
9163 Thu Jun 12 15:25:08 1997 Mike Stump <mrs@cygnus.com>
9164
9165 * xref.c (GNU_xref_member): Ensure that the node has a
9166 decl_lang_specific part before checking DECL_FRIEND_P.
9167
9168 Thu Jun 12 12:36:05 1997 Jason Merrill <jason@yorick.cygnus.com>
9169
9170 * pt.c (instantiate_class_template): Diagnose non-class types used
9171 as bases.
9172
9173 Wed Jun 11 17:33:40 1997 Jason Merrill <jason@yorick.cygnus.com>
9174
9175 * typeck.c (build_conditional_expr): Use convert_for_initialization
9176 instead of convert_and_check.
9177
9178 Wed Jun 11 12:31:33 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9179
9180 * parse.y (typespec): Don't pedwarn for typeof.
9181
9182 Tue Jun 10 00:22:09 1997 Jason Merrill <jason@yorick.cygnus.com>
9183
9184 * repo.c (finish_repo): Only check changes if we would write a
9185 repo file.
9186
9187 * call.c (compare_ics): Fix handling of 'this' conversions.
9188
9189 * pt.c (do_decl_instantiation): Support static data too. Rename
9190 from do_function_instantiation.
9191 * cp-tree.h: Adjust.
9192 * parse.y: Adjust.
9193
9194 * repo.c (extract_string): New fn.
9195 (get_base_filename): Use it.
9196 (init_repo): Compare old args with current args.
9197
9198 Mon Jun 9 14:25:30 1997 Mike Stump <mrs@cygnus.com>
9199
9200 * Makefile.in, Make-lang.in: Protect C-ls with a comment
9201 character, idea from Paul Eggert <eggert@twinsun.com>.
9202
9203 Mon Jun 9 01:52:03 1997 Jason Merrill <jason@yorick.cygnus.com>
9204
9205 * typeck.c (c_expand_return): Be more persistent in looking for
9206 returned temps.
9207
9208 * cvt.c (build_up_reference): Use NOP_EXPR for switching from
9209 pointer to reference.
9210
9211 * class.c (build_vbase_path): Don't do anything if PATH has no steps.
9212
9213 Sun Jun 8 03:07:05 1997 Jason Merrill <jason@yorick.cygnus.com>
9214
9215 * init.c (build_member_call, build_offset_ref):
9216 Use do_scoped_id instead of do_identifier.
9217
9218 * cvt.c (convert): Remove bogosity.
9219
9220 Sat Jun 7 20:50:17 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9221
9222 * cvt.c (build_up_reference): Do checks of ARGTYPE and
9223 TARGET_TYPE before trying to use get_binfo.
9224
9225 Fri Jun 6 17:36:39 1997 Jason Merrill <jason@yorick.cygnus.com>
9226
9227 * cvt.c (build_up_reference): Call get_binfo to get access control.
9228
9229 * decl2.c (import_export_decl): If we don't support weaks, leave
9230 statics undefined.
9231
9232 Fri Jun 6 15:55:49 1997 Mike Stump <mrs@cygnus.com>
9233
9234 * except.c (expand_builtin_throw): Add support for machines that
9235 cannot access globals after throw's epilogue when
9236 -fno-sjlj-exceptions is used.
9237
9238 Thu Jun 5 16:28:43 1997 Jason Merrill <jason@yorick.cygnus.com>
9239
9240 * parse.y: 'std::' becomes '::'.
9241 * lex.c (real_yylex): Remove 'namespace' warning.
9242 * init.c (build_member_call): Ignore 'std::'.
9243 (build_offset_ref): Likewise.
9244 * decl2.c (do_using_directive): Ignore 'using namespace std;'.
9245 (do_toplevel_using_decl): Ignore 'using std::whatever'.
9246 * decl.c (push_namespace): Just sorry.
9247 (pop_namespace): Nop.
9248 (init_decl_processing): Declare std namespace.
9249
9250 Tue Jun 3 18:08:23 1997 Jason Merrill <jason@yorick.cygnus.com>
9251
9252 * search.c (push_class_decls): A name which ambiguously refers to
9253 several instantiations of the same template just refers to the
9254 template.
9255
9256 Tue Jun 3 12:30:40 1997 Benjamin Kosnik <bkoz@cirdan.cygnus.com>
9257
9258 * decl.c (build_enumerator): fix problem with unsigned long
9259 enumerated values being smashed to ints, causing overflow
9260 when computing next enumerated value. (for enum values around
9261 MAX_VAL).
9262
9263 Mon Jun 2 17:40:56 1997 Jason Merrill <jason@yorick.cygnus.com>
9264
9265 * typeck.c (build_component_ref): Only call mark_used on a decl.
9266
9267 Thu May 29 15:54:17 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9268
9269 * typeck.c (build_c_cast): Make the check for a ptr to function
9270 more specific before possible default_conversion call.
9271
9272 Thu May 29 13:02:06 1997 Mike Stump <mrs@cygnus.com>
9273
9274 * except.c (expand_exception_blocks): Simplify and fix and make
9275 sure we don't end a region in a sequence, as expand_end_bindings
9276 doesn't like it.
9277
9278 Wed May 28 17:08:03 1997 Mike Stump <mrs@cygnus.com>
9279
9280 * except.c (init_exception_processing): Mark terminate as not
9281 returning so that the optimizer can optimize better.
9282
9283 Tue May 27 19:49:19 1997 Mike Stump <mrs@cygnus.com>
9284
9285 * cvt.c (convert): Don't do any extra work, if we can avoid it
9286 easily.
9287
9288 Tue May 27 18:21:47 1997 Mike Stump <mrs@cygnus.com>
9289
9290 * *.[chy]: Change cp_convert to ocp_convert, change convert to
9291 cp_convert. convert is now reserved for the backend, and doesn't
9292 have the semantics a frontend person should ever want.
9293
9294 Fri May 23 10:58:31 1997 Jason Merrill <jason@yorick.cygnus.com>
9295
9296 * lang-specs.h: Define __EXCEPTIONS if exceptions are enabled.
9297 Lose -traditional support.
9298
9299 Thu May 22 15:41:28 1997 Jason Merrill <jason@yorick.cygnus.com>
9300
9301 * rtti.c (get_tinfo_var): Use TYPE_PRECISION (sizetype).
9302
9303 * parse.y (self_reference): Do it for templates, too.
9304 * class.c (pushclass): Don't overload_template_name; the alias
9305 generated by build_self_reference serves the same purpose.
9306
9307 * tree.c (list_hash): Make static, take more args.
9308 (list_hash_lookup): Likewise.
9309 (list_hash_add): Make static.
9310 (list_hash_canon): Lose.
9311 (hash_tree_cons): Only build a new node if one isn't already in the
9312 hashtable.
9313 (hash_tree_chain): Use hash_tree_cons.
9314 * cp-tree.h: Adjust.
9315 * decl.c (grokfndecl): Just check IDENTIFIER_GLOBAL_VALUE instead
9316 of calling lookup_name.
9317
9318 Wed May 21 18:24:19 1997 Jason Merrill <jason@yorick.cygnus.com>
9319
9320 * pt.c (instantiate_class_template): TYPE_VALUES for an enum
9321 doesn't refer to the CONST_DECLs.
9322
9323 Tue May 20 21:09:32 1997 Bob Manson <manson@charmed.cygnus.com>
9324
9325 * rtti.c (get_tinfo_var): Either INT_TYPE_SIZE or 32, whichever
9326 is bigger.
9327 (expand_class_desc): Convert the last argument to a sizetype.
9328
9329 Tue May 20 13:55:57 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9330
9331 * gxx.gperf (__complex, __complex__, __imag, __imag__, __real,
9332 __real__): Add reswords.
9333 * hash.h: Regenerate.
9334 * lex.h (rid): Add RID_COMPLEX.
9335 (RID_LAST_MODIFIER): Set to RID_COMPLEX.
9336 * lex.c (init_lex): Add building of RID_COMPLEX.
9337 (real_yylex): General cleanup in line with what c-lex.c also has,
9338 sans the cruft for traditional; add handling of SPEC_IMAG, complex
9339 types, and imaginary numeric constants.
9340 * parse.y (REALPART, IMAGPART): Add tokens.
9341 (unary_expr): Add REALPART and IMAGPART rules.
9342 * cp-tree.h (complex_{integer,float,double,long}_type_node): Declare.
9343 * decl.c (complex_{integer,float,double,long}_type_node): Define
9344 types.
9345 (init_decl_processing): Set up the types.
9346 (grokdeclarator): Add handling of RID_COMPLEX. Set and use
9347 DEFAULTED_INT instead of EXPLICIT_INT when we default to int type.
9348 * call.c (build_new_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
9349 * cvt.c (cp_convert): Handle COMPLEX_TYPE.
9350 * error.c (dump_type_prefix, dump_type, dump_type_suffix): Add
9351 COMPLEX_TYPE case.
9352 * method.c (build_overload_name): Add handling of the different
9353 COMPLEX_TYPEs, prefixing them with `J'.
9354 * pt.c (process_template_parm): Don't let them use a COMPLEX_TYPE
9355 as a template parm.
9356 (uses_template_parms, tsubst, unify): Add COMPLEX_TYPE case.
9357 * tree.c (lvalue_p): Add REALPART_EXPR and IMAGPART_EXPR cases.
9358 (mapcar): Handle COMPLEX_CST.
9359 * typeck.c (build_binary_op_nodefault): Handle COMPLEX_TYPE.
9360 (common_type): Add code for complex types.
9361 (build_unary_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
9362 (convert_for_assignment): Likewise.
9363 (mark_addressable): Add REALPART_EXPR and IMAGPART_EXPR cases.
9364
9365 Mon May 19 12:26:27 1997 Jason Merrill <jason@yorick.cygnus.com>
9366
9367 * pt.c (tsubst): Don't pass the MINUS_EXPR for an array domain to
9368 tsubst_expr, as it might try to do overload resolution.
9369
9370 Sat May 17 10:48:31 1997 Jason Merrill <jason@yorick.cygnus.com>
9371
9372 * pt.c (instantiate_class_template): Oops.
9373
9374 Fri May 16 14:23:57 1997 Jason Merrill <jason@yorick.cygnus.com>
9375
9376 * cp-tree.def: Add TAG_DEFN.
9377 * pt.c (tsubst_enum): New fn.
9378 (instantiate_class_template): Use it.
9379 (tsubst_expr): Support TAG_DEFN.
9380 (tsubst): Support local enums.
9381 (tsubst_copy): Likewise.
9382 * decl.c (finish_enum): Likewise.
9383 (start_enum): If this is a local enum, switch to permanent_obstack.
9384
9385 Wed May 14 19:08:28 1997 Mike Stump <mrs@cygnus.com>
9386
9387 * decl.c (store_parm_decls): Set last_parm_cleanup_insn here.
9388 (finish_function): Put the base init code for constructors just
9389 after the parm cleanup insns.
9390 (struct cp_function): Add last_parm_cleanup_insn.
9391 (push_cp_function_context): Likewise.
9392 (pop_cp_function_context): Likewise.
9393
9394 Tue May 13 15:51:20 1997 Jason Merrill <jason@yorick.cygnus.com>
9395
9396 * pt.c (tsubst_copy): Handle BIT_NOT_EXPR.
9397
9398 Wed May 7 11:17:59 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9399
9400 * method.c (emit_thunk) [ASM_OUTPUT_MI_THUNK]: Build up the RTL
9401 for THUNK_FNDECL before we switch to temporary allocation.
9402
9403 Mon May 5 14:46:53 1997 Jason Merrill <jason@yorick.cygnus.com>
9404
9405 * call.c (build_new_op): Handle null arg2 for ?:.
9406
9407 Thu May 1 18:26:37 1997 Mike Stump <mrs@cygnus.com>
9408
9409 * except.c (expand_exception_blocks): Ensure that we flow through
9410 the end of the exception region for the exception specification.
9411 Move exception region for the exception specification in, so that
9412 it doesn't protect the parm cleanup. Remove some obsolete code.
9413 * decl.c (store_parm_decls): Likewise.
9414 (finish_function): Likewise.
9415
9416 Tue Apr 29 15:38:54 1997 Jason Merrill <jason@yorick.cygnus.com>
9417
9418 * init.c (build_new): Fix nothrow handling.
9419
9420 Tue Apr 29 14:29:50 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9421
9422 * init.c (emit_base_init): Don't warn about the initialization
9423 list for an artificial member.
9424
9425 Fri Apr 25 17:47:59 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9426
9427 * expr.c (do_case): Handle !START case for the error msg.
9428
9429 Fri Apr 25 11:55:23 1997 Jason Merrill <jason@yorick.cygnus.com>
9430
9431 * decl2.c, lang-options.h: New option -Weffc++.
9432 * class.c, decl.c, init.c, typeck.c: Move Effective C++ warnings
9433 to -Weffc++.
9434
9435 * decl2.c (finish_prevtable_vardecl): Change NO_LINKAGE_HEURISTICS
9436 to MULTIPLE_SYMBOL_SPACES.
9437
9438 Wed Apr 23 18:06:50 1997 Jason Merrill <jason@yorick.cygnus.com>
9439
9440 * method.c (emit_thunk, generic case): Set current_function_is_thunk.
9441
9442 * method.c (emit_thunk, macro case): Set up DECL_RESULT.
9443
9444 * typeck.c (c_expand_return): Don't complain about returning void
9445 to void in an artificial function.
9446 * method.c (make_thunk): Change settings of READONLY/VOLATILE,
9447 don't set DECL_RESULT, set DECL_ARTIFICIAL.
9448 (emit_thunk, generic code): Also set up DECL_LANG_SPECIFIC.
9449
9450 Wed Apr 23 14:43:06 1997 Mike Stump <mrs@cygnus.com>
9451
9452 * init.c (init_decl_processing): Add supoprt for setjmp/longjmp based
9453 exception handling.
9454 * except.c (init_exception_processing): Likewise.
9455 (expand_end_catch_block): Likewise.
9456 (expand_exception_blocks): Likewise.
9457 (expand_throw): Likewise.
9458 * exception.cc (__default_terminate): Likewise.
9459
9460 * init.c (perform_member_init): Use new method of expr level
9461 cleanups, instead of cleanups_this_call and friends.
9462 (emit_base_init): Likewise.
9463 (expand_aggr_vbase_init_1): Likewise.
9464 (expand_vec_init): Likewise.
9465 * decl.c (cp_finish_decl): Likewise.
9466 (expand_static_init): Likewise.
9467 (store_parm_decls): Likewise.
9468 (cplus_expand_expr_stmt): Likewise.
9469 * decl2.c (finish_file): Likewise.
9470
9471 * Make-lang.in (exception.o): Ok to compile with -O now.
9472
9473 * decl.c (maybe_build_cleanup_1): We no longer have to unsave, as
9474 we know it will be done later by the backend.
9475
9476 * decl2.c (lang_f_options): Remove support for short temps.
9477 * lang-options.h: Likewise.
9478
9479 Wed Apr 23 04:12:06 1997 Jason Merrill <jason@yorick.cygnus.com>
9480
9481 * tree.c (varargs_function_p): New fn.
9482 * method.c (emit_thunk): Replace broken generic code with code to
9483 generate a heavyweight thunk function.
9484
9485 Tue Apr 22 02:45:18 1997 Jason Merrill <jason@yorick.cygnus.com>
9486
9487 * pt.c (process_template_parm): pedwarn about floating-point parms.
9488
9489 * decl.c (grokdeclarator): inline no longer implies static.
9490
9491 * spew.c (yylex): Always return the TYPE_DECL if we got a scope.
9492
9493 Mon Apr 21 15:42:27 1997 Jason Merrill <jason@yorick.cygnus.com>
9494
9495 * class.c (check_for_override): The signature of an overriding
9496 function is not changed.
9497
9498 * call.c (build_over_call): Move setting of conv into the loop.
9499 Note: this change, along with the related changes of the 18th thru
9500 the 20th of April, fix an infinite loop problem in conversions.
9501
9502 Sun Apr 20 16:24:29 1997 Jason Merrill <jason@yorick.cygnus.com>
9503
9504 * call.c (build_user_type_conversion_1): Really ignore rvalue
9505 conversions when looking for a REFERENCE_TYPE.
9506
9507 * cvt.c (build_up_reference): Eviscerate, use build_unary_op.
9508 * cp-tree.h (TREE_REFERENCE_EXPR): #if 0.
9509 * typeck.c (decay_conversion): Don't set TREE_REFERENCE_EXPR.
9510 (build_unary_op): Likewise.
9511 * call.c (build_over_call): See through a CONVERT_EXPR around the
9512 ADDR_EXPR for on a temporary.
9513 * typeck.c (c_expand_return): See through a CONVERT_EXPR around
9514 the ADDR_EXPR for a local variable.
9515
9516 Fri Apr 18 12:11:33 1997 Jason Merrill <jason@yorick.cygnus.com>
9517
9518 * call.c (build_user_type_conversion_1): If we're trying to
9519 convert to a REFERENCE_TYPE, only consider lvalue conversions.
9520 (build_new_function_call): Print candidates.
9521 (implicit_conversion): Try a temp binding if the lvalue conv is BAD.
9522 (reference_binding): Binding a temporary of a reference-related type
9523 is BAD.
9524
9525 Thu Apr 17 14:37:22 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9526
9527 * inc/typeinfo (type_info::before): Add cv-qualifier-seq.
9528 * tinfo2.cc (type_info::before): Likewise.
9529
9530 Mon Apr 14 12:38:17 1997 Jason Merrill <jason@yorick.cygnus.com>
9531
9532 * call.c (implicit_conversion): Oops.
9533
9534 Fri Apr 11 02:18:30 1997 Jason Merrill <jason@yorick.cygnus.com>
9535
9536 * call.c (implicit_conversion): Try to find a reference conversion
9537 before binding a const reference to a temporary.
9538
9539 Wed Apr 2 12:51:36 1997 Mike Stump <mrs@cygnus.com>
9540
9541 * exception.cc (__default_unexpected): Call terminate by default,
9542 so that if the user overrides terminate, the correct function will
9543 be called.
9544
9545 Wed Mar 19 14:14:45 1997 Mike Stump <mrs@cygnus.com>
9546
9547 * parse.y (left_curly): Avoid trying to use any fields of
9548 error_mark_node, as there aren't any.
9549
9550 Thu Mar 13 16:33:22 1997 Jason Merrill <jason@yorick.cygnus.com>
9551
9552 * lex.c (do_identifier): Avoid breaking on overloaded methods
9553 as default arguments.
9554
9555 Wed Mar 12 13:55:10 1997 Hans-Peter Nilsson <Hans-Peter.Nilsson@axis.se>
9556
9557 * call.c (add_template_candidate): Initialize the variable "dummy".
9558
9559 Mon Mar 10 15:13:14 1997 Brendan Kehoe <brendan@canuck.cygnus.com>
9560
9561 * decl.c (start_decl): Make sure TYPE isn't an error_mark_node
9562 before we try to use TYPE_SIZE and TREE_CONSTANT on it.
9563
9564 Fri Mar 7 13:19:36 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9565
9566 * cp-tree.h (comp_ptr_ttypes, more_specialized): Add decl.
9567 (debug_binfo): Delete decl, not needed.
9568
9569 * tree.c (fnaddr_from_vtable_entry, function_arg_chain,
9570 promotes_to_aggr_type): Delete fns.
9571 * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY,
9572 SET_FNADDR_FROM_VTABLE_ENTRY, FUNCTION_ARG_CHAIN,
9573 PROMOTES_TO_AGGR_TYPE): Delete alternates to #if 1.
9574
9575 * decl.c (pending_invalid_xref{,_file,_line}): Delete unused vars.
9576
9577 * friend.c (is_friend_type): Delete fn.
9578 * cp-tree.h (is_friend_type): Delete decl.
9579
9580 * decl.c (original_result_rtx, double_ftype_double,
9581 double_ftype_double_double, int_ftype_int, long_ftype_long,
9582 float_ftype_float, ldouble_ftype_ldouble, last_dtor_insn): Make static.
9583 * typeck.c (original_result_rtx, warn_synth): Delete extern decls.
9584
9585 * decl.c (push_overloaded_decl{,_top_level}): Make static, adding
9586 fwd decls.
9587 * cp-tree.h (push_overloaded_decl{,_top_level}): Delete decls.
9588
9589 * decl.c (pushdecl_nonclass_level): #if 0, unused.
9590 * cp-tree.h (pushdecl_nonclass_level): #if 0 decl.
9591
9592 * lex.c (reinit_lang_specific): #if 0, unused.
9593 * cp-tree.h (reinit_lang_specific): #if 0 decl.
9594
9595 * decl.c (revert_static_member_fn): Make static, adding fwd decl.
9596 * cp-tree.h (revert_static_member_fn): Delete decl.
9597
9598 * class.c (root_lang_context_p): Delete fn.
9599 * cp-tree.h (root_lang_context_p): Delete decl.
9600
9601 * decl.c (set_current_level_tags_transparency): #if 0, unused.
9602 * cp-tree.h (set_current_level_tags_transparency): #if 0 decl.
9603
9604 * lex.c (set_vardecl_interface_info): Make static.
9605 * cp-tree.h (set_vardecl_interface_info): Delete decl.
9606
9607 * call.c (find_scoped_type): Make static.
9608 * cp-tree.h (find_scoped_type): Delete decl.
9609
9610 * search.c (convert_pointer_to_vbase): Make static.
9611 * cp-tree.h (convert_pointer_to_vbase): Delete decl.
9612
9613 * decl.c (const_ptr_type_node): Likewise.
9614 * cp-tree.h (const_ptr_type_node): Delete decl.
9615
9616 * typeck.c (common_base_type): Make static.
9617 * cp-tree.h (common_base_types): Delete erroneous decl.
9618
9619 * pt.c (classtype_mangled_name): Make static.
9620 * cp-tree.h (classtype_mangled_name): Delete decl.
9621
9622 * lex.c (check_newline): Make static.
9623 * cp-tree.h (check_newline): Delete decl.
9624
9625 * typeck.c (build_x_array_ref): Delete fn, same idea as
9626 grok_array_decl.
9627 * cp-tree.h (build_x_array_ref): Delete decl.
9628
9629 * lex.c (copy_decl_lang_specific): Delete fn, same idea as
9630 copy_lang_decl.
9631 * cp-tree.h (copy_decl_lang_specific): #if 0 decl.
9632
9633 * class.c (build_vtable_entry): Make static.
9634 * cp-tree.h (build_vtable_entry): Delete decl.
9635
9636 * class.c (build_vbase_pointer): Make static.
9637 * cp-tree.h (build_vbase_pointer): Delete decl.
9638
9639 * sig.c (build_sptr_ref): Add forward decl and make static.
9640 * cp-tree.h (build_sptr_ref): Delete decl.
9641
9642 * call.c (build_new_method_call): Add forward decl and make static.
9643 * cp-tree.h (build_new_method_call): Delete decl.
9644
9645 * call.c (build_object_call): Make static.
9646 * class.c (check_for_override, complete_type_p, mark_overriders):
9647 Likewise.
9648 * decl.c (cp_function_chain): Likewise.
9649 * lex.c (set_typedecl_interface_info, reinit_parse_for_block):
9650 Likewise.
9651 * pt.c (comp_template_args, get_class_bindings, push_tinst_level):
9652 Likewise.
9653 * tree.c (build_cplus_array_type_1): Likewise.
9654 * typeck.c (comp_ptr_ttypes_{const,real,reinterpret}): Likewise.
9655 (comp_target_parms): Likewise.
9656
9657 * init.c (build_builtin_call): Make static.
9658 * cp-tree.h (build_builtin_call): Delete decl.
9659
9660 * typeck.c (binary_op_error): Delete decl.
9661 * cp-tree.h (binary_op_error): Likewise.
9662
9663 Thu Mar 6 16:13:52 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9664
9665 * call.c (build_method_call): Compare against error_mark_node
9666 directly, rather than the ERROR_MARK tree code.
9667 * cvt.c (cp_convert): Likewise.
9668 * decl.c (print_binding_level): Likewise.
9669 (duplicate_decls): Likewise.
9670 (grokdeclarator): Likewise.
9671 (grokdeclarator): Likewise.
9672 * init.c (expand_aggr_init_1): Likewise.
9673 (decl_constant_value): Likewise.
9674 * method.c (build_opfncall): Likewise.
9675 (hack_identifier): Likewise.
9676 * typeck.c (build_modify_expr): Likewise.
9677
9678 * typeck.c (build_c_cast): Don't decl TYPE as register tree.
9679
9680 Sun Mar 2 02:54:36 1997 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
9681
9682 * pt.c (unify): Strip NOP_EXPR wrappers before unifying integer values.
9683
9684 * pt.c (coerce_template_parms): Add new error message.
9685
9686 * method.c (build_overload_value): Implement name mangling for
9687 floating-point template arguments.
9688
9689 * method.c (build_overload_int, icat, dicat): Fix mangling of template
9690 arguments whose absolute value doesn't fit in a signed word.
9691
9692 Mon Mar 3 12:14:54 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9693
9694 * friend.c: New file; put all of the friend stuff in here.
9695 * init.c: Instead of here.
9696 * Makefile.in (CXX_OBJS): Add friend.o.
9697 (friend.o): Add dependencies.
9698 * Make-lang.in (CXX_SRCS): Add $(srcdir)/cp/friend.c.
9699
9700 Sun Mar 2 11:04:43 1997 Jason Merrill <jason@yorick.cygnus.com>
9701
9702 * call.c (build_scoped_method_call): Complain if the scope isn't a
9703 base.
9704
9705 Wed Feb 26 11:31:06 1997 Jason Merrill <jason@yorick.cygnus.com>
9706
9707 * parse.y (left_curly): Don't crash on erroneous type.
9708
9709 * init.c (build_delete): Fix type of ref.
9710
9711 Tue Feb 25 12:41:48 1997 Jason Merrill <jason@yorick.cygnus.com>
9712
9713 * search.c (get_vbase_1): Renamed from get_vbase.
9714 (get_vbase): Wrapper, now non-static.
9715 (convert_pointer_to_vbase): Now static.
9716
9717 * call.c (build_scoped_method_call): Accept a binfo for BASETYPE.
9718 * init.c (build_delete): Pass one.
9719 (build_partial_cleanup_for): Use build_scoped_method_call.
9720 * decl.c (finish_function): Pass a binfo.
9721
9722 Mon Feb 24 15:00:12 1997 Jason Merrill <jason@yorick.cygnus.com>
9723
9724 * call.c (build_over_call): Only synthesize non-trivial copy ctors.
9725
9726 * typeck.c (build_c_cast): Lose other reference to flag.
9727
9728 * call.c (build_field_call): Don't look for [cd]tor_identifier.
9729 * decl2.c (delete_sanity): Remove meaningless use of
9730 LOOKUP_HAS_IN_CHARGE.
9731 * decl.c (finish_function): Use build_scoped_method_call instead
9732 of build_delete for running vbase dtors.
9733 * init.c (build_delete): Call overload resolution code instead of
9734 duplicating it badly.
9735
9736 Thu Feb 20 15:12:15 1997 Jason Merrill <jason@yorick.cygnus.com>
9737
9738 * call.c (build_over_call): Call mark_used before trying to elide
9739 the call.
9740
9741 * decl.c (implicitly_declare): Don't set DECL_ARTIFICIAL.
9742
9743 Wed Feb 19 11:18:53 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9744
9745 * typeck.c (build_modify_expr): Always pedwarn for a cast to
9746 non-reference used as an lvalue.
9747
9748 Wed Feb 19 10:35:37 1997 Jason Merrill <jason@yorick.cygnus.com>
9749
9750 * cvt.c (cp_convert_to_pointer): Convert from 0 to a pmf properly.
9751
9752 Tue Feb 18 15:40:57 1997 Jason Merrill <jason@yorick.cygnus.com>
9753
9754 * parse.y (handler): Fix template typo.
9755
9756 Sun Feb 16 02:12:28 1997 Jason Merrill <jason@yorick.cygnus.com>
9757
9758 * error.c (lang_decl_name): New fn.
9759 * tree.c (lang_printable_name): Use it.
9760
9761 Fri Feb 14 16:57:05 1997 Mike Stump <mrs@cygnus.com>
9762
9763 * g++spec.c: Include config.h so that we can catch bzero #defines
9764 from the config file.
9765
9766 Tue Feb 11 13:50:48 1997 Mike Stump <mrs@cygnus.com>
9767
9768 * new1.cc: Include a declaration for malloc, to avoid warning, and
9769 avoid lossing on systems that require one (ones that define malloc
9770 in xm.h).
9771
9772 Mon Feb 10 22:51:13 1997 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
9773
9774 * decl2.c (max_tinst_depth): New variable.
9775 (lang_decode_option): Parse "-ftemplate-depth-NN" command line
9776 option.
9777 * pt.c (max_tinst_depth): Variable moved.
9778 * lang-options.h: Declare "-ftemplate-depth-NN" command line option
9779 as legal.
9780
9781 Fri Feb 7 15:43:34 1997 Jason Merrill <jason@yorick.cygnus.com>
9782
9783 * decl.c (xref_basetypes): Allow a base class that depends on
9784 template parms to be incomplete.
9785
9786 * decl2.c (build_expr_from_tree): Support typeid(type).
9787 * rtti.c (get_typeid): Support templates.
9788 (expand_si_desc, expand_class_desc): Fix string length.
9789 (expand_ptr_desc, expand_attr_desc, expand_generic_desc): Likewise.
9790
9791 Tue Feb 4 11:28:24 1997 Jason Merrill <jason@yorick.cygnus.com>
9792
9793 * pt.c (unify, case TEMPLATE_CONST_PARM): Use cp_tree_equal.
9794
9795 * pt.c (tsubst): Put it back for -fno-ansi-overloading.
9796
9797 Mon Feb 3 18:41:12 1997 Jason Merrill <jason@yorick.cygnus.com>
9798
9799 * pt.c (tsubst, case FUNCTION_DECL): Lose obsolete code that
9800 smashes together template and non-template decls of the same
9801 signature.
9802
9803 Thu Jan 30 19:18:00 1997 Jason Merrill <jason@yorick.cygnus.com>
9804
9805 * pt.c (tsubst): Don't recurse for the type of a TYPENAME_TYPE.
9806
9807 Wed Jan 29 11:40:35 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9808
9809 * decl.c (duplicate_decls): Next route, pedwarn about different
9810 exceptions if -pedantic *or* olddecl !DECL_IN_SYSTEM_HEADER.
9811
9812 Tue Jan 28 20:43:29 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9813
9814 * cp-tree.h (HAS_DEFAULT_IMPLEMENTATION): Delete macro.
9815 (struct lang_type): Delete has_default_implementation member.
9816 Increase dummy to 21.
9817 * decl.c (start_method): Delete usage.
9818
9819 * cp-tree.h (build_call, null_ptr_cst_p, in_function_p,
9820 store_after_parms, start_decl_1, auto_function): Add decls.
9821 (get_arglist_len_in_bytes, declare_implicit_exception,
9822 have_exceptions_p, make_type_decl, typedecl_for_tag,
9823 store_in_parms, pop_implicit_try_blocks, push_exception_cleanup,
9824 build_component_type_expr, cplus_exception_name,
9825 {make,clear}_anon_parm_name, dont_see_typename): Removed decls.
9826 * call.c (build_this): Make static.
9827 (is_complete): Likewise.
9828 (implicit_conversion): Likewise.
9829 (reference_binding): Likewise.
9830 (standard_conversion): Likewise.
9831 (strip_top_quals): Likewise.
9832 (non_reference): Likewise.
9833 (build_conv): Likewise.
9834 (user_harshness): Likewise.
9835 (rank_for_ideal): Likewise.
9836 * decl.c (start_decl_1): Delete forward decl.
9837 (push_decl_level): Make static.
9838 (resume_binding_level): Make static.
9839 (namespace_bindings_p): Make static.
9840 (declare_namespace_level): Make static.
9841 (lookup_name_real): Make static.
9842 (duplicate_decls): Make static. Take register off NEWDECL and
9843 OLDDECL parm decls.
9844 * decl2.c (get_sentry): Make static.
9845 (temp_name_p): Delete fn.
9846 * except.c (auto_function): Delete decl.
9847 * lex.c (handle_{cp,sysv}_pragma): Make static.
9848 (handle_sysv_pragma) [HANDLE_SYSV_PRAGMA]: Add forward decl.
9849 * method.c (do_build_{copy_constructor,assign_ref}): Make static.
9850 * pt.c (tsubst_expr_values): Make static.
9851 * rtti.c (combine_strings): Delete decl.
9852
9853 Tue Jan 28 16:40:40 1997 Jason Merrill <jason@yorick.cygnus.com>
9854
9855 * pt.c (push_template_decl): Handle getting a typedef.
9856
9857 * call.c (build_new_function_call): Complain about void arg.
9858
9859 Tue Jan 28 15:25:09 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9860
9861 * decl.c (duplicate_decls): Give pedwarn of different exceptions
9862 if -pedantic, instead of olddecl !DECL_IN_SYSTEM_HEADER.
9863
9864 Mon Jan 27 19:21:29 1997 Mike Stump <mrs@cygnus.com>
9865
9866 * except.c (expand_throw): Don't expand the cleanup tree here,
9867 since we are not going to write the rtl out. Fixes problem with
9868 -g -O on SPARC.
9869
9870 Mon Jan 27 16:24:35 1997 Sean McNeil <sean@mcneil.com>
9871
9872 * Make-lang.in: Add $(exeext) as necessary.
9873
9874 Mon Jan 27 13:20:39 1997 Mike Stump <mrs@cygnus.com>
9875
9876 * parse.y (handler_seq): Must have at least one catch clause.
9877
9878 Sat Jan 25 12:00:05 1997 Jason Merrill <jason@yorick.cygnus.com>
9879
9880 * call.c (add_builtin_candidate): Restore ?: hack.
9881
9882 * decl.c (grok_op_properties): More warnings.
9883
9884 Sat Jan 25 08:50:03 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9885
9886 * decl.c (duplicate_decls): On second thought, do it as a pedwarn
9887 still but only if !DECL_IN_SYSTEM_HEADER (olddecl).
9888
9889 * decl.c (duplicate_decls): Scale back to a warning, and only do
9890 'em if -pedantic.
9891
9892 Fri Jan 24 17:52:54 1997 Mike Stump <mrs@cygnus.com>
9893
9894 * decl.c (duplicate_decls): pedwarn mismatched exception
9895 specifications.
9896
9897 Thu Jan 23 18:18:54 1997 Mike Stump <mrs@cygnus.com>
9898
9899 * call.c (build_new_method_call): Don't display the invisible
9900 argument for controlling virtual bases.
9901
9902 Thu Jan 23 16:48:10 1997 Mike Stump <mrs@cygnus.com>
9903
9904 * new: Add nothrow new and delete, bad_alloc and throw specifications
9905 for delete.
9906 * decl.c (init_decl_processing): Add throw specification for delete.
9907 * new.cc (nothrow): Define.
9908 * lex.c (real_yylex): Removing warning that throw and friends are
9909 keywords.
9910 * new1.cc (operator new (size_t sz, const nothrow_t&)): Define.
9911 * new2.cc (operator new[] (size_t sz, const nothrow_t&): Define.
9912 * Make-lang.in: Add new{1,2}.{cc,o}.
9913
9914 Thu Jan 23 16:39:06 1997 Jason Merrill <jason@yorick.cygnus.com>
9915
9916 * lex.c (cons_up_default_function): Fix return type of synth op=.
9917
9918 * init.c (emit_base_init): Add warnings for uninitialized members
9919 and bases.
9920
9921 * decl.c (xref_basetypes): Add warning for non-polymorphic type
9922 with destructor used as base type.
9923
9924 * decl.c (grok_op_properties): Add warning for op= returning void.
9925 * typeck.c (c_expand_return): Add warning for op= returning anything
9926 other than *this.
9927
9928 * class.c (finish_struct_1): Add warning for class with pointers
9929 but not copy ctor or copy op=.
9930
9931 * cp-tree.h (TI_PENDING_TEMPLATE_FLAG): New macro.
9932 * pt.c (add_pending_template): Use it instead of LANG_FLAG_0.
9933 (instantiate_template): If -fexternal-templates, add this
9934 instantiation to pending_templates.
9935
9936 * decl2.c (copy_assignment_arg_p): Disable old hack to support
9937 Booch components.
9938
9939 Tue Jan 21 18:32:04 1997 Mike Stump <mrs@cygnus.com>
9940
9941 * cvt.c (cp_convert): Pedwarn enum to pointer conversions.
9942
9943 Mon Jan 20 17:59:51 1997 Jason Merrill <jason@yorick.cygnus.com>
9944
9945 * call.c (standard_conversion): Handle getting references. Tack
9946 on RVALUE_CONV here. Do it for non-class types, too.
9947 (reference_binding): Pass references to standard_conversion.
9948 (implicit_conversion): Likewise.
9949 (add_builtin_candidate): Disable one ?: kludge.
9950 (convert_like): Handle RVALUE_CONVs for non-class types.
9951 (joust): Disable the other ?: kludge.
9952
9953 Mon Jan 20 14:53:13 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9954
9955 * decl.c (init_decl_processing): Add code to build up common
9956 function types beforehand, to avoid creation then removal of
9957 things already in the hash table.
9958
9959 Mon Jan 20 14:43:49 1997 Jason Merrill <jason@yorick.cygnus.com>
9960
9961 * decl.c (finish_function): Also zero out DECL_INCOMING_RTL for
9962 the arguments.
9963
9964 * error.c (dump_expr, TEMPLATE_CONST_PARM): Don't require
9965 current_template_parms.
9966
9967 Fri Jan 17 10:25:42 1997 Jason Merrill <jason@yorick.cygnus.com>
9968
9969 * search.c (lookup_field): Don't return a function, check want_type.
9970
9971 Thu Jan 16 18:14:35 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9972
9973 * init.c (build_new): Make sure PLACEMENT has a type.
9974
9975 Thu Jan 16 17:40:28 1997 Jason Merrill <jason@yorick.cygnus.com>
9976
9977 * init.c (build_new): Support new (nothrow).
9978
9979 Wed Jan 15 12:38:14 1997 Jason Merrill <jason@yorick.cygnus.com>
9980
9981 * pt.c (instantiate_decl): Also do push_to_top_level before setting
9982 up DECL_INITIAL.
9983
9984 * cp-tree.h (PARM_DEFAULT_FROM_TEMPLATE): New macro.
9985 * pt.c (tsubst): Defer instantiation of default args.
9986 * call.c (build_over_call): Until here.
9987
9988 Wed Jan 15 10:08:10 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9989
9990 * search.c (lookup_field): Make sure we have an
9991 IDENTIFIER_CLASS_VALUE before we try to return it.
9992
9993 Thu Jan 9 07:19:01 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
9994
9995 * call.c (build_method_call): Delete unused var PARM.
9996 (build_overload_call_real): Likewise.
9997 (build_object_call): Delete unused var P.
9998 (build_new_op): Likewise.
9999 * decl.c (builtin_type_tdescs_{arr, len, max}): #if 0 out static
10000 var definitions, which are never used.
10001 (shadow_tag): Delete unused var FN.
10002 * expr.c (cplus_expand_expr): Delete unused var ORIGINAL_TARGET.
10003 * init.c (build_new): Delete unused var ALLOC_TEMP.
10004 * method.c (hack_identifier): Delete unused var CONTEXT.
10005 (do_build_copy_constructor): Delete unused var NAME.
10006 (synthesize_method): Delete unused var BASE.
10007 * pt.c (lookup_template_class): Delete unused var CODE_TYPE_NODE.
10008 * rtti.c (build_headof): Delete unused var VPTR.
10009 (get_typeid): Delete unused var T.
10010 * typeck.c (build_conditional_expr): Delete unused vars ORIG_OP1
10011 and ORIG_OP2.
10012 (build_ptrmemfunc): Delete unused vars U and NINDEX.
10013 * typeck2.c (build_functional_cast): Delete unused var BINFO.
10014
10015 Wed Jan 8 13:09:54 1997 Jason Merrill <jason@yorick.cygnus.com>
10016
10017 * search.c (lookup_field): Use IDENTIFIER_CLASS_VALUE to look up
10018 things in a type being defined.
10019 * decl.c (finish_enum): Reverse the values so that they are in
10020 the correct order.
10021
10022 * pt.c (instantiate_class_template): Don't initialize
10023 BINFO_BASETYPES until the vector is filled out.
10024 (unify): Don't abort on conflicting bindings, just fail.
10025 (instantiate_decl): Do push_tinst_level before any tsubsting.
10026
10027 * method.c (build_overload_value): Handle getting a
10028 TEMPLATE_CONST_PARM for a pointer.
10029
10030 Tue Jan 7 14:00:58 1997 Jason Merrill <jason@yorick.cygnus.com>
10031
10032 * init.c (expand_member_init): Don't give 'not a base' error for
10033 templates.
10034
10035 * pt.c (instantiate_decl): Call import_export_decl later.
10036
10037 * pt.c (instantiate_class_template): Return a value.
10038
10039 * parse.y (extension): New rule for __extension__.
10040 (extdef, unary_expr, decl, component_decl): Use it.
10041
10042 Tue Jan 7 09:20:28 1997 Mike Stump <mrs@cygnus.com>
10043
10044 * class.c (base_binfo): Remove unused base_has_virtual member.
10045 (finish_base_struct): Likewise.
10046 (finish_struct_1): Likewise.
10047
10048 Tue Dec 31 20:25:50 1996 Mike Stump <mrs@cygnus.com>
10049
10050 * search.c (expand_upcast_fixups): Fix bogus code generation
10051 problem where the generated code uses the wrong index into the
10052 runtime built vtable on the stack. Old code could clobber random
10053 stack values.
10054
10055 Tue Dec 31 15:16:56 1996 Mike Stump <mrs@cygnus.com>
10056
10057 * init.c (perform_member_init): Make sure the partial EH cleanups
10058 live on the function_obstack.
10059
10060 Fri Dec 27 10:31:40 1996 Paul Eggert <eggert@twinsun.com>
10061
10062 * Make-lang.in (g++spec.o): Don't use $< with an explicit target;
10063 this isn't portable to some versions of `make' (e.g. Solaris 2.5.1).
10064
10065 Tue Dec 24 10:24:03 1996 Jeffrey A Law (law@cygnus.com)
10066
10067 * decl.c (grokvardecl): Avoid ANSI style initialization.
10068
10069 Sun Dec 22 04:22:06 1996 Jason Merrill <jason@yorick.cygnus.com>
10070
10071 * pt.c (tsubst): Tweak arg types for a FUNCTION_TYPE.
10072
10073 Fri Dec 20 17:09:25 1996 Jason Merrill <jason@yorick.cygnus.com>
10074
10075 * pt.c (instantiate_class_template): Call grok_{ctor,op}_properties.
10076
10077 Fri Dec 20 12:17:12 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
10078
10079 * g++spec.c (lang_specific_driver): Put missing hyphen in front of
10080 arguments we compare against. Start the count of I at 1, not 0,
10081 since argv[0] is still the command.
10082
10083 Thu Dec 19 11:53:57 1996 Stan Shebs <shebs@andros.cygnus.com>
10084
10085 * lang-specs.h: Accept .cp as an C++ extension.
10086
10087 Mon Dec 16 22:43:31 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
10088
10089 * cp-tree.h (ptr_reasonably_similar): Add decl.
10090
10091 Thu Dec 12 15:00:35 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
10092
10093 * decl.c (grokvardecl): Change SPECBITS parm to be the SPECBITS_IN
10094 pointer. New local SPECBITS with the parm's value.
10095 (grokdeclarator): Pass &specbits down.
10096
10097 * parse.y (expr_no_commas): Make sure $$ is not an error_mark_node
10098 before we try to do C_SET_EXP_ORIGINAL_CODE on it.
10099
10100 * search.c (envelope_add_decl): Check that the CLASSTYPE_CID of
10101 CONTEXT is not 0 before we try to use TYPE_DERIVES_FROM.
10102
10103 * decl.c (cplus_expand_expr_stmt): Only expand the expr if EXP is
10104 not an error_mark_node.
10105
10106 Sat Dec 7 17:20:22 1996 Jason Merrill <jason@yorick.cygnus.com>
10107
10108 * cp-tree.h (TYPE_MAIN_DECL): Use TYPE_STUB_DECL.
10109 * *.c: Use TYPE_MAIN_DECL instead of TYPE_NAME where appropriate.
10110
10111 Fri Dec 6 14:40:09 1996 Jason Merrill <jason@yorick.cygnus.com>
10112
10113 * decl.c (grokdeclarator): When giving an anonymous struct a name,
10114 replace TYPE_NAME instead of TYPE_IDENTIFIER (so TYPE_STUB_DECL is
10115 not affected).
10116
10117 * typeck2.c (build_m_component_ref): If component is a pointer
10118 to data member, resolve the OFFSET_REF now.
10119
10120 * call.c (convert_like): Don't go into infinite recursion.
10121
10122 * pt.c (coerce_template_parms): Use tsubst_expr for non-type args.
10123
10124 * class.c (finish_struct_1): Set DECL_ARTIFICIAL on the vptr.
10125 * tree.c (layout_basetypes): And on the vbase ptr.
10126
10127 Thu Dec 5 02:11:28 1996 Jason Merrill <jason@yorick.cygnus.com>
10128
10129 * decl.c (BOOL_TYPE_SIZE): Define in terms of POINTER_SIZE or
10130 CHAR_TYPE_SIZE so bool is always the same size as another type.
10131
10132 * decl.c (pushtag): Set DECL_IGNORED_P for DWARF, too.
10133
10134 Tue Dec 3 23:18:37 1996 Jason Merrill <jason@yorick.cygnus.com>
10135
10136 * decl2.c (grok_x_components): Remove synthesized methods from
10137 TYPE_METHODS of an anonymous union, complain about member
10138 functions.
10139 * decl.c (shadow_tag): Wipe out memory of synthesized methods in
10140 anonymous unions.
10141 (finish_function): Just clear the DECL_RTL of our arguments.
10142
10143 Fri Nov 29 21:54:17 1996 Jason Merrill <jason@yorick.cygnus.com>
10144
10145 * decl2.c (finish_file): Emit DWARF debugging info for static data
10146 members.
10147
10148 * pt.c (tsubst): If t is a stub decl, return the stub decl for type.
10149
10150 Wed Nov 27 14:47:15 1996 Bob Manson <manson@charmed.cygnus.com>
10151
10152 * typeck.c (build_component_ref): Don't die if COMPONENT isn't a
10153 IDENTIFIER_NODE.
10154
10155 Wed Nov 27 16:05:19 1996 Michael Meissner <meissner@tiktok.cygnus.com>
10156
10157 * Make-lang.in (g++-cross$(exeext)): Fix typo.
10158
10159 Wed Nov 27 08:14:00 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
10160
10161 Make the g++ driver now be a standalone program, rather than one
10162 that tries to run the gcc driver after munging up the options.
10163 * Make-lang.in (g++.c, g++spec.o): New rules.
10164 (g++.o): New rule, based on gcc.o with -DLANG_SPECIFIC_DRIVER
10165 added.
10166 (g++$(exeext)): New rule, based on xgcc rule.
10167 (g++-cross$(exeext)): Now just copies g++$(exeext) over.
10168 * g++spec.c: New file.
10169 * g++.c: Removed file.
10170
10171 Tue Nov 26 19:01:09 1996 Mike Stump <mrs@cygnus.com>
10172
10173 * cvt.c (build_up_reference): Arrange for any temporary values
10174 that have been keep in registers until now to be put into memory.
10175
10176 Mon Nov 25 15:16:41 1996 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
10177
10178 * Make-lang.in (c++.stage[1234]): Depend upon stage[1-4]-start, so
10179 that make -j3 bootstrap works better.
10180
10181 Sun Nov 24 02:09:39 1996 Jason Merrill <jason@yorick.cygnus.com>
10182
10183 * decl.c (pushtag): Do pushdecl for anon tags.
10184
10185 Thu Nov 21 16:30:24 1996 Jason Merrill <jason@yorick.cygnus.com>
10186
10187 * typeck.c (c_expand_return): Fix logic.
10188 (unary_complex_lvalue): Avoid unused warning on address of INIT_EXPR.
10189
10190 Wed Nov 20 18:47:31 1996 Bob Manson <manson@charmed.cygnus.com>
10191
10192 * g++.c (main): Make sure arglist has a final NULL entry. Add
10193 PEXECUTE_LAST to the flags passed to pexecute, as otherwise
10194 stdin/stdout of the invoked program are redirected to
10195 nowheresville.
10196
10197 Tue Nov 19 16:12:44 1996 Jason Merrill <jason@yorick.cygnus.com>
10198
10199 * decl.c (implicitly_declare): Set DECL_ARTIFICIAL.
10200
10201 Tue Nov 19 15:48:19 1996 Mike Stump <mrs@cygnus.com>
10202
10203 * init.c (resolve_offset_ref): Handle obj.vfn better.
10204 * typeck.c (build_component_ref): Set TREE_TYPE on result from
10205 build_vfn_ref.
10206
10207 Tue Nov 19 13:14:33 1996 Mike Stump <mrs@cygnus.com>
10208
10209 * typeck.c (convert_for_assignment): Also handle anachronistic
10210 implicit conversions from (::*)() to cv void*.
10211 * cvt.c (cp_convert_to_pointer): Likewise.
10212
10213 Mon Nov 18 17:05:26 1996 Jason Merrill <jason@yorick.cygnus.com>
10214
10215 * lex.c (handle_cp_pragma): Fix bogus warning.
10216
10217 Mon Nov 18 16:10:43 1996 Mike Stump <mrs@cygnus.com>
10218
10219 * cvt.c (cp_convert_to_pointer): Avoid thinking a POINTER_TYPE
10220 (METHOD_TYPE) is a TYPE_PTRMEMFUNC_P.
10221
10222 Thu Nov 14 23:18:17 1996 Jason Merrill <jason@yorick.cygnus.com>
10223
10224 * class.c (finish_struct_1): Support DWARF2_DEBUG.
10225 * search.c (dfs_debug_mark): Likewise.
10226 * decl2.c (finish_vtable_vardecl): Likewise.
10227 * decl.c (pushtag, finish_enum): Likewise.
10228 * lex.c (check_newline): Use debug_* instead of calling *out
10229 functions directly.
10230
10231 Thu Nov 14 15:21:46 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
10232
10233 * Make-lang.in (cplib2.ready): Add else clause to avoid problems
10234 on some picky hosts.
10235
10236 Wed Nov 13 12:32:07 1996 Jason Merrill <jason@yorick.cygnus.com>
10237
10238 * class.c (finish_struct_1): A class has a non-trivial copy
10239 constructor if it has virtual functions.
10240
10241 * cvt.c (cp_convert): Always call a constructor.
10242
10243 * call.c (reference_binding): Still tack on a REF_BIND
10244 for bad conversions.
10245 (build_user_type_conversion_1): Propagate ICS_BAD_FLAG.
10246
10247 * typeck.c (convert_arguments): Pass LOOKUP_ONLYCONVERTING.
10248 (c_expand_return): Likewise.
10249 * typeck2.c (digest_init): Likewise for { }.
10250 * init.c (expand_aggr_init_1): Keep the CONSTRUCTOR handling.
10251 * cvt.c (cp_convert): Handle failure better.
10252
10253 Wed Nov 13 11:51:20 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
10254
10255 * g++.c (main): Also set PEXECUTE_SEARCH, to make the invocation
10256 of GCC be path-relative.
10257
10258 Wed Nov 13 11:27:16 1996 Michael Meissner <meissner@tiktok.cygnus.com>
10259
10260 * Make-lang.in (g++-cross): G++-cross doesn't need version.o, but
10261 it does need choose-temp.o and pexecute.o.
10262
10263 Wed Nov 13 07:53:38 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
10264
10265 * g++.c (error) [!HAVE_VPRINTF]: Put error back for the only time
10266 that we still use it.
10267 (P_tmpdir, R_OK, W_OK, X_OK) [__MSDOS__]: Delete unnecessary macros.
10268
10269 Wed Nov 13 02:00:26 1996 Jason Merrill <jason@yorick.cygnus.com>
10270
10271 * init.c (expand_default_init): Avoid calling constructors to
10272 initialize reference temps.
10273
10274 * cvt.c (convert_to_reference): Fix.
10275
10276 Tue Nov 12 19:10:07 1996 Jason Merrill <jason@yorick.cygnus.com>
10277
10278 * cvt.c (cp_convert): Simplify for flag_ansi_overloading.
10279 (convert_to_reference): Likewise.
10280 * typeck.c (convert_for_initialization): Likewise.
10281 * init.c (expand_default_init): Likewise.
10282 (expand_aggr_init_1): Likewise.
10283 * cp-tree.h (CONV_NONCONVERTING): Lose.
10284 * typeck.c (build_c_cast): Lose allow_nonconverting parm.
10285 * *.c: Adjust.
10286 * call.c (build_user_type_conversion_1): Assume LOOKUP_ONLYCONVERTING.
10287
10288 Tue Nov 12 16:29:04 1996 Brendan Kehoe <brendan@canuck.cygnus.com>
10289
10290 * pt.c (tsubst_expr): Reverse args to expand_start_catch_block.
10291
10292 Tue Nov 12 15:26:17 1996 Jason Merrill <jason@yorick.cygnus.com>
10293
10294 * init.c (expand_aggr_init_1): Don't crash on non-constructor
10295 TARGET_EXPR.
10296
10297 Tue Nov 12 14:00:50 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
10298
10299 * g++.c: Include gansidecl.h.
10300 (VPROTO, PVPROTO, VA_START): Delete.
10301 (choose_temp_base_try, choose_temp_base, perror_exec,
10302 run_dos) [__MSDOS__]: Delete fns.
10303 (pfatal_with_name): Delete fn.
10304 (temp_filename): Declare like in gcc.c.
10305 (pexecute, pwait, choose_temp_base): Declare from gcc.c.
10306 (error_count, signal_count): Define.
10307 (error): Delete both definitions.
10308 (PEXECUTE_{FIRST,LAST,SEARCH,VERBOSE}): Define from gcc.c.
10309 (pfatal_pexecute): Add fn from gcc.c.
10310 (main): Rename local VERBOSE var to VERBOSE_FLAG. Rewrite the
10311 code to use the pexecute stuff also used by gcc.c.
10312 (MIN_FATAL_STATUS): Define.
10313 * Make-lang.in (g++): Add dependency on and linking with
10314 choose-temp.o and pexecute.o.
10315
10316 * cp-tree.h: Include gansidecl.h.
10317 (STDIO_PROTO): Delete #undef/#define.
10318 * cvt.c (NULL): Delete #undef/#define.
10319 * expr.c (NULL): Likewise.
10320 * init.c (NULL): Likewise.
10321 * rtti.c (NULL): Likewise.
10322 * xref.c (NULL): Likewise.
10323
10324 * cp-tree.h (build_user_type_conversion): Add prototype.
10325 * call.c (build_user_type_conversion): Delete prototype. Correct
10326 decl of FLAGS arg to be an int.
10327 * cvt.c (build_user_type_conversion): Likewise.
10328
10329 Tue Nov 12 12:16:20 1996 Jason Merrill <jason@yorick.cygnus.com>
10330
10331 * cp-tree.def: Add TRY_BLOCK and HANDLER.
10332 * except.c (expand_start_catch_block): Support templates.
10333 * parse.y (try_block, handler_seq): Likewise.
10334 * pt.c (tsubst_expr): Support TRY_BLOCK and HANDLER.
10335
10336 Mon Nov 11 13:57:31 1996 Jason Merrill <jason@yorick.cygnus.com>
10337
10338 * pt.c (current_template_args): New fn.
10339 (push_template_decl): Use it.
10340 * decl.c (grokdeclarator): Use it.
10341
10342 * decl2.c (build_expr_from_tree): Dereference ref vars.
10343
10344 * decl.c (grokdeclarator): Generalize handling of TYPENAME_TYPEs in
10345 the decl-specifier-seq.
10346
10347 * decl.c (grok_op_properties): Don't force the type of a conversion
10348 op to be complete. Don't warn about converting to the same type
10349 for template instantiations.
10350
10351 * decl2.c (finish_file): Don't call instantiate_decl on synthesized
10352 methods.
10353
10354 Mon Nov 11 13:20:34 1996 Bob Manson <manson@charmed.cygnus.com>
10355
10356 * typeck.c (get_delta_difference): Remove previous bogusness.
10357 Don't give errors if force is set.
10358
10359 Fri Nov 8 17:38:44 1996 Jason Merrill <jason@yorick.cygnus.com>
10360
10361 * decl2.c (finish_file): Don't emit debug info.
10362 * decl.c (pushdecl): Lose obsolete code.
10363 (grokdeclarator): Still do the long long thing after complaining.
10364 * search.c (note_debug_info_needed): Don't do anything if we're in a
10365 template.
10366 * method.c (synthesize_method): For non-local classes,
10367 push_to_top_level first.
10368
10369 Fri Nov 8 11:52:28 1996 Bob Manson <manson@charmed.cygnus.com>
10370
10371 * typeck.c (get_delta_difference): Add no_error parameter.
10372 (build_ptrmemfunc): Call get_delta_difference with no_error set;
10373 we don't want error messages when converting unrelated
10374 pointer-to-member functions.
10375
10376 Thu Nov 7 11:16:24 1996 Mike Stump <mrs@cygnus.com>
10377
10378 * error.c (dump_expr): Improve the wording on error messages that
10379 involve pointer to member functions.
10380
10381 Tue Nov 5 17:12:05 1996 Mike Stump <mrs@cygnus.com>
10382
10383 * cvt.c (cp_convert_to_pointer): Move code for conversions from
10384 (::*)() to void* or (*)() up a bit, so that we can convert from
10385 METHOD_TYPEs as well.
10386
10387 Tue Nov 5 14:54:17 1996 Jason Merrill <jason@yorick.cygnus.com>
10388
10389 * rtti.c (get_tinfo_fn): Make sure 'type' is permanent.
10390 There are no 'member' types.
10391 (get_tinfo_fn_dynamic): Diagnose typeid of overloaded fn.
10392 (build_x_typeid): Handle errors.
10393
10394 Mon Nov 4 17:43:12 1996 Mike Stump <mrs@cygnus.com>
10395
10396 * typeck.c (convert_for_assignment): Handle anachronistic implicit
10397 conversions from (::*)() to void* or (*)().
10398 * cvt.c (cp_convert_to_pointer): Likewise.
10399 (cp_convert_to_pointer_force): Remove cp_convert_to_pointer
10400 conversions from here.
10401 * decl2.c (lang_decode_option): Add -W{no-,}pmf-conversions.
10402 * lang-options.h: Likewise.
10403 * decl2.c (warn_pmf2ptr): Define.
10404 * cp-tree.h: Declare it.
10405 * typeck2.c (digest_init): Allow pmfs down into
10406 convert_for_initialization.
10407
10408 Sun Nov 3 09:43:00 1996 Jason Merrill <jason@yorick.cygnus.com>
10409
10410 * typeck.c (c_expand_return): Fix for returning overloaded fn.
10411
10412 Fri Nov 1 08:53:17 1996 Jason Merrill <jason@yorick.cygnus.com>
10413
10414 * cp-tree.h (DIRECT_BIND): Change from INDIRECT_BIND.
10415 * decl.c (grok_reference_init): Pass DIRECT_BIND.
10416 * cvt.c (build_up_reference): Don't mark 'this' addressable. Use
10417 DIRECT_BIND.
10418 * call.c (convert_like): Don't pass INDIRECT_BIND.
10419 * typeck.c (convert_arguments): Likewise.
10420 * typeck.c (mark_addressable): Allow &this if flag_this_is_variable.
10421
10422 Thu Oct 31 17:08:49 1996 Jason Merrill <jason@yorick.cygnus.com>
10423
10424 * typeck.c (mark_addressable): Support TARGET_EXPR, unify with
10425 similar code in build_up_ref.
10426 * cvt.c (build_up_reference): Drastically simplify.
10427
10428 Mon Oct 28 12:45:05 1996 Jeffrey A Law (law@cygnus.com)
10429
10430 * typeck.c (signed_or_unsigned_type): If the given type already
10431 as the correct signedness, then just return it.
10432
10433 * typeck.c ({un,}signed_type): If can't do anything, call
10434 signed_or_unsigned_type.
10435
10436 Thu Oct 24 14:21:59 1996 Bob Manson <manson@charmed.cygnus.com>
10437
10438 * decl2.c (copy_assignment_arg_p): Don't buy the farm if
10439 current_class_type is NULL.
10440
10441 Wed Oct 23 00:43:10 1996 Jason Merrill <jason@gerbil.cygnus.com>
10442
10443 * class.c (finish_struct_1): Avoid empty structs by adding a field
10444 so layout_type gets the mode right.
10445
10446 * typeck.c (c_expand_return): Drastically simplify.
10447
10448 Mon Oct 21 22:34:02 1996 Jason Merrill <jason@yorick.cygnus.com>
10449
10450 * typeck.c (decay_conversion): Handle overloaded methods.
10451
10452 Fri Oct 18 16:03:48 1996 Jason Merrill <jason@yorick.cygnus.com>
10453
10454 * call.c (build_over_call): A TARGET_EXPR has side-effects.
10455
10456 Thu Oct 17 11:31:59 1996 Mike Stump <mrs@cygnus.com>
10457
10458 * cvt.c (convert_to_pointer_force): Add code to support pointer to
10459 member function to pointer to function conversions.
10460 * init.c (resolve_offset_ref): Add code to allow faked up objects,
10461 ignoring them if they are not used, and giving an error, if they
10462 are needed.
10463 * typeck.c (get_member_function_from_ptrfunc): Fold e1 to improve
10464 code, and so that we can give an error, if we needed an object,
10465 and one was not provided.
10466 (build_c_cast): Don't call default_conversion when we want to
10467 convert to pointer to function from a METHOD_TYPE.
10468
10469 Mon Oct 14 00:28:51 1996 Jason Merrill <jason@yorick.cygnus.com>
10470
10471 * Make-lang.in (cplib2.ready): Fix logic.
10472
10473 * decl.c (shadow_tag): Only complain about non-artificial function
10474 members.
10475
10476 * class.c (finish_struct_1): Add synthesized methods to TYPE_METHODS.
10477
10478 Fri Oct 11 16:12:40 1996 Jason Merrill <jason@yorick.cygnus.com>
10479
10480 * expr.c (cplus_expand_expr): Pre-tweak call_target like
10481 expand_inline_function would.
10482
10483 * pt.c (mark_decl_instantiated): If extern_p, call
10484 mark_inline_for_output.
10485
10486 Thu Oct 10 15:58:08 1996 Mike Stump <mrs@cygnus.com>
10487
10488 * typeck.c (unary_complex_lvalue): Add code to handle intermediate
10489 pmd conversions.
10490
10491 * typeck.c (get_delta_difference): Fix wording, as we can be used
10492 for pointer to data members.
10493
10494 Tue Oct 8 12:43:51 1996 Bob Manson <manson@charmed.cygnus.com>
10495
10496 * pt.c (tsubst): If the function decl isn't a member of this
10497 template, return a copy of the decl (including copying the
10498 lang-specific part) so we don't hose ourselves later.
10499
10500 Thu Oct 3 16:24:28 1996 Jason Merrill <jason@yorick.cygnus.com>
10501
10502 * class.c (finish_struct): Remove DWARF-specific tag handling.
10503 * decl.c (pushtag): Likewise.
10504 (finish_function): Always clear DECL_ARGUMENTS on function decls with
10505 no saved RTX.
10506 * decl2.c (finish_file): Emit DWARF debugging info for static data
10507 members.
10508
10509 Wed Oct 2 21:58:01 1996 Bob Manson <manson@charmed.cygnus.com>
10510
10511 * decl.c (duplicate_decls): Make sure the old DECL_LANG_SPECIFIC
10512 isn't the same as the new one before we whack it.
10513
10514 Mon Sep 30 13:38:24 1996 Jason Merrill <jason@yorick.cygnus.com>
10515
10516 * class.c, cp-tree.h, cvt.c, decl.c, decl2.c, gxx.gperf, hash.h,
10517 lex.c, method.c, parse.y, typeck.c, typeck2.c: Remove
10518 warn_traditional and warn_strict_prototypes; remove ancient
10519 'overload' code; remove references to flag_traditional.
10520
10521 Mon Sep 30 12:58:40 1996 Mike Stump <mrs@cygnus.com>
10522
10523 * input.c (sub_getch): Handle 8-bit characters in string literals.
10524
10525 Sun Sep 29 03:12:01 1996 Jason Merrill <jason@yorick.cygnus.com>
10526
10527 * tree.c (mapcar): Handle CONSTRUCTORs.
10528 (copy_to_permanent): Handle expression_obstack properly.
10529
10530 * Make-lang.in (cplib2.txt): Also depend on the headers.
10531
10532 * rtti.c (get_tinfo_var): Don't assume that POINTER_SIZE ==
10533 INT_TYPE_SIZE.
10534 (expand_class_desc): Use USItype for offset field.
10535 * tinfo.h (struct __class_type_info): Likewise.
10536
10537 * method.c (build_overload_int): TYPE_PRECISION should be applied
10538 to types.
10539
10540 Sat Sep 28 14:44:50 1996 Jason Merrill <jason@yorick.cygnus.com>
10541
10542 * call.c (build_new_op): A COND_EXPR involving void must be a
10543 builtin.
10544
10545 Fri Sep 27 16:40:30 1996 Jason Merrill <jason@yorick.cygnus.com>
10546
10547 * typeck.c (build_x_component_ref): New fn.
10548 (build_object_ref): Use it.
10549 * parse.y (primary): Use it.
10550 * decl2.c (build_expr_from_tree): Use it.
10551 * cp-tree.h: Declare it.
10552
10553 * decl.c (start_decl): variable-sized arrays cannot be initialized.
10554 * error.c (dump_type_suffix): Handle variable arrays.
10555
10556 Fri Sep 27 13:14:05 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
10557
10558 * Make-lang.in (exception.o): Put back compiling it with -fPIC.
10559
10560 Fri Sep 27 03:00:09 1996 Jason Merrill <jason@yorick.cygnus.com>
10561
10562 * decl.c (lookup_name_real): Don't try to look up anything in a
10563 TYPENAME_TYPE.
10564
10565 * tinfo2.cc (__throw_type_match_rtti): Oops.
10566
10567 Thu Sep 26 22:11:05 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
10568
10569 * Make-lang.in (exception.o): Use -fno-PIC for now.
10570
10571 Thu Sep 26 10:59:00 1996 Jason Merrill <jason@yorick.cygnus.com>
10572
10573 * rtti.c (build_dynamic_cast): Pass tinfo fns rather than
10574 calling them.
10575 (get_tinfo_fn_dynamic): Extracted from build_typeid.
10576 * tinfo2.cc (__dynamic_cast): Adjust.
10577
10578 * rtti.c (build_typeid): Use resolves_to_fixed_type_p.
10579 (build_x_typeid): Likewise.
10580
10581 * parse.y: Call build_x_typeid instead of build_typeid.
10582 * cp-tree.def: Add TYPEID_EXPR.
10583 * pt.c (tsubst_copy): Handle typeid.
10584 * decl2.c (build_expr_from_tree): Likewise.
10585 * rtti.c (build_x_typeid): Throw bad_typeid from here.
10586 (build_typeid): Not here.
10587 * cp-tree.h: Declare build_x_typeid.
10588
10589 Wed Sep 25 17:26:16 1996 Jason Merrill <jason@yorick.cygnus.com>
10590
10591 * call.c (convert_like): Pull out constant values.
10592
10593 * tree.c (mapcar): Use build_cplus_array_type, not build_array_type.
10594
10595 Wed Sep 25 17:28:53 1996 Michael Meissner <meissner@tiktok.cygnus.com>
10596
10597 * decl.c (init_decl_processing): Create short int types before
10598 creating size_t in case a machine description needs to use
10599 unsigned short for size_t.
10600
10601 Tue Sep 24 18:18:44 1996 Jason Merrill <jason@yorick.cygnus.com>
10602
10603 * Make-lang.in (exception.o): Turn off pic.
10604
10605 * tinfo2.cc (__throw_type_match_rtti): Fix cv-variants of the same
10606 type, multi-level ptr conversions.
10607
10608 * rtti.c (call_void_fn): Renamed and genericized from throw_bad_cast.
10609 (throw_bad_cast): Use it.
10610 (throw_bad_typeid): New fn.
10611 (build_typeid): Throw bad_typeid as needed.
10612 Use build_call.
10613 (synthesize_tinfo_fn): Handle functions and arrays before checking
10614 for cv-quals.
10615
10616 * Remove .h from standard C++ headers, add new.h, move into inc
10617 subdirectory.
10618
10619 * exception*: Remove pointer from object, constructors. Add
10620 default exception::what that uses type_info::name. Add
10621 __throw_bad_typeid.
10622
10623 * init.c (build_new): Don't add a cookie to new (void *) T[2].
10624
10625 Mon Sep 23 15:21:53 1996 Jason Merrill <jason@yorick.cygnus.com>
10626
10627 * Make-lang.in: Building C++ code depends on cc1plus.
10628
10629 Mon Sep 23 12:38:40 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
10630
10631 * decl.c (struct saved_scope): Declare PROCESSING_TEMPLATE_DECL as
10632 a HOST_WIDE_INT, not a tree.
10633
10634 Mon Sep 23 12:36:02 1996 Jason Merrill <jason@yorick.cygnus.com>
10635
10636 * exception.cc: Don't include <stdlib.h>.
10637
10638 * Make-lang.in (c++.clean): Remove cplib2.*.
10639
10640 Mon Sep 23 09:42:19 1996 Doug Evans <dje@canuck.cygnus.com>
10641
10642 * parse.y (component_decl_1, component_costructor_declarator case):
10643 Pass attributes/prefix_attributes in tree list.
10644
10645 Mon Sep 23 01:18:50 1996 Jason Merrill <jason@yorick.cygnus.com>
10646
10647 * tinfo{,2}.cc: #include <stddef.h> instead of <stdlib.h>.
10648
10649 Sun Sep 22 05:31:22 1996 Jason Merrill <jason@yorick.cygnus.com>
10650
10651 * lex.c (do_identifier): Don't do deferred lookup in a template
10652 header.
10653
10654 * typeck2.c (store_init_value): Oops.
10655
10656 * new.{h,cc}, exception.{h,cc}, typeinfo.h, tinfo{2.cc,.cc,.h}:
10657 New files for C++ lang-support library.
10658 * Make-lang.in (CXX_EXTRA_HEADERS): Define.
10659 (CXX_LIB2FUNCS): Define.
10660 And rules for building the C++ lang-support code.
10661 * config-lang.in (headers): Define.
10662 (lib2funcs): Define.
10663
10664 Sat Sep 21 19:17:28 1996 Jason Merrill <jason@yorick.cygnus.com>
10665
10666 * decl2.c (build_expr_from_tree): If CONSTRUCTOR has a type, call
10667 digest_init.
10668 * pt.c (tsubst_copy): Compute type for CONSTRUCTOR.
10669 * typeck2.c (store_init_value): Check for initializing pmf with { }
10670 here.
10671 (process_init_constructor): Not here.
10672
10673 Thu Sep 19 16:41:07 1996 Jason Merrill <jason@yorick.cygnus.com>
10674
10675 * pt.c (begin_template_parm_list): Increment
10676 processing_template_decl here.
10677 (end_template_parm_list): Not here.
10678 (process_template_parm): No need to add 1 to it now.
10679 * *.c: Use processing_template_decl instead of current_template_parms
10680 to check for being in a template.
10681
10682 * pt.c (uses_template_parms): Handle SCOPE_REF. Fix CONSTRUCTOR.
10683 (tsubst_copy): Handle CONSTRUCTOR.
10684 (instantiate_decl): Set up context properly for variables.
10685 * decl2.c (build_expr_from_tree): Handle CONSTRUCTOR.
10686 * class.c (finish_struct): Reverse CLASSTYPE_TAGS.
10687
10688 Wed Sep 18 13:30:20 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
10689
10690 * lex.c (enum tree_node_kind) [GATHER_STATISTICS]: Put the enum back.
10691
10692 Wed Sep 18 04:24:07 1996 Jason Merrill <jason@yorick.cygnus.com>
10693
10694 * method.c (make_thunk): Call comdat_linkage before setting the
10695 TREE_CODE.
10696
10697 * decl2.c (comdat_linkage): Use make_decl_one_only.
10698 (import_export_decl): Likewise.
10699 * decl.c (init_decl_processing): Check supports_one_only instead of
10700 SUPPORTS_WEAK.
10701
10702 Sat Sep 14 08:34:41 1996 Jason Merrill <jason@yorick.cygnus.com>
10703
10704 * decl2.c (grokfield): Tighten checking for access decls.
10705
10706 * decl.c (make_typename_type): Resolve references to
10707 current_class_type. Set CLASSTYPE_GOT_SEMICOLON.
10708 (lookup_name_real): Types that depend on a template parameter get
10709 an implicit 'typename' unless they're in the current scope.
10710 (start_decl_1): We don't care about incomplete types that depend
10711 on a template parm.
10712 (grokdeclarator): Resolve 'typename's in the type specifier that
10713 refer to members of the current scope.
10714
10715 * call.c (build_over_call): Remove 'inline called before
10716 definition' diagnostic.
10717 (build_method_call): Likewise.
10718 * decl.c (duplicate_decls): Downgrade 'used before declared
10719 inline' to a warning, only with -Winline.
10720
10721 Fri Sep 13 17:31:40 1996 Stan Shebs <shebs@andros.cygnus.com>
10722
10723 * mpw-make.sed: Fix include paths, add @DASH_C_FLAG@ to compile.
10724
10725 Wed Sep 11 22:38:13 1996 Gerald Baumgartner <gb@cs.purdue.edu>
10726
10727 * call.c (build_method_call): When calling a signature
10728 default implementation, as in other cases, let instance_ptr simply
10729 be instance.
10730
10731 Wed Sep 11 22:14:44 1996 Mike Stump <mrs@cygnus.com>
10732
10733 * parse.y (simple_stmt): Cleanup and use do_poplevel ().
10734
10735 Wed Sep 11 22:10:48 1996 Mike Stump <mrs@cygnus.com>
10736
10737 * except.c (expand_start_catch_block): Add a pushlevel so that -g
10738 works on hppa and SPARC.
10739
10740 Wed Sep 11 10:18:06 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
10741
10742 * typeck.c (build_indirect_ref): Catch PTR being an error_mark_node.
10743
10744 Mon Sep 9 19:51:14 1996 Gerald Baumgartner <gb@cs.purdue.edu>
10745
10746 * call.c (build_over_call): Check first whether DECL_CONTEXT exists
10747 before testing whether it's a signature.
10748
10749 Sun Sep 8 16:06:57 1996 Gerald Baumgartner <gb@cs.purdue.edu>
10750
10751 * call.c (build_new_method_call): Don't complain about signature
10752 pointers and references not being an aggr type.
10753 (build_this): If a signature pointer or reference was passed in,
10754 just return it.
10755 (build_new_method_call): If instance is a signature pointer, set
10756 basetype to the signature type of instance.
10757 * sig.c (build_signature_method_call): Deleted basetype and
10758 instance parameters, they can be found as the DECL_CONTEXT of
10759 function and as the first argument passed in.
10760 * cp-tree.h: Changed declaration of build_signature_method_call.
10761 * call.c (build_method_call): Deleted first two arguments in call
10762 of build_signature_method_call.
10763 (build_over_call): Added call to build_signature_method_call.
10764
10765 Thu Sep 5 16:51:28 1996 Jason Merrill <jason@yorick.cygnus.com>
10766
10767 * typeck.c (build_c_cast): Don't tack a non_lvalue_expr onto a
10768 target_expr.
10769
10770 Thu Sep 5 10:05:38 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
10771
10772 * cvt.c (convert_to_reference): Use %#T, not %#D, for error.
10773
10774 Wed Sep 4 17:16:09 1996 Bob Manson <manson@charmed.cygnus.com>
10775
10776 * except.c (expand_start_try_stmts): Move to except.c in the backend.
10777 (expand_end_try_stmts): Remove.
10778
10779 * init.c (perform_member_init): Use add_partial_entry () instead
10780 of directly manipulating lists.
10781 (emit_base_init): Ditto.
10782
10783 Wed Sep 4 12:14:36 1996 Mike Stump <mrs@cygnus.com>
10784
10785 * except.c (expand_exception_blocks): Always make sure USE and
10786 CLOBBER insns that came at the end still do, the backend relies
10787 upon this.
10788
10789 Wed Sep 4 07:44:48 1996 Jason Merrill <jason@yorick.cygnus.com>
10790
10791 * call.c (build_over_call): We can only use a TARGET_EXPR of the
10792 right type.
10793
10794 Tue Sep 3 19:26:05 1996 Jason Merrill <jason@yorick.cygnus.com>
10795
10796 * cvt.c (convert_to_reference): Revert last change, don't complain
10797 about temp without target decl.
10798
10799 Tue Sep 3 10:22:56 1996 Mike Stump <mrs@cygnus.com>
10800
10801 * decl.c (grokdeclarator): Don't core dump when void() is given.
10802
10803 Tue Sep 3 02:38:56 1996 Jason Merrill <jason@yorick.cygnus.com>
10804
10805 * decl.c (copy_args_p): Don't crash.
10806
10807 Fri Aug 30 14:26:57 1996 Mike Stump <mrs@cygnus.com>
10808
10809 * pt.c (tsubst): And support template args inside the exception
10810 specification.
10811
10812 * pt.c (tsubst): Add support for exception specifications in
10813 template functions.
10814
10815 Fri Aug 30 10:01:55 1996 Mike Stump <mrs@cygnus.com>
10816
10817 * cp-tree.def (DECL_STMT): Eliminate the throw spec field, only 3
10818 fields now.
10819 * cp-tree.h (start_decl): Eliminate the throw spec parameter.
10820 (start_function): Likewise.
10821 (start_method): Likewise.
10822 (grokfield): Likewise.
10823 (make_call_declarator): Add throw spec parameter.
10824 (set_quals_and_spec): Add routine.
10825 * lex.c (set_quals_and_spec): Likewise.
10826 * decl.h (grokdeclarator): Eliminate the throw spec parameter.
10827 * decl.c (shadow_tag): Eliminate the throw spec parameter to
10828 grokdeclarator.
10829 (groktypename): Likewise.
10830 (start_decl): Eliminate the throw spec parameter. Eliminate the
10831 throw spec parameter to grokdeclarator. Eliminate the throw spec
10832 field in DECL_STMT.
10833 (cp_finish_decl): Eliminate the throw spec field in DECL_STMT.
10834 (grokfndecl): Remove useless set of raises.
10835 (grokdeclarator): Eliminate the throw spec parameter. Eliminate
10836 the throw spec parameter to start_decl. Pull the throw spec out
10837 of the call declarator.
10838 (grokparms): Eliminate the throw spec parameter to grokdeclarator.
10839 (start_function): Eliminate the throw spec parameter. Eliminate
10840 the throw spec parameter to grokdeclarator.
10841 (start_method): Likewise.
10842 * decl2.c (grokfield): Likewise.
10843 (grokbitfield): Eliminate the throw spec parameter to grokdeclarator.
10844 (grokoptypename): Likewise.
10845 (finish_file): Eliminate the throw spec parameter to
10846 start_function. Add throw spec to make_call_declarator.
10847 * except.c (init_exception_processing): Add throw spec to
10848 make_call_declarator. Eliminate the throw spec parameter to
10849 start_decl.
10850 (expand_start_catch_block): Eliminate the throw spec parameter to
10851 grokdeclarator.
10852 (expand_builtin_throw): Add throw spec to make_call_declarator.
10853 Eliminate the throw spec parameter to start_function.
10854 (start_anon_func): Likewise.
10855 * lex.c (make_call_declarator): Add throw spec parameter.
10856 (set_quals_and_spec): New routine.
10857 (cons_up_default_function): Add throw spec to make_call_declarator.
10858 Eliminate the throw spec parameter to grokfield.
10859 * method.c (synthesize_method): Eliminate the throw spec parameter
10860 to start_function.
10861 * pt.c (process_template_parm): Eliminate the throw spec parameter
10862 to grokdeclarator.
10863 (tsubst): Add throw spec to make_call_declarator.
10864 (tsubst_expr): Eliminate the throw spec parameter to start_decl.
10865 (do_function_instantiation): Eliminate the throw spec parameter to
10866 grokdeclarator. Eliminate the throw spec parameter to
10867 start_function.
10868 * rtti.c (synthesize_tinfo_fn): Eliminate the throw spec parameter
10869 to start_function.
10870 * parse.y (datadef): Remove non-winning optimization.
10871 (decl): Likewise.
10872 (fndef): Remove ambiguous error productions uncovered by grammer
10873 fixing.
10874 (constructor_declarator): Add exception_specification_opt here.
10875 (component_constructor_declarator): Likewise.
10876 (direct_after_type_declarator): Likewise.
10877 (complex_direct_notype_declarator): Likewise.
10878 (direct_abstract_declarator): Likewise.
10879 (fn.def1): Remove exception_specification_opt.
10880 (fn.def2): Likewise.
10881 (condition): Likewise.
10882 (initdcl0): Likewise.
10883 (initdcl): Likewise.
10884 (notype_initdcl0): Likewise.
10885 (nomods_initdcl0): Likewise.
10886 (component_decl_1): Likewise.
10887 (component_declarator): Likewise.
10888 (after_type_component_declarator0): Likewise.
10889 (after_type_component_declarator): Likewise.
10890 (notype_component_declarator): Likewise.
10891
10892 Wed Aug 28 01:40:30 1996 Jason Merrill <jason@yorick.cygnus.com>
10893
10894 * call.c (build_over_call): Also use an INIT_EXPR when
10895 initializing anything from an rvalue.
10896
10897 * call.c (build_over_call): Call stabilize_reference when building
10898 an INIT_EXPR instead of calling the copy ctor.
10899
10900 * call.c (joust): Extend the previous change to all comparisons.
10901
10902 * decl2.c, method.c, lex.c: Use MAKE_DECL_ONE_ONLY and
10903 NO_LINKAGE_HEURISTICS.
10904
10905 * decl2.c (finish_file): Emit any statics that weren't already.
10906
10907 * typeck.c (build_static_cast): Implement.
10908 * tree.c (build_cplus_new): Handle getting a TARGET_EXPR.
10909 * decl.c (grokparms): Use can_convert_arg instead of
10910 implicit_conversion directly.
10911 (copy_args_p): New fn.
10912 * cvt.c (convert_to_reference): Don't complain about temp with
10913 static_cast.
10914 (build_up_reference): Handle TARGET_EXPRs.
10915 * call.c (build_over_call): Elide unnecessary temps.
10916 (can_convert*): Use new overloading code.
10917
10918 Tue Aug 27 13:12:21 1996 Jason Merrill <jason@yorick.cygnus.com>
10919
10920 * call.c: Move TYPE_PTR*_MACROS ...
10921 * cp-tree.h: To here.
10922 * typeck.c (build_reinterpret_cast): Implement.
10923
10924 * call.c (add_builtin_candidate): Use TYPE_PTROB_P instead of
10925 ptr_complete_ob.
10926 (joust): If we're comparing a function to a builtin and the worst
10927 conversion for the builtin is worse than the worst conversion for the
10928 function, take the function.
10929
10930 * typeck.c (build_const_cast): Implement.
10931 (comp_ptr_ttypes_const): Like comp_ptr_ttypes, for const_cast.
10932 (comp_ptr_ttypes_reinterpret): Like cpt, for reinterpret_cast.
10933
10934 Tue Aug 27 13:14:58 1996 Bob Manson <manson@charmed.cygnus.com>
10935
10936 * rtti.c (build_dynamic_cast): Don't try to dereference exprtype
10937 too early. Make sure we explode if exprtype turns out to be a
10938 NULL_TREE when it shouldn't be.
10939
10940 Tue Aug 27 10:56:21 1996 Mike Stump <mrs@cygnus.com>
10941
10942 * cp-tree.h: New routine make_call_declarator.
10943 * lex.c (make_call_declarator): Define it.
10944 * except.c (init_exception_processing): Use it.
10945 (expand_builtin_throw): Likewise.
10946 (start_anon_func): Likewise.
10947 * decl2.c (finish_file): Likewise.
10948 * lex.c (cons_up_default_function): Likewise.
10949 * parse.y: Likewise.
10950 * pt.c (tsubst): Likewise.
10951
10952 Mon Aug 26 17:40:03 1996 Mike Stump <mrs@cygnus.com>
10953
10954 * decl2.c (groktypefield): Remove unused code.
10955
10956 Mon Aug 26 17:00:33 1996 Mike Stump <mrs@cygnus.com>
10957
10958 * gxx.gperf: Change TYPE_QUAL into CV_QUALIFIER.
10959 * parse.y: Likewise. Change maybe_type_qual into maybe_cv_qualifier.
10960 Change type_quals into cv_qualifiers. Change nonempty_type_quals into
10961 nonempty_cv_qualifiers.
10962 * hash.h: Rebuild.
10963
10964 * lex.c (make_pointer_declarator): Change type_quals into
10965 cv_qualifiers.
10966 (make_reference_declarator): Likewise.
10967
10968 Thu Aug 22 01:09:22 1996 Jason Merrill <jason@yorick.cygnus.com>
10969
10970 * decl.c (start_function): Only check interface_* for templates
10971 with flag_alt_external_templates.
10972
10973 * call.c (build_new_op): Check for comparison of different enum types.
10974 (build_over_call): Fix arg # output.
10975
10976 * typeck.c (build_component_ref): Handle pre-found TYPE_DECL.
10977
10978 Wed Aug 21 00:13:15 1996 Jason Merrill <jason@yorick.cygnus.com>
10979
10980 * call.c (build_new_op): Check for erroneous args.
10981
10982 * call.c (build_new_method_call): Add missing args to cp_error.
10983
10984 * tree.c (error_type): Dont print reference-to-array.
10985
10986 * typeck.c (convert_for_assignment): Don't say contravariance for
10987 removing const.
10988
10989 Tue Aug 20 13:23:00 1996 Jason Merrill <jason@yorick.cygnus.com>
10990
10991 * call.c (build_over_call): Diagnose bad convs for `this'.
10992
10993 * lex.c (cons_up_default_function): Set DECL_ARTIFICIAL
10994 on _ctor_arg.
10995
10996 * call.c (convert_like): Handle bad convs.
10997 (build_over_call): Handle bad convs better.
10998
10999 * decl2.c: -fansi-overloading is now the default.
11000
11001 * call.c (build_new_method_call): Check for erroneous args.
11002
11003 * pt.c (instantiate_class_template): Propagate
11004 TYPE_USES_MULTIPLE_INHERITANCE.
11005
11006 Tue Aug 20 13:09:57 1996 Mike Stump <mrs@cygnus.com>
11007
11008 * call.c (enforce_access): Add static to routine.
11009
11010 Sun Aug 18 14:35:54 1996 Jason Merrill <jason@yorick.cygnus.com>
11011
11012 * call.c (build_user_type_conversion_1): Fix bad handling.
11013 (compare_ics): Likewise.
11014
11015 Sat Aug 17 21:54:11 1996 Jason Merrill <jason@yorick.cygnus.com>
11016
11017 * call.c (standard_conversion): Oops.
11018
11019 Sat Aug 17 16:28:11 1996 Geoffrey Noer <noer@cygnus.com>
11020
11021 * g++.c: Update test for win32 (&& ! cygwin32).
11022
11023 Sat Aug 17 03:45:31 1996 Jason Merrill <jason@yorick.cygnus.com>
11024
11025 * typeck.c (comp_ptr_ttypes_real): Handle OFFSET_TYPEs properly.
11026 (ptr_reasonably_similar): New fn.
11027 * call.c (BAD_RANK): New rank.
11028 (ICS_BAD_FLAG): New macro.
11029 (standard_conversion): Handle almost-right pointer conversions.
11030 (reference_binding): Handle bad rvalue bindings.
11031 (add_*_candidate): Stuff.
11032 (build_over_call): Pass bad conversions to convert_for_initialization.
11033 (compare_ics): Handle bad convs.
11034 (joust): Likewise.
11035
11036 Fri Aug 16 15:02:19 1996 Bob Manson <manson@charmed.cygnus.com>
11037
11038 * init.c (expand_vec_init): Use ptrdiff_type_node instead of
11039 integer_type_node when computing pointer offsets.
11040
11041 Fri Aug 16 01:28:32 1996 Jason Merrill <jason@yorick.cygnus.com>
11042
11043 * tree.c (lvalue_type): New fn.
11044 (error_type): New fn.
11045 * call.c (op_error): Use error_type.
11046 (add_conv_candidate): Use lvalue_type.
11047 (add_builtin_candidates): Likewise.
11048 * error.c (args_as_string): Use error_type.
11049
11050 Thu Aug 15 17:27:13 1996 Jason Merrill <jason@yorick.cygnus.com>
11051
11052 * pt.c (instantiate_decl): Evaluate DECL_INITIAL of a VAR_DECL here.
11053 (tsubst): Not here.
11054
11055 * decl.c (init_decl_processing): With -ansi, __null's type is the
11056 signed integral type with the same number of bits as a pointer.
11057 Introduce a new variable null_node for it.
11058 * cp-tree.h: Adjust.
11059 * call.c (null_ptr_cst_p): Adjust.
11060
11061 Thu Aug 15 17:09:54 1996 Mike Stump <mrs@cygnus.com>
11062
11063 * except.c (do_unwind): Mark %i7 as used on the SPARC so we can
11064 optimize.
11065
11066 Thu Aug 15 01:36:49 1996 Jason Merrill <jason@yorick.cygnus.com>
11067
11068 * decl2.c (import_export_decl): Ignore #pragma interface for tinfo
11069 fns of classes without virtual functions.
11070
11071 * call.c (add_function_candidate): Handle `this' specially.
11072 (compare_ics): Likewise.
11073
11074 Tue Aug 13 12:16:10 1996 Jason Merrill <jason@yorick.cygnus.com>
11075
11076 * typeck.c (build_conditional_expr): Fix handling of __null.
11077
11078 * decl2.c (comdat_linkage): New fn.
11079 (import_export_vtable): Use it.
11080 (import_export_decl): Use it.
11081 * method.c (make_thunk): Use it.
11082
11083 Mon Aug 12 00:09:18 1996 Jason Merrill <jason@yorick.cygnus.com>
11084
11085 * pt.c (end_template_decl): If we don't actually have parms, return.
11086 * parse.y (template_header): Accept 'template <>'.
11087
11088 * errfn.c: Allow 5 args.
11089
11090 Sun Aug 11 15:20:58 1996 Jason Merrill <jason@yorick.cygnus.com>
11091
11092 * tree.c (make_temp_vec): New fn.
11093 * pt.c (push_template_decl): Handle partial specs.
11094 (instantiate_class_template): Likewise.
11095 (more_specialized): Use get_bindings.
11096 (more_specialized_class): New fn.
11097 (get_class_bindings): New fn.
11098 (most_specialized_class): New fn.
11099 (do_function_instantiation): List candidates for ambiguous case.
11100 * decl.c (duplicate_decls): Lose reference to DECL_TEMPLATE_MEMBERS.
11101 (shadow_tag): Call push_template_decl for partial specializations.
11102 * parse.y: Likewise.
11103 * cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Replaces
11104 DECL_TEMPLATE_MEMBERS.
11105 * call.c (print_z_candidates): Reduce duplication.
11106
11107 Fri Aug 9 14:36:08 1996 Jason Merrill <jason@yorick.cygnus.com>
11108
11109 * decl2.c (lang_decode_option): Allow -fansi-overloading.
11110
11111 Thu Aug 8 17:04:18 1996 Jason Merrill <jason@yorick.cygnus.com>
11112
11113 * pt.c (get_bindings): New fn.
11114 (most_specialized): Likewise.
11115 (do_function_instantiation): Use them.
11116 (add_maybe_template): New fn.
11117 * cp-tree.h (DECL_MAYBE_TEMPLATE): New macro.
11118 * call.c (build_new_op): Handle guiding decls.
11119 (build_new_function_call): Likewise.
11120 * decl2.c (finish_file): Likewise.
11121
11122 * decl2.c (mark_used): Do synthesis here.
11123 * call.c (build_method_call): Not here.
11124 (build_over_call): Or here.
11125 * typeck.c (build_function_call_real): Or here.
11126 * tree.c (bot_manip): Call mark_used on functions used in default
11127 args.
11128
11129 Thu Aug 8 17:48:16 1996 Michael Meissner <meissner@tiktok.cygnus.com>
11130
11131 * decl2.c (import_export_vtable): Delete code that disabled vtable
11132 heuristic on systems with ASM_OUTPUT_EXTERNAL.
11133
11134 Wed Aug 7 12:44:11 1996 Jason Merrill <jason@yorick.cygnus.com>
11135
11136 * typeck.c (build_x_function_call): Handle static call context
11137 better.
11138
11139 * decl.c (finish_function): Set the DECL_CONTEXT of the result to
11140 the function, not its outer block.
11141
11142 * call.c (build_field_call): Pass fields on to build_opfncall
11143 regardless of TYPE_OVERLOADS_CALL_EXPR.
11144 (build_method_call): Pass on to build_new_method_call sooner.
11145
11146 * typeck.c (build_ptrmemfunc): Just return what instantiate_type
11147 gives us.
11148 * class.c (instantiate_type): Don't put a POINTER_TYPE to
11149 METHOD_TYPE on an expression. Also make a copy of rhs instead of
11150 modifying it.
11151
11152 Tue Aug 6 12:58:46 1996 Jason Merrill <jason@yorick.cygnus.com>
11153
11154 * call.c (compare_ics): Handle qual_conv after lvalue_conv.
11155 (add_builtin_candidate): Don't take enums for ++.
11156 (build_new_method_call): Handle non-aggregates and field calls.
11157 Move new overloading code from...
11158 * cvt.c: Here.
11159
11160 * decl.c (grokparms): Don't check default args in templates.
11161
11162 Mon Aug 5 17:17:06 1996 Jason Merrill <jason@yorick.cygnus.com>
11163
11164 * cvt.c (build_new_op): Fix args to build_unary_op.
11165 (add_builtin_candidates): Don't call type_promotes_to on float.
11166
11167 * decl.c (grokparms): Check the type of the default arg.
11168
11169 * cvt.c (build_new_op): Pass non-overloaded cases on rather than
11170 returning NULL_TREE.
11171
11172 * typeck.c (build_x_binary_op): Avoid doing extra work.
11173 (build_x_unary_op): Likewise.
11174 (build_x_conditional_expr): Likewise.
11175 * cvt.c (build_over_call): Return.
11176 (add_builtin_candidate): Fix MEMBER_REF.
11177 (build_new_op): Likewise.
11178
11179 Mon Aug 5 17:07:47 1996 Mike Stump <mrs@cygnus.com>
11180
11181 * method.c (build_overload_name): Put bug fix into code but leave
11182 disabled for now so we can be bug compatible with older releases
11183 that do repeats incorrectly. In the future, we can enable it.
11184
11185 Mon Aug 5 13:46:28 1996 Jason Merrill <jason@yorick.cygnus.com>
11186
11187 * cvt.c (convert_like): Don't call build_cplus_new twice.
11188
11189 * call.c, cp-tree.h, cvt.c, decl2.c, init.c, method.c, pt.c, typeck.c:
11190 Control new overloading code with -fansi-overloading.
11191
11192 Sun Aug 4 15:29:11 1996 Jason Merrill <jason@yorick.cygnus.com>
11193
11194 * cvt.c (build_over_call): Call build_cplus_new.
11195 * call.c (build_method_call): Likewise.
11196 * typeck.c (build_function_call_real): Likewise.
11197 (build_conditional_expr): If both operands are TARGET_EXPRs, wrap
11198 the COND_EXPR in a TARGET_EXPR so they use the same slot.
11199
11200 * cvt.c (build_up_reference): Propagate INDIRECT_BIND to
11201 recursive calls.
11202 * typeck.c (complete_type): Propagate
11203 TYPE_NEEDS_{CONSTRUCTING,DESTRUCTOR}.
11204
11205 Sat Aug 3 14:05:07 1996 Jason Merrill <jason@yorick.cygnus.com>
11206
11207 * cvt.c (joust): More ?: kludging. Sigh.
11208 (build_over_call): Don't try to synthesize global fns.
11209
11210 * search.c (lookup_conversions): Use binfo marking.
11211
11212 Sat Aug 3 12:33:42 1996 Bob Manson <manson@charmed.cygnus.com>
11213
11214 * search.c (build_mi_matrix): Use the correct value of cid
11215 when determining the new mi_size.
11216
11217 Sat Aug 3 01:27:41 1996 Jason Merrill <jason@yorick.cygnus.com>
11218
11219 * cvt.c (add_builtin_candidates): Do consider type conversion ops
11220 for the first parms of += et al.
11221 (strip_top_quals): New fn.
11222 (reference_binding): Use it instead of TYPE_MAIN_VARIANT.
11223 (implicit_conversion): Likewise.
11224 (add_builtin_candidates): Be careful about arrays.
11225 (build_new_method_call): Handle vtable optimization.
11226
11227 Fri Aug 2 01:26:59 1996 Jason Merrill <jason@yorick.cygnus.com>
11228
11229 * cp-tree.h (LOOKUP_NO_TEMP_BIND): New flag.
11230 * cvt.c (reference_binding): Use it.
11231 (implicit_conversion): Use it.
11232 (add_builtin_candidate, COND_EXPR): Use it.
11233
11234 * cvt.c (build_new_function_call): Check for error args.
11235
11236 * typeck.c (comptypes): Just check DERIVED_FROM_P, not UNIQUELY.
11237
11238 * gxx.gperf: Add __null.
11239 * hash.h: Regenerate.
11240 * lex.h: Add RID_NULL.
11241 * lex.c (init_lex): Create null_pointer_node here, stick it in
11242 RID_NULL.
11243 * decl.c (init_decl_processing): Still set its type here.
11244 * cvt.c (cp_convert_to_pointer): Don't produce null_pointer_node.
11245 (convert_to_pointer_force): Likewise.
11246 (null_ptr_cst_p): Check for null_pointer_node; only accept (void*)0
11247 if (! pedantic).
11248 * call.c (convert_harshness): Use null_ptr_cst_p.
11249 * typeck.c (convert_for_assignment): Likewise. Don't produce
11250 null_pointer_node.
11251
11252 * error.c (args_as_string): Handle lists of actual args, too.
11253 * cvt.c (null_ptr_cst): Support (void*)0 for now.
11254 (build_user_type_conversion_1): Improve diagnostics.
11255 (build_new_function_call): Likewise.
11256 (build_object_call): Likewise.
11257 (build_new_method_call): Likewise. Move call before def diagnostic...
11258 (build_over_call): Here.
11259
11260 * cvt.c (build_new_method_call): Don't complain about no match if
11261 LOOKUP_SPECULATIVELY.
11262 (build_over_call): Fix 'this' for virtual fn.
11263 (build_new_method_call): Add diagnostic.
11264
11265 Thu Aug 1 16:45:09 1996 Jason Merrill <jason@yorick.cygnus.com>
11266
11267 * cvt.c (add_function_candidate): Expect 'this' and 'in_chrg' for
11268 constructors to be passed in.
11269 (build_over_call): Likewise.
11270 (build_user_type_conversion_1): Pass them in.
11271 (convert_like): Likewise.
11272 (build_object_call): Handle overloaded conversions.
11273 (build_over_call): Pass the right args to build_vfn_ref.
11274 (standard_conversion): Fix pmf convs.
11275 (joust): Handle comparing statics and non-statics.
11276 (build_new_method_call): New fn.
11277 * call.c (build_method_call): Call it if NEW_OVER.
11278
11279 Thu Aug 1 16:06:14 1996 Mike Stump <mrs@cygnus.com>
11280
11281 * lex.c (do_identifier): Don't use %O on IDENTIFIER_OPNAME_Ps, use
11282 %D instead.
11283
11284 Thu Aug 1 15:24:02 1996 Mike Stump <mrs@cygnus.com>
11285
11286 * except.c (expand_throw): Use maybe_build_cleanup_and_delete
11287 instead of just maybe_build_cleanup so that we deallocate the
11288 thrown object.
11289
11290 Thu Aug 1 15:18:00 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
11291
11292 * decl2.c (finish_prevtable_vardecl): Make non-static for pt.c's use.
11293 * cp-tree.h (finish_prevtable_vardecl): Add decl.
11294
11295 Thu Aug 1 11:53:51 1996 Bob Manson <manson@charmed.cygnus.com>
11296
11297 * pt.c (instantiate_class_template): Call complete_type. Also, if
11298 we're at the end of the file and we just instantiated a template
11299 class with a vtable, call finish_prevtable_vardecl.
11300
11301 * error.c (dump_decl): Don't explode (or explode more gracefully
11302 as appropriate) if the object being dumped has a null type.
11303 (dump_expr): Likewise.
11304
11305 * search.c (build_mi_matrix): Ensure that mi_size is large enough,
11306 by counting the number of nodes that we'll need before allocating
11307 the array.
11308 (lookup_fnfields): Fix comment.
11309 (breadth_first_search): Fix comment.
11310
11311 Wed Jul 31 09:57:05 1996 Jason Merrill <jason@yorick.cygnus.com>
11312
11313 * pt.c (instantiate_class_template): Propagate TYPE_PACKED and
11314 TYPE_ALIGN.
11315 * class.c (finish_struct): Call cplus_decl_attributes here.
11316 (finish_struct_1): Not here.
11317 * cp-tree.h: Adjust.
11318
11319 * pt.c (type_unification): New parameter STRICT.
11320 (unify): If STRICT, don't allow cv addition or base deduction.
11321 * call.c, class.c, cvt.c, cp-tree.h: Adjust.
11322
11323 Tue Jul 30 13:06:13 1996 Jason Merrill <jason@yorick.cygnus.com>
11324
11325 * search.c (get_template_base{_recursive}): New fns.
11326 * pt.c (more_specialized): New fn.
11327 (do_function_instantiation): Use it.
11328 (unify): Handle base deduction.
11329 * cvt.c (joust): Use more_specialized.
11330 Don't arbitrarily choose between non-builtin candidates.
11331 (build_over_call): Call require_complete_type.
11332
11333 * decl.c (start_function): Statics are static even in a #pragma
11334 interface file.
11335
11336 * decl2.c (import_export_vtable): Disable vtable heuristic on
11337 systems with ASM_OUTPUT_EXTERNAL.
11338
11339 * cvt.c (compare_ics): Fix comparison of PMEM_CONV and BASE_CONV.
11340 (standard_conversion): No std conv to enum type.
11341
11342 * cvt.c (standard_conversion): Fix order of args to DERIVED_FROM_P
11343 for ptm's.
11344
11345 * cvt.c (reference_binding): Bind directly to a base subobject of
11346 a class rvalue.
11347
11348 * cvt.c (build_new_op): Enforce access control.
11349
11350 Tue Jul 30 09:22:53 1996 Bob Manson <manson@charmed.cygnus.com>
11351
11352 * typeck2.c (process_init_constructor): When scanning the
11353 union for a named field, skip things that aren't FIELD_DECLs.
11354
11355 * method.c (synthesize_method): Don't scan fndecl's rtl if
11356 we're at the end of the file; just assume the function can't
11357 be inlined.
11358
11359 Mon Jul 29 15:48:30 1996 Jason Merrill <jason@yorick.cygnus.com>
11360
11361 * cvt.c (build_builtin_candidate): Stick a dummy conversion in if
11362 it failed.
11363
11364 * cvt.c (build_user_type_conversion_1): Handle overloaded
11365 conversion ops.
11366
11367 * cvt.c (add_builtin_candidates): Don't consider type conversion
11368 operators for the first parameter of operator=.
11369
11370 Mon Jul 29 15:33:55 1996 Bob Manson <manson@charmed.cygnus.com>
11371
11372 * typeck.c (complete_type): Only call layout_type if we're not
11373 expanding a template.
11374
11375 Mon Jul 29 14:40:38 1996 Jason Merrill <jason@yorick.cygnus.com>
11376
11377 * cvt.c (compare_ics): Oops.
11378
11379 * cvt.c (op_error): Oops.
11380
11381 * cp-tree.def: Add RVALUE_CONV, rename EXACT_CONV to IDENTITY_CONV.
11382 * cvt.c: Add IDENTITY_RANK before others. Use real_lvalue_p.
11383 (build_conv): Use them.
11384 (implicit_conversion): Use them.
11385 (convert_like): Handle them.
11386 (build_new_op): Handle builtin COND_EXPR again.
11387 (add_builtin_candidates): Strip cv-quals. Fix oops. Include enums
11388 in lists of types for COND_EXPR.
11389 (add_builtin_candidate): Add enum candidates for COND_EXPR.
11390
11391 Mon Jul 29 12:05:40 1996 Bob Manson <manson@charmed.cygnus.com>
11392
11393 * typeck.c (build_modify_expr): Always attempt to build a call to
11394 the assignment operator, even if we're using a default one.
11395 (convert_for_initialization): Call complete_type.
11396
11397 Mon Jul 29 11:25:08 1996 Jason Merrill <jason@yorick.cygnus.com>
11398
11399 * cvt.c (reference_binding): A REF_BIND gets the reference type.
11400 (implicit_conversion): Likewise.
11401 (convert_like): Likewise.
11402 (compare_ics): Likewise.
11403 (compare_qual): Likewise.
11404 (print_z_candidates): Handle no candidates.
11405 (build_new_op): Don't handle builtin COND_EXPR for now.
11406
11407 Sat Jul 27 11:27:47 1996 Stan Shebs <shebs@andros.cygnus.com>
11408
11409 * cvt.c (build_builtin_candidate): Init local var in an ANSI way.
11410
11411 Fri Jul 26 01:07:22 1996 Jason Merrill <jason@yorick.cygnus.com>
11412
11413 * cvt.c (joust): If the candidates are the same, arbitrarily pick one.
11414
11415 * cvt.c (build_builtin_candidate): Oops.
11416 (build_new_op): Oops.
11417
11418 * method.c (build_opfncall): Pass COND_EXPR on.
11419 * cvt.c (build_builtin_candidate): Reorganize, support COND_EXPR.
11420 (add_builtin_candidate{,s}): Likewise.
11421 (add_builtin_candidates): Likewise.
11422 (print_z_candidates, op_error, build_new_op): Likewise.
11423 (type_decays_to): New fn.
11424 * lex.c (init_lex): Just say ?: for COND_EXPR.
11425
11426 Thu Jul 25 09:33:33 1996 Jason Merrill <jason@yorick.cygnus.com>
11427
11428 * typeck.c (complete_type): Call layout_type rather than building
11429 a new array type.
11430
11431 * cvt.c (add_builtin_candidate): Pointer arithmetic candidates
11432 only use ptrdiff_t.
11433
11434 Wed Jul 24 12:45:08 1996 Jason Merrill <jason@yorick.cygnus.com>
11435
11436 * cvt.c: Always compile the new overloading code (but don't use it).
11437 (implicit_conversion): Add a BASE_CONV when converting to
11438 the same class type.
11439 (convert_like): Handle BASE_CONV.
11440
11441 Tue Jul 23 12:46:30 1996 Jason Merrill <jason@yorick.cygnus.com>
11442
11443 * cvt.c (build_new_op): Support {MAX,MIN}_EXPR.
11444 (add_builtin_candidate): Likewise.
11445
11446 NEW_OVER changes:
11447 * typeck.c (build_x_function_call): Try an operator function
11448 whenever we call an object of class type.
11449 * method.c (build_opfncall): Pass CALL_EXPRs through.
11450 * cvt.c (implicit_conversion): Do const-ref case first.
11451 (add_conv_candidate, build_object_call, op_error): New fns.
11452 (ptr_complete_ob, TYPE_PTROB_P): void is not an object type.
11453 ({add,build}_builtin_candidate{,s}, print_z_candidates): Display
11454 builtin candidates.
11455 (build_new_op): Handle CALL_EXPR. Don't try to decay void.
11456 Fall back on preincrement handling. Use op_error.
11457 Handle warn_synth.
11458 (convert_like): Pass INDIRECT_BIND. Don't try to do anything with
11459 an error_mark_node.
11460 (build_over_call): Handle PROMOTE_PROTOTYPES and ellipsis promotions
11461 properly.
11462
11463 Mon Jul 22 16:21:55 1996 Bob Manson <manson@charmed.cygnus.com>
11464
11465 * pt.c (tsubst_expr): Handle CONTINUE_STMT.
11466
11467 Mon Jul 22 15:38:58 1996 Mike Stump <mrs@cygnus.com>
11468
11469 * typeck.c (build_component_ref_1): Use build_component_ref
11470 instead of open coding it here.
11471
11472 Mon Jul 22 12:18:54 1996 Jason Merrill <jason@yorick.cygnus.com>
11473
11474 * g++.c (main): Don't link with -lg++.
11475
11476 NEW_OVER changes:
11477 * cvt.c (convert_to_reference): Don't use convert_from_refeence on
11478 result of build_type_conversion.
11479 (cp_convert): Only call build_method_call for ctors if
11480 build_type_conversion failed.
11481 (ptr_complete_ob): New function.
11482 (TYPE_PTR{,OB,MEM}_P): New macros.
11483 ({add,build}_builtin_candidate{,s}): New functions.
11484 (print_z_candidates): Handle builtins.
11485 (build_user_type_conversion_1): Don't use conversion fns for
11486 converting to a base type.
11487 (build_user_type_conversion_1): Set ICS_USER_FLAG on AMBIG_CONVs.
11488 (build_user_type_conversion): Use convert_from_reference.
11489 (build_new_op): New function.
11490 (build_over_call): Fix handling of methods.
11491 (compare_ics): Handle AMBIG_CONV properly.
11492 * typeck2.c: Increment abort count.
11493 * method.c (build_opfncall): Forward most requests to build_new_op.
11494 * cp-tree.h (IS_OVERLOAD_TYPE): Tweak.
11495
11496 Fri Jul 19 17:59:29 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
11497
11498 * error.c (dump_expr, case CONSTRUCTOR, case CAST_EXPR): Take out
11499 invalid second argument to dump_expr_list.
11500
11501 Fri Jul 19 14:04:05 1996 Mike Stump <mrs@cygnus.com>
11502
11503 * decl.c (lookup_name_real): Make sure we do obj->X::i correctly.
11504
11505 Thu Jul 18 14:48:23 1996 Bob Manson <manson@charmed.cygnus.com>
11506
11507 * decl2.c (import_export_vtable): ASM_OUTPUT_EXTERNAL, not
11508 ASSEMBLE_EXTERNAL.
11509
11510 Mon Jul 15 17:48:43 1996 Mike Stump <mrs@cygnus.com>
11511
11512 * typeck2.c (process_init_constructor): New pedwarn for using { }
11513 to initialize a pointer to member function.
11514 * typeck.c (build_ptrmemfunc1): Avoid use of digest_init so that
11515 we can avoid the new error.
11516
11517 Mon Jul 15 15:42:03 1996 Mike Stump <mrs@cygnus.com>
11518
11519 * typeck.c (build_ptrmemfunc1): New function to hide details of
11520 pointer to member functions better.
11521
11522 Mon Jul 15 14:23:02 1996 Mike Stump <mrs@cygnus.com>
11523
11524 * init.c (resolve_offset_ref): Resolve OFFSET_REFs that are
11525 methods into the actual method, as we know the implied object is
11526 not used.
11527
11528 Mon Jul 15 13:08:29 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
11529
11530 * parse.y (maybecomma_warn): Only emit the pedwarn if we're not
11531 inside a system header.
11532
11533 Fri Jul 12 16:30:05 1996 Bob Manson <manson@charmed.cygnus.com>
11534
11535 * call.c (build_method_call): Call complete_type on the
11536 instance type.
11537
11538 Thu Jul 11 17:16:40 1996 Mike Stump <mrs@cygnus.com>
11539
11540 * typeck.c (build_component_ref): Always build up an OFFSET_REF
11541 for obj_ptr->func so that we can know which object to use in a
11542 method call.
11543
11544 Wed Jul 10 19:36:37 1996 Mike Stump <mrs@cygnus.com>
11545
11546 * typeck.c (build_ptrmemfunc): Remove sorry, now we can cast
11547 around things. Also improve maintainability.
11548
11549 Wed Jul 10 18:20:11 1996 Bob Manson <manson@charmed.cygnus.com>
11550
11551 * decl.c (grokdeclarator): Check for overflow when evaluating an
11552 array dimension.
11553
11554 Wed Jul 10 17:26:19 1996 Jason Merrill <jason@yorick.cygnus.com>
11555
11556 * cvt.c (cp_convert): Don't check for ambiguity with constructor
11557 if NEW_OVER.
11558
11559 * typeck.c (build_x_function_call): Pass function overload
11560 questions to new overloading code if NEW_OVER.
11561 * init.c (expand_aggr_init_1): Only check for type conversion ops
11562 if we're doing copy-initialization (i.e. LOOKUP_ONLYCONVERTING).
11563 Don't check for ambiguity with constructor if NEW_OVER.
11564 * cvt.c (convert_to_reference): Dereference the result of a type
11565 conversion operator.
11566 (build_conv): Propagate ICS_USER_FLAG.
11567 (implicit_conversion): Call instantiate_type.
11568 Pass LOOKUP_ONLYCONVERTING instead of LOOKUP_NORMAL.
11569 (add_function_candidate): Fix cv-quals on argtype.
11570 (print_z_candidates): New function.
11571 (build_new_function_call): Call it.
11572 (build_user_type_conversion_1): If LOOKUP_ONLYCONVERTING, don't
11573 consider non-converting constructors.
11574 Call print_z_candidates.
11575 Return an AMBIG_CONV for an ambiguous conversion.
11576 (build_user_type_conversion): Handle AMBIG_CONV.
11577 (convert_like): Fix test for building TARGET_EXPR.
11578 Call instantiate_type.
11579 Handle AMBIG_CONV and LVALUE_CONV.
11580 (build_over_call): Handle 0 args and ellipsis.
11581 * cp-tree.def: Add AMBIG_CONV.
11582
11583 Tue Jul 9 17:48:48 1996 Mike Stump <mrs@cygnus.com>
11584
11585 * decl.c (lookup_name_real): If we find mem in obj when parsing
11586 `obj->mem', make sure we return the right value.
11587
11588 Tue Jul 9 16:11:28 1996 Bob Manson <manson@charmed.cygnus.com>
11589
11590 * search.c (get_base_distance): Call complete_type.
11591
11592 Tue Jul 9 12:46:34 1996 Mike Stump <mrs@cygnus.com>
11593
11594 * decl.c (store_bindings): Make static.
11595
11596 Mon Jul 8 16:42:31 1996 Jason Merrill <jason@yorick.cygnus.com>
11597
11598 * init.c (expand_aggr_init_1): Don't check type conversions if
11599 NEW_OVER.
11600
11601 * cvt.c (z_candidate): Put back template field.
11602 (add_function_candidate): Set it.
11603 (add_template_candidate): Likewise.
11604 (joust): Use it.
11605 (compare_qual): Handle references and pointers to members.
11606 (compare_ics): Handle reference bindings.
11607
11608 * decl.c (duplicate_decls): Propagate DECL_ONE_ONLY.
11609
11610 Mon Jul 8 16:18:56 1996 Bob Manson <manson@charmed.cygnus.com>
11611
11612 * call.c (compute_conversion_costs): Call complete_type.
11613
11614 * tree.c (vec_binfo_member): Use comptypes instead of comparing
11615 pointers, so we can handle template parameters.
11616
11617 Fri Jul 5 16:51:53 1996 Bob Manson <manson@charmed.cygnus.com>
11618
11619 * cvt.c (cp_convert_to_pointer): We have to call complete_type
11620 here; let's make it explicit instead of a side effect of an
11621 error check.
11622
11623 Wed Jul 3 16:29:51 1996 Jason Merrill <jason@yorick.cygnus.com>
11624
11625 * cvt.c (z_candidate): Remove template field.
11626 (reference_binding): Handle binding to temporary.
11627 (implicit_conversion): Likewise.
11628 (add_function_candidate): Handle artificial constructor parms.
11629 Handle functions with too few parms.
11630 (add_template_candidate): New function.
11631 (build_user_type_conversion_1): Handle constructors.
11632 (convert_like): Likewise.
11633 (build_over_call): Likewise.
11634 (build_new_function_call): Support templates.
11635 (compare_ics): Fix reference, inheritance handling.
11636
11637 Mon Jul 1 22:58:18 1996 Bob Manson <manson@charmed.cygnus.com>
11638
11639 * decl.c: Add signed_size_zero_node.
11640 (init_decl_processing): Build it.
11641 * class.c (prepare_fresh_vtable): Use it instead of size_zero_node
11642 when we're trying to make a negative delta.
11643
11644 Mon Jul 1 17:56:19 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
11645
11646 Stop doing this damn index==strchr variable name confusion.
11647 * class.c (add_virtual_function): Change local var INDEX to be
11648 named IDX.
11649 (add_method): Likewise.
11650 * lex.c (print_parse_statistics): Likewise.
11651 * search.c (make_memoized_table_entry): Likewise.
11652 (lookup_fnfields_here): Likewise.
11653 (lookup_field): Likewise.
11654 (lookup_fnfields): Likewise.
11655 (get_baselinks): Likewise.
11656 * sig.c (build_signature_table_constructor): Likewise.
11657 (build_signature_method_call): Likewise.
11658 * typeck.c (build_x_array_ref): Change INDEX parm to be named IDX.
11659 (get_member_function_from_ptrfunc): Likewise.
11660 (build_ptrmemfunc): Change local var INDEX to be IDX.
11661 (c_expand_start_case): Likewise.
11662
11663 Sat Jun 29 14:05:46 1996 Jason Merrill <jason@yorick.cygnus.com>
11664
11665 * cvt.c (cp_convert_to_pointer): Move user-defined type conversion
11666 handling to before extraction of TYPE_PTRMEMFUNC_FN_TYPE.
11667 (convert_to_reference): Use build_type_conversion to convert to
11668 the reference type directly.
11669 (standard_conversion): Fix void* case, non-conversions.
11670 (reference_binding): Fix expr == 0 case, non-conversions.
11671 (convert_like): Support REF_BIND.
11672 (compare_qual): Split out from compare_ics.
11673 (compare_ics): Use it, handle icses with only a qual_conv.
11674
11675 * init.c (expand_vec_init): Don't crash if decl is NULL.
11676
11677 Fri Jun 28 11:52:51 1996 Stan Shebs <shebs@andros.cygnus.com>
11678
11679 * mpw-config.in: New file, configury for Mac MPW.
11680 * mpw-make.sed: New file, makefile editing for MPW.
11681
11682 Thu Jun 27 15:18:30 1996 Jason Merrill <jason@yorick.cygnus.com>
11683
11684 * pt.c (instantiate_class_template): Call repo_template_used.
11685
11686 * search.c (lookup_conversions): Only lookup conversions in
11687 complete types.
11688
11689 Thu Jun 27 12:59:53 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
11690
11691 * cp-tree.def: Renamed from tree.def, to avoid confusion with
11692 gcc's tree.def.
11693 * cp-tree.h, lex.c: Include cp-tree.def.
11694 * Makefile.in (CXX_TREE_H): Reference cp-tree.def.
11695
11696 Wed Jun 26 18:29:47 1996 Bob Manson <manson@charmed.cygnus.com>
11697
11698 * init.c (build_vec_delete_1): Call complete_type.
11699
11700 Mon Jun 24 17:17:32 1996 Mike Stump <mrs@cygnus.com>
11701
11702 * except.c (start_anon_func): Make sure anonymous functions are
11703 never external.
11704
11705 Fri Jun 21 15:10:58 1996 Jason Merrill <jason@yorick.cygnus.com>
11706
11707 * decl.c (finish_function): If function_depth > 1, set nested.
11708
11709 * decl2.c (grokbitfield): Revert Bob's change.
11710 * class.c (finish_struct_1): Fix handling of named bitfield widths.
11711
11712 Thu Jun 20 23:35:38 1996 Jason Merrill <jason@yorick.cygnus.com>
11713
11714 * pt.c (add_pending_template): Handle types.
11715 (lookup_template_class): With -fexternal-templates, just add the class
11716 to pending_templates instead of instantiating it now.
11717 * decl2.c (finish_file): Handle types in pending_templates.
11718
11719 Thu Jun 20 14:08:40 1996 Bob Manson <manson@charmed.cygnus.com>
11720
11721 * decl2.c (grokbitfield): Handle constant decls appropriately.
11722 Give an appropriate error message now instead of spewing core
11723 later.
11724
11725 Thu Jun 20 13:01:51 1996 Jason Merrill <jason@yorick.cygnus.com>
11726
11727 * decl2.c: Don't turn on thunks by default for now.
11728
11729 Wed Jun 19 11:37:04 1996 Jason Merrill <jason@yorick.cygnus.com>
11730
11731 * typeck.c (complete_type): Handle error_mark_node.
11732 (common_type, OFFSET_TYPE): Handle template_type_parms.
11733
11734 Tue Jun 18 10:02:15 1996 Jason Merrill <jason@yorick.cygnus.com>
11735
11736 * pt.c (instantiate_decl): If at_eof, call import_export_decl
11737 regardless of DECL_INLINE.
11738
11739 * typeck.c (mark_addressable): Set TREE_ADDRESSABLE on CONSTRUCTORs.
11740
11741 * class.c (finish_struct_bits): Copy TYPE_SIZE.
11742
11743 * rtti.c (build_dynamic_cast): Support templates.
11744 * tree.def: Support DYNAMIC_CAST_EXPR.
11745 * pt.c (tsubst_copy): Likewise.
11746 * decl2.c (build_expr_from_tree): Likewise.
11747
11748 Mon Jun 17 15:23:36 1996 Jason Merrill <jason@yorick.cygnus.com>
11749
11750 * typeck.c (build_static_cast): Support templates.
11751 (build_const_cast): Likewise.
11752 * tree.def: Support CONST/STATIC_CAST_EXPR.
11753 * pt.c (tsubst_copy): Likewise.
11754 * decl2.c (build_expr_from_tree): Likewise.
11755
11756 Sun Jun 16 12:33:57 1996 Jason Merrill <jason@yorick.cygnus.com>
11757
11758 * decl2.c (finish_vtable_vardecl): Don't trust
11759 TREE_SYMBOL_REFERENCED for vtables of local classes.
11760
11761 Fri Jun 14 18:13:36 1996 Jason Merrill <jason@yorick.cygnus.com>
11762
11763 * pt.c (tsubst_copy): Handle operator T.
11764
11765 Wed Jun 12 17:52:40 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
11766
11767 * init.c (build_delete): Move creation of PARMS inside test of
11768 TYPE_HAS_DESTRUCTOR, since it's never used outside of that block.
11769
11770 Tue Jun 11 15:09:18 1996 Bob Manson <manson@charmed.cygnus.com>
11771
11772 * typeck.c (build_conditional_expr): Don't assume that
11773 the arguments to ?: are always pointers or records.
11774
11775 Tue Jun 11 13:56:23 1996 Jason Merrill <jason@yorick.cygnus.com>
11776
11777 * decl2.c (import_export_decl): Still emit static/weak/comdat
11778 copies of inline template functions with -fno-implicit-templates.
11779
11780 Tue Jun 11 11:42:13 1996 Bob Manson <manson@charmed.cygnus.com>
11781
11782 * init.c (build_delete): Determine the complete basetype
11783 path to the destructor we're calling.
11784
11785 Fri Jun 7 15:30:10 1996 Bob Manson <manson@charmed.cygnus.com>
11786
11787 * decl.c (build_enumerator): Always copy the INTEGER_CST used to
11788 initialize the enum, because we really and truly don't know where
11789 it came from.
11790 (start_enum): Don't copy integer_zero_node because
11791 build_enumerator will do it.
11792
11793 Fri Jun 7 11:11:09 1996 Jason Merrill <jason@yorick.cygnus.com>
11794
11795 * decl.c (finish_function): Do access control on base destructors.
11796
11797 * pt.c (tsubst, case FUNCTION_DECL): Set up
11798 IDENTIFIER_GLOBAL_VALUE for member functions so pushdecl doesn't
11799 hose us.
11800
11801 Fri Jun 7 10:37:33 1996 Mike Stump <mrs@cygnus.com>
11802
11803 * cvt.c (build_up_reference): If we have already extended the
11804 lifetime of the temporary, don't try it again.
11805 * typeck.c (c_expand_return): Don't try and convert the return
11806 value twice when we want a reference, once is enough.
11807
11808 Tue Jun 4 15:41:45 1996 Jason Merrill <jason@yorick.cygnus.com>
11809
11810 * pt.c (tsubst_expr, case DECL_STMT): Don't pass
11811 LOOKUP_ONLYCONVERTING at all for now.
11812
11813 * search.c (add_conversions): Put the conversion function in
11814 TREE_VALUE, the basetype in TREE_PURPOSE.
11815 * cvt.c (build_type_conversion): Adjust.
11816 * cvt.c (build_expr_type_conversion): Adjust.
11817 * call.c (user_harshness): Adjust.
11818
11819 Mon Jun 3 15:30:52 1996 Jason Merrill <jason@yorick.cygnus.com>
11820
11821 * method.c (emit_thunk): Pretend this is a FUNCTION_DECL for the
11822 backend's benefit.
11823
11824 Mon Jun 10 18:58:19 1996 Mike Stump <mrs@cygnus.com>
11825
11826 * except.c (expand_start_catch_block): Add a dummy region, if we
11827 get an error, so that we can avoid core dumping later.
11828
11829 Fri May 31 14:56:13 1996 Mike Stump <mrs@cygnus.com>
11830
11831 * cp-tree.h (OFFSET_REF): Remove.
11832 * tree.def (CP_OFFSET_REF): Rename to OFFSET_REF.
11833 * expr.c (cplus_expand_expr): Cleanup callers of expand_expr.
11834 * init.c (expand_aggr_init_1): Likewise.
11835 (build_new): Likewise.
11836 * typeck.c (expand_target_expr): Likewise.
11837
11838 Fri May 31 14:22:08 1996 Jason Merrill <jason@yorick.cygnus.com>
11839
11840 * typeck.c (build_modify_expr): Don't use TREE_VALUE on a
11841 TARGET_EXPR.
11842
11843 Wed May 29 17:04:33 1996 Mike Stump <mrs@cygnus.com>
11844
11845 * cvt.c (build_up_reference): Redo how and when temporaries are
11846 created.
11847 * decl.c (grok_reference_init): Don't try and be smart about
11848 running cleanups.
11849
11850 Wed May 29 16:02:08 1996 Mike Stump <mrs@cygnus.com>
11851
11852 * cvt.c (build_up_reference): Add NULL_TREE to all calls to build
11853 (TARGET_EXPR...), now that it has 4 arguments.
11854 * tree.c (build_cplus_new): Likewise.
11855
11856 Thu May 23 16:40:30 1996 Jason Merrill <jason@yorick.cygnus.com>
11857
11858 * error.c (dump_expr, case CAST_EXPR): Handle T() properly.
11859
11860 * pt.c (instantiate_decl): Don't call push/pop_cp_function_context.
11861 * decl.c (struct saved_scope): Remove named_labels,
11862 {base,member}_init_list.
11863 (maybe_push_to_top_level): Don't set them. Call
11864 push_cp_function_context if appropriate.
11865 (pop_from_top_level): Likewise.
11866
11867 * method.c (do_build_assign_ref): Remove obsolete check of
11868 TYPE_HAS_ASSIGN_REF (basetype).
11869
11870 * decl.c (grokfndecl): Diagnose user definition of
11871 implicitly-declared methods.
11872
11873 Thu May 23 12:13:08 1996 Bob Manson <manson@charmed.cygnus.com>
11874
11875 * method.c (do_build_copy_constructor): Add code to give
11876 meaningful error messages instead of crashing.
11877 (do_build_assign_ref): Don't synthesize assignment operators for
11878 classes containing reference or const members.
11879
11880 * class.c (struct base_info): Remove cant_synth_copy_ctor
11881 and cant_synth_asn_ref.
11882 (finish_base_struct): Remove the code that tries to conditionalize
11883 synthesis of copy constructors & assignment operators based on
11884 access permissions. Instead, let it fail when it tries to
11885 synthesize the copy constructor. This will give meaningful error
11886 messages instead of silently generating code to perform a bitcopy.
11887
11888 Wed May 22 11:45:19 1996 Bob Manson <manson@charmed.cygnus.com>
11889
11890 * lex.c (real_yylex): Remove old-n-crufty #if 0 code for
11891 determining types for constant values.
11892
11893 * decl.c (struct named_label_list): Use instead of stuffing
11894 random items into a TREE_LIST node.
11895 (named_label_uses): Use the new struct.
11896 (poplevel): Likewise.
11897 (lookup_label): Likewise.
11898 (define_label): Add an error message to tell the user the line
11899 where the goto is located in addition to the destination of the
11900 goto.
11901 (init_decl_processing): Use NULL instead of NULL_TREE to initialize
11902 named_label_uses.
11903 (finish_function): Likewise.
11904
11905 (start_decl): Complain about defining a static data member
11906 in a different type from which it was declared.
11907
11908 Wed May 22 09:33:23 1996 Jason Merrill <jason@yorick.cygnus.com>
11909
11910 * cvt.c (build_expr_type_conversion): Adjust.
11911
11912 Tue May 21 11:21:56 1996 Jason Merrill <jason@yorick.cygnus.com>
11913
11914 * call.c (build_method_call): Always convert 'this' to the
11915 appropriate type.
11916
11917 * search.c (add_conversions): Put the conversion function in
11918 TREE_VALUE, the type in TREE_PURPOSE.
11919 * cvt.c (build_type_conversion): Adjust.
11920 * call.c (user_harshness): Adjust.
11921
11922 * method.c (emit_thunk): Call temporary_allocation and
11923 permanent_allocation around the ASM_OUTPUT_MI_THUNK case, too.
11924
11925 * tree.c (build_cplus_array_type): Handle tweaking of
11926 TYPE_MAIN_VARIANT here.
11927 * typeck.c (common_type): Not here.
11928
11929 * typeck.c (complete_type): Only try to complete an array type if
11930 it has a domain.
11931
11932 Mon May 20 14:55:59 1996 Jason Merrill <jason@yorick.cygnus.com>
11933
11934 * decl.c (grokvardecl): Call complete_type.
11935 (grokdeclarator): Call complete_type for PARM_DECLs.
11936
11937 Fri May 17 16:41:17 1996 Jason Merrill <jason@yorick.cygnus.com>
11938
11939 * pt.c (instantiate_class_template): Re-set
11940 CLASSTYPE_GOT_SEMICOLON after calling finish_struct_1.
11941
11942 Fri May 17 14:56:55 1996 Mike Stump <mrs@cygnus.com>
11943
11944 * cp-tree.h (cp_expand_decl_cleanup): Remove, the backend is now
11945 smart enough to do it right.
11946 * tree.c (cp_expand_decl_cleanup): Likewise.
11947 * decl.c (cp_finish_decl): Use expand_decl_cleanup instead of
11948 cp_expand_decl_cleanup.
11949 (store_parm_decls): Likewise.
11950 (hack_incomplete_structures): Likewise.
11951 * except.c (push_eh_cleanup): Likewise.
11952
11953 Fri May 17 13:13:51 1996 Mike Stump <mrs@cygnus.com>
11954
11955 * expr.c (expand_expr, cond UNSAVE_EXPR): Move from the C++
11956 frontend to the backend where it belongs.
11957 * tree.c (unsave_expr): Likewise.
11958 (unsave_expr_now): Likewise.
11959 * tree.def (UNSAVE_EXPR): Likewise.
11960 * cp-tree.h (unsave_expr): Likewise.
11961 (unsave_expr_now): Likewise.
11962
11963 Fri May 17 11:02:41 1996 Mike Stump <mrs@cygnus.com>
11964
11965 * init.c (emit_base_init): Make sure the partial EH cleanups live
11966 on the function_obstack.
11967
11968 Thu May 16 15:29:33 1996 Bob Manson <manson@charmed.cygnus.com>
11969
11970 * expr.c (do_case): Don't try to dereference null TREE_TYPEs
11971 when checking for pointer types.
11972
11973 Thu May 16 13:38:58 1996 Jason Merrill <jason@yorick.cygnus.com>
11974
11975 * pt.c (instantiate_class_template): Remove obsolete check for
11976 access declarations.
11977
11978 Thu May 16 13:34:15 1996 Mike Stump <mrs@cygnus.com>
11979
11980 * call.c (build_overload_call): Simplify calls to
11981 build_overload_call by removing last parameter.
11982 (build_method_call): Likewise.
11983 * cp-tree.h: Likewise.
11984 * method.c (build_opfncall): Likewise.
11985 * typeck.c (build_x_function_call): Likewise.
11986
11987 Thu May 16 13:15:43 1996 Mike Stump <mrs@cygnus.com>
11988
11989 * call.c (default_parm_conversions): Factor out common code.
11990 (build_method_call): Use it.
11991 (build_overload_call_real): Use it.
11992
11993 Wed May 15 14:46:14 1996 Mike Stump <mrs@cygnus.com>
11994
11995 * call.c (build_method_call): Allow implicit & on METHOD_TYPEs,
11996 but pedwarn as the code is bogus.
11997 * typeck.c (decay_conversion): Likewise.
11998 (build_function_call_real): Use build_addr_func instead of
11999 default_conversion. Don't allow pointer-to-method functions down
12000 here.
12001 (build_unary_op): Use real pointer-to-member functions instead of
12002 fake ones.
12003 (build_ptrmemfunc): Use build_addr_func instead of build_unary_op.
12004 (convert_for_assignment): Removed some obsolete code.
12005 * decl2.c (reparse_absdcl_as_expr): Pass current_class_ref to
12006 build_x_function_call instead of current_class_ptr. Only call
12007 digest_init once on an initializer, we do this just checking
12008 TREE_TYPE.
12009 (build_expr_from_tree): Pass current_class_ref to
12010 build_x_function_call instead of current_class_ptr.
12011 * init.c (build_member_call): Likewise.
12012 * pase.y: Likewise.
12013 * error.c (dump_expr): Handle OFFSET_REFs better.
12014 * pt.c (unify): Handle pointer-to-member functions better.
12015 * decl.c (finish_function): Clear out current_class_ref just like
12016 we do for current_class_ptr.
12017
12018 * typeck.c (get_delta_difference): Handle virtual bases better.
12019
12020 Tue May 14 16:37:37 1996 Jason Merrill <jason@yorick.cygnus.com>
12021
12022 * sig.c (build_signature_table_constructor): Use the delta for
12023 the original basetype for this virtual function with thunks.
12024 (build_signature_method_call): We still need to adjust 'this'
12025 with thunks.
12026
12027 Tue May 14 16:27:25 1996 Mike Stump <mrs@cygnus.com>
12028
12029 * call.c (build_addr_func): New routine. Used to get the `real'
12030 address of a function or a method. Needed to avoid getting a
12031 pointer-to-member function.
12032 (build_call): New routine to build CALL_EXPRs.
12033 (build_method_call): Use it.
12034 * cvt.c (convert_to_aggr): Likewise.
12035 * typeck.c (build_function_call_real): Likewise.
12036 * sig.c (build_signature_table_constructor): Use build_addr_func.
12037 * cp-tree.h (build_call, build_addr_func): Declare them.
12038
12039 Tue May 14 12:47:47 1996 Mike Stump <mrs@cygnus.com>
12040
12041 * cp-tree.h (LOOKUP_AGGR): Remove, unused.
12042 * parse.y: Remove uses of LOOKUP_AGGR.
12043
12044 Tue May 14 12:07:51 1996 Mike Stump <mrs@cygnus.com>
12045
12046 * *.[chy]: Rename current_class_decl to current_class_ptr, and
12047 C_C_D to current_class_ref.
12048
12049 Mon May 13 16:55:23 1996 Jason Merrill <jason@yorick.cygnus.com>
12050
12051 * call.c (convert_harshness): Tighten up pointer conversions.
12052
12053 Sat May 11 04:33:50 1996 Doug Evans <dje@canuck.cygnus.com>
12054
12055 * decl2.c (finish_vtable_vardecl): Surround DECL_ONE_ONLY with ifdef.
12056 (finish_file): Likewise.
12057
12058 Fri May 10 11:09:57 1996 Jason Merrill <jason@yorick.cygnus.com>
12059
12060 * cvt.c (convert_fn_ptr): We don't use thunks for pmfs.
12061
12062 * method.c (emit_thunk): Set flag_omit_frame_pointer in default
12063 code.
12064
12065 Thu May 9 18:18:30 1996 Jason Merrill <jason@yorick.cygnus.com>
12066
12067 * decl2.c: Turn on thunks by default where supported.
12068
12069 Tue May 7 20:39:57 1996 Mike Stump <mrs@cygnus.com>
12070
12071 * cp-tree.h (build_overload_call_maybe): Removed.
12072 * call.c (build_overload_call_real): Invert meaning of last arg to
12073 be require_complete.
12074 (build_overload_call): Likewise.
12075 * typeck.c (build_x_function_call): Use build_overload_call_real
12076 instead of build_overload_call_maybe.
12077
12078 Mon May 6 01:23:32 1996 Jason Merrill <jason@yorick.cygnus.com>
12079
12080 * decl2.c (finish_file): Don't try to emit functions that haven't
12081 been compiled.
12082
12083 Fri May 3 09:30:13 1996 Jason Merrill <jason@yorick.cygnus.com>
12084
12085 * decl2.c (finish_vtable_vardecl): Oops.
12086
12087 * decl.c (maybe_push_to_top_level): Do save previous_class_*.
12088 Also store the bindings from previous_class_values.
12089 (pop_from_top_level): Restore them.
12090
12091 Thu May 2 21:56:49 1996 Jason Merrill <jason@yorick.cygnus.com>
12092
12093 * decl2.c (finish_vtable_vardecl): Only write out vtable if its
12094 symbol has been referenced.
12095 (finish_file): Re-join synthesis/vtable loop with inline emission
12096 loop, disable inlining when an inline is output.
12097
12098 Thu May 2 17:20:02 1996 Mike Stump <mrs@cygnus.com>
12099
12100 * except.c (init_exception_processing): Setup saved_in_catch.
12101 (push_eh_cleanup): Reset __eh_in_catch.
12102 (expand_start_catch_block): Set __eh_in_catch.
12103
12104 Thu May 2 16:21:17 1996 Mike Stump <mrs@cygnus.com>
12105
12106 * except.c (push_eh_cleanup): Add tracking for whether or not we
12107 have an active exception object.
12108 (expand_builtin_throw): Use it to make sure a rethrow without an
12109 exception object is caught.
12110
12111 Thu May 2 11:26:41 1996 Jason Merrill <jason@yorick.cygnus.com>
12112
12113 * decl.c (maybe_push_to_top_level): Clear out class-level bindings
12114 cache.
12115
12116 Wed May 1 11:26:52 1996 Jason Merrill <jason@yorick.cygnus.com>
12117
12118 * decl2.c (finish_file): Also use sentries for vars with
12119 DECL_ONE_ONLY or DECL_WEAK set (should any such happen to be
12120 created).
12121
12122 * lex.c (handle_cp_pragma): Disable #pragma
12123 interface/implementation if SUPPORTS_ONE_ONLY > 1.
12124
12125 Tue Apr 30 11:25:46 1996 Jason Merrill <jason@yorick.cygnus.com>
12126
12127 * method.c (emit_thunk): Wrap default case in
12128 temporary/permanent_allocation.
12129
12130 * method.c (make_thunk): Use DECL_ONE_ONLY.
12131 (emit_thunk): Call assemble_end_function.
12132
12133 Mon Apr 29 15:38:29 1996 Jason Merrill <jason@yorick.cygnus.com>
12134
12135 * decl2.c (import_export_vtable): Use DECL_ONE_ONLY.
12136 (import_export_decl): Likewise.
12137 (finish_prevtable_vardecl): Disable vtable hack if
12138 SUPPORTS_ONE_ONLY > 1.
12139
12140 Mon Apr 29 14:32:47 1996 Mike Stump <mrs@cygnus.com>
12141
12142 * typeck.c (build_modify_expr): PREINCREMENT_EXPR and
12143 PREDECREMENT_EXPRs take two arguments, not one.
12144
12145 Mon Apr 29 00:27:53 1996 Jason Merrill <jason@yorick.cygnus.com>
12146
12147 * class.c (build_vtable_entry): Don't build thunks for abstract
12148 virtuals.
12149
12150 * lex.c (real_yylex): Fix handling of __PRETTY_FUNCTION__ like C
12151 frontend.
12152
12153 Sat Apr 27 16:45:35 1996 Jason Merrill <jason@yorick.cygnus.com>
12154
12155 * class.c (set_rtti_entry): Use size_zero_node.
12156 (build_vtable): Likewise.
12157
12158 Sat Apr 27 14:48:57 1996 Jason Merrill <jason@phydeaux.cygnus.com>
12159
12160 * class.c (finish_struct_1): Pass size_zero_node to set_rtti_entry.
12161 (prepare_fresh_vtable): Likewise.
12162
12163 Fri Apr 26 13:14:14 1996 Jason Merrill <jason@yorick.cygnus.com>
12164
12165 * method.c (emit_thunk): Call mark_used on the target function.
12166
12167 * call.c (build_method_call): Don't warn about pending templates.
12168
12169 Thu Apr 25 14:55:44 1996 Jason Merrill <jason@yorick.cygnus.com>
12170
12171 * decl2.c (finish_file): Fix list walking logic.
12172
12173 * typeck2.c (check_for_new_type): Only warn if -pedantic.
12174
12175 Wed Apr 24 15:41:15 1996 Bob Manson <manson@charmed.cygnus.com>
12176
12177 * class.c (finish_struct_1): Remove old code for
12178 dont_allow_type_definitions.
12179 * cp-tree.h: Likewise.
12180 * spew.c: Make sure cp-tree.h is included before parse.h, so the
12181 definition of flagged_type_tree is found before it is used.
12182 * lex.c: Likewise.
12183 * parse.y: Added the ftype member to the type union, and changed a
12184 number of rules to use it instead of ttype. Added calls to
12185 check_for_new_type() as appropriate.
12186 * typeck2.c (check_for_new_type): New function for checking
12187 if a newly defined type appears in the specified tree.
12188 * cp-tree.h: Add new type flagged_type_tree. Add a prototype
12189 for check_for_new_type().
12190
12191 Wed Apr 24 00:36:21 1996 Jason Merrill <jason@yorick.cygnus.com>
12192
12193 * decl2.c (finish_file): Only use a sentry if the decl is public.
12194
12195 * pt.c (tsubst_expr, DECL_STMT): If we don't have an initializer,
12196 don't pass LOOKUP_ONLYCONVERTING.
12197
12198 Tue Apr 23 17:18:47 1996 Bob Manson <manson@charmed.cygnus.com>
12199
12200 * typeck.c (common_type): Fix the ARRAY_TYPE case so it
12201 properly keeps track of const and volatile type modifiers.
12202
12203 Tue Apr 23 10:52:56 1996 Jason Merrill <jason@yorick.cygnus.com>
12204
12205 * tree.c (cp_tree_equal): C++ version of simple_cst_equal.
12206 * pt.c (comp_template_args): Use it.
12207
12208 * rtti.c (get_tinfo_fn, build_dynamic_cast, expand_*_desc): Call
12209 assemble_external for artificial function decls.
12210
12211 * decl.c (cp_finish_decl): Oops.
12212
12213 Mon Apr 22 17:28:27 1996 Jason Merrill <jason@yorick.cygnus.com>
12214
12215 * decl2.c (import_export_decl): Put static data member templates
12216 into common storage, or make them weak, depending on whether they
12217 are dynamically or statically initialized.
12218 (get_sentry): New function.
12219 (finish_file): Do import_export_decl for static data members before
12220 building the init/fini functions. Don't init/fini a variable that's
12221 EXTERNAL. Use a sentry for variables in common. Fix mismatching
12222 push/pop_temp_slots.
12223 * decl.c (cp_finish_decl): If DECL_NOT_REALLY_EXTERN, do the
12224 expand_static_init thang.
12225 * method.c (get_id_2): New function.
12226
12227 Mon Apr 22 15:32:45 1996 Bob Manson <manson@charmed.cygnus.com>
12228
12229 * parse.y (empty_parms): Make sure we use C++-style prototypes
12230 when we're declaring member functions.
12231
12232 Sun Apr 21 10:08:22 1996 Jason Merrill <jason@yorick.cygnus.com>
12233
12234 * Makefile.in (CONFLICTS): 16 s/r conflicts.
12235 * parse.y (self_template_type): New nonterminal.
12236
12237 Thu Apr 18 08:56:54 1996 Jason Merrill <jason@yorick.cygnus.com>
12238
12239 * decl.c (make_typename_type): Handle getting a TYPE_DECL for a
12240 name.
12241 * parse.y (base_class.1): Allow 'typename foo::bar'.
12242
12243 * lex.c (check_newline): Remove #pragma code that plays with the
12244 input stream, since we now deal with tokens. Clear nextchar when
12245 we're done.
12246 (handle_cp_pragma): Use real_yylex.
12247 (handle_sysv_pragma): Don't do skipline here. Only call real_yylex
12248 in one place.
12249
12250 * lex.c (check_for_missing_semicolon): Handle SELFNAME.
12251
12252 * lex.c (handle_cp_pragma): Fix "#pragma implementation".
12253
12254 Wed Apr 17 16:51:33 1996 Jason Merrill <jason@yorick.cygnus.com>
12255
12256 * parse.y: New token SELFNAME for potential constructor.
12257 * spew.c (yylex): Handle it.
12258 * lex.c (identifier_type): Produce it.
12259
12260 * parse.y (complete_type_name): In :: case, don't push class binding.
12261 (complex_type_name): Likewise.
12262
12263 Wed Apr 17 15:02:40 1996 Mike Stump <mrs@cygnus.com>
12264
12265 * typeck.c (build_reinterpret_cast): Handle pointer to member
12266 functions.
12267
12268 Wed Apr 17 12:28:26 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
12269
12270 * lex.c (handle_cp_pragma): New function, with decl, doing the cc1plus
12271 pragmas.
12272 (check_newline): Put the vtable/unit/implementation/interface pragma
12273 code into handle_cp_pragma, replacing it with a call.
12274 (handle_sysv_pragma): Give int return type, and take FINPUT and TOKEN
12275 args. Get the next token after handling the pragma token.
12276
12277 Wed Apr 17 10:28:34 1996 Jason Merrill <jason@yorick.cygnus.com>
12278
12279 * cvt.c (cp_convert_to_pointer): Avoid doing base analysis on pmfs.
12280 (convert_to_pointer_force): Likewise.
12281
12282 * init.c (build_new): Fix array new without -fcheck-new.
12283
12284 Tue Apr 16 13:44:58 1996 Jason Merrill <jason@yorick.cygnus.com>
12285
12286 * cp-tree.h, call.c, class.c, decl.c, parse.y, pt.c, rtti.c,
12287 tree.c: Lose TYPE_NESTED_NAME.
12288
12289 * parse.y (nested_name_specifier_1): Don't treat non-identifiers
12290 as identifiers.
12291
12292 * tree.def: Add VEC_INIT_EXPR.
12293 * expr.c (cplus_expand_expr): Handle it.
12294 * init.c (build_new): Use it instead of the RTL_EXPR nastiness and
12295 the extra file-scope symbol nastiness.
12296
12297 Mon Apr 15 16:21:29 1996 Jason Merrill <jason@yorick.cygnus.com>
12298
12299 * method.c (make_thunk): Thunks are static.
12300 (emit_thunk): Use ASM_OUTPUT_MI_THUNK if it's defined.
12301
12302 * decl2.c (mark_vtable_entries): Emit thunks as needed.
12303 (finish_file): Don't emit them here.
12304
12305 Sun Apr 14 11:34:39 1996 Jason Merrill <jason@yorick.cygnus.com>
12306
12307 * rtti.c (build_dynamic_cast): Handle null pointers.
12308 (ifnonnull): New function.
12309
12310 Fri Apr 12 09:08:27 1996 Bob Manson <manson@charmed.cygnus.com>
12311
12312 * call.c (build_method_call): Remember the original basetype we
12313 were called with. Give an error message instead of trying
12314 (incorrectly) to call a non-static member function through a
12315 non-inherited class.
12316
12317 * search.c (expand_upcast_fixups): Mark the new fixup as
12318 DECL_ARTIFICIAL.
12319
12320 Thu Apr 11 03:57:09 1996 Jason Merrill <jason@yorick.cygnus.com>
12321
12322 * init.c (build_new): Use a TARGET_EXPR for alloc_expr.
12323
12324 * class.c (set_rtti_entry): Fix for thunks.
12325
12326 * decl2.c (import_export_decl): Still emit typeinfo fns for
12327 cv-variants of builtin types.
12328
12329 * rtti.c (expand_class_desc): Set up base_info_type_node here.
12330 (init_rtti_processing): Instead of here.
12331
12332 Wed Apr 10 14:17:13 1996 Jason Merrill <jason@yorick.cygnus.com>
12333
12334 * rtti.c (init_rtti_processing): Do init regardless of -frtti.
12335 (build_typeid): Only complain about taking dynamic typeid without
12336 -frtti.
12337
12338 * decl2.c: flag_rtti defaults to 1.
12339
12340 * rtti.c (get_tinfo_var): The general class case is now smaller.
12341 (init_rtti_processing): Pack the latter three fields of base_info
12342 into 32 bits.
12343
12344 Wed Apr 10 13:50:14 1996 Mike Stump <mrs@cygnus.com>
12345
12346 * init.c (expand_member_init): Don't dump if name is NULL_TREE.
12347
12348 Wed Apr 10 12:56:02 1996 Mike Stump <mrs@cygnus.com>
12349
12350 * search.c (make_memoized_table_entry): Undefer the pop, if necessary.
12351 (push_memoized_context): Split out code to undefer pop_type_level to
12352 (clear_memoized_cache): here.
12353 (pop_memoized_context): We can only handle one layer of deferral of
12354 pop_type_level so clear the cache, if there was a previous level.
12355
12356 Tue Apr 9 23:06:09 1996 Jason Merrill <jason@yorick.cygnus.com>
12357
12358 * rtti.c (init_rtti_processing): Build up base_info_type_node.
12359 (expand_class_desc): Use one pointer to an array of base_info
12360 structs, passed using a CONSTRUCTOR.
12361
12362 Tue Apr 9 14:20:57 1996 Mike Stump <mrs@cygnus.com>
12363
12364 * class.c (build_vbase_path): Remove block extern for
12365 flag_assume_nonnull_objects here.
12366 (build_vfn_ref): Split out functionality into build_vtbl_ref.
12367 (build_vtbl_ref): New routine.
12368 (build_vtable): Set up rtti info here.
12369 (add_virtual_function): Note in CLASSTYPE_RTTI the best
12370 place where we can get the rtti pointers from to avoid having to
12371 search around for a place.
12372 (finish_base_struct): Likewise.
12373 (finish_struct_1): Likewise. Never create totally new vtables
12374 with totally new vtable pointers for rtti. Disable code to layout
12375 vtable pointers better until we want to break binary
12376 compatibility.
12377 * rtti.c (build_headof_sub): New routine to convert down to a
12378 sub-object that has an rtti pointer in the vtable.
12379 (build_headof): Use it. Also, use build_vtbl_ref now to be more
12380 maintainable.
12381 (build_dynamic_cast): Make sure we have saved it, if we need to.
12382 * search.c (dfs_init_vbase_pointers): Disable code that deals with
12383 a more efficient vtable layout, enable later.
12384 * call.c (flag_assume_nonnull_objects): Moved declaration to
12385 * cp-tree.h: here. Declare build_vtbl_ref.
12386 * pt.c (instantiate_class_template): Use NULL_TREE instead of 0 in
12387 function calls that want a tree.
12388
12389 Tue Apr 9 12:10:26 1996 Jason Merrill <jason@yorick.cygnus.com>
12390
12391 * rtti.c (build_dynamic_cast): Handle downcasting to X* given
12392 other X subobjects in the most derived type. Ack.
12393
12394 * rtti.c (build_dynamic_cast): No need to strip cv-quals here,
12395 get_typeid will do it for us.
12396 (get_typeid_1): Break out call-building for expand_*_desc to use.
12397 (get_typeid): Call it.
12398 (expand_*_desc): Likewise.
12399 * decl.c (init_decl_processing): Don't set TYPE_BUILT_IN on char *
12400 and void *.
12401 (init_decl_processing): Lose builtin_type_tdescs lossage.
12402 * decl2.c (finish_vtable_vardecl): Remove obsolete code.
12403
12404 Mon Apr 8 17:23:23 1996 Bob Manson <manson@charmed.cygnus.com>
12405
12406 * pt.c (tsubst): When calling set_nested_typename, use
12407 TYPE_NESTED_NAME (current_class_type) instead of
12408 current_class_name.
12409
12410 * decl.c (pushdecl): Likewise.
12411 (pushdecl_class_level): Likewise.
12412 (grokdeclarator): Use NULL_TREE instead of 0 in the call to
12413 set_nested_typename.
12414
12415 Sun Apr 7 10:44:31 1996 Jason Merrill <jason@yorick.cygnus.com>
12416
12417 * rtti.c (synthesize_tinfo_fn): Handle arrays.
12418
12419 * cp-tree.h (DECL_REALLY_EXTERN): New macro.
12420
12421 Sat Apr 6 13:56:27 1996 Jason Merrill <jason@yorick.cygnus.com>
12422
12423 * rtti.c (throw_bad_cast): Use entry point __throw_bad_cast.
12424 (init_rtti_processing): Lose bad_cast_type.
12425 (build_dynamic_cast): Use throw_bad_cast.
12426
12427 * rtti.c (synthesize_tinfo_fn): Handle enums and pmfs.
12428
12429 * decl2.c (finish_file): Don't synthesize artificial functions
12430 that are external and not inline.
12431
12432 * rtti.c (get_tinfo_fn): If at_eof, call import_export_decl.
12433
12434 * decl2.c (finish_file): Handle having new inlines added to
12435 saved_inlines by synthesis.
12436
12437 * rtti.c (get_bad_cast_node): Don't require <typeinfo>.
12438
12439 Fri Apr 5 17:02:09 1996 Jason Merrill <jason@yorick.cygnus.com>
12440
12441 RTTI rewrite to initialize nodes as needed, not require that
12442 users #include <typeinfo>, complete functionality and reduce wasted
12443 space.
12444 * rtti.c (init_rtti_processing): New fn.
12445 (build_typeid): The vtable entry is now a function.
12446 (get_tinfo_var): New fn.
12447 (get_tinfo_fn): Likewise.
12448 (get_typeid): Use it.
12449 (build_dynamic_cast): Declare and use entry point __dynamic_cast.
12450 (build_*_desc): Rename to expand_*_desc and rewrite to use entry
12451 points __rtti_*.
12452 (add_uninstantiated_desc, get_def_to_follow, build_t_desc): Lose.
12453 (synthesize_tinfo_fn): New fn.
12454 * method.c (build_t_desc_overload): Lose.
12455 (build_overload_with_type): More generic.
12456 * decl.c (init_decl_processing): Call init_rtti_processing.
12457 * class.c (set_rtti_entry): Use get_tinfo_fn.
12458 * decl2.c (mark_vtable_entries): Mark the rtti function.
12459 (finish_prevtable_vardecl): Don't build_t_desc.
12460 (import_export_decl): Handle tinfo functions.
12461 (finish_file): Likewise.
12462 * typeck.c (inline_conversion): New fn.
12463 (build_function_call_real): Use it.
12464 * cp-tree.h: Add decls.
12465
12466 * method.c (hack_identifier): Also convert component_refs from
12467 references.
12468
12469 * lex.c (cons_up_default_function): Use the type, not the name, in
12470 declspecs.
12471
12472 * decl2.c (import_export_vtable): Fix weak vtables.
12473
12474 Fri Apr 5 13:30:17 1996 Bob Manson <manson@charmed.cygnus.com>
12475
12476 * search.c (get_base_distance_recursive): Fix access checks for
12477 protected bases.
12478
12479 Fri Apr 5 11:02:06 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
12480
12481 * call.c (unary_complex_lvalue): Delete unneeded decl, it's in
12482 cp-tree.h.
12483 (convert_harshness): Add prototypes wrapped by PROTO.
12484 * decl2.c (grok_function_init): Likewise.
12485 (do_toplevel_using_decl): Change to void return type.
12486 * class.c (build_vtable_entry): Remove decl of make_thunk.
12487 (merge_overrides): Fix order of arg definitions.
12488 (finish_vtbls): Likewise.
12489 (fixup_vtable_deltas): Likewise.
12490 (modify_all_direct_vtables): Likewise.
12491 (modify_all_indirect_vtables): Likewise.
12492 * search.c (get_base_distance_recursive): Likewise.
12493 (get_abstract_virtuals_1): Likewise.
12494 (fixup_virtual_upcast_offsets): Likewise.
12495 (lookup_fnfields_1): Add prototypes wrapped by PROTO.
12496 * init.c (perform_member_init): Fix order of arg definitions.
12497 (expand_aggr_init_1): Add prototypes wrapped by PROTO.
12498 * cp-tree.h (make_thunk): Add decl.
12499 (overload_template_name, push_template_decl): Add decls.
12500 (do_toplevel_using_decl): Change to void return type.
12501 (vec_binfo_member): Add decl.
12502
12503 Thu Apr 4 13:33:10 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
12504
12505 * typeck.c (mark_addressable, convert_for_assignment,
12506 convert_for_initialization, pointer_int_sum, pointer_diff,
12507 unary_complex_lvalue): Add prototypes wrapped by PROTO.
12508 (convert_sequence): #if 0 fn decl, since definition also is.
12509
12510 Thu Apr 4 11:00:53 1996 Mike Stump <mrs@cygnus.com>
12511
12512 * rtti.c (build_dynamic_cast): Make sure we strip qualifiers on
12513 cast to pointer types for type searching.
12514
12515 Wed Apr 3 17:10:57 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
12516
12517 * typeck.c (get_delta_difference): Use cp_error, not error, in the
12518 case where BINFO == 0.
12519
12520 Wed Apr 3 12:01:02 1996 Mike Stump <mrs@cygnus.com>
12521
12522 * call.c (build_method_call): Fix wording of error messages so
12523 constructors come out right.
12524
12525 Tue Apr 2 16:06:59 1996 Bob Manson <manson@charmed.cygnus.com>
12526
12527 * decl.c (push_overloaded_decl): Don't warn about hidden
12528 constructors when both the type and the function are declared
12529 in a system header file.
12530
12531 Mon Apr 1 09:03:13 1996 Bob Manson <manson@charmed.cygnus.com>
12532
12533 * class.c (finish_struct_1): Propagate the TYPE_PACKED
12534 flag for the type to the type's fields.
12535
12536 Sat Mar 30 12:14:33 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
12537
12538 * parse.y (complex_parmlist, ELLIPSES): Take out ARM-based warning.
12539
12540 Fri Mar 29 15:51:36 1996 Bob Manson <manson@charmed.cygnus.com>
12541
12542 * class.c (base_info, finish_base_struct): Replace
12543 needs_virtual_dtor with base_has_virtual.
12544
12545 (finish_struct_1): Remove the old code that tried to make default
12546 destructors virtual. Use base_has_virtual when checking if we need
12547 to add a vtable entry for the rtti code.
12548
12549 Fri Mar 29 14:02:36 1996 Jason Merrill <jason@yorick.cygnus.com>
12550
12551 * pt.c (push_template_decl): Complain about template decl with
12552 inappropriate declaration.
12553
12554 Fri Mar 29 12:15:35 1996 Bob Manson <manson@charmed.cygnus.com>
12555
12556 * typeck.c (build_x_unary_op): Remove bogus check for taking
12557 the address of a member function.
12558
12559 Fri Mar 29 11:56:02 1996 Jason Merrill <jason@yorick.cygnus.com>
12560
12561 * parse.y (constructor_declarator): Only push the class if
12562 we are not already in the class.
12563
12564 Fri Mar 29 09:41:02 1996 Jeffrey A. Law <law@cygnus.com>
12565
12566 * method.c (emit_thunk): Remove current_call_is_indirect nonsense.
12567 Add additional argument to INIT_CUMULATIVE_ARGS.
12568
12569 Thu Mar 28 16:41:39 1996 Jason Merrill <jason@yorick.cygnus.com>
12570
12571 * decl.c (shadow_tag): Fix error about anon union with methods.
12572
12573 * parse.y (self_reference): Only generate a self-reference if this
12574 is a non-template class.
12575 (opt.component_decl_list): Only use it if it was generated.
12576
12577 * parse.y (component_decl_1): Use constructor_declarator.
12578 (fn.def2): Likewise.
12579 (notype_component_declarator0): Likewise.
12580
12581 Thu Mar 28 15:11:35 1996 Bob Manson <manson@charmed.cygnus.com>
12582
12583 * typeck.c (build_x_unary_op): Add checks for taking the address
12584 of a TARGET_EXPR or of a member function, and give appropriate
12585 warnings.
12586
12587 Thu Mar 28 14:49:26 1996 Jason Merrill <jason@yorick.cygnus.com>
12588
12589 * pt.c (process_template_parm): Allow template type parms to be
12590 used as types for template const parms.
12591
12592 Wed Mar 27 15:51:19 1996 Mike Stump <mrs@cygnus.com>
12593
12594 * init.c (expand_vec_init): Ensure the eh cleanups are on the
12595 function_obstack.
12596
12597 Wed Mar 27 10:14:30 1996 Jason Merrill <jason@yorick.cygnus.com>
12598
12599 * decl.c (lookup_name_real): Be even more picky about the
12600 ambiguous lookup warning.
12601 (grokdeclarator): Tweak SCOPE_REF constructor declarators here.
12602 * parse.y (constructor_declarator): Rather than here.
12603
12604 * parse.y (constructor_declarator): New nonterminal.
12605 (fn.def1): Use it.
12606 (explicit_instantiation): Likewise.
12607
12608 Tue Mar 26 13:41:33 1996 Jason Merrill <jason@yorick.cygnus.com>
12609
12610 Add implicit declaration of class name at class scope.
12611 * decl.c (lookup_name_real): Restrict pedwarn about ambiguous lookup.
12612 * parse.y (self_reference): New nonterminal.
12613 (opt.component_decl_list): Use it.
12614 (fn.def1): Add nested_name_specifier type_name cases.
12615 * class.c (build_self_reference): New function.
12616 (finish_struct): Handle access_default later, move self-reference
12617 decl to the end.
12618 * pt.c (lookup_template_class): Handle getting a TYPE_DECL.
12619 * cp-tree.h: Adjust.
12620
12621 * pt.c (do_function_instantiation): Separate handling of member
12622 functions and non-member functions properly.
12623
12624 Mon Mar 25 14:23:22 1996 Jason Merrill <jason@yorick.cygnus.com>
12625
12626 * pt.c (process_template_parm): Improve error for 'volatile class K'.
12627
12628 * class.c (finish_struct_1): Check the right slot for destructors.
12629
12630 * decl.c (start_enum): Complain about enum templates.
12631
12632 Mon Mar 25 13:25:31 1996 Mike Stump <mrs@cygnus.com>
12633
12634 * init.c (resolve_offset_ref): Offset pointers to member data by one.
12635 * typeck.c (unary_complex_lvalue): Likewise.
12636
12637 Mon Mar 25 13:30:42 1996 Bob Manson <manson@charmed.cygnus.com>
12638
12639 * typeck.c (c_expand_return): Check for a returned local
12640 array name, similar to the check for an ADDR_EXPR.
12641
12642 Mon Mar 25 13:07:19 1996 Jason Merrill <jason@yorick.cygnus.com>
12643
12644 * decl.c (cp_finish_decl): Don't build cleanups for static
12645 variables here.
12646
12647 Fri Mar 22 17:57:55 1996 Mike Stump <mrs@cygnus.com>
12648
12649 * typeck.c (build_modify_expr): Fix error messages to be more
12650 accurate.
12651 * cp-tree.h (assop_as_string): Parallel to op_as_string, but for
12652 assignment operators.
12653 * error.c (assop_as_string): Likewise. Add support for `%Q' for
12654 assignment operators.
12655
12656 Fri Mar 22 13:48:29 1996 Jason Merrill <jason@yorick.cygnus.com>
12657
12658 * decl.c (grokdeclarator): Call bad_specifiers for typedefs. Also
12659 give an error if initialized. Pedwarn about nested type with the
12660 same name as its enclosing class.
12661
12662 * pt.c (tsubst, case TYPE_DECL): Set DECL_CONTEXT.
12663
12664 * typeck.c (require_complete_type): Be sure to instantiate the
12665 MAIN_VARIANT of the type.
12666
12667 * decl2.c (finish_file): Instantiate pending templates before
12668 processing static constructors and destructors.
12669
12670 * pt.c (instantiate_decl): Don't instantiate functions at toplevel
12671 unless at_eof.
12672
12673 Fri Mar 22 09:30:17 1996 Bob Manson <manson@beauty.cygnus.com>
12674
12675 * decl2.c (delete_sanity): If error_mark_node is passed
12676 in as an expression, quit while we're ahead.
12677
12678 * decl.c (grokdeclarator): Give an error message if `friend'
12679 is combined with any storage class specifiers.
12680
12681 Wed Mar 20 14:51:55 1996 Jason Merrill <jason@yorick.cygnus.com>
12682
12683 * parse.y (named_complex_class_head_sans_basetype): Don't crash on
12684 definition of nonexistent nested type.
12685
12686 * error.c (dump_decl, case TYPE_DECL): Fix decision for whether or
12687 not to say 'typedef'.
12688
12689 Wed Mar 20 00:11:47 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
12690
12691 * cp-tree.h (struct lang_type): Make search_slot a tree, not a char*.
12692 * search.c (dfs_walk, dfs_init_vbase_pointers,
12693 expand_upcast_fixups): Remove cast of CLASSTYPE_SEARCH_SLOT.
12694 (dfs_find_vbases): Remove cast for CLASSTYPE_SEARCH_SLOT init.
12695
12696 Tue Mar 19 17:56:03 1996 Jason Merrill <jason@yorick.cygnus.com>
12697
12698 * except.c (build_throw): Support minimal parse.
12699 * pt.c (tsubst_copy): Support THROW_EXPR.
12700 * decl2.c (build_expr_from_tree): Likewise.
12701
12702 * pt.c (mangle_class_name_for_template): Always allocate
12703 scratch_firstobj.
12704
12705 Tue Mar 19 16:34:31 1996 Bob Manson <manson@beauty.cygnus.com>
12706
12707 * cvt.c (cp_convert_to_pointer): Give an appropriate error
12708 when trying to cast from an incomplete type.
12709
12710 Tue Mar 19 16:00:33 1996 Jason Merrill <jason@yorick.cygnus.com>
12711
12712 * pt.c (instantiate_class_template): Don't bother setting up
12713 CLASSTYPE_TAGS explicitly, as the nested types will add
12714 themselves.
12715
12716 Tue Mar 19 15:48:43 1996 Bob Manson <manson@beauty.cygnus.com>
12717
12718 * decl.c (shadow_tag): Remove old error check for usage of
12719 an enum without a previous declaration.
12720 (xref_tag): Add error message about usage of enums without a
12721 previous declaration.
12722
12723 Tue Mar 19 09:21:35 1996 Jason Merrill <jason@yorick.cygnus.com>
12724
12725 * lex.c (do_identifier): Only do name consistency check if we're
12726 parsing.
12727
12728 * pt.c (push_template_decl): Don't crash if we get a member defn
12729 that doesn't match.
12730
12731 * decl.c (xref_tag_from_type): New function to do an xref without
12732 always having to figure out code_type_node.
12733 * cp-tree.h: Declare it.
12734 * pt.c (instantiate_class_template): Use it for friend classes.
12735 (lookup_template_class): Use it.
12736
12737 * typeck2.c (build_functional_cast): Pull out a single parm before
12738 passing it to build_c_cast.
12739
12740 Tue Mar 19 09:07:15 1996 Bob Manson <manson@beauty.cygnus.com>
12741
12742 * expr.c (do_case): Give an error message if a pointer is
12743 given as a case value.
12744
12745 Mon Mar 18 21:57:54 1996 Jason Merrill <jason@yorick.cygnus.com>
12746
12747 * typeck.c (build_c_cast): Don't pull single TEMPLATE_DECL out of
12748 an overload list.
12749
12750 * lex.c (cons_up_default_function): Really, now, interface hackery
12751 does not apply to synthesized methods.
12752
12753 Mon Mar 18 18:20:57 1996 Mike Stump <mrs@cygnus.com>
12754
12755 * call.c (build_method_call): Ctors and dtors now have special names
12756 with respect to lookups.
12757 * class.c (add_method): Likewise.
12758 (grow_method): Likewise.
12759 (finish_struct_methods): Likewise.
12760 (warn_hidden): Likewise.
12761 (finish_struct_1): Likewise.
12762 * cvt.c (convert_to_reference): Likewise.
12763 (convert_to_aggr): Likewise.
12764 (cp_convert): Likewise.
12765 * decl2.c (check_classfn): Likewise.
12766 * init.c (expand_member_init): Likewise.
12767 (expand_default_init): Likewise.
12768 (expand_aggr_init_1): Likewise.
12769 (build_offset_ref): Likewise.
12770 (build_new): Likewise.
12771 (build_delete): Likewise.
12772 * lex.c (do_inline_function_hair): Likewise.
12773 * search.c (lookup_field_1): Likewise.
12774 (lookup_fnfields_here): Likewise.
12775 (lookup_field): Likewise.
12776 (lookup_fnfields): Likewise.
12777 (get_virtual_destructor): Likewise.
12778 (dfs_debug_mark): Likewise.
12779 (dfs_pushdecls): Likewise.
12780 (dfs_compress_decls): Likewise.
12781 * tree.c (layout_basetypes): Likewise.
12782 * typeck.c (build_component_ref): Likewise.
12783 (build_x_function_call): Likewise.
12784 (build_modify_expr): Likewise.
12785 (convert_for_initialization): Likewise.
12786 (build_functional_cast): Likewise.
12787 * cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Likewise.
12788 (CTOR_NAME): New.
12789 (DTOR_NAME): New.
12790 * decl.c (ctor_identifier): New.
12791 (dtor_identifier): New.
12792 (init_decl_processing): Set them.
12793
12794 Mon Mar 18 18:00:51 1996 Mike Stump <mrs@cygnus.com>
12795
12796 * typeck.c (build_component_ref): Don't get confused by fields whose
12797 context has no type name, like pointer to member functions.
12798
12799 Mon Mar 18 13:19:03 1996 Jason Merrill <jason@yorick.cygnus.com>
12800
12801 * decl.c (grokdeclarator): Handle typedef without declarator.
12802
12803 * pt.c (tsubst): Handle SCOPE_REF in declarator.
12804
12805 * parse.y (bad_parm): Catch another case of missing `typename'.
12806
12807 * lex.c (yyprint): Handle TYPE_DECLs.
12808
12809 * decl.c (start_function): Don't try to be clever.
12810
12811 * lex.c: Lose compiler_error_with_decl.
12812 * typeck2.c: Lose error_with_aggr_type.
12813 (incomplete_type_error): Use cp_* instead of old functions.
12814 (readonly_error): Likewise.
12815 * typeck.c (convert_arguments): Likewise.
12816 * search.c (lookup_nested_field): Likewise.
12817 * method.c (make_thunk): Likewise.
12818 * decl.c (grokparms): Likewise.
12819 * cp-tree.h: Update.
12820
12821 * tree.c (min_tree_cons): Call copy_to_permanent for the purpose
12822 and value.
12823
12824 Mon Mar 18 11:25:52 1996 Bob Manson <manson@beauty.cygnus.com>
12825
12826 * method.c (build_opfncall): When deleting a pointer to an
12827 array, build a new pointer to the tree past any ARRAY_TYPE
12828 nodes.
12829
12830 Mon Mar 18 10:11:46 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
12831
12832 * decl.c (lookup_name_real): Initialize local var TYPE to NULL_TREE.
12833
12834 Fri Mar 15 11:03:57 1996 Jason Merrill <jason@yorick.cygnus.com>
12835
12836 * pt.c (instantiate_decl): Only call import_export_decl if at_eof
12837 and ! DECL_INLINE.
12838
12839 * decl.c (finish_function): Don't set nested based on
12840 hack_decl_function_context.
12841 * parse.y (function_try_block): Check for nested function.
12842 (pending_inlines): Likewise.
12843
12844 * decl2.c (build_expr_from_tree): If a unary op already has a
12845 type, just return it.
12846
12847 * decl2.c (finish_prevtable_vardecl): Use ADJUST_VTABLE_LINKAGE.
12848
12849 * decl2.c (walk_vtables): vardecl_fn returns int; return 1 if it does.
12850 (finish_file): Check the return value of walk_vtables.
12851 (finish_prevtable_vardecl): Return int.
12852 (finish_vtable_vardecl): Likewise.
12853 (prune_vtable_vardecl): Likewise.
12854 * lex.c (set_vardecl_interface_info): Likewise.
12855 * cp-tree.h: Adjust return types.
12856
12857 * class.c (delete_duplicate_fields_1): Don't complain about
12858 duplicate nested types if they're the same type.
12859 (finish_struct): Remove check for duplicate.
12860 * decl2.c (grokfield): Don't check for typedef of anonymous type.
12861
12862 Thu Mar 14 10:00:19 1996 Jason Merrill <jason@yorick.cygnus.com>
12863
12864 * cp-tree.h: Lose SIGNATURE_GROKKING_TYPEDEF.
12865
12866 * decl.c (grokdeclarator): Lose special handling of class-level
12867 typedef. Lose SIGNATURE_GROKKING_TYPEDEF. Set
12868 SIGNATURE_HAS_OPAQUE_TYPEDECLS later.
12869
12870 * cvt.c (convert_pointer_to_real): Retain cv-quals in conversion.
12871
12872 * pt.c (tsubst_copy): Strip cv-quals from destructor name types.
12873
12874 * search.c (compute_access): Fix handling of anonymous union
12875 members.
12876 * class.c (finish_struct_anon): Propagate TREE_{PRIVATE,PROTECTED}
12877 from anonymous unions to their members.
12878
12879 * typeck.c (build_x_function_call): For static member functions,
12880 hand off to build_member_call.
12881
12882 Wed Mar 13 14:03:34 1996 Jason Merrill <jason@yorick.cygnus.com>
12883
12884 * typeck.c (build_component_ref): Handle OFFSET_REFs.
12885
12886 * init.c (expand_vec_init): Fix init == 0 case.
12887
12888 Tue Mar 12 14:36:02 1996 Jason Merrill <jason@yorick.cygnus.com>
12889
12890 * init.c (build_new): Pedwarn about init and array new.
12891 (expand_vec_init): Handle lists, use convert_for_initialization.
12892
12893 * typeck.c (convert_for_initialization): Pass LOOKUP_NO_CONVERSION
12894 when converting to an aggregate type.
12895 * cvt.c (cp_convert): Pass it through.
12896
12897 * typeck.c (build_conditional_expr): Handle user-defined
12898 conversions to slightly different types.
12899
12900 * decl.c (grokdeclarator): Force an array type in a parm to be
12901 permanent.
12902
12903 * decl2.c (do_using_directive): Sorry.
12904 (do_namespace_alias): Likewise.
12905 * lex.c (real_yylex): Warn about using the `namespace' keyword.
12906
12907 Sun Mar 10 22:26:09 1996 Jason Merrill <jason@yorick.cygnus.com>
12908
12909 * parse.y (datadef): Move call to note_list_got_semicolon up.
12910
12911 Fri Mar 8 11:47:26 1996 Mike Stump <mrs@cygnus.com>
12912
12913 * tree.c (unsave_expr): Don't unsave, UNSAVE_EXPRs.
12914
12915 Fri Mar 8 11:29:06 1996 Mike Stump <mrs@cygnus.com>
12916
12917 * decl.c (cp_finish_decl): The exception regions have to be
12918 nested, not overlapping. We start the exception region for a
12919 decl, after it has been fully built, and all temporaries for it
12920 have been cleaned up.
12921
12922 Thu Mar 7 17:46:06 1996 Mike Stump <mrs@cygnus.com>
12923
12924 * tree.c (vec_binfo_member): Don't core dump if we have no bases.
12925
12926 Thu Mar 7 14:11:49 1996 Jason Merrill <jason@yorick.cygnus.com>
12927
12928 * tree.def: Add RETURN_INIT.
12929 * pt.c (instantiate_decl): Handle RETURN_INIT.
12930 * decl.c (store_return_init): Handle minimal_parse_mode.
12931
12932 * tree.c (cp_build_type_variant): Just return an error_mark_node.
12933 * decl.c (make_typename_type): Don't try to get the file and line
12934 of an identifier.
12935 * typeck.c (comptypes): Handle TYPENAME_TYPE.
12936
12937 Wed Mar 6 18:47:50 1996 Per Bothner <bothner@kalessin.cygnus.com>
12938
12939 * decl.c (poplevel): Make sure we clear out and restore old local
12940 non-VAR_DECL values by default when they go out of scope.
12941
12942 Wed Mar 6 09:57:36 1996 Jason Merrill <jason@yorick.cygnus.com>
12943
12944 * method.c (build_overload_value): Use DECL_ASSEMBLER_NAME in
12945 referring to addresses of variables and functions.
12946
12947 * error.c (dump_expr): Support SIZEOF_EXPR.
12948
12949 * init.c (do_friend): Use the return value of check_classfn.
12950
12951 * typeck.c (convert_arguments): Call complete_type.
12952
12953 * method.c (hack_identifier): After giving an error, set value to
12954 error_mark_node.
12955
12956 Tue Mar 5 16:00:15 1996 Jason Merrill <jason@yorick.cygnus.com>
12957
12958 * tree.c (hack_decl_function_context): Kludge around DECL_CONTEXT
12959 lossage for local classes.
12960 * cp-tree.h: Declare it.
12961 * decl.c (lookup_name_real): Evil, painful hack for local classes.
12962 (grokfndecl): Set DECL_CLASS_CONTEXT and DECL_NO_STATIC_CHAIN here.
12963 Use hack_decl_function_context.
12964 (grokdeclarator): Don't set DECL_NO_STATIC_CHAIN here.
12965 (start_function): Use hack_decl_function_context.
12966 (finish_function): Likewise.
12967 * method.c (synthesize_method): Likewise.
12968 * lex.c (process_next_inline): Likewise.
12969 (do_pending_inlines): Likewise.
12970 * decl2.c (finish_file): Unset DECL_STATIC_FUNCTION_P when we're
12971 done with it.
12972
12973 Mon Mar 4 22:38:39 1996 Gerald Baumgartner <gb@alexander.cs.purdue.edu>
12974
12975 * sig.c (build_signature_pointer_or_reference_type): Align
12976 signature pointers/references on 8-byte boundaries so they can be
12977 grabbed 2 words at a time on a Sparc.
12978
12979 Tue Mar 5 10:21:01 1996 Jason Merrill <jason@yorick.cygnus.com>
12980
12981 * method.c (hack_identifier): Requiring a static chain is now a
12982 hard error.
12983 * decl.c (grokdeclarator): Set DECL_NO_STATIC_CHAIN on nested
12984 functions.
12985
12986 Mon Mar 4 20:03:33 1996 Jason Merrill <jason@yorick.cygnus.com>
12987
12988 * init.c (build_offset_ref): Call complete_type.
12989
12990 * decl.c (pop_from_top_level): Always pop previous_class_type.
12991
12992 * parse.y: Handle multiple decls in a for-init-statement.
12993 * pt.c (tsubst_expr): Likewise.
12994
12995 * pt.c (tsubst): Use tsubst_expr for the second operand of an
12996 ARRAY_REF.
12997
12998 * decl.c (maybe_push_to_top_level): Don't save previous_class_type.
12999 (poplevel_class): Set it here.
13000 (pop_from_top_level): Pop it here if we're returning to class scope.
13001 * class.c (pushclass): Don't set it here.
13002
13003 * decl.c (maybe_push_to_top_level): Save current_template_parms,
13004 and clear it if !pseudo.
13005 (pop_from_top_level): Restore it.
13006
13007 * decl2.c (finish_file): Push the dummy each time we walk the list
13008 of vtables.
13009
13010 * error.c (dump_expr): Support LOOKUP_EXPR and actually do
13011 something for CAST_EXPR.
13012
13013 Mon Feb 19 14:49:18 1996 Rusty Russell <rusty@adelaide.maptek.com.au>
13014
13015 * cvt.c (cp_convert): Warn about implicit conversion of the
13016 address of a function to bool, as it is always true.
13017
13018 Fri Feb 23 23:06:01 1996 Rusty Russell <rusty@adelaide.maptek.com.au>
13019
13020 * typeck.c (c_expand_return): Fix warning for local externs returned.
13021
13022 Mon Mar 4 15:03:11 1996 Jason Merrill <jason@yorick.cygnus.com>
13023
13024 * tree.c (mapcar): Propagate const and volatile properly.
13025
13026 * typeck.c (complete_type): Be sure to instantiate the
13027 MAIN_VARIANT of the type.
13028
13029 * method.c (synthesize_method): Class interface hackery does not
13030 apply to synthesized methods.
13031
13032 Mon Mar 4 14:05:23 1996 Jason Merrill <jason@yorick.cygnus.com>
13033
13034 * pt.c (comp_template_args): Use comptypes rather than just
13035 checking for TEMPLATE_TYPE_PARM equivalence.
13036
13037 * typeck.c (build_x_function_call): Call complete_type before
13038 checking TYPE_OVERLOADS_CALL_EXPR.
13039
13040 Mon Mar 4 18:48:30 1996 Manfred Hollstein <manfred@lts.sel.alcatel.de>
13041
13042 * g++.c (main): Check also for new define ALT_LIBM.
13043
13044 Fri Mar 1 13:09:33 1996 Jason Merrill <jason@yorick.cygnus.com>
13045
13046 * pt.c (instantiate_class_template): If we don't have a pattern
13047 yet, that's OK.
13048 (coerce_template_parms): If we see a local class, bail.
13049
13050 * decl.c (grok_reference_init): Make sure there's a type before
13051 checking its code.
13052
13053 * pt.c (do_function_instantiation): Avoid crashing on invalid decls.
13054 (push_template_decl): Likewise.
13055
13056 * parse.y (named_class_head): Set
13057 CLASSTYPE_TEMPLATE_SPECIALIZATION here if we have basetypes.
13058
13059 * decl.c (xref_tag): Diagnose redeclaration of template
13060 type-parameter name.
13061
13062 * error.c (dump_type): Handle anonymous template type parms.
13063
13064 * pt.c (instantiate_template): Use TYPE_MAIN_DECL instead of
13065 TYPE_STUB_DECL.
13066 (coerce_template_parms): Likewise.
13067
13068 Thu Feb 29 16:26:01 1996 Mike Stump <mrs@cygnus.com>
13069
13070 * class.c (instantiate_type, case {ARRAY,INDIRECT}_REF,
13071 case ADDR_EXPR): Don't modify rhs if a subinstantiation fails.
13072
13073 Thu Feb 29 08:20:25 1996 Jason Merrill <jason@yorick.cygnus.com>
13074
13075 * pt.c (instantiate_template): Take the MAIN_VARIANT of the type
13076 before trying to get its STUB_DECL.
13077 (coerce_template_parms): Likewise.
13078
13079 * parse.y (template_type_parm): If they didn't use 'class',
13080 pretend they did after giving an error.
13081
13082 * pt.c (coerce_template_parms): Diagnose use of local class.
13083
13084 * decl.c (grok_reference_init): Use instantiate_type.
13085
13086 * error.c (dump_expr): Handle TEMPLATE_DECLs.
13087
13088 * parse.y (named_class_head): Diagnose mismatching types and tags.
13089
13090 * decl.c (pushdecl): Type decls and class templates clash with
13091 artificial type decls, not hide them.
13092
13093 * decl.c (redeclaration_error_message): Diagnose redefinition of
13094 templates properly.
13095 (duplicate_decls): Diagnose disallowed overloads for template
13096 functions, too.
13097
13098 * decl.c (start_decl): Call complete_type before checking for a
13099 destructor.
13100
13101 * pt.c (tsubst): Use tsubst_expr on the elts of a VEC.
13102
13103 * decl.c (xref_tag): A TEMPLATE_TYPE_PARM is a match.
13104
13105 Wed Feb 28 09:28:44 1996 Jason Merrill <jason@yorick.cygnus.com>
13106
13107 * decl.c (grok_op_properties): Don't check for operator++(int) in
13108 a template.
13109
13110 * tree.c (perm_manip): Return a copy of variable and function
13111 decls with external linkage.
13112
13113 * tree.def: Change some of the min tree codes to type "1".
13114 * pt.c (uses_template_parms): Handle 'e's, return 1 for LOOKUP_EXPRs.
13115 * method.c (build_overload_int): Emit something arbitrary for
13116 anything but an INTEGER_CST if we're in a template.
13117
13118 * decl.c (cp_finish_decl): Call complete_type before deciding
13119 whether or not to lay out the decl.
13120
13121 * lex.c (do_identifier): Check for DECL_INITIAL before using it.
13122
13123 Tue Feb 27 16:35:32 1996 Jason Merrill <jason@yorick.cygnus.com>
13124
13125 * typeck2.c (build_x_arrow): Call complete_type.
13126
13127 * pt.c (add_pending_template): Broken out.
13128 (lookup_template_class): If -fexternal-templates, call it for all
13129 the methods of implemented types.
13130 (instantiate_class_template): Instead of instantiating them here.
13131 (instantiate_decl): Handle -fexternal-templates earlier.
13132
13133 Tue Feb 27 15:51:32 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13134
13135 * search.c, lex.c, decl.c, class.c, cp-tree.h: Don't wrap the
13136 memoized lookup stuff inside GATHER_STATISTICS.
13137
13138 Tue Feb 27 10:38:08 1996 Jason Merrill <jason@yorick.cygnus.com>
13139
13140 * decl.c (start_decl): Complain about array of incomplete type
13141 here.
13142 (grokdeclarator): Not here.
13143
13144 * parse.y (template_parm): Expand full_parm inline so we can set
13145 the rule's precedence.
13146
13147 * pt.c (tsubst_expr): If we're in a template, just do tsubst_copy.
13148 (tsubst): tsubst_expr the DECL_INITIAL of FIELD_DECLs.
13149 * decl2.c (grokbitfield): Don't check for integer constant here.
13150 * class.c (finish_struct_1): Check here.
13151
13152 * decl.c (define_label): Make the min decl go on permanent_obstack.
13153
13154 * pt.c (unify): Don't handle CONST_DECLs.
13155 (uses_template_parms): Don't check DECL_INITIAL on a CONST_DECL.
13156 (tsubst_copy): Likewise.
13157
13158 * lex.c (do_identifier): Do pull the DECL_INITIAL out of a
13159 CONST_DECL for a template parm.
13160
13161 Mon Feb 26 12:48:18 1996 Jason Merrill <jason@yorick.cygnus.com>
13162
13163 * decl.c (grokdeclarator): Complain about array of incomplete type
13164 here.
13165 (start_decl_1): Not here.
13166
13167 * pt.c (tsubst): Handle pointer-to-function declarators.
13168
13169 * method.c (hack_identifier): If pedantic, diagnose local class
13170 methods that require a static chain.
13171
13172 * decl.c (grok_op_properties): No longer static.
13173 * cp-tree.h: Declare it.
13174 * pt.c (tsubst): Call it for operators.
13175 Use tsubst_copy for TREE_VECs.
13176
13177 * parse.y (template_arg): The expr has precedence like '>'.
13178
13179 Fri Feb 23 14:51:52 1996 Jason Merrill <jason@yorick.cygnus.com>
13180
13181 * pt.c (coerce_template_parms): Don't coerce an expression using
13182 template parms.
13183 (uses_template_parms): Also check DECL_INITIAL in CONST_DECLs.
13184 (tsubst): Don't use build_index_2_type if the max_value uses template
13185 parms.
13186 * method.c (build_overload_int): Emit something arbitrary for an
13187 expression using template parms.
13188
13189 * parse.y (template_close_bracket): New non-terminal to catch use
13190 of '>>' instead of '> >' in template class names.
13191 (template_type): Use it.
13192 * Makefile.in (CONFLICTS): Causes one more r/r conflict.
13193
13194 * tree.def: Add CAST_EXPR.
13195 * typeck2.c (build_functional_cast): Use CAST_EXPR instead of
13196 CONVERT_EXPR for minimal_parse_mode.
13197 * typeck.c (build_c_cast): Likewise.
13198 * pt.c (tsubst_copy): Likewise.
13199 * decl2.c (build_expr_from_tree): Likewise.
13200 * error.c (dump_expr): Likewise.
13201
13202 Fri Feb 23 10:36:46 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13203
13204 * except.c (SetTerminate, SetUnexpected): Put back global vars.
13205 (init_exception_processing): Put back decl/init of
13206 set_unexpected_fndecl and set_terminate_fndecl, needed to get the
13207 fns from libstdc++.
13208
13209 * decl.c (struct binding_level): Delete ACCEPT_ANY bitfield.
13210 (declare_uninstantiated_type_level, uninstantiated_type_level_p):
13211 Delete unused fns.
13212 * cp-tree.h (declare_uninstantiated_type_level,
13213 uninstantiated_type_level_p): Delete prototypes.
13214
13215 Thu Feb 22 19:36:15 1996 Jason Merrill <jason@yorick.cygnus.com>
13216
13217 * pt.c (tsubst_expr): Add default return.
13218
13219 Thu Feb 22 16:47:24 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13220
13221 * error.c (fndecl_as_string): Delete unused arg CNAME.
13222 * sig.c (build_signature_table_constructor,
13223 build_signature_method_call): Fix calls.
13224
13225 * class.c (the_null_vtable_entry): Delete var definition.
13226 (init_class_processing): Delete tree the_null_vtable_entry init.
13227 * decl.c (no_print_{functions, builtins}): Declare as static.
13228 (__tp_desc_type_node): #if 0 var definition.
13229 (init_type_desc): #if 0 init of __tp_desc_type_node.
13230 (vb_off_identifier): Move var decl into init_decl_processing.
13231 (current_function_assigns_this): Declare as static.
13232 (int_ftype_ptr_ptr_int, void_ftype_ptr_int_int): Delete var decls.
13233 (init_decl_processing): Delete init of void_ftype_ptr_ptr_int.
13234 Move decls of string_ftype_ptr_ptr and int_ftype_string_string here.
13235 * decl2.c (delete_sanity): Delete definition/mod of local var ELT_SIZE.
13236 * init.c (BI_header_type, BI_header_size): Declare as static.
13237 * pt.c (template_classes): Delete unused var.
13238 (add_pending_template): Delete decl for non-existent fn.
13239 (lookup_template_class): Delete vars CODE and TAG_CODE.
13240 (instantiate_template): Delete unused var TARGS.
13241 * cp-tree.h (vb_off_identifier, current_function_assigns_this):
13242 Delete decls.
13243 (__tp_desc_type_node): #if 0 var decl.
13244 (fndecl_as_string): Fix prototype.
13245
13246 Thu Feb 22 15:56:19 1996 Jason Merrill <jason@yorick.cygnus.com>
13247
13248 * tree.def: Add GOTO_STMT.
13249 * pt.c (tsubst_expr): Support goto and labels.
13250 * decl.c (define_label): Support minimal parsing.
13251 * parse.y (simple_stmt): Likewise.
13252
13253 Thu Feb 22 15:30:12 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13254
13255 * xref.c (GNU_xref_member): Only define/set var I if
13256 XREF_SHORT_MEMBER_NAMES is defined, to match when it's actually
13257 used.
13258 (GNU_xref_end_scope): Delete unused fifth arg TRNS.
13259 (GNU_xref_end): Fix call.
13260 * decl.c (poplevel, poplevel_class, finish_method): Fix calls.
13261 * cp-tree.h (GNU_xref_end_scope): Fix prototype.
13262
13263 * tree.c (build_exception_variant): Delete unused vars I, A, T,
13264 T2, and CNAME.
13265 (layout_vbasetypes): Delete unused var NONVIRTUAL_VAR_SIZE.
13266 (mapcar): Delete unused var CODE.
13267 (build_cplus_new): Delete unused arg WITH_CLEANUP_P.
13268 (break_out_cleanups): Fix call.
13269 (bot_manip): Likewise.
13270 * call.c (build_method_call): Likewise.
13271 * cvt.c (build_up_reference, convert_to_reference, cp_convert):
13272 Likewise.
13273 * typeck.c (unary_complex_lvalue, build_modify_expr,
13274 convert_for_initialization): Likewise.
13275 * typeck2.c (build_functional_cast): Likewise.
13276 * cp-tree.h (build_cplus_new): Fix prototype.
13277
13278 * repo.c (open_repo_file): Delete unused var Q.
13279 (repo_compile_flags, repo_template_declared,
13280 repo_template_defined, repo_class_defined, repo_inline_used,
13281 repo_vtable_used, repo_tinfo_used): #if 0 unused fns.
13282 (repo_get_id, repo_vtable_used): Declare as static.
13283 * cp-tree.h (mark_{decl,class}_instantiated, finish_repo): Add
13284 prototypes.
13285
13286 Thu Feb 22 14:53:35 1996 Jason Merrill <jason@yorick.cygnus.com>
13287
13288 * parse.y (pending_inlines): Add function_try_block case.
13289
13290 * pt.c (unify): Fix for template const parms.
13291
13292 Thu Feb 22 13:24:15 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13293
13294 * lex.c (extract_interface_info): Delete forward decl.
13295 (default_copy_constructor_body, default_assign_ref_body): Delete
13296 decls for non-existent functions.
13297 (synth_firstobj, inline_text_firstobjs): Delete unused vars.
13298 (init_lex): Delete setting them.
13299 (cons_up_default_function): Delete unused vars FUNC_BUF,
13300 FUNC_LEN, and COMPLEX. Delete code setting COMPLEX. Delete old
13301 #if 0'd synth code.
13302 (toplevel, expression_obstack): Delete unused extern decls.
13303 (tree_node_kind): Delete unused enum.
13304 (tree_node_counts, tree_node_sizes): Wrap with #ifdef
13305 GATHER_STATISTICS.
13306 (tree_node_kind_names): Delete unused extern decl.
13307 (synth_obstack): Delete unused var.
13308 (init_lex): Don't set it.
13309 (init_parse): Add decl before use.
13310 (reduce_count): Only define #ifdef GATHER_STATISTICS && REDUCE_LENGTH.
13311 (current_unit_{name, language}): Delete unused vars.
13312 (check_newline): Don't bother setting them, just accept the #pragma.
13313 * cp-tree.h (init_repo, peek_yylex): Add prototypes.
13314 (current_unit_{name, language}): Delete decls.
13315
13316 * search.c: Wrap all of the memoized functions, macros, and
13317 variables inside #ifdef GATHER_STATISTICS.
13318 (lookup_field, lookup_fnfields): Likewise.
13319 (init_search_processing): Likewise.
13320 (reinit_search_statistics): Wrap whole function.
13321 * lex.c (reinit_lang_specific): Wrap call to reinit_search_statistics.
13322
13323 * decl.c (finish_function): Only call pop_memoized_context if
13324 GATHER_STATISTICS is defined.
13325 (start_function): Likewise for push_memoized_context.
13326 * class.c (pushclass, popclass): Likewise.
13327
13328 * cp-tree.h (CLASSTYPE_MTABLE_ENTRY): Move definition from here...
13329 * search.c (CLASSTYPE_MTABLE_ENTRY): ... to here.
13330
13331 * cvt.c (cp_convert): Delete unused local var FORM.
13332 * cp-tree.h (can_convert, can_convert_arg, real_lvalue_p): Add
13333 prototypes.
13334
13335 Thu Feb 22 13:19:44 1996 Jason Merrill <jason@yorick.cygnus.com>
13336
13337 * pt.c (do_poplevel): Oops; really return what we get from
13338 poplevel this time.
13339
13340 Thu Feb 22 11:41:44 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13341
13342 * cp-tree.h (is_aggr_type): Add prototype.
13343
13344 * cp-tree.h ({push,pop}_cp_function_context): Add decls.
13345 * method.c ({push,pop}_cp_function_context): Delete decls.
13346 * except.c (start_eh_unwinder, end_eh_unwinder): Declare as void.
13347 (SetUnexpected, SetTerminate): Delete unused vars.
13348 (init_exception_processing): Don't set SetUnexpected or
13349 SetTerminate. Don't set SET_UNEXPECTED_FNDECL or SET_TERMINATE_FNDECL.
13350 (output_exception_table_entry): Delete unused array LABEL.
13351 (expand_internal_throw): Delete unused var PARAMS.
13352 (expand_start_catch_block): Delete unused var CLEANUP.
13353 (emit_exception_table): Delete unused var EH_NODE_DECL.
13354 (expand_builtin_throw): Delete unused vars UNWIND_AND_THROW and
13355 GOTO_UNWIND_AND_THROW. Don't set them.
13356 (end_eh_unwinder): Add top decl.
13357 (pop_rtl_from_perm): Delete unused decl of PERMANENT_OBSTACK.
13358 (exception_section, push_rtl_perm, do_function_call,
13359 lang_interim_eh, push_eh_cleanup, eh_outer_context,
13360 expand_end_eh_spec, end_eh_unwinder): Declare as static.
13361 (saved_pc, saved_throw_type, saved_throw_value, saved_cleanup,
13362 throw_used): Likewise.
13363 * cp-tree.h (expand_end_eh_spec): Delete prototype.
13364
13365 * search.c (dfs_mark, dfs_mark_vtable_path,
13366 dfs_unmark_vtable_path, dfs_mark_new_vtable,
13367 dfs_unmark_new_vtable, dfs_clear_search_slot,
13368 dfs_search_slot_nonempty_p, bfs_markedp, bfs_unmarkedp,
13369 bfs_marked_vtable_pathp, bfs_unmarked_vtable_pathp,
13370 bfs_marked_new_vtablep, bfs_unmarked_new_vtablep): #if 0 unused
13371 functions.
13372 (n_fields_searched, n_calls_lookup_field, n_calls_lookup_field_1,
13373 n_calls_lookup_fnfields, n_calls_lookup_fnfields_1,
13374 n_calls_get_base_type, n_outer_fields_searched, n_contexts_saved):
13375 Only define #ifdef GATHER_STATISTICS.
13376 (reinit_search_statistics): Only init some vars if GATHER_STATISTICS
13377 is defined.
13378 (vbase_decl): Delete var definition.
13379 (init_search): Delete old decl.
13380 (init_vbase_pointers): Delete building of VBASE_DECL, since it's
13381 never actually used.
13382 (expand_indirect_vtbls_init): Delete init of VBASE_DECL.
13383 (get_base_distance_recursive): Delete unused fourth arg
13384 BASETYPE_PATH. Fix call .
13385 (get_base_distance): Fix call.
13386 (push_class_decls): Delete unused var ID.
13387 (make_memoized_table_entry): Declare as static.
13388 (breadth_first_search): Declare as static.
13389 (tree_has_any_destructor_p): Declare as static.
13390 (pop_class_decls): Delete unused arg pop_class_decls.
13391 * class.c (popclass): Fix call to pop_class_decls.
13392 * cp-tree.h (make_memoized_table_entry, breadth_first_search,
13393 tree_has_any_destructor_p): Delete prototypes.
13394
13395 * rtti.c (build_ptmf_desc): Delete unused arg TYPE.
13396 (build_t_desc): Fix call. Delete unused vars ELEMS and TT.
13397 (build_dynamic_cast): Delete unused local vars TMP1 and RETVAL.
13398 (build_user_desc): Delete unused var T.
13399 (build_class_desc): Delete unused vars T and OFF.
13400 (build_t_desc): Delete unused var NAME_STRING.
13401 (build_headof): Make static.
13402 (get_bad_cast_node): Likewise.
13403 (get_def_to_follow): Likewise.
13404 * cp-tree.h (init_type_desc): Add prototype.
13405 (build_headof): Remove prototype.
13406
13407 Thu Feb 22 00:54:22 1996 Jason Merrill <jason@yorick.cygnus.com>
13408
13409 * pt.c (tsubst): Only look for matching decls at file scope for
13410 non-member functions.
13411
13412 * call.c (build_scoped_method_call): Handle scoped destructor
13413 calls in templates.
13414
13415 * decl.c (*_top_level): Also save previous_class_values.
13416
13417 * pt.c (tsubst_expr): Support do {} while loops.
13418 * parse.y (simple_stmt): Likewise.
13419 * tree.def: Likewise.
13420
13421 * method.c (build_overload_identifier): For a class nested in a
13422 template class, don't mangle in the template parms from our
13423 context.
13424
13425 * lex.c, cp-tree.h: Remove support for template instantiations in
13426 the pending_inlines code.
13427 * pt.c: Remove dead functions and unused arguments.
13428 (uses_template_parms): TYPENAME_TYPEs always use template parms.
13429 * parse.y: Stop passing anything to end_template_decl.
13430 * tree.c (print_lang_statistics): Only print tinst info #ifdef
13431 GATHER_STATISTICS.
13432
13433 Wed Feb 21 16:57:33 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13434
13435 * init.c (expand_recursive_init{,_1}): Delete decls.
13436 (sort_member_init): Delete unused var INIT.
13437 (emit_base_init): Delete unused var X.
13438 (build_offset_ref): Delete unused var CNAME.
13439 (sort_member_init): Delete unused var FIELDS_TO_UNMARK.
13440 (emit_base_init): Delete unused local var BASE. Delete extern
13441 decl of IN_CHARGE_IDENTIFIER.
13442 (build_delete): Delete unused local var VIRTUAL_SIZE.
13443
13444 * init.c (build_vec_delete): Delete unused third arg ELT_SIZE.
13445 (build_delete): Fix call.
13446 * decl2.c (delete_sanity): Likewise.
13447 * cp-tree.h (build_vec_delete): Update prototype.
13448
13449 * typeck.c (common_base_type): Delete unused var TMP.
13450 (build_binary_op): Delete local var ARGS_SAVE.
13451 (build_array_ref): Delete unused var ITYPE.
13452 (c_expand_return): Delete unused var USE_TEMP.
13453
13454 * typeck.c (compexcepttypes): Delete unused arg STRICT.
13455 (comptypes): Fix calls.
13456 * decl.c (duplicate_decls): Likewise.
13457 * cp-tree.h (compexcepttypes): Delete extra arg.
13458
13459 * decl2.c (check_classfn): Delete unused second arg CNAME.
13460 * decl.c (start_decl, grokfndecl): Fix calls.
13461 * init.c (do_friend): Likewise.
13462 * cp-tree.h (check_classfn): Update prototype.
13463
13464 * cp-tree.h (signature_error, import_export_vtable,
13465 append_signature_fields, id_in_current_class, mark_used,
13466 copy_assignment_arg_p): Add decls.
13467 * decl2.c (mark_used): Delete decl.
13468
13469 * class.c (n_*): Wrap with #ifdef GATHER_STATISTICS.
13470
13471 * class.c (get_vtable_entry): Diable unused function.
13472 (doing_hard_virtuals): Delete unused static global var.
13473 (finish_struct_1): Don't init DOING_HARD_VIRTUALS.
13474 (prepare_fresh_vtable): Delete unused vars PATH and RESULT.
13475 (overrides): Delete unused vars RETTYPE and BASE_RETTYPE.
13476 (modify_one_vtable): Delete unused var OLD_RTTI.
13477 (finish_struct_anon): Delete unused vars OFFSET and X.
13478 (finish_struct_bits): Delete unused var METHOD_VEC.
13479 (get_basefndecls): Delete unused var PURPOSE. Delete unused
13480 for-scope local variable METHODS.
13481
13482 * call.c (user_harshness): Delete unused/unneeded arg PARM.
13483 (ideal_candidate): Delete unused args BASETYPE and PARMS.
13484 (build_method_call): Delete unused args passed into ideal_candidate.
13485 (build_overload_call_real): Likewise. Delete unused var OVERLOAD_NAME.
13486 * cp-tree.h (synthesize_method): Add decl.
13487
13488 * decl.c (note_level_for_for): Give void return type.
13489 (pushdecl_nonclass_level): Likewise.
13490 (finish_function): Delete unused vars VFIELDS and ALLOCATED_THIS.
13491 (poplevel): Delete unused var IMPLICIT_TRY_BLOCK.
13492 (suspend_binding_level): Delete unused var LEVEL.
13493 (duplicate_decls): Delete unused var CTYPE.
13494 (duplicate_decls): Delete unused var PREVIOUS_C_DECL.
13495 (init_decl_processing): Delete unused vars FLOAT_ENDLINK and
13496 PTR_ENDLINK.
13497 (grokdeclarator): Delete unused var C.
13498 (grokdeclarator): Delete unused var SIZE_VARIES.
13499 (grokparms): Delete unused var SAW_VOID.
13500 (start_function): Delete unused var OLDDECL.
13501 (cplus_expand_expr_stmt): Delete unused var
13502 REMOVE_IMPLICIT_IMMEDIATELY.
13503
13504 * cp-tree.h (pushdecl_nonclass_level): Fix prototype.
13505
13506 * Makefile.in (CONFLICTS): Update to 12 shift/reduce.
13507
13508 Wed Feb 21 00:06:17 1996 Jason Merrill <jason@yorick.cygnus.com>
13509
13510 * tree.c (build_min): Set TREE_COMPLEXITY to lineno.
13511 (build_min_nt): Likewise.
13512 * pt.c (do_pushlevel): Emit line note.
13513 (do_poplevel): Return what we get from poplevel.
13514 (tsubst_expr): Set lineno from TREE_COMPLEXITY in stmt nodes.
13515 * parse.y: Use do_pushlevel and do_poplevel.
13516 * cp-tree.h: Declare do_poplevel.
13517
13518 * cp-tree.h: Declare at_eof.
13519 * decl.c (cp_finish_decl): Pass it to rest_of_decl_compilation.
13520 * decl2.c (import_export_decl): Renamed from import_export_inline.
13521 (finish_file): Call it to do interface handling for statics.
13522 * pt.c (tsubst_copy): Call mark_used on variables and functions
13523 used here.
13524
13525 * decl2.c (finish_file): Don't emit statics we can't generate.
13526 * pt.c (instantiate_decl): Don't set interface on instantiations
13527 we can't generate.
13528
13529 * cp-tree.h (struct tinst_level): Change 'classname' to 'decl'.
13530 * tree.c (print_lang_statistics): Print max template depth.
13531 * pt.c (push_tinst_level): Dump entire instantiation context.
13532 (instantiate_class_template): Use it and pop_tinst_level.
13533 (instantiate_decl): Likewise.
13534
13535 * call.c class.c cp-tree.h decl.c decl2.c error.c lex.c method.c
13536 pt.c ptree.c tree.def: Remove all traces of UNINSTANTIATED_P_TYPE.
13537
13538 Tue Feb 20 18:21:51 1996 Jason Merrill <jason@yorick.cygnus.com>
13539
13540 * call.c class.c cp-tree.h cvt.c decl.c decl2.c error.c expr.c
13541 init.c lex.c method.c parse.y pt.c repo.c search.c spew.c tree.c
13542 tree.def typeck.c typeck2.c xref.c: Massive, systemic changes for
13543 the new template implementation.
13544
13545 Tue Feb 20 17:14:29 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13546
13547 * decl2.c (check_cp_case_value): Use STRIP_TYPE_NOPS.
13548
13549 Thu Feb 15 18:44:42 1996 Mike Stump <mrs@cygnus.com>
13550
13551 * decl.c (cp_finish_decl): Delay emitting the debug information for
13552 a typedef that has been installed as the canonical typedef, if the
13553 type has not yet been defined.
13554
13555 Thu Feb 15 09:39:08 1996 Jason Merrill <jason@yorick.cygnus.com>
13556
13557 * decl2.c (grokfield): Still call pop_nested_class for access decls.
13558
13559 Wed Feb 14 17:30:04 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13560
13561 * decl.c (lookup_label): Call label_rtx.
13562
13563 * decl.c (make_binding_level): New function.
13564 (pushlevel, pushlevel_class): Call it instead of explicit
13565 duplicate calls to xmalloc.
13566
13567 * decl.c (init_decl_processing): Delete useless build_pointer_type
13568 call.
13569
13570 * decl.c (float_ftype_float, ldouble_ftype_ldouble): Add definitions.
13571 (sizet_ftype_string): Delete variable.
13572 (init_decl_processing): Add built-in functions fabsf, fabsl,
13573 sqrtf, sqrtl, sinf, sin, sinl, cosf, cos, cosl. New local
13574 variable strlen_ftype, used for strlen.
13575
13576 Wed Feb 14 16:21:25 1996 Jason Merrill <jason@yorick.cygnus.com>
13577
13578 * decl.c (push_to_top_level): Start from current_binding_level
13579 again for now; the stl hacks depend on g++ being broken in this
13580 way, and it'll be fixed in the template rewrite.
13581
13582 * tree.def: Add USING_DECL.
13583 * decl2.c (do_class_using_decl): Implement.
13584 (grokfield): Pass access decls off to do_class_using_decl instead of
13585 grokdeclarator.
13586 * error.c (dump_decl): Handle USING_DECLs.
13587 * decl.c (grokdeclarator): Remove code for handling access decls.
13588 * class.c (finish_struct_1): Adjust accordingly, treat using-decls
13589 as access decls for now.
13590 (finish_struct): Don't check USING_DECLs for other uses of the name.
13591
13592 * search.c (get_matching_virtual): Use cp_error_at.
13593
13594 Wed Feb 14 10:36:58 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13595
13596 * typeck.c (comptypes): Default COMP_TYPE_ATTRIBUTES to 1, to
13597 match c-typeck.c.
13598 (self_promoting_args_p): Move the check that TYPE is non-nil
13599 before trying to look at its main variant.
13600 (unsigned_type, signed_type): Add checking of DI/SI/HI/QI nodes.
13601
13602 * cp-tree.h (DECL_WAITING_FRIENDS, SET_DECL_WAITING_FRIENDS):
13603 Delete macros.
13604 * init.c (xref_friend, embrace_waiting_friends): Delete functions.
13605 (do_friend): Delete call to xref_friend.
13606 * class.c (finish_struct_1): Delete call to embrace_waiting_friends.
13607
13608 * typeck.c (convert_sequence): #if 0 unused function.
13609
13610 * cp-tree.h (DECL_IN_MEMORY_P): New macro w/ the check that used to
13611 be in decl_in_memory_p.
13612 (decl_in_memory_p): Delete decl.
13613 * expr.c (decl_in_memory_p): Delete fn.
13614 * typeck.c (mark_addressable): Use DECL_IN_MEMORY_P.
13615
13616 * decl.c (cp_finish_decl): Use DECL_IN_MEMORY_P.
13617
13618 Tue Feb 13 12:51:21 1996 Jason Merrill <jason@yorick.cygnus.com>
13619
13620 * class.c (finish_struct_1): Check for a pure-specifier on a
13621 non-virtual function here.
13622
13623 * decl2.c (grok_function_init): Don't check whether the function
13624 is virtual here.
13625 (grokfield): Don't call check_for_override here.
13626
13627 * decl.c (push_to_top_level): Start from inner_binding_level,
13628 check class_shadowed in class levels.
13629
13630 Mon Feb 12 17:46:59 1996 Mike Stump <mrs@cygnus.com>
13631
13632 * decl.c (resume_level): Ignore things that don't have names, instead
13633 of core dumping.
13634
13635 Mon Feb 12 15:47:44 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13636
13637 * decl2.c (grokfield): Set DECL_VINDEX properly for FUNCTION_DECLs.
13638
13639 Sat Feb 10 17:59:45 1996 Jason Merrill <jason@yorick.cygnus.com>
13640
13641 * class.c (finish_struct_1): Set DECL_VINDEX properly on a
13642 synthesized dtor.
13643
13644 * parse.y (complete_type_name): Bind global_scope earlier.
13645 (complex_type_name): Likewise.
13646 (qualified_type_name): Remove.
13647
13648 Thu Feb 8 15:15:14 1996 Jason Merrill <jason@yorick.cygnus.com>
13649
13650 * decl.c (grokfndecl): Move code that looks for virtuals in base
13651 classes...
13652 * class.c (check_for_override): ... to a new function.
13653 (finish_struct_1): Call it.
13654
13655 * cp-tree.h: Declare warn_sign_compare.
13656
13657 * typeck.c (build_binary_op_nodefault): Check warn_sign_compare
13658 rather than extra_warnings to decide whether to warn about
13659 comparison of signed and unsigned.
13660
13661 * decl2.c (lang_decode_option): Handle warn_sign_compare. -Wall
13662 implies -Wsign-compare. -Wall doesn't imply -W.
13663
13664 Wed Feb 7 15:27:57 1996 Mike Stump <mrs@cygnus.com>
13665
13666 * typeck.c (build_component_ref): Fix to handle anon unions in base
13667 classes as well.
13668
13669 Wed Feb 7 14:29:12 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13670
13671 * class.c (resolves_to_fixed_type_p): Delete code dealing with
13672 a WITH_CLEANUP_EXPR, since we don't generate them any more.
13673 * cvt.c (build_up_reference): Likewise.
13674 * decl.c (grok_reference_init): Likewise.
13675 (cp_finish_decl): Likewise.
13676 * error.c (dump_expr): Likewise.
13677 * tree.c (real_lvalue_p): Likewise.
13678 (lvalue_p): Likewise.
13679 (build_cplus_new): Likewise.
13680 (unsave_expr_now): Likewise.
13681 * typeck.c (unary_complex_lvalue, build_modify_expr,
13682 c_expand_return): Likewise.
13683
13684 Tue Feb 6 13:39:22 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13685
13686 Make the C++ front-end pay attention to attributes for structures.
13687 * class.c (finish_struct): New argument ATTRIBUTES, passed down into
13688 finish_struct_1.
13689 (finish_struct_1): New argument ATTRIBUTES; call cplus_decl_attributes.
13690 Take out old round_up_size use and setting the DECL_ALIGN possibly
13691 using it. Take out setting of TYPE_ALIGN to round_up_size, which
13692 can override what the attribute set.
13693 * cp-tree.h (finish_struct): Update prototype.
13694 * parse.y (template_instantiate_once): Pass a NULL_TREE for the
13695 attributes to finish_struct.
13696 (structsp): For a CLASS decl, add maybe_attribute to rule and pass that
13697 value down into finish_struct.
13698 * Makefile.in (CONFLICTS): Switch to 7 shift/reduce conflicts.
13699
13700 Tue Feb 6 13:12:15 1996 Per Bothner <bothner@kalessin.cygnus.com>
13701
13702 * decl.c (poplevel): Re-word dead for local handling.
13703 (pushdecl): Remove useless DECL_DEAD_FOR_LOCAL test.
13704 (cp_finish_decl): If is_for_scope, check for duplicates so
13705 we can disable is_for_scope. Otherwise, preserve_temp_slots.
13706
13707 * lex.c (do_identifier): Use global binding in preference of
13708 dead for local variable.
13709
13710 Mon Feb 5 17:46:46 1996 Mike Stump <mrs@cygnus.com>
13711
13712 * init.c (initializing_context): Handle anon union changes, the
13713 context where fields of anon unions can be initialized now has to be
13714 found by walking up the TYPE_CONTEXT chain.
13715
13716 Fri Feb 2 14:54:04 1996 Doug Evans <dje@charmed.cygnus.com>
13717
13718 * decl.c (start_decl): #ifdef out code to set DECL_COMMON
13719 if ASM_OUTPUT{,_ALIGNED}_BSS is defined.
13720 (obscure_complex_init): If bss is supported, always set
13721 DECL_INITIAL to error_mark_node.
13722
13723 Thu Feb 1 16:19:56 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13724
13725 * init.c (is_friend): Make sure there's a context before we see if
13726 it's an aggr type.
13727
13728 Thu Feb 1 15:44:53 1996 Mike Stump <mrs@cygnus.com>
13729
13730 * init.c (is_friend): Classes are not friendly with nested classes.
13731
13732 Thu Feb 1 15:27:37 1996 Doug Evans <dje@charmed.cygnus.com>
13733
13734 * lex.c (check_newline): Pass last character read to HANDLE_PRAGMA,
13735 and record its result.
13736
13737 Thu Feb 1 09:27:01 1996 Mike Stump <mrs@cygnus.com>
13738
13739 * class.c (finish_struct_anon): Switch around code to not move anon
13740 union elements around, nor mess up their contexts, nor offsets,
13741 instead we now build up the right number of COMPONENT_REFs for all
13742 the anon unions that may be present at build_component_ref time.
13743 * typeck.c (lookup_anon_field): New routine to handle field lookup
13744 on fields without names. We find them, based upon their unique type
13745 instead.
13746 * typeck.c (build_component_ref): Allow FIELD_DECL components.
13747 Handle finding components in anonymous unions, and ensure that a
13748 COMPONENT_REF is built for each level as necessary.
13749
13750 Tue Jan 30 18:18:23 1996 Mike Stump <mrs@cygnus.com>
13751
13752 * cvt.c (build_up_reference): Make the INDIRECT_BIND case come after
13753 code that ensures that copy ctors are used if appropriate.
13754
13755 Tue Jan 30 17:35:14 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13756
13757 * init.c (build_vec_delete): Only give an error if base isn't an
13758 error_mark_node.
13759
13760 Mon Jan 29 17:09:06 1996 Mike Stump <mrs@cygnus.com>
13761
13762 * spew.c (do_aggr): `new struct S;' isn't a forward declaration.
13763 (yylex): If we see `new', keep slurping.
13764
13765 Thu Jan 25 18:31:36 1996 Mike Stump <mrs@cygnus.com>
13766
13767 * class.c (finish_struct_1): Move code for handling anon unions...
13768 (finish_struct_anon): to here. Fixup so that we do the offset
13769 calculations right, and so that the fields are physically moved to
13770 the containers's chain.
13771
13772 Thu Jan 25 18:27:37 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13773
13774 * decl.c (grokdeclarator): Avoid trying to get an operand off an
13775 identifier node.
13776
13777 Wed Jan 24 11:25:30 1996 Jim Wilson <wilson@chestnut.cygnus.com>
13778
13779 * typeck.c (pointer_int_sum): Use TYPE_PRECISION (sizetype) not
13780 POINTER_SIZE to agree with expr.c.
13781
13782 Thu Jan 25 13:01:23 1996 Mike Stump <mrs@cygnus.com>
13783
13784 * search.c (lookup_field): Don't report ambiguities if protect is 0,
13785 instead return NULL_TREE.
13786
13787 Wed Jan 24 13:01:26 1996 Mike Stump <mrs@cygnus.com>
13788
13789 * class.c (finish_struct_1): Call warn_hidden if we want warnings
13790 about overloaded virtual functions.
13791 (warn_hidden): New routine to warn of virtual functions that are
13792 hidden by other virtual functions, that are not overridden.
13793 (get_basefndecls): New routine, used by warn_hidden.
13794 (mark_overriders): New routine, used by warn_hidden.
13795 * search.c (get_matching_virtual): Remove old warning that just
13796 isn't very useful.
13797
13798 Tue Jan 23 12:26:10 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13799
13800 * decl.c (output_builtin_tdesc_entries): #if 0 the function definition.
13801
13802 * typeck.c (null_ptr_cst_p): Delete unused fn.
13803 (build_function_call_maybe): Delete unused fn.
13804
13805 * expr.c (extract_init): #if 0 the code after unconditional return 0
13806 for now.
13807
13808 Delete old cadillac code.
13809 * edsel.c: Remove file.
13810 * Make-lang.in (CXX_SRCS): Take edsel.c off the list.
13811 * Makefile.in (CXX_OBJS): Delete edsel.o.
13812 (edsel.o): Delete rule.
13813 * cp-tree.h (flag_cadillac): Delete var decl.
13814 * lang-options.h: Delete "-fcadillac" and "-fno-cadillac".
13815 * decl2.c (flag_cadillac): Delete var definition.
13816 (lang_decode_option): Delete handling of -fcadillac and -fno-cadillac.
13817 (grokfield): Delete code depending on flag_cadillac.
13818 (finish_anon_union): Likewise.
13819 * class.c (finish_struct_1): Likewise.
13820 (pushclass): Likewise.
13821 (popclass): Likewise.
13822 (push_lang_context): Likewise.
13823 (pop_lang_context): Likewise.
13824 * decl.c (init_decl_processing): Likewise.
13825 (start_decl): Likewise.
13826 (cp_finish_decl): Likewise.
13827 (xref_tag): Likewise.
13828 (finish_enum): Likewise.
13829 (start_function): Likewise.
13830 (finish_function): Likewise.
13831 (finish_stmt): Likewise.
13832 * lex.c (lang_init): Likewise.
13833 (check_newline): Likewise.
13834
13835 * lex.c (do_pending_inlines): Delete synthesized method kludge.
13836
13837 Delete defunct, ancient garbage collection implementation.
13838 * rtti.c: New file with the RTTI stuff from gc.c.
13839 * gc.c: Removed file (moved the remaining stuff into rtti.c).
13840 * Makefile.in (CXX_OBJS): Replace gc.o with rtti.o.
13841 (rtti.o): New rule, replacing gc.o.
13842 * Make-lang.in (CXX_SRCS): Replace gc.c with rtti.c.
13843 * cp-tree.h: Delete gc-related fn decls.
13844 (DECL_GC_OFFSET): Delete macro.
13845 (flag_gc): Delete extern decl.
13846 * decl.c (current_function_obstack_index): Delete var decl.
13847 (current_function_obstack_usage): Delete var decl.
13848 (start_function): Delete clearing of current_function_obstack_index
13849 and current_function_obstack_usage.
13850 (init_decl_processing): Delete code relying on -fgc.
13851 Delete call to init_gc_processing.
13852 (cp_finish_decl): Delete calls to build_static_gc_entry and
13853 type_needs_gc_entry. Delete gc code setting DECL_GC_OFFSET.
13854 (store_parm_decls): Delete -fgc calls to cp_expand_decl_cleanup
13855 and to expand_expr of a __gc_main call.
13856 (maybe_gc_cleanup): Delete var decl.
13857 (finish_function): Delete call to expand_gc_prologue_and_epilogue.
13858 * decl2.c (flag_gc): Delete var decl.
13859 (lang_f_options): Delete offering of -fgc.
13860 (lang_decode_option): Delete -fgc and -fno-gc handling.
13861 (get_temp_regvar): Delete gc code.
13862 * init.c (build_new): Delete gc code.
13863 * lex.c (init_lex): Delete checking of flag_gc.
13864
13865 * typeck.c (convert_arguments): Delete gc code.
13866 (build_component_addr): Delete -fgc warning.
13867 (build_modify_expr): Delete gc code.
13868
13869 * decl2.c (build_push_scope): Delete fn.
13870 * cp-tree.h (build_push_scope): Delete decl.
13871
13872 * search.c (clear_search_slots): Delete fn.
13873 * cp-tree.h (clear_search_slots): Delete decl.
13874
13875 * search.c (tree_needs_constructor_p): Delete fn.
13876 * cp-tree.h (tree_needs_constructor_p): Delete decl.
13877
13878 * tree.c (id_cmp): Delete fn.
13879
13880 * tree.c (set_fnaddr_from_vtable_entry): Delete fn.
13881 * cp-tree.h (set_fnaddr_from_vtable_entry): Delete decl.
13882
13883 * tree.c (decl_value_member): Delete fn.
13884 * cp-tree.h (decl_value_member): Delete decl.
13885
13886 * tree.c (list_hash_lookup_or_cons): Delete fn.
13887 * cp-tree.h (list_hash_lookup_or_cons): Delete decl.
13888
13889 * method.c (cplus_exception_name): Delete fn.
13890 (EXCEPTION_NAME_{PREFIX, LENGTH}): Delete macros.
13891
13892 * spew.c (shift_tokens): Delete fn.
13893
13894 Mon Jan 22 17:49:33 1996 Jason Merrill <jason@yorick.cygnus.com>
13895
13896 * except.c (init_exception_processing): Pass 1 to needs_pop in calls
13897 to cp_finish_decl.
13898 * parse.y: Likewise.
13899
13900 Mon Jan 22 17:34:29 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13901
13902 * tree.c (build_cplus_staticfn_type): Delete function definition;
13903 never used.
13904 * cp-tree.h (build_cplus_staticfn_type): Delete decl.
13905
13906 * tree.c (virtual_member): Delete function definition; never used.
13907 * cp-tree.h (virtual_member): Delete decl.
13908
13909 Fri Jan 19 18:03:14 1996 Mike Stump <mrs@cygnus.com>
13910
13911 * typeck.c (build_component_ref): Handle getting vbase pointers
13912 out of complex multiple inheritance better.
13913
13914 Fri Jan 19 16:27:40 1996 Mike Stump <mrs@cygnus.com>
13915
13916 * typeck.c (build_object_ref): Make sure we use the real type, not
13917 any reference type.
13918
13919 Fri Jan 19 16:01:47 1996 Mike Stump <mrs@cygnus.com>
13920
13921 * tree.c (build_exception_variant): Don't create new types if we
13922 don't have to, also build new types on the right obstack.
13923
13924 Fri Jan 19 14:09:44 1996 Jason Merrill <jason@yorick.cygnus.com>
13925
13926 * decl.c (store_bindings): Split out from push_to_top_level.
13927 (push_to_top_level): Call it for b->type_shadowed on class binding
13928 levels.
13929
13930 Fri Jan 19 13:53:14 1996 Mike Stump <mrs@cygnus.com>
13931
13932 * search.c (expand_upcast_fixups): Fix so that offsets stored in
13933 vbase_offsets are always right. Fixes a problem where virtual base
13934 upcasting and downcasting could be wrong during conversions on this
13935 during virtual function dispatch at ctor/dtor time when dynamic
13936 vtable fixups for deltas are needed. This only sounds easier than
13937 it is. :-)
13938 (fixup_virtual_upcast_offsets): Change to reflect new calling
13939 convention for expand_upcast_fixups.
13940
13941 Fri Jan 19 12:23:08 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13942
13943 * decl2.c (grokbitfield): Strip the NOPs from WIDTH before we
13944 check that it's usable as the bitfield width.
13945
13946 Wed Jan 17 21:22:40 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
13947
13948 * decl2.c (grokfield): Call cplus_decl_attributes with the attrlist.
13949 Pass a null tree to grokdeclarator for its ATTRLIST arg, since it's
13950 only ever used for functions in it.
13951
13952 Wed Jan 17 12:10:38 1996 Jason Merrill <jason@yorick.cygnus.com>
13953
13954 * parse.y (qualified_type_name): Use the TYPE_DECL, not the type.
13955 (nested_type): Likewise.
13956 (nested_name_specifier): Use lastiddecl.
13957
13958 * decl.c (grokdeclarator): Adjust accordingly.
13959 * init.c (expand_member_init): Likewise.
13960 * parse.y (base_class): Likewise.
13961 * typeck2.c (build_functional_cast): Likewise.
13962
13963 * typeck2.c (build_functional_cast): Fill in name after we've
13964 checked for non-aggr type.
13965
13966 Wed Jan 17 10:18:01 1996 Mike Stump <mrs@cygnus.com>
13967
13968 * decl2.c (warn_pointer_arith): Default to on.
13969
13970 Tue Jan 16 12:45:38 1996 Jason Merrill <jason@yorick.cygnus.com>
13971
13972 * lex.c (is_rid): New function.
13973 * decl.c (grokdeclarator): Diagnose reserved words used as
13974 declarator-ids.
13975
13976 Tue Jan 16 11:39:40 1996 Jason Merrill <jason@yorick.cygnus.com>
13977
13978 * tree.c (get_decl_list): Don't lose cv-quals.
13979
13980 * decl.c (grokdeclarator): Fix SCOPE_REF handling and diagnose
13981 typespecs used as declarator-ids.
13982
13983 Tue Jan 16 11:09:42 1996 Mike Stump <mrs@cygnus.com>
13984
13985 * decl.c (poplevel): When poping a level, don't give a warning for
13986 any subblocks that already exist.
13987
13988 Tue Jan 16 00:25:33 1996 Jason Merrill <jason@yorick.cygnus.com>
13989
13990 * typeck.c (build_object_ref): Finish what I started.
13991
13992 * parse.y (qualified_type_name): Don't check TYPE_BUILT_IN.
13993
13994 * decl2.c (constructor_name_full): Handle TEMPLATE_TYPE_PARMs.
13995
13996 * decl.c (grokdeclarator): Also accept TEMPLATE_TYPE_PARM as a
13997 scope.
13998
13999 Mon Jan 15 16:19:32 1996 Jason Merrill <jason@yorick.cygnus.com>
14000
14001 * decl.c (xref_tag): Handle passing a type in directly.
14002
14003 * parse.y (qualified_type_name): Pull out the type.
14004 (nested_type): Likewise.
14005 Take types directly instead of as identifiers.
14006 * call.c (build_scoped_method_call): Take types directly instead of
14007 as identifiers.
14008 * decl.c (xref_basetypes): Likewise.
14009 * init.c (expand_member_init): Likewise.
14010 (build_member_call): Likewise.
14011 (build_offset_ref): Likewise.
14012 * typeck2.c (build_scoped_ref): Likewise, remove bogus code.
14013 * method.c (do_build_assign_ref): Likewise.
14014 * decl.c (grokdeclarator): Handle a type appearing as the
14015 declarator-id for constructors.
14016 * method.c (do_build_copy_constructor): current_base_init_list now
14017 uses the types directly, not their names.
14018 * init.c (sort_base_init): Likewise.
14019 (expand_member_init): Likewise.
14020 * init.c (is_aggr_type): New function, like is_aggr_typedef.
14021
14022 Mon Jan 15 08:45:01 1996 Jeffrey A Law <law@cygnus.com>
14023
14024 * tree.c (layout_basetypes): Call build_lang_field_decl instead
14025 of build_lang_decl if first arg is a FIELD_DECL.
14026
14027 Thu Jan 11 14:55:07 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14028
14029 * decl.c (cp_finish_decl): Only clear TREE_USED if DECL_NAME is
14030 non-empty.
14031 * except.c (expand_start_catch_block): Set TREE_USED to avoid
14032 warnings about the catch handler.
14033
14034 Mon Jan 8 17:35:12 1996 Jason Merrill <jason@yorick.cygnus.com>
14035
14036 * typeck.c (build_modify_expr): Use a COMPOUND_EXPR instead of
14037 expand_target_expr.
14038
14039 Thu Jan 4 12:30:32 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
14040
14041 Fix access control to use trees rather than integers.
14042 * class.c (access_{default, public, protected, private,
14043 default_virtual, public_virtual, private_virtual}_node): Add
14044 definitions.
14045 (init_class_processing): Do creation of those nodes.
14046 * cp-tree.h (access_type): Delete enum decl.
14047 (access_{default, public, protected, private, default_virtual,
14048 public_virtual, private_virtual}_node): Add decls.
14049 (compute_access): Change return type.
14050 * search.c (compute_access): Have tree return type, instead of enum.
14051 (lookup_field): Declare THIS_V and NEW_V to be tree nodes.
14052 * lex.c (real_yylex): Use yylval.ttype for giving the value of the
14053 access_* node for each of RID_{PUBLIC, PRIVATE, PROTECTED}.
14054 * parse.y (VISSPEC): Make ttype rather than itype.
14055 (base_class_access_list): Likewise.
14056 * *.[cy]: Change all refs of `access_public' to `access_public_node',
14057 etc.
14058 * call.c (build_method_call): Make ACCESS be a tree.
14059 * class.c (alter_access, finish_struct_1, filter_struct): Likewise.
14060 * cvt.c (convert_to_aggr): Likewise.
14061 * init.c (build_offset_ref, resolve_offset_ref, build_delete):
14062 Likewise.
14063 * method.c (hack_identifier): Likewise.
14064 * typeck.c (build_component_ref_1, build_component_ref): ): Likewise.
14065
14066 Thu Jan 4 11:02:20 1996 Mike Stump <mrs@cygnus.com>
14067
14068 * typeck.c (pointer_int_sum, pointer_diff): Make code agree with C
14069 frontend, and make it more consistent with respect to
14070 warn_pointer_arith.
14071
14072 Tue Jan 2 00:13:38 1996 Rusty Russell <rusty@adelaide.maptek.com.au>
14073
14074 * decl.c (pushdecl): Check for duplicate parameter names.
14075
14076 Wed Jan 3 09:25:48 1996 Mike Stump <mrs@cygnus.com>
14077
14078 * decl.c (expand_static_init): Call assemble_external for atexit.
14079
14080 Wed Jan 3 07:55:19 1996 Mike Stump <mrs@cygnus.com>
14081
14082 * except.c (do_unwind): Remove some generated dead code.
14083 (eh_outer_context): New routine, factor out some common code from
14084 expand_builtin_throw and end_eh_unwinder. Add code to do return
14085 address masking for the PA.
14086 (expand_builtin_throw): Use eh_outer_context instead of open coding
14087 it here.
14088 (end_eh_unwinder): Likewise.
14089
14090 Tue Jan 2 17:00:56 1996 Mike Stump <mrs@cygnus.com>
14091
14092 * except.c (expand_throw): Call assemble_external for __empty, if we
14093 use it.
14094
14095 Thu Dec 28 11:13:15 1995 Mike Stump <mrs@cygnus.com>
14096
14097 * except.c (expand_builtin_throw): Use RETURN_ADDR_OFFSET instead of
14098 NORMAL_RETURN_ADDR_OFFSET.
14099 (end_eh_unwinder): Likewise.
14100
14101 Wed Dec 27 22:18:16 1995 Mike Stump <mrs@cygnus.com>
14102
14103 * gc.c (build_dynamic_cast): Make sure we don't cast away const
14104 when dealing with references, and make sure we handle dynamic
14105 casting to a cv qualified reference.
14106
14107 Thu Dec 21 23:50:35 1995 Mike Stump <mrs@cygnus.com>
14108
14109 * except.c (struct eh_context): New structure top hold eh context
14110 information.
14111 (push_eh_context): New routine.
14112 (pop_eh_context): Likewise.
14113 * decl.c (push_cp_function_context): Use them.
14114 (pop_cp_function_context): Likewise.
14115
14116 Wed Dec 20 12:42:51 1995 Jason Merrill <jason@yorick.cygnus.com>
14117
14118 * decl2.c (finish_file): Also prune uninteresting functions in the
14119 inline emission loop.
14120
14121 Wed Dec 20 02:32:07 1995 Jeffrey A Law <law@cygnus.com>
14122
14123 * sig.c (build_signature_table_constructor): Mark functions
14124 in the signature as referenced.
14125
14126 Tue Dec 19 22:36:56 1995 Jason Merrill <jason@yorick.cygnus.com>
14127
14128 * decl2.c (finish_file): Do all the vtable/synthesis stuff before
14129 the inline emission stuff.
14130
14131 Mon Dec 18 15:51:33 1995 Jason Merrill <jason@yorick.cygnus.com>
14132
14133 * cp-tree.h, decl2.c (flag_weak): New flag to control the use of
14134 weak symbols.
14135 * lang-options.h: Add -f{no-,}weak.
14136 * decl.c (init_decl_processing): If the target does not support weak
14137 symbols, don't use them.
14138 * decl2.c, pt.c: s/SUPPORTS_WEAK/flag_weak/.
14139
14140 Sun Dec 17 21:13:23 1995 Rusty Russell <rusty@adelaide.maptek.com.au>
14141
14142 * init.c (expand_member_init): warning for base init after members.
14143
14144 Fri Dec 15 15:32:18 1995 Jason Merrill <jason@yorick.cygnus.com>
14145
14146 * cvt.c (build_expr_type_conversion): Don't convert to a reference
14147 type.
14148
14149 Thu Dec 14 16:05:58 1995 Mike Stump <mrs@cygnus.com>
14150
14151 * method.c (report_type_mismatch): Improve wording for volatile
14152 mismatches.
14153
14154 Thu Dec 14 14:16:26 1995 Mike Stump <mrs@cygnus.com>
14155
14156 * init.c (expand_aggr_init_1): Use expand_aggr_init_1 instead of
14157 expand_assignment, as the later doesn't handle things that have
14158 copy constructors well. The compiler would do bitwise copying,
14159 instead of ctor calling in some cases.
14160
14161 Wed Dec 13 17:05:54 PST 1995 Paul Eggert <eggert@twinsun.com>
14162
14163 * g++.c (my_strerror): Return "cannot access" if errno is 0.
14164 (pfatal_with_name, perror_exec): Don't assume that
14165 the returned value from my_strerror contains no '%'s.
14166 (concat): Remove.
14167 (sys_nerror): Declare only if HAVE_STRERROR is not defined.
14168
14169 Wed Dec 13 16:22:38 1995 Jason Merrill <jason@yorick.cygnus.com>
14170
14171 Lose CLASSTYPE_METHODS/DECL_NEXT_METHOD chain; make
14172 TYPE_METHODS/TREE_CHAIN mean what they used to.
14173 * decl2.c (constructor_name_full): Refer to CLASSTYPE_METHOD_VEC
14174 instead of TYPE_METHODS.
14175 * decl.c (duplicate_decls): Lose references to DECL_NEXT_METHOD.
14176 * tree.c (tree_copy_lang_decl_for_deferred_output): Likewise.
14177 * cp-tree.h (CLASSTYPE_METHODS): Lose.
14178 (CLASSTYPE_METHOD_VEC): Point to lang_spec->methods instead of
14179 TYPE_METHODS.
14180 (struct lang_decl): Lose next_method field.
14181 (DECL_NEXT_METHOD): Lose.
14182 * class.c (finish_struct_methods): Don't mess with TYPE_METHODS.
14183 (finish_struct): Just use TYPE_METHODS; we don't need fn_fields
14184 anymore.
14185 (finish_struct_methods): Don't mess with the TREE_CHAINs in
14186 fn_fields.
14187
14188 * search.c (add_conversions): Don't use TREE_CHAIN to traverse method
14189 vector.
14190
14191 * call.c (build_method_call): Synthesize here even when not inlining.
14192 * typeck.c (build_function_call_real): Likewise.
14193
14194 Wed Dec 13 15:02:39 1995 Ian Lance Taylor <ian@cygnus.com>
14195
14196 * cp/lex.c (check_newline): If DBX_DEBUGGING_INFO and write_symbols
14197 == DBX_DEBUG, call dbxout_start_new_source_file and
14198 dbxout_resume_previous_source_file when appropriate.
14199
14200 Tue Dec 12 20:38:55 1995 Mike Stump <mrs@cygnus.com>
14201
14202 * except.c (start_anon_func): Push to the top level.
14203 (end_anon_func): Pop from the top level.
14204
14205 Mon Dec 11 18:56:14 1995 Mike Stump <mrs@cygnus.com>
14206
14207 * cp-tree.h (build_cleanup): New routine to build cleanups.
14208 * decl.c (expand_static_init): Use build_cleanup to build a cleanup
14209 call at ctor time and use atexit to run it later.
14210 * decl2.c (build_cleanup): New routine, taken from finish_file.
14211 (finish_file): Use build_cleanup instead, and don't put function
14212 local statics in global dtor list.
14213
14214 Wed Dec 6 14:34:29 1995 Mike Stump <mrs@cygnus.com>
14215
14216 * except.c (expand_throw): Ensure that we have cleanups, if we try
14217 and expand cleanups.
14218
14219 Wed Dec 6 11:48:21 1995 Mike Stump <mrs@cygnus.com>
14220
14221 * except.c (expand_throw): Add logic to manage dynamic cleanups for
14222 the EH object.
14223 (expand_end_catch_block): Use the magic of expand_goto, instead of
14224 emit_jump so that we get the cleanup for any catch clause parameter
14225 and the cleanup for the exception object. Update to reflect label
14226 changes.
14227 (push_eh_cleanup): New routine to register a cleanup for an
14228 exception object.
14229 (empty_fndecl): Used to default cleanup actions to
14230 nothing.
14231 (init_exception_processing): Setup empty_fndecl. Setup
14232 saved_cleanup.
14233 (expand_start_catch_block): Update to reflect label changes. Call
14234 push_eh_object to register the cleanup for the EH object.
14235 (start_anon_func): New routine to start building lambda expressions
14236 from trees.
14237 (end_anon_func): New routine to end them.
14238 (struct labelNode): Change so that we can use tree labels, or rtx
14239 labels.
14240 (saved_cleanup): Object to check for dynamic cleanups for the
14241 exception handling object.
14242 (push_label_entry): Change so that we can use tree labels, or rtx
14243 labels.
14244 (pop_label_entry): Likewise.
14245 (top_label_entry): Likewise.
14246 (expand_start_all_catch): Use tree label instead of rtx label, so
14247 that we can get the magic of expand_goto.
14248 (expand_end_all_catch): Update to reflect label changes.
14249
14250 * class.c (build_vfn_ref): Remove building_cleanup logic, as we now
14251 use UNSAVE_EXPRs.
14252 typeck.c (get_member_function_from_ptrfunc): Remove remnants of
14253 building_cleanup logic, as we now use UNSAVE_EXPRs.
14254 * cp-tree.h (unsave_expr): Declare it.
14255 * decl.c (building_cleanup): Remove.
14256 (maybe_build_cleanup): Remove building_cleanup logic, and use
14257 UNSAVE_EXPR instead.
14258
14259 Sun Dec 3 01:34:58 1995 Mike Stump <mrs@cygnus.com>
14260
14261 * gc.c (build_t_desc): Update error message to say <typeinfo>.
14262
14263 Thu Nov 30 12:30:05 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
14264
14265 * decl.c (pushdecl): Only warn about shadowing a local variable if
14266 warn_shadow is true.
14267
14268 Sun Nov 26 16:06:55 1995 Rusty Russell <rusty@adelaide.maptek.com.au>
14269
14270 * typeck.c (build_binary_op_nodefault): Added warning about
14271 comparisons between different enum types with -Wall, unless
14272 -fenum-int-equiv set.
14273
14274 Wed Nov 22 15:44:02 1995 Mike Stump <mrs@cygnus.com>
14275
14276 * class.c (finish_struct_1): Skip down to the inner type in
14277 multidimensional arrays. Ensures ctors will be made for types that
14278 need constructing.
14279
14280 Wed Nov 22 14:19:22 1995 Mike Stump <mrs@cygnus.com>
14281
14282 * decl.c (last_dtor_insn): New to track the last compiler generated
14283 insn in a dtor.
14284 (store_parm_decls): Set it.
14285 (finish_function): Use it to see if the dtor is empty. Avoid doing
14286 vtable setup all the time, if we can.
14287 (struct cp_function): Add last_dtor_insn.
14288 (push_cp_function_context): Save it.
14289 (pop_cp_function_context): Restore it.
14290
14291 Wed Nov 22 11:52:19 1995 Paul Russell <Rusty.Russell@adelaide.maptek.com.au>
14292
14293 * typeck.c (build_unary_op): Set TREE_NO_UNUSED_WARNING to avoid
14294 warnings.
14295
14296 Tue Nov 21 17:15:23 1995 Mike Stump <mrs@cygnus.com>
14297
14298 * typeck.c (expand_target_expr): Make sure targets get put into the
14299 current temp_slot_level, so that the free_temp_slots call will reuse
14300 them.
14301
14302 Tue Nov 21 13:32:03 1995 Mike Stump <mrs@cygnus.com>
14303
14304 * class.c (finish_struct_1): Delay delta fixups for virtual bases
14305 until after we have done the hard virtuals, to avoid a bogus `every
14306 virtual function must have a unique final overrider' for virtual
14307 functions that are only overridden by hard virtuals.
14308
14309 Thu Nov 9 13:35:30 1995 Jason Merrill <jason@yorick.cygnus.com>
14310
14311 * pt.c (do_function_instantiation): Don't try to find a file-scope
14312 template for a member function.
14313
14314 Tue Nov 14 06:20:35 1995 Mike Stump <mrs@cygnus.com>
14315
14316 * g++.c (main): Add handling of -nodefaultlibs.
14317
14318 Mon Nov 13 15:45:34 1995 Mike Stump <mrs@cygnus.com>
14319
14320 * cp-tree.h (INDIRECT_BIND): Add a way for the frontend to
14321 distinguish between direct bindings of reference variables, and
14322 indirect bindings of reference variables.
14323 * cvt.c (build_up_reference): Use it.
14324 * typeck.c (convert_arguments): Use it to indicate this is an
14325 indirect binding.
14326 * decl.c (cp_finish_decl): Ensure that we reuse stack slots as fast
14327 as they are unused.
14328 (expand_static_init): Likewise.
14329 (cplus_expand_expr_stmt): Likewise.
14330 * decl2.c (finish_file): Likewise.
14331 * init.c (perform_member_init): Likewise.
14332 (emit_base_init): Likewise.
14333 (expand_aggr_vbase_init_1): Likewise.
14334
14335 Fri Nov 10 09:18:09 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
14336
14337 * decl.c (push_namespace): Rewrite to use build_lang_decl, so we
14338 get a DECL_LANG_SPECIFIC node.
14339 * cp-tree.h (lang_decl_flags): Add new member `level'.
14340 (NAMESPACE_LEVEL): Don't use decl.arguments, instead use the
14341 decl_flags level member.
14342
14343 Mon Nov 6 18:36:13 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
14344
14345 * call.c (build_method_call): Make sure instance has a
14346 TYPE_LANG_SPECIFIC node before we dive into it.
14347
14348 Sat Nov 4 20:01:52 1995 Jason Molenda <crash@phydeaux.cygnus.com>
14349
14350 * method.c (make_thunk): use TREE_SET_CODE to set thunk's tree code.
14351
14352 Thu Nov 2 17:56:57 1995 Mike Stump <mrs@cygnus.com>
14353
14354 * decl.c (duplicate_decls): When smashing decls, smash staticness in
14355 the usual way.
14356
14357 Thu Nov 2 16:44:02 1995 Mike Stump <mrs@cygnus.com>
14358
14359 * decl.c (poplevel): Handle the merging of subblocks of cleanups
14360 when finishing blocks that have already been created (usually due to
14361 the fixup goto code). Fixes bad debugging information.
14362
14363 Wed Nov 1 12:33:53 1995 Jason Merrill <jason@yorick.cygnus.com>
14364
14365 * method.c (hack_identifier): Don't abort when we get a TREE_LIST
14366 that's not a list of overloaded functions.
14367
14368 Wed Nov 1 11:38:58 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
14369
14370 * decl2.c (mark_vtable_entries): Check DECL_LANG_SPECIFIC on fn
14371 before trying to use DECL_ABSTRACT_VIRTUAL_P.
14372
14373 Tue Oct 31 11:56:55 1995 Jason Merrill <jason@yorick.cygnus.com>
14374
14375 * decl2.c (mark_used): New function for hooking into setting of
14376 TREE_USED on decls.
14377 * call.c (build_method_call): Use it.
14378 * class.c (instantiate_type): Likewise.
14379 * init.c (build_offset_ref): Likewise. Don't call assemble_external
14380 for all like-named functions.
14381 * method.c (hack_identifier): Likewise.
14382 (emit_thunk): Don't call assemble_external.
14383 (make_thunk): Create thunk as a FUNCTION_DECL so that it
14384 gets the right mode and ENCODE_SECTION_INFO works.
14385
14386 * parse.y: Use mark_used. Pass operator names to do_identifier.
14387 * lex.c (do_identifier): Handle operator names.
14388
14389 * decl2.c (grokclassfn): Tweak __in_chrg attributes.
14390
14391 Thu Oct 26 16:45:58 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
14392
14393 * errfn.c: Include stdio.h.
14394 (cp_sprintf): Take out decl of sprintf, and cast sprintf to errorfn*.
14395
14396 Wed Oct 25 18:58:41 1995 Mike Stump <mrs@cygnus.com>
14397
14398 * typeck2.c (digest_init): Always convert initializers to the
14399 right type.
14400
14401 Wed Oct 25 13:25:24 1995 Mike Stump <mrs@cygnus.com>
14402
14403 * init.c (member_init_ok_or_else): Don't allow member initializers
14404 for indirect members, as it is invalid.
14405
14406 Wed Oct 25 11:35:28 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
14407
14408 * decl.c (grokdeclarator): Don't allow `friend signed ()'.
14409
14410 Fri Oct 20 10:30:59 1995 Mike Stump <mrs@cygnus.com>
14411
14412 * parse.y (for.init.statement): Catch compound statements inside for
14413 initializations, if we're being pedantic.
14414
14415 Fri Oct 20 10:03:42 1995 Mike Stump <mrs@cygnus.com>
14416
14417 * decl.c (lookup_tag): Return NULL_TREE if we don't find what we are
14418 looking for.
14419
14420 Thu Oct 19 14:26:10 1995 Mike Stump <mrs@cygnus.com>
14421
14422 * error.c (dump_expr): Don't core dump when a boolean expression is
14423 used as a default argument.
14424
14425 Thu Oct 19 10:36:30 1995 Jason Merrill <jason@yorick.cygnus.com>
14426
14427 * class.c (finish_struct_bits): Check aggregate_value_p instead of
14428 RETURN_IN_MEMORY.
14429
14430 Wed Oct 18 18:12:32 1995 Jason Merrill <jason@yorick.cygnus.com>
14431
14432 * class.c (finish_struct_bits): Also set TREE_ADDRESSABLE on a
14433 BLKmode type that would otherwise be returned in registers.
14434
14435 Mon Oct 16 12:32:19 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
14436
14437 * g++.c (WITHLIBC): New macro.
14438 (main): Declare saw_libc. Use WITHLIBC if `-lc' was used; set
14439 saw_libc and pass it at the end if it was set.
14440
14441 Wed Oct 11 16:30:34 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
14442
14443 * parse.y (fn.def1): Call split_specs_attrs in
14444 declmods notype_declarator case.
This page took 0.626254 seconds and 6 git commands to generate.