OSDN Git Service

Make-lang.in.
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 Tue Apr 25 18:07:43 1995  Richard Kenner  (kenner@vlsi1.ultra.nyu.edu)
2
3         * Make-lang.in: Change "realclean" to "maintainer-clean".
4
5 Sun Apr 23 12:32:38 1995  Mike Stump  <mrs@cygnus.com>
6
7         * decl2.c (finish_file): Fix broken linked list handling.
8
9 Fri Apr 21 18:08:43 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
10
11         * class.c (finish_base_struct): Don't set TYPE_HAS_COMPLEX_*_REF
12         as often.
13         (finish_struct): Ditto.
14
15         * various: Use TYPE_HAS_TRIVIAL_* instead of TYPE_HAS_COMPLEX_*.
16
17         * cp-tree.h (TYPE_HAS_TRIVIAL_INIT_REF): New macro.
18         (TYPE_HAS_TRIVIAL_ASSIGN_REF): New macro.
19
20 Fri Apr 21 15:52:22 1995  Jason Merrill  <jason@python.cygnus.com>
21
22         * typeck.c (c_expand_return): Only expand a returned TARGET_EXPR if
23         it is of the same type as the return value.
24
25 Fri Apr 21 03:01:46 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
26
27         * decl2.c (finish_file): Reconsider if synthesizing a method wrote
28         out its assembly.
29
30         * typeck.c (convert_for_initialization): Don't call a trivial copy
31         constructor.
32
33         * typeck2.c (store_init_value): Only abort if the type has a
34         non-trivial copy constructor.
35
36         * typeck.c (c_expand_return): If we're returning in a register and
37         the return value is a TARGET_EXPR, expand it.  Only do
38         expand_aggr_init if we're returning in memory.
39         (expand_target_expr): Function to expand a TARGET_EXPR.
40         (build_modify_expr): Use it.
41
42         * tree.c (build_cplus_new): Layout the slot.
43
44         * expr.c (cplus_expand_expr): Use expand_call to expand the call
45         under a NEW_EXPR, so the target is not discarded.
46
47 Thu Apr 20 14:59:31 1995  Mike Stump  <mrs@cygnus.com>
48
49         * gc.c (build_dynamic_cast): Tighten error checking.
50
51 Thu Apr 20 11:23:54 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
52
53         * expr.c (cplus_expand_expr): Only abort if the returned target is
54         different from what we expected if the type has a non-trivial copy
55         constructor.
56
57         * decl2.c (cplus_decl_attributes): Attributes applied to a template
58         really apply to the template's result.
59
60         * tree.c (lvalue_p): Check IS_AGGR_TYPE instead of TREE_ADDRESSABLE
61         to decide whether to consider a CALL_EXPR an lvalue.
62
63         * class.c (finish_struct_bits): Only set TREE_ADDRESSABLE if the
64         type has a non-trivial copy constructor.
65
66         * decl.c (start_function): If interface_known, unset
67         DECL_NOT_REALLY_EXTERN on the function.
68
69 Wed Apr 19 16:53:13 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
70
71         * pt.c (do_function_instantiation): Handle explicit instantiation of
72         member functions.
73         (do_type_instantiation): Handle 'inline template class foo<int>',
74         meaning just spit out the vtable.
75
76         * lex.c (cons_up_default_function): Set DECL_NOT_REALLY_EXTERN on
77         the consed functions.
78
79         * decl2.c (import_export_inline): Set DECL_INTERFACE_KNOWN.
80
81 Wed Apr 19 16:28:17 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
82
83         * call.c, class.c, decl2.c, gc.c, init.c, parse.y, pt.c, search.c,
84         typeck.c: Include output.h.
85
86 Wed Apr 19 14:57:21 1995  Gerald Baumgartner  (gb@alexander.cs.purdue.edu)
87
88         * call.c (build_method_call): Allow a signature member functions to
89         be called from a default implementation.
90
91 Wed Apr 19 10:21:17 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
92
93         * repo.c (finish_repo): Remember what directory we are in.
94
95         * search.c (expand_upcast_fixups): Don't mess with abort_fndecl.
96
97         * repo.c: Use obstacks instead of fixed-size buffers.  Don't spit
98         out the second copy of the symbol name.  Don't remember COLLECT_GCC.
99
100 Wed Apr 19 02:32:40 1995  Mike Stump  <mrs@cygnus.com>
101
102         * search.c (virtual_context): New function to get the virtual
103         context of a function.
104         (expand_upcast_fixups): New function to generate runtime vtables.
105         (fixup_virtual_upcast_offsets): Ditto.
106         (expand_indirect_vtbls_init): Use fixup_virtual_upcast_offsets to
107         ensure that the this offsets for upcasts from virtual bases into
108         other virtual bases or non-virtual bases are correct at construction
109         time and destruction time.
110         * class.c (fixup_vtable_deltas): Modify to fixup all offsets in all
111         vtables in all virtual bases, instead of just one vtable in each
112         virtual base.
113         (fixup_vtable_deltas1): Ditto.
114
115 Tue Apr 18 03:57:35 1995  Michael Meissner  (meissner@cygnus.com)
116
117         * Makefile.in (lex.o): Add dependency on c-pragma.h.
118
119         * lex.c (handle_sysv_pragma): Use NULL_PTR and NULL_TREE as
120         appropriate, instead of 0.
121
122 Mon Apr 17 12:28:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
123
124         * decl.c (pushdecl): Use decls_match, not duplicate_decls, for
125         comparing local and global decls.
126
127 Fri Apr 14 01:46:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
128
129         * typeck.c (convert_arguments): Only prohibit passing to ... of
130         types with non-trivial copy constructors.
131
132         * repo.c (repo_template_used): Don't try to mess with no id.
133
134 Fri Apr 14 23:32:50 1995  Per Bothner  <bothner@rtl.cygnus.com>
135
136         * decl.c (duplicate_decls):  Use cp_warning_at for redundant-decls.
137
138 Thu Apr 13 15:37:42 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
139
140         * cp-tree.h (current_tinst_level): Delete declaration, since it's
141         static inside pt.c.
142
143         * typeck.c (build_modify_expr): Catch incompatible array assignment.
144
145         * parse.y (attribute_list, attrib): Rewrite actions to feed the
146         right stuff to decl_attributes.
147
148 Thu Apr 13 11:24:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
149
150         * search.c (dfs_debug_mark): Check for magic virtual like
151         import_export_vtable.
152
153         * typeck.c (build_binary_op_nodefault): Don't call cp_pedwarn with
154         four args.
155
156 Wed Apr 12 12:02:57 1995  Jason Merrill  <jason@deneb.cygnus.com>
157
158         * decl2.c (finish_file): Move prevtable pass before needs_messing_up
159         decision.
160
161 Tue Apr 11 11:20:27 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
162
163         * decl.c (finish_decl): If we're writing out a static data member of
164         a class, we want the debug info for that class.
165
166         * gc.c (build_t_desc): Check linkage of a class properly.
167
168         * class.c (finish_struct): Set the 'headof' offset for the main
169         vtable properly.
170         (prepare_fresh_vtable): Fix typeinfo pointer here.
171         (modify_one_vtable): Instead of here.
172
173 Mon Apr 10 12:15:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
174
175         * repo.c (repo_get_id): New function to return the interesting
176         identifier for a repo entity.
177         (repo_template_used): Use it.
178         (repo_template_instantiated): Mark the id as chosen.
179         (init_repo): Record whether or not the id was chosen.
180         (finish_repo): Note if an id was newly chosen.
181
182         * pt.c (do_function_instantiation): Call repo_template_instantiated.
183         (do_type_instantiation): Ditto.  Don't diagnose multiple
184         instantiation.
185
186         * decl2.c (finish_file): Use DECL_NOT_REALLY_EXTERN when deciding
187         whether or not to synthesize a method.
188
189         Undo these changes:
190         * class.c (finish_vtbls): build more vtables if flag_rtti is on.
191         * class.c (modify_all_direct_vtables): ditto.
192         * init.c (expand_direct_vtbls_init): expand more vtables if
193         flag_rtti is on.
194
195 Sat Apr  8 17:45:41 1995  Mike Stump  <mrs@cygnus.com>
196
197         * gc.c (build_headof): Use ptrdiff_type_node instead of
198         integer_type_node on pointer arithmetic.
199
200 Sat Apr  8 11:57:04 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
201
202         * typeck.c (build_modify_expr): Undo previous change.
203
204 Thu Apr  6 01:23:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
205
206         * Makefile.in (compiler): Remove ../cc1plus before rebuilding it.
207
208         * repo.c (get_base_filename): Put the .rpo file in the directory
209         with the object file, not the source.
210
211         * typeck.c (build_conditional_expr): Handle pmf's better.
212
213         * repo.c (finish_repo): Also use ASM_OUTPUT_LABELREF to print out
214         the name of the symbol.
215
216 Wed Apr  5 15:24:12 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
217
218         * repo.c (open_repo_file): Make repo filename DOS-compliant.
219         (*): Also write a new repo file if some previously-used
220         templates are no longer used.  Only remember the identifier.
221
222         * lex.c (cons_up_default_function): If this function belongs to a
223         template class, call repo_template_used for it.
224
225         * repo.c (repo_template_used): Using a class means using its vtable,
226         if any.
227         (finish_repo): Ditto.
228
229         * typeck.c (build_modify_expr): Only wrap TARGET_EXPRs in RTL_EXPRs
230         if the type has a complex copy constructor.
231
232         * decl2.c (lang_decode_option): -frepo implies
233         -fno-implicit-templates.
234
235         * decl.c (start_function): Clear current_{base,member}_init_list.
236
237         * lex.c (init_lex): Also unset *_eq if ! flag_operator_names.
238
239 Tue Apr  4 16:11:08 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
240
241         * decl.c (struct cp_function): Add {base,member}_init_list.
242         (push_cp_function_context): Save current_{base,member}_init_list.
243         (pop_cp_function_context): Restore them.
244
245 Mon Apr  3 16:55:08 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
246
247         * repo.c (get_base_filename): Take filename parm, fix logic bug.
248
249         * typeck.c (build_compound_expr): Do not warn about a compound expr
250         in which the first expression has no side effects.
251         (build_x_compound_expr): Warn here instead.
252         (build_conditional_expr): Don't warn about a conditional expression
253         between an enum and the type it promotes to.
254
255         * init.c (build_new): Handle initialization of arrays of builtins
256         properly.
257
258 Mon Apr  3 15:08:04 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
259
260         * repo.c: Include config.h to get definitions of bcopy and rindex
261         on systems that don't have them (e.g., SVR4).
262
263 Mon Apr  3 14:41:55 1995  Mike Stump  <mrs@cygnus.com>
264
265         * decl2.c (finish_table): Pass NULL_TREE instead of init to
266         finish_decl so that it won't try and do error checking on the
267         initializer.
268
269 Mon Apr  3 10:45:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
270
271         * repo.c (get_base_filename): Analyze COLLECT_GCC_OPTIONS to
272         determine whether this compile used -c -o.
273         (open_repo_file): Use get_base_filename.  Remove the extension.
274         (finish_repo): Spit out the values of main_input_filename,
275         COLLECT_GCC and COLLECT_GCC_OPTIONS.
276
277         * parse.y (structsp): Add TYPENAME_KEYWORD complex_type_name.
278
279 Sun Apr  2 23:43:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
280
281         * search.c (compute_access): Don't try to do access control on
282         nested types.
283
284 Fri Mar 31 10:14:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
285
286         * repo.c: New file to handle things repo.
287
288         * pt.c (instantiate_template): Call repo_template_used if the
289         definition is accessible.
290         (mark_function_instantiated): Split out from
291         do_function_instantiation.
292         (mark_class_instantiated): Split out from do_type_instantiation.
293
294         * parse.y (template_instantiate_once): Call repo_template_used.
295
296         * lex.c (lang_init): Call init_repo.
297
298         * decl2.c: Handle flag_use_repository.
299         (finish_file): Call finish_repo.
300
301         * decl.c (start_method): Call repo_template_used if this is a
302         template method.
303
304         * Makefile.in (CXX_OBJS): Add repo.o.
305         (repo.o): Add dependencies.
306
307         * Make-lang.in (CXX_SRCS): Add repo.c.
308
309         * decl.c (start_function): If DECL_INTERFACE_KNOWN and
310         DECL_NOT_REALLY_EXTERN are both set, unset DECL_EXTERNAL.
311
312         * typeck.c (build_binary_op_nodefault): Identify the invalid operand
313         types used.
314
315         * decl.c (duplicate_decls): Propagate DECL_NOT_REALLY_EXTERN.
316
317 Thu Mar 30 17:54:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
318
319         * typeck.c (build_binary_op_nodefault): Tidy up use of build_type
320         and result_type.  When checking for comparison between signed
321         and unsigned, use result_type rather than the (possibly shortened)
322         type of op0.  Also, don't warn about equality comparison of a
323         signed operand to an unsigned constant that fits in the signed
324         type.
325
326         * method.c (do_build_copy_constructor): Reverse
327         current_base_init_list after we've built it up.
328
329 Thu Mar 30 14:35:18 1995  Mike Stump  <mrs@cygnus.com>
330
331         * except.c (build_throw): Never warn about the value of throw not
332         being used.
333
334 Thu Mar 30 13:16:54 1995  Mike Stump  <mrs@cygnus.com>
335
336         * except.c (expand_start_catch_block): Check for bad catch parameter
337         declarations.
338
339 Thu Mar 30 13:06:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
340
341         * decl.c (finish_function): Only set DECL_NOT_REALLY_EXTERN if
342         DECL_EXTERNAL is not already set.
343
344 Thu Mar 30 11:26:24 1995  Mike Stump  <mrs@cygnus.com>
345
346         * method.c (emit_thunk): Let poplevel know that the last level is
347         for a function so it can create a BLOCK_NODE and set DECL_INITIAL.
348
349 Thu Mar 30 11:15:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
350
351         * decl2.c (import_export_inline): Don't set DECL_NOT_REALLY_EXTERN
352         here.
353
354         * decl.c (grokdeclarator): OK, don't abort if we see a decl with
355         METHOD_TYPE.
356         (finish_function): Set DECL_EXTERNAL and DECL_NOT_REALLY_EXTERN on
357         all deferred inlines.
358
359 Wed Mar 29 19:35:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
360
361         * cp-tree.h (DECL_THIS_INLINE): New macro.
362         (DECL_NOT_REALLY_EXTERN): New macro.
363         (DECL_THIS_STATIC): New macro.
364
365         * decl.c: Lose all references to current_extern_inline.  Break
366         inline semantics into DECL_INLINE for actual inlining and
367         DECL_THIS_INLINE for the linkage wierdness.  Use DECL_THIS_STATIC.
368         * decl2.c: Use DECL_NOT_REALLY_EXTERN to indicate that we want to
369         emit an inline here.  Associated changes.
370         * lex.c: Ditto.
371         * pt.c: Ditto.
372         * typeck.c: Ditto.
373
374         * call.c (build_method_call): Don't bother trying to handle inlines
375         specially.
376         * cvt.c (convert_to_aggr): Ditto.
377
378         * pt.c (do_function_instantiation): Handle instantiation of
379         public inlines, too.
380
381 Wed Mar 29 16:04:25 1995  Mike Stump  <mrs@cygnus.com>
382
383         * except.c (init_exception_processing): Change the interface for
384         __throw_type_match and add decl for new rtti matching routine
385         __throw_type_match_rtti.
386         (build_eh_type): New routine to build a run time descriptor for the
387         expression given. 
388         (expand_start_catch_block): Update to use new calling convention for
389         the matcher.
390         (expand_throw): Update to use build_eh_type.
391
392 Mon Mar 27 07:14:33 1995  Warner Losh   <imp@village.org>
393
394         * g++.c: Removed __NetBSD__ from conditional.
395         Declare strerror if HAVE_STRERROR is defined; otherwise
396         declare sys_errlist and sys_nerr.
397         (my_strerror): New function.
398
399 Tue Mar 28 14:16:35 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
400
401         * search.c (get_binfo): Don't try to be so clever.
402
403         * tree.c (copy_to_permanent): Also suspend_momentary().
404
405         * cvt.c (cp_convert_to_pointer): Hand off to convert_fn_pointer even
406         if the types are the same.
407
408         * decl.c (start_function): Handle extern inlines more like C++ says
409         we should.
410
411         * init.c (build_member_call): Hand constructor calls off to
412         build_functional_cast.
413
414         * typeck2.c (build_functional_cast): Use DECL_NESTED_TYPENAME to get
415         the name of the type.
416
417 Tue Mar 28 13:13:56 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
418
419         * decl.c (grokdeclarator): Check for the decl returned by
420         grokfndecl to be null before using build_decl_attribute_variant.
421
422 Mon Mar 27 18:04:41 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
423
424         * init.c (build_new): Use build_pointer_type instead of
425         TYPE_POINTER_TO.
426
427 Fri Mar 24 12:11:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
428
429         * typeck.c (build_conditional_expr): Handle pmfs.
430         (convert_for_assignment): Fix pmf support.
431
432         * cvt.c (convert_fn_ptr): Support !flag_vtable_thunks.
433         (cp_convert_to_pointer): Handle pmfs.
434         (cp_convert): Pass pmfs to cp_convert_to_pointer.
435
436         * typeck.c (common_type): Handle inheritance for pmfs.
437
438         * typeck2.c (build_m_component_ref): Do access control.
439
440         * typeck.c (comp_target_types): Check for conversion to void *
441         before checking trickier conversions.
442
443         * decl.c (duplicate_decls): Propagate DECL_ABSTRACT_VIRTUAL_P.
444
445         * pt.c (push_tinst_level): Complain if template instantiation depth
446         is greater than max_tinst_depth.
447
448         * typeck.c (common_type): Assume that we can call common_type to
449         unify the target type of a pointer.
450
451 Thu Mar 23 00:48:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
452
453         * decl2.c (finish_file): Don't synthesize methods at
454         finish_vtable_prevardecl time.  Do synthesize methods that are not
455         used, but are public and not external.
456
457         * cvt.c (build_type_conversion): Only give an error if for_sure.
458
459         * typeck.c (comp_target_types): Only support pointer conversions if
460         nptrs > 0.
461
462 Wed Mar 22 19:30:15 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
463
464         * init.c (build_new): Catch use of an initializer list where it
465         shouldn't be.
466
467 Wed Mar 22 16:21:07 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
468
469         * init.c (build_new): Wrap alloc_expr in an RTL_EXPR if nelts is
470         non-constant.
471
472         * decl2.c: temp_name_counter is now public.
473
474         * decl.c (struct cp_function): Add temp_name_counter field.
475         (push_cp_function_context): Save it.
476         (pop_cp_function_context): Restore it.
477
478         * typeck.c (common_type): Handle unifying function types, and unify
479         unmatched things to void* with a compiler_error, rather than
480         silently like before.
481
482 Wed Mar 22 15:10:34 1995  Mike Stump  <mrs@cygnus.com>
483
484         * decl2.c (finish_prevtable_vardecl, finish_vtable_vardecl): Revert
485         Brendan's last change and fix latent problem that causes TD entries
486         to not come out when the things that need them has yet to be
487         expanded.
488
489 Wed Mar 22 15:12:00 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
490
491         * typeck.c (build_binary_op_nodefault, comparison ops): Update type0
492         and type1, since we might have changed op0 or op1.
493
494 Wed Mar 22 13:33:45 1995  Jason Merrill  <jason@python.cygnus.com>
495
496         * typeck.c (common_type): Don't mess up templates.
497
498 Wed Mar 22 04:56:00 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
499
500         * typeck.c (common_type): Handle ptms properly.  Also handle 
501         T* -> void*.
502         (build_binary_op_nodefault): New variable build_type controls what
503         type is given to the expression when it is created.  Set this to
504         boolean_type_node for comparison ops instead of using result_type.
505         (comp_target_types): Allow T * -> void *.
506
507         * cvt.c (cp_convert_to_pointer): Do access control when converting
508         ptms, too.
509
510 Tue Mar 21 17:25:06 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
511
512         * parse.y (extern_lang_string): Catch use of linkage specs that
513         aren't all naming the same language.
514
515         * class.c (finish_struct): Delete accidental duplicate code.
516
517 Tue Mar 21 14:00:57 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
518
519         * typeck.c (build_binary_op_nodefault): Disable pedwarns about
520         comparing functions and incomplete types.
521
522         * decl.c (finish_function): Only unset current_function_decl if
523         !nested.
524         (duplicate_decls): Last change went too far; we only want to stop
525         checking for value/reference ambiguity.
526
527 Tue Mar 21 01:26:39 1995  Mike Stump  <mrs@cygnus.com>
528
529         * gc.c (build_generic_desc): Zap the DECL_SIZE so that we can lay it
530         out fresh, as the new type may be larger.
531
532 Mon Mar 20 19:01:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
533
534         * expr.c (extract_init): Try to expand the RTL for the
535         initialization and figure out what it will look like so we can avoid
536         run-time initialization.  Disabled for now.
537         (extract_scalar_init): Helper for scalar initialization.
538         (extract_aggr_init): Helper for aggregate initialization.
539
540         * decl.c (duplicate_decls): Don't complain about ambiguous
541         declarations.
542         (obscure_complex_init): Now returns a tree.  Call extract_init if
543         we're optimizing and this is a toplevel decl.
544         (finish_decl): Update accordingly.
545
546         * lex.c (check_newline): If we're just changing files (not pushing
547         or popping), update input_file_stack->name.
548
549 Mon Mar 20 17:55:04 1995  Mike Stump  <mrs@cygnus.com>
550
551         * pt.c (type_unification): Only TEMPLATE_DECLs are handled right now
552         in the transitive unification code.
553
554 Mon Mar 20 16:07:50 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
555
556         * decl.c (shadow_tag): Don't allow inline, virtual, or explicit on
557         non-functions.
558         (grokdeclarator): Don't allow friends to be defined in local classes.
559
560 Sat Mar 18 04:03:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
561
562         * decl2.c (finish_prevtable_vardecl): Use DECL_DECLARED_STATIC
563         rather than DECL_SAVED_INSNS to decide whether or not this method
564         was declared inline.
565
566         * method.c (synthesize_method): Turn off DECL_INLINE if
567         function_cannot_inline_p thinks we're too large.
568
569         * typeck.c (build_indirect_ref): Use build_expr_type_conversion.
570
571 Fri Mar 17 17:47:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
572
573         * class.c (instantiate_type): Handle pmfs.
574
575         * typeck.c (convert_for_assignment): Check types when assigning one
576         pmf to another.
577
578         * decl.c (define_label): Fix logic for printing out the name of the
579         label in an error message.
580
581         * error.c (dump_expr): Support ARRAY_REF.
582
583 Fri Mar 17 17:43:02 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
584
585         * decl2.c (finish_vtable_vardecl): Call build_t_desc here.
586         (finish_prevtable_vardecl): Instead of here.
587
588 Fri Mar 17 14:40:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
589
590         * decl.c (expand_static_init): Also use expand_aggr_init if the
591         initializer is a TREE_LIST.     
592         (grokdeclarator): Only pedwarn about extra qualification if -pedantic.
593
594         * pt.c (unify): Fix unification of return type.
595
596         * expr.c (fixup_result_decl): Use store_expr, rather than
597         emit_move_insn, to move the return value into the place where
598         callers will expect it.
599
600 Thu Mar 16 22:05:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
601
602         * init.c (build_offset_ref): Call assmble_external on functions.
603         * typeck.c (build_component_ref): Ditto.
604
605 Thu Mar 16 20:28:16 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
606
607         * decl.c (struct saved_scope): Add members base_init_list and
608         member_init_list.
609         (push_to_top_level): Save current_base_init_list and
610         current_member_init_list to them.
611         (pop_from_top_level): Put it back.
612
613 Thu Mar 16 19:21:14 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
614
615         * pt.c (instantiate_template): Call assemble_external.  
616
617 Thu Mar 16 18:07:54 1995  Brendan Kehoe  (brendan@phydeaux.cygnus.com)
618
619         * class.c: Include rtl.h, to get NULL_RTX.
620         (finish_struct): Also zero out DECL_SAVED_INSNS, to avoid problems
621         on hosts with different sizes for each part of the union.
622         * tree.c: Also include rtl.h.
623         (layout_basetypes): Same change for DECL_SAVED_INSNS.
624
625 Thu Mar 16 13:57:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
626
627         * pt.c (unify): Fix array domain unification for 64-bit targets.
628
629         * decl2.c (finish_file): Push bizarre type decl before walking the
630         vtables the first time.
631         (walk_vtables): OK, don't set prev to vars if the vardecl_fn messed
632         with TREE_CHAIN (prev).
633
634         * init.c (emit_base_init): Use convert_pointer_to_real instead of
635         convert_pointer_to when converting to a direct base.
636
637 Wed Mar 15 20:26:29 1995  Mike Stump  <mrs@cygnus.com>
638
639         * pt.c (type_unification): Handle transitive unification better.
640
641 Wed Mar 15 13:56:16 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
642
643         * decl2.c (walk_vtables): Always set prev to vars.
644         (mark_vtable_entries): Call assemble_external on the vtable entries.
645
646         * class.c (finish_struct): Set the vtable's size to NULL_TREE before
647         calling layout_decl, so that it gets updated properly.
648
649         Finally re-enable dynamic synthesis.  This time it works.
650         * method.c (synthesize_method): Pass decl_function_context (fndecl)
651         to {push,pop}_cp_function_context.
652         * decl.c (push_cp_function_context): Now takes a tree argument.
653         (pop_cp_function_context): Ditto.
654         * call.c (build_method_call): Enable synthesis.
655         * lex.c (cons_up_default_function): Ditto.
656
657 Tue Mar 14 19:14:19 1995  Doug Evans  <dje@chestnut.cygnus.com>
658
659         * parse.y (setattrs): Chain onto prefix_attributes rather than
660         setting it.
661
662 Wed Mar 15 13:00:00 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
663
664         * decl.c (pushdecl): Check if the type of the VAR_DECL is an
665         error_mark_node before trying to read TYPE_LANG_SPECIFIC. 
666
667 Mon Mar 13 21:00:28 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
668
669         * decl.c (grokdeclarator, case ARRAY_REF): Wrap the exp with fold,
670         and convert the size and integer_one_node to the index type.
671
672 Mon Mar 13 08:01:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
673
674         * typeck.c (get_member_function_from_ptrfunc): Save the instance
675         argument, and tack it onto the front of the COND_EXPR to make the
676         semantics come out right.  Grab the instance argument from
677         '*instance_ptrptr', rather than having it passed in separately.
678         
679         * various: Change various consed-up comparison operations to have
680         boolean type.  Remove the instance argument in calls to
681         get_member_function_from_ptrfunc.
682
683         * error.c (dump_expr): Dump true and false as "true" and "false".
684
685         * decl2.c (finish_file): Also set DECL_STATIC_FUNCTION_P on the
686         global init function.
687
688         * decl.c (finish_function): Only set DECL_EXTERNAL here if the
689         inline function is public.
690
691 Sat Mar 11 00:58:03 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
692
693         * init.c (is_friend): Be more careful about checking
694         DECL_CLASS_CONTEXT on non-member functions.
695
696         * decl2.c (finish_vtable_vardecl): Don't bother calling
697         assemble_external here.
698         (prune_vtable_vardecl): New function that just splices out the
699         vtable decl from the top-level decls.
700         (import_export_inline): Unset DECL_EXTERNAL at first.
701         (finish_file): Don't bother calling assemble_external here.  Do
702         splice out all of the vtables.
703
704 Fri Mar 10 14:42:29 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
705
706         * decl.c (finish_function): If we're not emitting the function yet,
707         call assemble_external for it.
708
709         * decl2.c (finish_prevtable_vardecl): Don't call mark_vtable_entries
710         here.
711         (finish_vtable_vardecl): Don't do the linkage deduction thing here.
712         Also don't splice out the current vtable if it is unused.
713         (finish_file): Move the second walk_vtables and the synthesis check
714         inside the 'reconsider' loop.  Move thunk emission after the
715         'reconsider' loop.
716
717 Thu Mar  9 16:28:16 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
718
719         * pt.c (tsubst): Don't bother calling cp_build_type_variant, since it
720         was passing bogus values for readonly and volatile from the original
721         template decl, not the resultant type of the tsubst call.
722
723         * class.c (duplicate_tag_error): Use cp_error_at to point out the
724         previous definition of the tag.
725
726 Thu Mar  9 10:46:17 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
727
728         * decl.c (start_function): Clear base_init_insns and protect_list.
729         (struct cp_function): Add base_init_insns field.
730         (push_cp_function_context): Also save base_init_insns.
731         (pop_cp_function_context): Also restore base_init_insns.
732
733 Wed Mar  8 13:31:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
734
735         * init.c (member_init_ok_or_else): Check for initializing a static
736         member here.
737         (emit_base_init): Instead of here.
738
739 Tue Mar  7 16:03:26 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
740
741         * call.c (build_method_call): Disable synthesis as needed.
742         * lex.c (cons_up_default_function): Ditto.
743
744 Tue Mar  7 10:14:29 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
745
746         * parse.y: New rules to allow attributes in a prefix position.
747         (prefix_attributes): New variable.  Pass it into cplus_decl_attributes.
748         (setattr): New rule.
749         (reserved_declspecs, declmods): Catch attributes here.
750         * decl2.c (cplus_decl_attributes): Add PREFIX_ATTRIBUTES argument.
751         * decl.c (duplicate_decls): Pass DECL_MACHINE_ATTRIBUTES to
752         descendent typedef.
753         (grokdeclarator): Added code to support machine attributes.
754         * Makefile.in (stamp-parse): Expect 5 shift/reduce failures.
755
756 Mon Mar  6 15:07:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
757
758         * call.c (build_method_call): Don't synthesize methods outside of a
759         function.
760
761         Make base initialization more re-entrant so that synthesis on the
762         fly will work (and, eventually, template instantation on the fly).
763         * init.c (sort_member_init): Don't bother with members that can't be
764         initialized.  Reorganize a bit.  Don't initialize base members here.
765         (sort_base_init): New function, like sort_member_init, but for base
766         classes.  Steals some code from emit_base_init.
767         (emit_base_init): Simplify.  Call sort_{member,base}_init before
768         doing any initialization, so we don't have to save
769         current_{member,base}_init_list in push_cp_function_context.
770         (expand_aggr_vbase_init_1): Adjust for sort_base_init.
771         (expand_aggr_vbase_init): Simplify.
772         * decl.c (struct cp_function): Add protect_list field.
773         (push_cp_function_context): Also save protect_list.
774         (pop_cp_function_context): Also restore protect_list.
775         * call.c (build_method_call): Enable synthesis at point of call.
776         * lex.c (cons_up_default_function): Ditto.
777
778         * parse.y: Turn -ansi checks back into -pedantic checks.
779
780         * init.c (build_new): Fix -fcheck-new for array new.
781
782 Sat Mar  4 15:55:42 1995  Fergus Henderson  <fjh@cs.mu.oz.au>
783
784         * typeck.c (build_compound_expr): warn if left-hand operand of
785         comma expression has no side-effects.
786
787 Fri Mar  3 15:16:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
788
789         * parse.y (primary): Change 'object qualified_id *' rules to 'object
790         overqualified_id *'.
791
792 Fri Mar  3 12:48:17 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
793
794         * parse.y (unary_expr): Catch doing sizeof an overloaded function.
795         Make the error look the same as the one we issue in c_sizeof.
796
797         * typeck.c (build_binary_op_nodefault): Give an error for trying
798         to compare a pointer-to-member to `void *'.
799
800 Fri Mar  3 11:28:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
801
802         * typeck.c (build_unary_op): Handle bool increment with smoke and
803         mirrors here, rather than in expand_increment where it belongs,
804         because Kenner doesn't agree with me.
805
806 Fri Mar  3 00:08:10 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
807
808         * decl.c (grokparms): Catch a PARM_DECL being used for a default
809         argument as well.
810
811 Thu Mar  2 20:05:54 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
812
813         * init.c (build_new): Don't allow new on a function type.
814
815         * parse.y (primary): Avoid a crash when seeing if the arg is of
816         the same type as that given for the typespec in an explicit dtor call.
817
818 Thu Mar  2 00:49:38 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
819
820         * decl.c (finish_function): Change test for calling
821         mark_inline_for_output.
822
823 Wed Mar  1 11:23:46 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
824
825         * typeck.c (build_modify_expr): Complain if
826         build_default_binary_type_conversion fails.
827
828         * init.c (expand_default_init): Handle arguments of unknown type
829         properly.
830
831         * cvt.c (build_expr_type_conversion): Only complain about ambiguity
832         if 'complain'.
833         * various: Pass 'complain'.
834
835         * typeck.c (comptypes): Be more picky about comparing UPTs.
836
837 Wed Mar  1 11:03:41 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
838
839         * decl.c (grokdeclarator): If declarator is null, say that the
840         type used has an incomplete type.
841
842 Wed Mar  1 10:06:20 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
843
844         * pt.c (instantiate_template): Copy the template arguments to the
845         permanent_obstack.  Also use simple_cst_equal to compare them when
846         looking for a previous instantiation.
847
848         * tree.c (make_deep_copy): Support copying INTEGER_TYPEs (assuming
849         they are array domain types).
850
851 Tue Feb 28 23:24:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
852
853         * cp-tree.h: Define WANT_* constants for passing to
854         build_expr_type_conversion.
855         * cvt.c (build_expr_type_conversion): New function to build
856         conversion to one of a group of suitable types.
857         (build_default_binary_type_conversion): Use it.
858         * decl2.c (grok_array_decl): Ditto.
859         * typeck.c (build_unary_op): Ditto.
860         (build_array_ref): Tidy up a bit.
861         (build_binary_op): Ditto.
862
863 Tue Feb 28 19:57:31 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
864
865         * decl.c (grokdeclarator): Don't allow decl of an argument as `void'.
866
867 Tue Feb 28 17:23:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
868
869         * parse.y (typed_declspecs1): Add 'typespec reserved_typespecquals
870         reserved_declspecs' rule.
871
872         * parse.y (expr_or_declarator): Remove notype_qualified_id rule.
873         (direct_notype_declarator): Ditto.
874         (complex_direct_notype_declarator): Add notype_qualified_id rule.
875
876         * lex.c (real_yylex): Handle :> digraph properly.
877
878 Tue Feb 28 12:26:29 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
879
880         * decl.c (grokdeclarator): Check if it's a friend, not if it's
881         non-virtual, that's being initialized.  Move the check up to
882         before FRIENDP would get cleared.  Catch an unnamed var/field
883         being declared void.  Say just `field' instead of `structure field'
884         in the error message.  Only go for the operator name if DECLARATOR
885         is non-null.
886
887 Tue Feb 28 00:08:01 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
888
889         * decl.c (start_function): Complain about abstract return type.
890         (grokdeclarator): Complain about declaring constructors and
891         destructors to be const or volatile.  Complain about declaring
892         destructors to be static.
893
894         * pt.c (uses_template_parms): Handle pmfs.
895
896         * decl.c (grokdeclarator): Don't call variable_size for array bounds
897         that only depend on template constant parameters.
898
899 Mon Feb 27 15:38:16 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
900
901         * error.c (dump_decl): Only look to see if it's a vtable if we
902         actually have a name to check out.
903
904 Mon Feb 27 13:37:53 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
905
906         * cvt.c (convert_to_aggr): Lose misleading shortcut.
907
908 Sun Feb 26 17:27:32 1995  Doug Evans  <dje@canuck.cygnus.com>
909
910         * decl.c (set_nested_typename): Always set DECL_IGNORED_P,
911         not just for dwarf.
912
913 Sun Feb 26 00:10:18 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
914
915         * decl.c (grokdeclarator): Don't allow a static member to be
916         declared `register'.
917
918         * init.c (make_friend_class): Move up to a pedwarn for the warning
919         about a class declaring friends with itself.
920
921         * decl.c (grokdeclarator): You can't do `volatile friend class foo'
922         or `inline friend class foo'.  Only try to make a friend out of
923         TYPE if we didn't already reset it to integer_type_node.
924
925 Sat Feb 25 22:32:03 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
926
927         * decl.c (grokdeclarator): Don't allow initialization of a
928         non-virtual function.
929
930         * decl.c (start_function): Do a pedwarn if we're changing `main'
931         to have an int return type.
932
933 Sat Feb 25 00:02:05 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
934
935         * typeck.c (build_modify_expr): Handle simple assignment from
936         TARGET_EXPRs by building up an RTL_EXPR to force expansion.  Whew.
937
938 Fri Feb 24 18:27:14 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
939
940         * decl.c (grokdeclarator): Also don't allow virtual outside of a
941         class decl for a scope method definition performed at global binding.
942
943         * init.c (build_offset_ref): Don't allow creation of an OFFSET_REF
944         of a bitfield.
945
946         * decl.c (grokdeclarator): Don't allow a const to be declared mutable.
947
948         * typeck.c (build_binary_op): Return an error_mark_node if either
949         one of the args turned into an error_mark_node when we tried to
950         use default_conversion.
951
952         * typeck.c (build_unary_op): Forbid using postfix -- on a bool.
953
954         * decl.c (grokdeclarator): Allow `signed' and `unsigned' to be
955         used on `__wchar_t'.
956
957 Fri Feb 24 13:59:53 1995  Mike Stump  <mrs@cygnus.com>
958
959         * except.c (end_protect_partials): Do it the right way.
960
961 Wed Feb 22 15:42:56 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
962
963         * typeck.c (build_binary_op_nodefault): Upgrade warning about
964         comparing distinct pointer types to pedwarn.
965
966         * typeck2.c (digest_init): Cope with extra braces.
967
968         * typeck.c (build_binary_op_nodefault): Use tree_int_cst_sgn instead
969         of INT_CST_LT (..., interger_zero_node).
970
971 Wed Feb 22 14:45:52 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
972
973         * except.c [!TRY_NEW_EH] (end_protect_partials): Define dummy
974         function for systems that don't have EH.
975
976 Tue Feb 21 19:18:31 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
977
978         * call.c (can_convert_arg): Like can_convert, but takes an arg as
979         well.
980
981         * pt.c (type_unification): Allow implicit conversions for parameters
982         that do not depend on template parameters.
983
984 Tue Feb 21 18:43:48 1995  Douglas Rupp  (drupp@cs.washington.edu)
985
986         * Make-lang.in, config-lang.in: ($exeext): New macro.
987         * Make-lang.in: Try a "cp" if "ln" fails.
988         * cp-tree.h (decl_attributes): Added argument.
989         * decl2.c (cplus_decl_attribute): Add arg to decl_attributes.
990         * cp/g++.c: Added #ifdefs for sys/file.h and process.h for NT.
991         Modified spawnvp to have to correct number of arguments for OS/2, NT.
992
993 Tue Feb 21 18:36:55 1995  Mike Stump  <mrs@cygnus.com>
994
995         * decl.c (finish_function): Add calls to end_protect_partials to end
996         the exception region that protects constructors so that partially
997         constructed objects can be partially destructed when the constructor
998         throws an exception.
999         * init.c (perform_member_init, sort_member_init, emit_base_init):
1000         Added support for partially constructed objects.
1001         * init.c (build_partial_cleanup_for): New routine to do partial
1002         cleanups of a base class.
1003         * decl2.c (finish_file): Move the emitting of the exception table
1004         down, after we emit all code that might have exception regions in
1005         them.
1006         * except.c (end_protect_partials, might_have_exceptions_p): New
1007         routines.
1008         (emit_exception_table): Always output table if called.
1009         * cp-tree.h (protect_list, end_protect_partials,
1010         might_have_exceptions_p, emit_exception_table): Added.
1011
1012 Tue Feb 21 16:05:59 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
1013
1014         * gc.c (build_typeid): Pass a NULL_TREE, not the bogus, unused
1015         address of a local variable.
1016         * class.c (build_vfn_ref): Only try to build the PLUS_EXPR if we
1017         were given a non-null PTR_TO_INSTPTR.
1018
1019 Tue Feb 21 01:53:18 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1020
1021         * decl.c (duplicate_decls): Always lay out the merged decl.
1022
1023         * decl2.c (finish_vtable_vardecl): Don't do vtable hack on templates.
1024         (finish_prevtable_vardecl): Ditto.
1025
1026         * method.c (synthesize_method): Set interface_{unknown,only}
1027         according to the settings for our class, not the file where it comes
1028         from.
1029
1030 Sat Feb 18 12:26:48 1995  Mike Stump  <mrs@cygnus.com>
1031
1032         * except.c: Handle systems that define __i386__ but not __i386.
1033
1034 Fri Feb 17 15:31:31 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1035
1036         * decl2.c (reparse_decl_as_expr): Support being called without a
1037         type argument.
1038
1039         * parse.y (primary): Add '(' expr_or_declarator ')'.  Adds 4 r/r
1040         conflicts.  Sigh.
1041
1042 Fri Feb 17 12:02:06 1995  Mike Stump  <mrs@cygnus.com>
1043
1044         * parse.y (template_def, fndef, fn.def1, return_init, condition,
1045         initdcl0, initdcl, notype_initdcl0, nomods_initdcl0,
1046         component_decl_1, after_type_component_declarator0,
1047         notype_component_declarator0, after_type_component_declarator,
1048         notype_component_declarator, after_type_component_declarator,
1049         full_parm, maybe_raises, exception_specification_opt): Fix up,
1050         include exception_specification_opt maybeasm maybe_attribute and
1051         maybe_init if missing.  Rename maybe_raises to
1052         exception_specification_opt to match draft wording.  Use maybe_init
1053         to simplify rules.
1054
1055 Fri Feb 17 01:54:46 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1056
1057         * init.c (build_new): Set TREE_NO_UNUSED_WARNING on COMPOUND_EXPRs
1058         built for news of scalar types.
1059
1060 Thu Feb 16 17:48:28 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1061
1062         * typeck.c (build_binary_op_nodefault): Update code for warning
1063         about signed/unsigned comparisons from C frontend.  Realize that the
1064         code in the C frontend is, if anything, even more bogus.  Fix it.
1065         (build_binary_op): Undo default_conversion if it wasn't useful.
1066
1067         * typeck.c (build_unary_op, ADDR_EXPR): Lose bogus special case for
1068         PRE*CREMENT_EXPR.
1069
1070         * decl2.c (import_export_vtable): Don't try the vtable hack
1071         if the class doesn't have any real non-inline virtual functions.
1072         (finish_vtable_vardecl): Don't bother trying to find a non-inline
1073         virtual function in a non-polymorphic class.
1074         (finish_prevtable_vardecl): Ditto.
1075
1076         * decl2.c (import_export_vtable): Use and set DECL_INTERFACE_KNOWN.
1077
1078         * cp-tree.h (DECL_INTERFACE_KNOWN): Use DECL_LANG_FLAG_5.
1079
1080         * init.c (expand_virtual_init): Always call assemble_external.
1081
1082         * class.c (build_vfn_ref): Always call assemble_external.
1083         (build_vtable): Always call import_export_vtable.
1084         (prepare_fresh_vtable): Ditto.
1085         (add_virtual_function): Don't bother setting TREE_ADDRESSABLE.
1086
1087 Thu Feb 16 03:28:49 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1088
1089         * class.c (finish_struct): Use TYPE_{MIN,MAX}_VALUE to determine
1090         whether an enumerated type fits in a bitfield.
1091
1092 Wed Feb 15 15:38:12 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1093
1094         * class.c (grow_method): Update method_vec after growing the class
1095         obstack.
1096
1097 Wed Feb 15 13:42:59 1995  Mike Stump  <mrs@cygnus.com>
1098
1099         * parse.y (handler_seq): Push a level for the catch parameters.
1100
1101 Wed Feb 15 12:42:57 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1102
1103         * init.c (emit_base_init): Update BINFO_INHERITANCE_CHAIN on my
1104         bases, in case they've been clobbered.
1105
1106 Wed Feb 15 12:07:29 1995  Mike Stump  <mrs@cygnus.com>
1107
1108         * class.c (finish_base_struct): Set up BINFO_INHERITANCE_CHAIN here,
1109         so that one day it will always be valid.
1110         * tree.c (propagate_binfo_offsets, layout_vbasetypes): Ditto.
1111
1112         * cp-tree.h (copy_binfo): Removed, unused.
1113         * tree.c (copy_binfo): Ditto.
1114
1115 Wed Feb 15 00:05:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1116
1117         * init.c (build_new): Save the allocation before calling
1118         expand_vec_init on it.
1119
1120         * decl.c (finish_enum): The TYPE_PRECISION of the enum type mush
1121         match the TYPE_PRECISION of the underlying type for constant folding
1122         to work.
1123
1124 Tue Feb 14 15:31:25 1995  Mike Stump  <mrs@cygnus.com>
1125
1126         * except.c (push_eh_entry, expand_start_all_catch,
1127         expand_leftover_cleanups, expand_end_catch_block): Keep track of
1128         the context in which the exception region occurs.
1129         (build_exception_table): If the region was not output, don't output
1130         the entry in the eh table for it.
1131
1132 Tue Feb 14 02:15:43 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1133
1134         * init.c (expand_default_init): Only use a previous constructor call
1135         if it's a call to our constructor.  Does the word "Duh" mean
1136         anything to you?
1137
1138         * decl.c (grokparms): Fine, just don't call
1139         convert_for_initialization at all.  OK?  Happy now?
1140
1141 Mon Feb 13 02:23:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1142
1143         * cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Make sure that the class
1144         method vector has a second element before returning it.
1145
1146         * decl.c (grokparms): Don't strip REFERENCE_TYPE before calling
1147         convert_for_initialization.
1148
1149 Sun Feb 12 03:57:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1150
1151         * typeck.c (build_modify_expr): Compare function name to
1152         constructor_name (current_class_type) instead of current_class_name.
1153
1154         * decl.c (grokparms): Don't do anything with the return value of
1155         convert_for_initialization.
1156
1157         * error.c (dump_decl): Also dump_readonly_or_volatile on the decl.
1158
1159         * decl.c (duplicate_decls): Tweak error message.
1160
1161         * typeck.c (build_const_cast): Implement checking.
1162         (build_reinterpret_cast): Implement some checking.
1163
1164         * cp-tree.h (CONV_FORCE_TEMP): Require a new temporary when
1165         converting to the same aggregate type.
1166         (CONV_STATIC_CAST): Include it.
1167         (CONV_C_CAST): Ditto.
1168         * cvt.c (convert_force): Use CONV_C_CAST instead of CONV_OLD_CONVERT.
1169         (cp_convert): Only force a new temporary if CONV_FORCE_TEMP.
1170
1171 Fri Feb 10 16:18:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1172
1173         * typeck.c (build_c_cast): Use non_lvalue to tack something on
1174         where necessary.
1175
1176         * decl.c (auto_function): Now a function.
1177         * except.c (init_exception_processing): terminate, unexpected,
1178         set_terminate, and set_unexpected have C++ linkage.
1179
1180         * typeck.c (build_unary_op, TRUTH_NOT_EXPR): Use convert instead of
1181         truthvalue_conversion for converting to bool, as it handles
1182         user-defined conversions properly.
1183         (condition_conversion): Ditto.
1184
1185         * except.c (expand_throw): Don't call convert_to_reference.
1186         Pass the correct parameters to build_new.
1187
1188         * method.c (do_build_assign_ref): Don't use access control when
1189         converting to a base reference here.
1190         (do_build_copy_constructor): Or here.
1191
1192         * init.c (build_new): Unset TREE_READONLY on the dereferenced
1193         pointer before assigning to it.
1194
1195         * decl.c (maybe_build_cleanup): Don't bother stripping const here.
1196
1197         * decl2.c (delete_sanity): You can now delete pointer to const.
1198
1199 Fri Feb 10 13:28:38 1995  Jason Merrill  <jason@python.cygnus.com>
1200
1201         * decl.c (finish_function): Don't rely on actual parameters being
1202         evaluated left-to-right.
1203         * except.c (expand_end_catch_block): Ditto.
1204
1205 Fri Feb 10 00:52:04 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1206
1207         * tree.c (real_lvalue_p): Like lvalue_p, but class temps aren't
1208         considered lvalues.
1209         * cvt.c (convert_to_reference): Use real_lvalue_p instead of
1210         lvalue_p.
1211
1212         * cvt.c (build_type_conversion_1): Don't call convert on aggregate
1213         types.
1214         (convert_to_reference): Fix erroneous text substitution.
1215
1216         * typeck2.c (initializer_constant_valid_p): Update from C frontend.
1217         Add new argument to all callers.
1218
1219         * typeck.c (convert_arguments): Check for error_mark_node before
1220         trying to do anything with the actual parameter.
1221
1222         * typeck.c (condition_conversion): Build up a CLEANUP_POINT_EXPR and
1223         fold it.
1224         (bool_truthvalue_conversion): Remove.  Fix all callers to call
1225         truthvalue_conversion instead.
1226         (various): Fold CLEANUP_POINT_EXPRs.
1227
1228         * parse.y (conditions): Call condition_conversion rather than
1229         building up a CLEANUP_POINT_EXPR.
1230
1231         * pt.c (end_template_decl): Don't warn_if_unknown_interface here
1232         under -falt-external-templates.
1233
1234 Thu Feb  9 05:24:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1235
1236         * init.c (build_new): Complain about new of const type without
1237         initializer.  Other cleanup.
1238
1239         * call.c (compute_conversion_costs): Don't call
1240         build_type_conversion with a reference type; convert to the target
1241         type and check its lvaluetude.
1242         * cvt.c (convert_to_reference): Ditto.
1243
1244         * cvt.c (build_type_conversion_1): There will never be any need to
1245         dereference references here now.
1246
1247 Thu Feb  9 00:37:47 1995  Mike Stump  <mrs@cygnus.com>
1248
1249         * except.c (expand_builtin_throw): Make sure we only `use' the
1250         value of return_val_rtx.
1251
1252 Wed Feb  8 15:45:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1253
1254         * parse.y (structsp): Don't complain about declaring a type being
1255         defined to be a friend.
1256
1257         * decl2.c (warn_if_unknown_interface): Note the template in question
1258         and the point of instantiation, for -falt-external-templates.
1259         * lex.c (reinit_parse_for_method): Pass the decl to
1260         warn_if_unknown_interface.
1261         * pt.c (instantiate_template): Ditto.
1262         (end_template_decl): Ditto.
1263
1264         * decl.c (set_nested_typename): Set IDENTIFIER_TYPE_VALUE on the
1265         nested name again, to make local classes work a bit better.
1266
1267         * typeck.c (build_function_call_real): Dereference reference after
1268         checking for incomplete type.
1269
1270         * init.c (build_new): Accept new of const and volatile types.
1271
1272 Wed Feb  8 14:04:16 1995  Jason Merrill  <jason@deneb.cygnus.com>
1273
1274         * decl.c (grokdeclarator): Fix error message.
1275
1276 Wed Feb  8 03:16:15 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1277
1278         * typeck.c (convert_for_initialization): Do bash arrays when
1279         converting to a reference to non-array.
1280
1281 Tue Feb  7 15:50:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1282
1283         * cvt.c (cp_convert): Don't call convert_to_reference, or
1284         automatically dereference references.  Do pass reference conversions
1285         to cp_convert_to_pointer.
1286         (cp_convert_to_pointer): Support references.
1287
1288         * call.c (build_method_call): Don't build up a reference to the
1289         parameter here; let build_overload_call handle that.
1290
1291         * typeck.c (build_c_cast): Call convert_to_reference directly if
1292         converting to a reference type.
1293         * method.c (do_build_copy_constructor): Ditto.
1294         * method.c (do_build_copy_constructor): Ditto.
1295         (do_build_assign_ref): Ditto.
1296
1297         * call.c (build_method_call): Dereference a returned reference.
1298         * typeck.c (build_function_call_real): Ditto.
1299
1300         * decl.c (xref_basetypes): Check for unions with basetypes here.
1301         (xref_tag): Instead of here.
1302
1303         * pt.c (process_template_parm): Template type parm decls are
1304         artificial.
1305
1306 Mon Feb  6 04:32:09 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1307
1308         * parse.y (typed_declspecs): Add missing semicolon.
1309         (do_xref_defn): Resurrect.
1310         (named_class_head_sans_basetype): Move template specialization
1311         definition cases to named_class_head_sans_basetype_defn.
1312
1313         * decl2.c (grokfield): Call pushdecl_class_level after setting the
1314         TYPE_NAME, not before.
1315
1316 Sun Feb  5 02:50:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1317
1318         * call.c (convert_harshness): Don't call sorry here.  Don't allow
1319         conversions between function pointer types if pedantic.
1320
1321         * pt.c (overload_template_name): Pass globalize=1 to xref_tag.
1322
1323         * lex.c (cons_up_default_function): Use the full name for the return
1324         type of op=.
1325
1326         * decl.c (set_nested_typename): Don't worry about anonymous types,
1327         as they already have a unique name.
1328         (pushdecl): Remove redundant set_nested_typename
1329         (xref_tag): Split out base handling into xref_basetypes.
1330
1331         * cp-tree.h (TYPE_INCOMPLETE): New macro; TEMPLATE_TYPE_PARMs are
1332         not considered incomplete even though their definition is unknown.
1333
1334         * decl.c (xref_defn_tag): Lose.
1335         (xref_tag): xref_next_defn = ! globalize.
1336         (pushdecl): Don't set DECL_NESTED_TYPENAME on artificial decls.  The
1337         ones that should have it set will have it set by pushtag.
1338         (pushdecl_class_level): Ditto.
1339         (pushtag): Tidy up a bit.
1340         (set_nested_typename): Push a decl for the nested typename from
1341         here, rather than from xref_defn_tag.
1342
1343         * parse.y (do_xref): Lose.
1344         (named_class_head): If we see 'class foo:' we know it's a
1345         definition, so don't worry about base lists for non-definitions.
1346
1347         * pt.c (push_template_decls): Template parm decls are artificial.
1348
1349         * decl.c (duplicate_decls): Restore check for qualifier
1350         disagreement for non-functions.
1351         (decls_match): Remove check for qualifier disagreement.
1352
1353 Fri Feb  3 14:58:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1354
1355         * decl.c (grok_reference_init): Convert initializer from
1356         reference.
1357         * typeck.c (convert_for_initialization): Ditto.
1358
1359         * decl.c (duplicate_decls): Propagate DECL_NESTED_TYPENAME.
1360
1361         * cvt.c (cp_convert): Don't convert to the same class type by just
1362         tacking on a NOP_EXPR.
1363         (convert_to_reference): Use comp_target_types instead of comptypes
1364         so that we don't allow conversions two levels down.
1365
1366 Thu Feb  2 15:07:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1367
1368         * class.c (build_vbase_path): Bash types to make the backend happy.
1369         * cvt.c (build_up_reference): Bash the types bashed by
1370         build_vbase_path to be reference types instead of pointer types.
1371         (convert_to_reference): Ditto.
1372
1373         * typeck.c (build_c_cast): Don't strip NOPs if we're converting to a
1374         reference type.
1375
1376         * parse.y (structsp): Put back error for 'struct B: public A;'.
1377
1378 Wed Feb  1 23:02:06 1995  Mike Stump  <mrs@cygnus.com>
1379
1380         * except.c: Add support for mips systems that don't define __mips
1381         but do define mips, like Ultrix.
1382
1383 Wed Feb  1 22:39:07 1995  Mike Stump  <mrs@cygnus.com>
1384
1385         * except.c: Add support for exception handling on the Alpha.
1386
1387 Wed Feb  1 10:12:14 1995  Mike Stump  <mrs@cygnus.com>
1388
1389         * decl2.c (finish_file): Fix bug in Jan 31st change.
1390
1391 Tue Jan 31 16:59:15 1995  Gerald Baumgartner  (gb@lorenzo.cs.purdue.edu)
1392
1393         * sig.c (build_signature_pointer_or_reference_type): Don't set
1394         IS_AGGR_TYPE for signature pointers/reference so expand_default_init
1395         doesn't expect to find a copy constructor.
1396         * call.c (build_method_call): Treat signature pointers/reference
1397         as if IS_AGGR_TYPE were set.
1398
1399 Tue Jan 31 13:28:56 1995  Mike Stump  <mrs@cygnus.com>
1400
1401         * gc.c (get_typeid): Pawn off error messages to build_t_desc.
1402         (build_t_desc): Inform the user here if they try and build
1403         with -frtti and don't include <typeinfo.h>.
1404
1405         * decl2.c (finish_prevtable_vardecl): Support rescanning.
1406         (finish_file): Move finish_prevtable_vardecl up to before the global
1407         initializers are done as tdecls are initialized in the global
1408         initializer.  Also Pick up any new tdecls or vtables needed by
1409         synthesized methods.
1410
1411         * class.c (finish_struct): Simplify.  We have to do rtti scanning at
1412         end, so we might as well do all of it there.
1413
1414 Tue Jan 31 05:35:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1415
1416         * call.c (build_method_call): Fix -fthis-is-variable for 32-bit
1417         targets, too.
1418
1419 Tue Jan 31 00:11:04 1995  Mike Stump  <mrs@cygnus.com>
1420
1421         * decl2.c (finish_prevtable_vardecl): New routine, mostly split from
1422         finish_vtable_vardecl.  It has the first half functionality from
1423         that routine.
1424         * decl2.c (finish_vtable_vardecl): Update to not include stuff not
1425         in  finish_prevtable_vardecl.
1426         * decl2.c (finish_file): Call finish_prevtable_vardecl.
1427         * gc.c (build_generic_desc): Allow it to be called when not at the
1428         global binding layer, but behave as if we were.
1429         (build_t_desc): Rearrange a bit so that it really works and is
1430         easier to follow.
1431         * class.c (finish_struct): Don't decide on tdecls here, as we have
1432         to wait until the end of the file in general to decide whether or
1433         not they come out.
1434
1435 Mon Jan 30 01:00:40 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1436
1437         * init.c (build_delete): Check access to operator delete before
1438         calling the destructor.
1439         * method.c (build_opfncall, DELETE_EXPR): build_method is allowed to
1440         return error_mark_node.
1441         * call.c (build_method_call): Use the one-argument op delete even if
1442         it's an error.
1443
1444         * init.c (build_new): Fix -fthis-is-variable support.
1445         * call.c (build_method_call): Ditto.
1446
1447         * call.c (convert_harshness): Make conversion from a pointer to bool
1448         worse than conversion to another pointer.
1449
1450 Sat Jan 28 16:46:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1451
1452         * init.c (build_new): Check new return value if -fcheck-new.
1453
1454         * lex.c (check_newline): Clear end_of_file when we're done, too.
1455
1456 Sat Jan 28 10:38:39 1995  Mike Stump  <mrs@cygnus.com>
1457
1458         * decl2.c (finish_vtable_vardecl): Make rtti TD tables follow
1459         vtables whereever they go.
1460
1461         * gc.c (build_t_desc): Remove old way of setting it up, as it wasn't
1462         right.
1463
1464 Sat Jan 28 09:10:44 1995  Mike Stump  <mrs@cygnus.com>
1465
1466         * decl2.c (finish_vtable_vardecl): Now set the
1467         interface/implementation of vtables on the first virtual function,
1468         if one exists, otherwise we use the old method.  This is a major win
1469         in terms of cutting down the size of objects and executables in
1470         terms of text space and data space.  Now most of the savings that
1471         #pragma interface/implementation gives is automatic in a fair number
1472         of cases.
1473
1474 Sat Jan 28 04:57:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1475
1476         * decl.c (grokdeclarator): Discard the template parameters in a
1477         template constructor declaration so that the function is always
1478         named constructor_name (ctype).
1479
1480         * lex.c (check_newline): Use ungetc to put back the character before
1481         calling HANDLE_PRAGMA.
1482
1483 Fri Jan 27 17:23:47 1995  Mike Stump  <mrs@cygnus.com>
1484
1485         * decl2.c (check_classfn): If the cname is T<int> and fn_name is T,
1486         make sure we still match them.
1487
1488 Fri Jan 27 16:32:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1489
1490         * parse.y: Add END_OF_LINE token.
1491
1492         * lex.c (check_newline): Set linemode when we see a # directive, and
1493         unset it when we're done.  Turn all 'return's into 'goto skipline'.
1494         Fix all uses of '\n', since we won't see it anymore.  Put back the
1495         character we read before checking for a sysv or target pragma.
1496         (real_yylex): If we see an EOF in linemode, return END_OF_LINE.
1497         (handle_sysv_pragma): Don't look at the input stream; quit when we
1498         see an END_OF_LINE token.
1499
1500         * input.c (getch): Return EOF if we're in line mode and at the end
1501         of a line.
1502         (put_back): Don't put back an EOF.
1503
1504 Thu Jan 26 19:26:34 1995  Mike Stump  <mrs@cygnus.com>
1505
1506         * except.c (expand_throw): Do the newing of the exception object
1507         before we load the type descriptor or the address so that we don't
1508         wipe any of the values out.
1509
1510 Thu Jan 26 19:20:00 1995  Mike Stump  <mrs@cygnus.com>
1511
1512         * except.c (init_exception_processing): Don't use r12 on the rs6000.
1513
1514 Tue Jan 24 16:36:31 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1515
1516         * decl.c (grokparms): Don't try to build up a reference at this point.
1517
1518         * typeck2.c (build_functional_cast): Don't assume that a NOP_EXPR
1519         will suffice to convert from integer_zero_node.
1520
1521 Wed Jan 25 15:02:09 1995  David S. Miller  (davem@nadzieja.rutgers.edu)
1522
1523         * class.c (instantiate_type): Change error message text.
1524         * typeck2.c (store_init_value): Likewise.
1525
1526 Mon Jan 23 21:57:14 1995  Mike Stump  <mrs@cygnus.com>
1527
1528         * pt.c (tsubst): When we copy a node, don't forget to copy
1529         TREE_CHAIN, we use it later.
1530
1531 Mon Jan 23 03:33:47 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1532
1533         * typeck.c (convert_for_assignment): Initialize variable before use.
1534
1535 Fri Jan 20 01:17:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1536
1537         * g++.c (main): Link with both libstdc++ and libg++ if called as
1538         something ending with "g++", otherwise only libstdc++.  Move -lm to
1539         the end of the line.
1540
1541 Thu Jan 19 15:43:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1542
1543         * call.c (build_method_call): Don't mess with 'this' before calling
1544         compute_conversion_costs.
1545
1546 Wed Jan 18 15:40:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1547
1548         * search.c (get_matching_virtual): Give line number for previous
1549         declaration.
1550
1551         * call.c (convert_harshness): Handle conversions to references
1552         better.
1553
1554         * cvt.c (build_up_reference): OK, handle {MIN,MAX}_EXPR *properly*.
1555
1556 Wed Jan 18 15:21:38 1995  Mike Stump  <mrs@cygnus.com>
1557
1558         * class.c (instantiate_type): Use DECL_CHAIN to walk lists instead,
1559         as the TREE_CHAIN for methods will take us to the next differently
1560         named function, DECL_CHAIN won't.
1561
1562 Wed Jan 18 14:26:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1563
1564         * tree.c (lvalue_p): Handle {MIN,MAX}_EXPR.
1565
1566         * decl2.c (lang_decode_option): -Wall implies -Wparentheses.
1567         warn_parentheses defaults to 0.
1568
1569         * decl.c (grokparms): Put back call to require_instantiated_type.
1570
1571 Tue Jan 17 19:56:15 1995  Mike Stump  <mrs@cygnus.com>
1572
1573         * except.c (exception_section): Use the data section on the rs6000.
1574         Change calling convention for named_section.
1575
1576 Wed Jan 17 18:20:57 1994  Fergus Henderson <fjh@munta.cs.mu.oz.au>
1577
1578         * cp-tree.h : Make if (x=0) warn with wall
1579         * parse.y : Make if (x=0) warn with wall
1580
1581 Tue Jan 17 14:12:00 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1582
1583         * decl.c (BOOL_TYPE_SIZE): BITS_PER_WORD if SLOW_BYTE_ACCESS,
1584         BITS_PER_UNIT otherwise.
1585
1586         * search.c (get_matching_virtual): Don't check the binfo if the
1587         types are the same.
1588
1589         * cvt.c (cp_convert): Just call truthvalue_conversion to convert to
1590         bool.
1591
1592 Mon Jan 16 13:28:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1593
1594         * various: Use boolean_type_node, boolean_true_node,
1595         boolean_false_node.
1596
1597         * search.c (get_matching_virtual): Allow covariant returns that
1598         don't require pointer adjustment.
1599
1600         * typeck.c (build_conditional_expr): Don't call default_conversion
1601         on ifexp.
1602
1603         * cvt.c (build_up_reference): Handle MIN_EXPR and MAX_EXPR.
1604
1605         * decl.c (grokdeclarator): Upgrade warning about &const to pedwarn.
1606
1607 Sun Jan 15 22:17:32 1995  dcb@lovat.fmrco.COM (David Binderman)
1608
1609         * pt.c (do_function_instantiation): Free targs once we're done.
1610
1611 Sun Jan 15 22:17:32 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1612
1613         * decl.c (BOOL_TYPE_SIZE): Defaults to BITS_PER_WORD.
1614         (init_decl_processing): Use BOOL_TYPE_SIZE instead of CHAR_TYPE_SIZE
1615         for bool.
1616
1617 Sat Jan 14 05:33:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1618
1619         * decl2.c (finish_file): We need to mess up if there are any
1620         variables in the list, not just if there is one with a constructor.
1621
1622 Fri Jan 13 14:42:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1623
1624         * decl.c (duplicate_decls): Propagate DECL_STATIC_{CON,DE}STRUCTOR.
1625         (finish_function): Handle DECL_STATIC_{CON,DE}STRUCTOR.
1626         (finish_function): Trust rest_of_compilation.
1627
1628         * decl2.c (finish_file): Also call functions designated as static
1629         constructors/destructors.
1630
1631         * decl.c (grokdeclarator): Allow access decls of operator functions.
1632         (grokparms): Only do convert_for_initialization if the initializer
1633         has a type.
1634         (duplicate_decls): Put back push_obstacks_nochange call.
1635
1636         * lex.c (real_yylex): Downgrade complaint about the escape sequence
1637         being too large from pedwarn to warning.
1638
1639         * decl.c (grokdeclarator): Don't complain about long long in system
1640         headers.
1641
1642         * lex.c (real_yylex): Handle digraphs.
1643
1644 Thu Jan 12 12:17:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1645
1646         * decl.c (init_decl_processing): -f{no-,}strict-prototype only
1647         affects C linkage declarations now.
1648
1649         * typeck.c (comp_target_types): Grok simple contravariant conversions.
1650         (common_type): t1 and t2 are interchangeable.
1651
1652         * various: Test return value of comp_target_types differently in
1653         different places; it now returns -1 for a contravariant conversion
1654         (which is fine in symmetric cases).
1655
1656         (common_type): Prefer long double to double even when
1657         they have the same precision.
1658
1659         * decl.c (grokparms): Call convert_for_initialization to check
1660         default arguments.
1661
1662         * init.c (build_new): void_type_node has a size (of 0).
1663
1664         * decl.c (decls_match): Also check for agreement of TREE_READONLY
1665         and TREE_THIS_VOLATILE.
1666         (push_class_level_binding): Properly handle shadowing of
1667         nested tags by fields.
1668
1669         * search.c (dfs_pushdecls): Ditto.
1670
1671         * decl2.c (finish_file): Don't second-guess self-initialization.
1672
1673         * cvt.c (convert_to_reference): Work with expr directly, rather than
1674         a copy.
1675
1676         * decl.c (push_overloaded_decl): Only shadow artificial TYPE_DECLs.
1677
1678         * init.c (add_friend): Downgrade duplicate friend message from
1679         pedwarn to warning.
1680
1681         * decl.c (duplicate_decls): Push obstacks before calling common_type.
1682
1683 Thu Jan 12 17:15:21 1995  Michael Ben-Gershon  <mybg@cs.huji.ac.il>
1684
1685         * except.c (push_eh_entry): set LABEL_PRESERVE_P flag for
1686         exception table labels.
1687         (expand_start_all_catch): Ditto.
1688         (expand_leftover_cleanups): Ditto.
1689         (expand_end_catch_block): Ditto.
1690         * except.c (make_first_label): new function.
1691         (expand_start_all_catch): add a call to make_first_label() before
1692         using a label as a jump destination.
1693         (expand_end_all_catch): Ditto.
1694         (expand_leftover_cleanups): Ditto.
1695         (expand_end_catch_block): Ditto.
1696         (expand_builtin_throw): Ditto.
1697         (expand_throw): Ditto.
1698         * except.c: Add ARM processor support for exception handling.
1699
1700 Thu Jan 12 12:17:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1701
1702         (complete_array_type): Copy code from C frontend.
1703
1704         * lex.c (real_yylex): Don't multiply the length of a wide string
1705         literal by WCHAR_BYTES.
1706
1707         * decl.c (pushdecl): Check for redeclaration of wchar_t here.
1708         (duplicate_decls): Instead of here.
1709         (define_label): Complain about a label named wchar_t.
1710         (grokdeclarator): Complain about declarations of
1711         operator-function-ids as non-functions.
1712
1713         * typeck.c (unary_complex_lvalue): Also wrap prefix -- and ++ in
1714         COMPOUND_EXPRs.
1715         (build_unary_op): Wrap unary plus in a NON_LVALUE_EXPR.
1716
1717         * lex.c (real_yylex): Don't skip whitespace when reading the next
1718         character after ->.
1719
1720 Wed Jan 11 16:32:49 1995  Mike Stump  <mrs@cygnus.com>
1721
1722         * except.c: Allow cc1plus to be built with native compiler on rs6000.
1723         (expand_start_all_catch): Add assemble_external calls for various
1724         routines we call.
1725         (expand_leftover_cleanups): Ditto.
1726         (expand_start_catch_block): Ditto.
1727         (do_unwind): Ditto.
1728         (expand_builtin_throw): Ditto.
1729
1730 Wed Jan 11 01:05:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1731
1732         * decl.c (pushtag): Only look for a previous decl in the current
1733         binding level.  Use explicit global scope in DECL_NESTED_TYPENAME.
1734
1735         * gxx.gperf: Add __signature__ and __sigof__ keywords.
1736
1737         * decl2.c (lang_decode_option): -ansi does not set flag_no_asm.  It
1738         does set flag_no_gnu_keywords and flag_operator_names.
1739
1740         * lex.c (init_lex): 'overload' is not a keyword unless -traditional.
1741         Unset extension keywords if -fno-gnu-keywords.
1742         Allow operator names ('bitand') if -foperator-names.
1743         Never unset 'asm'; -fno-asm only affects 'typeof'.
1744
1745         * decl.c (lookup_name_real): The got_object special lookup only
1746         applies to types.
1747
1748 Tue Jan 10 18:07:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1749
1750         * spew.c (yylex): Also use DECL_NESTED_TYPENAME if got_object is set.
1751
1752         * parse.y (primary): Unset got_object after all rules that use the
1753         'object' nonterminal.
1754         (object): Set got_object.
1755
1756         * lex.h: Declare got_object.
1757
1758         * decl.c (lookup_name_real): Also lookup names in the context of an
1759         object specified.
1760
1761 Tue Jan 10 14:30:30 1995  Mike Stump  <mrs@cygnus.com>
1762
1763         * typeck.c (get_member_function_from_ptrfunc): Use ptrdiff_type_node
1764         for things that have to be added to pointers, not size_type.  Cures
1765         problems with pointer to members on Alphas.
1766         (build_binary_op_nodefault): Ditto.
1767         (get_delta_difference_: Ditto.
1768         (build_ptrmemfunc): Ditto.
1769
1770 Tue Jan 10 01:49:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1771
1772         * decl.c (pushtag): Stick the new decl in TYPE_NAME before pushing
1773         it.
1774
1775         * typeck.c (build_component_ref): Don't build up a COMPONENT_REF
1776         when dealing with overloaded member functions; just act like
1777         build_offset_ref.
1778         (commonparms): Remove misleading comment.
1779
1780         * decl.c (duplicate_decls): Complain about repeated default
1781         arguments here.
1782         (redeclaration_error_message): Instead of here.
1783         (pushdecl): Complain about missing default arguments here.
1784         (grokparms): Instead of here.
1785         (lookup_name_current_level): Also match on DECL_ASSEMBLER_NAME.
1786         (grok_reference_init): Do not complain about missing initializer if
1787         declared 'extern'.
1788
1789         * search.c (lookup_field): Don't return a TYPE_DECL if there is a
1790         function alternative and want_type is not set.
1791
1792 Mon Jan  9 18:16:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1793
1794         * decl.c (pushtag): Don't set TYPE_NAME to an identifier.  Do push
1795         the decl when the type has no TYPE_NAME.
1796         (lookup_nested_type): Don't assume that type has TYPE_NAME set.
1797         (lookup_name_real): Call lookup_field with want_type =
1798         prefer_type.
1799
1800         * search.c (lookup_field): Handle want_type properly in the presence
1801         of fields with the same name.
1802
1803         * decl.c (set_nested_typename): Set nested name for file-scope types
1804         to include leading ::.
1805         (pushdecl): Set the nested typename if the decl doesn't have one,
1806         rather than if the type's canonical decl doesn't have one.
1807
1808 Mon Jan  9 16:48:16 1995  Steve Chamberlain  (sac@jonny.cygnus.com)
1809
1810         * typeck.c (pointer_int_sum):  Use offset size when calculating
1811         index expression.
1812
1813 Mon Jan  9 03:44:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1814
1815         * typeck.c (convert_for_assignment): Complain about contravariance
1816         violation here.
1817         (comp_target_types): Instead of here.
1818         (build_unary_op): resolve_offset_ref before checking for a valid
1819         type.
1820
1821         * spew.c (yylex): Decrement looking_for_typename after we see a
1822         _DEFN.
1823
1824         * decl.c (pushdecl): Don't install an artificial TYPE_DECL in
1825         IDENTIFIER_LOCAL_VALUE if we already have a decl with that name.
1826
1827         * typeck.c (convert_for_assignment): Converting pointers to bool
1828         does not need a cast.
1829
1830 Sun Jan  8 18:16:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1831
1832         * class.c (instantiate_type): Initialize nsubsts parm.
1833
1834         * pt.c (do_function_instantiation): Ditto.
1835
1836 Sat Jan  7 14:37:05 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1837
1838         * pt.c (tsubst): Use TREE_STATIC instead of DECL_INLINE &&
1839         DECL_SAVED_INSNS to determine whether or not we've seen a definition
1840         of this function.
1841         (instantiate_template): Ditto.
1842
1843         * call.c (convert_harshness): Allow const reference binding when
1844         called from the overloading code, but not when called from
1845         can_convert (since it isn't a conversion).
1846         (convert_harshness): Put back some disabled code.
1847
1848 Fri Jan  6 14:10:57 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1849
1850         * call.c (convert_harshness): There is no implicit conversion from
1851         void* to other pointer types (unless the parameter is (void*)0).
1852         (convert_harshness): Non-lvalues do not convert to reference types.
1853
1854         * class.c (finish_struct_methods): Still set
1855         TYPE_HAS_{INT,REAL}_CONVERSION.
1856
1857         * call.c (can_convert): Don't use aggregate initialization.
1858
1859         * cp-tree.h: Declare lookup_conversions.
1860
1861 Thu Jan  5 21:08:00 1995  Mike Stump  <mrs@cygnus.com>
1862
1863         * parse.y (simple_stmt): Fix duplicate case value error messages to
1864         be more readable.
1865
1866 Wed Jan  4 16:44:19 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1867
1868         * cvt.c (build_type_conversion): Total rewrite to use
1869         convert_harshness instead of reproducing conversion logic here.  Now
1870         much shorter.
1871
1872         * call.c (convert_harshness): Support conversions to bool.
1873         (can_convert): Checks whether a conversion is less harsh
1874         than USER_CODE, for build_type_conversion.
1875
1876         * search.c (add_conversions): Function for passing to dfs_walk which
1877         adds all the type conversion operators in the current type to a list.
1878         (lookup_conversions): Calls dfs_walk with add_conversions and return
1879         the list.
1880         (dfs_walk): Don't require a qfn.
1881
1882         * cp-tree.h: Lose CLASSTYPE_CONVERSIONS hackery.
1883         (CLASSTYPE_FIRST_CONVERSION): Points to elt 1 of CLASSTYPE_METHOD_VEC.
1884
1885         * class.c (finish_struct_bits): Lose CLASSTYPE_CONVERSIONS hackery.
1886         (grow_method): A separate function for building onto the growing
1887         method vector.
1888         (finish_struct_methods): Use it.  Put all type conversion operators
1889         right after the constructors.  Perhaps we should sort the methods
1890         alphabetically?
1891
1892 Mon Jan  2 14:42:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1893
1894         * call.c (build_method_call): Lose another misleading shortcut.
1895
1896 Fri Dec 30 17:57:30 1994  Mike Stump  <mrs@cygnus.com>
1897
1898         * gc.c (build_bltn_desc): Handle bool as a built-in type.
1899
1900 Fri Dec 30 14:20:21 1994  Mike Stump  <mrs@cygnus.com>
1901
1902         * tree.c (layout_vbasetypes): Ensure that we don't loose alignment
1903         on the complete type because of small virtual bases.
1904
1905 Fri Dec 30 12:22:29 1994  Mike Stump  <mrs@cygnus.com>
1906
1907         * decl.c (n_incomplete): Bump n_incomplete up to int to match C
1908         front end.
1909         (pushdecl): Also count decls pushed that are of a type being defined
1910         as incomplete things.
1911         * class.c (finish_struct): Move hack_incomplete_structures up to
1912         just after we set it as not being defined, so that the decls we
1913         build for RTTI don't count as incomplete.
1914
1915 Thu Dec 29 18:20:57 1994  Mike Stump  <mrs@cygnus.com>
1916
1917         * pt.c (tsubst): Fix problem with defining constructors in templated
1918         classes with virtual bases.
1919
1920 Wed Dec 28 08:31:00 1994  Mike Stump  <mrs@cygnus.com>
1921
1922         * parse.y (TYPEID): Strip top-level cv-qualifiers on typeid
1923         expressions.
1924         * gc.c (build_typeid): Ditto.
1925
1926 Thu Dec 22 17:26:33 1994  Mike Stump  <mrs@cygnus.com>
1927
1928         * cvt.c (build_up_reference): Fix breakage introduced on Nov 29,
1929         don't assert on complex AGGR inits.
1930
1931 Thu Dec 22 14:32:31 1994  Mike Stump  <mrs@cygnus.com>
1932
1933         * method.c (build_overload_value): Handle pointer to members as
1934         template arguments.
1935
1936 Thu Dec 22 13:09:07 1994  Mike Stump  <mrs@cygnus.com>
1937
1938         * typeck.c (unary_complex_lvalue): Don't call sorry if we know how
1939         to do take the address of a data member for a pointer to data
1940         member.
1941
1942 Thu Dec 22 10:04:19 1994  Mike Stump  <mrs@cygnus.com>
1943
1944         * decl.c (grokdeclarator): Use the typedef name for linkage if the
1945         type doesn't otherwise have a name.
1946
1947         * decl2.c (grokfield): Ditto.
1948
1949         * class.c (finish_struct): Since we reuse the TYPE_DECL for the
1950         DECL_NAME of enums, structs and classes, we have to avoid trying to
1951         put it in the TYPE_FIELDS again.
1952
1953 Wed Dec 21 11:07:05 1994  Mike Stump  <mrs@cygnus.com>
1954
1955         * decl2.c (check_classfn): Ignore this parameter on static functions
1956         when checking to see if we match.
1957
1958 Tue Dec 20 17:47:02 1994  Mike Stump  <mrs@cygnus.com>
1959
1960         * typeck.c (unary_complex_lvalue): Handle address of non-left most
1961         pointers to members by calling get_delta_difference.
1962
1963 Mon Dec 19 22:40:53 1994  Mike Stump  <mrs@cygnus.com>
1964
1965         * decl2.c (check_classfn): Don't use decls_match yet, as it modifies
1966         static functions to early.
1967
1968 Thu Dec 19 22:37:48 1994  Mike Stump  <mrs@cygnus.com>
1969
1970         * method.c (make_thunk): Handle encoding of positive thunk offsets.
1971
1972 Sat Dec 17 13:29:50 1994  Doug Evans  <dje@canuck.cygnus.com>
1973
1974         * Make-lang.in (.PHONY): Tell GNU make C++ and c++ are phony targets.
1975
1976 Thu Dec 15 16:32:12 1994  Mike Stump  <mrs@cygnus.com>
1977
1978         * decl2.c (check_classfn): Use decls_match to check if this has
1979         already been declared, as the DECL_ASSEMBLER_NAME may have been
1980         changed via asm("new_name").
1981         * decl.c (decls_match): Make public.
1982
1983 Thu Dec 15 15:17:55 1994  Mike Stump  <mrs@cygnus.com>
1984
1985         * *.[chy] (expand_aggr_init) Add fourth argument to handle
1986         distinction between = init and (init) style of initializations.
1987         * *.[chy] (finish_decl): Add fifth argument to to handle
1988         distinction between = init and (init) style of initializations.
1989
1990 Tue Dec 13 19:16:05 1994  Mike Stump  <mrs@cygnus.com>
1991
1992         Fix some random `explicit' bugs.
1993
1994         * cvt.c (convert_to_reference): Add third parameter to
1995         convert_force.
1996         (convert_force): Ditto.
1997         * call.c (build_method_call): Ditto.
1998         * decl2.c (setup_vtbl_ptr): Ditto.
1999         * init.c (expand_virtual_init): Ditto.
2000         (build_member_call): Ditto.
2001         (build_delete): Ditto.
2002         (build_vbase_delete): Ditto.
2003         * typeck.c (build_component_addr): Ditto.
2004         (build_c_cast): Ditto.
2005         (build_modify_expr): Ditto.
2006         * cp-tree.h (CONV_NONCONVERTING): Ditto. Add so that we can
2007         distinguish the context in which the conversion appears.  Add thrid
2008         argument to build_c_cast.
2009         * cvt.c (cp_convert): Pass whether or not we want to consider
2010         non-converting constructors down to build_method_call.
2011         * decl2.c (reparse_absdcl_as_casts): Add third argument to
2012         build_c_cast.
2013         * gc.c (build_m_desc): Ditto.
2014         * init.c (build_new): Ditto.
2015         * parse.y (expr_no_commas): Ditto.
2016         (primary): Ditto.
2017         * typeck.c (build_x_function_call): Ditto.
2018         (build_static_cast): Ditto.
2019         (build_reinterpret_cast): Ditto.
2020         (build_const_cast): Ditto.
2021         (build_c_cast): Ditto.
2022         (build_ptrmemfunc): Ditto.
2023         * typeck2.c (build_functional_cast): Ditto.
2024         * init.c (expand_aggr_init): Added LOOKUP_ONLYCONVERTING to
2025         expand_aggr_init_1 as inits are converted to the destination type.
2026
2027 Tue Dec 13 16:18:57 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2028
2029         * Make-lang.in (cc1plus): Depends on c-pragma.o.
2030
2031         * Makefile.in (OBJ{DEP,}S): Add ../c-pragma.o.
2032
2033         * lex.c (check_newline): If the #pragma is not recognized by g++,
2034         try machine-specific ones too.
2035         (handle_sysv_pragma): Copied from c-lex.c.
2036
2037 Mon Dec 12 23:53:06 1994  Mike Stump  <mrs@cygnus.com>
2038
2039         * except.c (expand_throw): Fix Dec 6th change, build_new likes a
2040         reference better.
2041
2042 Mon Dec 12 18:01:00 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2043
2044         * typeck.c (build_binary_op): Lose checks on TYPE_PTRMEMFUNC_P with
2045         IS_AGGR_TYPE, since now they will not both be set on the same type.
2046
2047         * pt.c (do_pending_expansions): Don't clear TREE_PUBLIC on
2048         instantiations controlled by -fexternal-templates.
2049
2050         * decl.c (duplicate_decls): Don't complain about different values of
2051         __attribute__ ((const)) and ((noreturn)).
2052
2053 Fri Dec  9 18:17:37 1994  Doug Evans  <dje@cygnus.com>
2054
2055         * Makefile.in (BISONFLAGS): Delete --yacc.
2056         (PARSE_H): Depend on $(PARSE_C), for parallel makes.
2057         (PARSE_C): Undo last patch.
2058
2059 Fri Dec  2 10:44:36 1994  Mike Stump  (mrs@wombat.gnu.ai.mit.edu)
2060
2061         * Makefile.in (BISONFLAGS): Add --yacc so that output winds up in
2062         y.tab.c.
2063
2064 Thu Dec  8 17:39:46 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2065
2066         * decl.c (finish_decl): Don't call obscure_complex_init for decls
2067         of indeterminate size.
2068
2069 Wed Dec  7 16:49:22 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2070
2071         * decl.c (obscure_complex_init): Function to tweak the decl to
2072         prevent expand_decl from tring to initialize it.
2073         (finish_decl): Use it rather than writing the same code in three
2074         different places.
2075
2076         * parse.y (bad_parm): Stop trying to support parms without types.
2077
2078 Wed Dec  7 12:06:56 1994  Mike Stump  <mrs@cygnus.com>
2079
2080         * decl2.c (grokfield): Make asm specs on static member functions
2081         work.
2082
2083 Tue Dec  6 15:43:20 1994  Mike Stump  <mrs@cygnus.com>
2084
2085         * except.c (expand_throw): Make a copy of the thrown object.
2086
2087 Tue Dec  6 14:16:34 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2088
2089         * parse.y: : has lower precedence than =.
2090
2091 Tue Dec  6 12:46:17 1994  Mike Stump  <mrs@cygnus.com>
2092
2093         * decl.c (pushdecl): Use DECL_NAME of VAR_DECLs to avoid namespace
2094         manglings.
2095         (grokvardecl): Add namespace into variable name.
2096
2097 Tue Dec  6 11:26:55 1994  Mike Stump  <mrs@cygnus.com>
2098
2099         * decl2.c (current_namespace_id): New routine to transform a simple
2100         name into a name in a namespace.
2101         * decl.c (grokdeclarator): Use it.
2102         * decl2.c (get_namespace_id): Find the name of the current
2103         namespace.
2104         (push_namespace, pop_namespace): Complete out missing
2105         functionality.
2106
2107 Mon Dec  5 17:11:51 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2108
2109         * class.c (finish_struct): Don't use LONG_LONG_TYPE_SIZE, as it may
2110         not be defined.  Fix warning message for enums and restore warning
2111         for non-enums.
2112
2113         * decl2.c (push_namespace): Dummy function.
2114         (pop_namespace): Ditto.
2115         (do_namespace_alias): Ditto.
2116         (do_using_decl): Ditto.
2117         (do_using_directive): Ditto.
2118
2119         * parse.y: New token NSNAME for namespace names.
2120         (extdef): Add namespace, using definitions.
2121         (using_decl): New rule for using declarations.
2122         (any_id): New rule for identifiers with any degree of scoping.
2123         (identifier): Add NSNAME.
2124         (notype_identifier): Ditto.
2125         (component_decl): Add using_decl.
2126         (nested_name_specifier): Add NSNAME SCOPE.
2127
2128         * typeck.c (convert_for_assignment): Handle conversions between
2129         enums and bool.
2130
2131         * decl.c (duplicate_decls): Only propagate DECL_MAIN_VARIANT on
2132         FUNCTION_DECLs.
2133
2134 Mon Dec  5 13:03:16 1994  Mike Stump  <mrs@cygnus.com>
2135
2136         * class.c (finish_struct): Give an error if one tries to declare a
2137         bit-field's size greater than a long long, as the backend will dump.
2138         It is not an error to declare an enum bit-field greater than its
2139         precision.  Warn if an enum bit-field is too small to hold all
2140         its values.
2141
2142 Mon Dec  5 11:41:50 1994  Mike Stump  <mrs@cygnus.com>
2143
2144         * typeck.c (convert_for_assignment): Use cp_convert instead of
2145         convert so that we don't get static casts.
2146
2147 Sun Dec  4 11:59:01 1994  Mike Stump  <mrs@cygnus.com>
2148
2149         * cvt.c (cp_convert): Don't complain about int->enum conversion if
2150         we are doing static casts.
2151
2152 Fri Dec  2 18:32:41 1994  Mike Stump  <mrs@cygnus.com>
2153
2154         * error.c (dump_expr): Do something more intelligent with SAVE_EXPRs
2155         when dumping expressions in error messages.
2156
2157 Fri Dec  2 17:04:27 1994  Mike Stump  <mrs@cygnus.com>
2158
2159         * gc.c (build_dynamic_cast): Change interface to libg++, ensure that
2160         the return type is the right type, and make references work.
2161
2162 Fri Dec  2 16:36:43 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2163
2164         * decl.c (poplevel): Don't be confused by function-scope
2165         declarations of non-nested functions.
2166         (duplicate_decls): Propagate DECL_MAIN_VARIANT.
2167         (pushdecl): Use duplicate_decls to copy info from old decl into new
2168         function-scope one rather than doing it here.
2169
2170         * decl2.c (mark_inline_for_output): Deal with the DECL_MAIN_VARIANT
2171         of this decl, in case this is a function-scope declaration.
2172
2173         * decl.c (finish_enum): Make sure that the type has the right
2174         precision when we call fixup_*_type.
2175
2176 Tue Nov 29 19:12:07 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2177
2178         * cvt.c (build_up_reference): Strip superfluous NOP_EXPRs; we do
2179         want to build up references to rvalues if possible.
2180         (cp_convert): Stick on a NOP_EXPR when converting to the same type.
2181
2182 Tue Nov 29 11:28:59 1994  Mike Stump  <mrs@cygnus.com>
2183
2184         * parse.y (maybe_raises): Handle throw ().
2185         * parse.y (ansi_raise_identifier): grok type-ids in exception
2186         specifications.
2187         * tree.c (build_exception_variant): Use list compare to check if
2188         two exception specifications match.
2189         * decl.c (duplicate_decls, bad_specifiers): Enhance wording on error
2190         messages.
2191         * call.c (build_method_call): Remove TREE_RAISES.
2192         * cvt.c (convert_to_aggr): Ditto.
2193         * typeck.c (build_function_call_real, convert_arguments): Ditto.
2194         * init.c (expand_aggr_init_1): Ditto.
2195
2196 Tue Nov 29 09:50:39 1994  Mike Stump  <mrs@cygnus.com>
2197
2198         * except.c: Add support for m68k and mips exception handling
2199         support.
2200
2201 Tue Nov 29 08:48:33 1994  Mike Stump  <mrs@cygnus.com>
2202
2203         * except.c (expand_end_all_catch): Throw into outer context, if we
2204         fall off end of catch handlers.
2205
2206 Mon Nov 28 16:44:41 1994  Mike Stump  <mrs@cygnus.com>
2207
2208         * Makefile.in: Make is easier to decide where parse.[ch] will be
2209         built.
2210
2211 Thu Nov 17 20:11:24 1994  Doug Evans  <dje@cygnus.com>
2212
2213         * cp/Make-lang.in (CXX_INSTALL_NAME) Use program_transform_name.
2214         (GXX_INSTALL_NAME) Likewise.
2215         (CXX_CROSS_NAME) Use program_transform_cross_name.
2216         (GXX_CROSS_NAME) Likewise.
2217         (c++.install-man): Use program_transform_name on g++.1.
2218         (c++.uninstall): Likewise.
2219
2220 Thu Nov  3 18:48:19 1994  Paul Eggert  <eggert@twinsun.com>
2221
2222         * Makefile.in (spew.o, lex.o, pt.o):
2223         Depend on $(srcdir)/parse.h, not parse.h.
2224
2225 Mon Nov 28 13:53:03 1994  Mike Stump  <mrs@cygnus.com>
2226
2227         * parse.y (THROW): Fix precedence of throw expressions.
2228
2229 Mon Nov 28 13:15:16 1994  Mike Stump  <mrs@cygnus.com>
2230
2231         * typeck.c (build_unary_op): Allow promotions from bool to int on
2232         unary ~.
2233
2234 Sun Nov 27 00:16:21 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2235
2236         * method.c (build_overload_name): Use DECL_ASSEMBLER_NAME for
2237         classes when appropriate.
2238         (build_overload_nested_name): When dealing with a function context,
2239         use ASM_FORMAT_PRIVATE_NAME to tweak the name of the function to
2240         avoid conflicts between local classes of the same name.
2241
2242 Wed Nov 23 17:59:42 1994  Mike Stump  <mrs@cygnus.com>
2243
2244         * gxx.gperf, parse.y, lex.h, hash.h, lex.c (init_lex), delc.c
2245         (duplicate_decls, grokdeclarator), cp-tree.h: Add support for
2246         `explicit'.
2247         * cvt.c (convert_to_reference, cp_convert, build_type_conversion_1,
2248         build_type_conversion): Use LOOKUP_ONLYCONVERTING in
2249         build_method_calls so that non-converting constructors are not used.
2250         * call.c (build_method_call): If we shouldn't use a non-converting
2251         constructor, then don't.
2252
2253 Wed Nov 23 14:46:56 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2254
2255         * call.c (build_method_call): Don't try to synthesize methods yet.
2256
2257 Tue Nov 22 12:45:21 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2258
2259         * pt.c (push_template_decls): Create CONST_DECLs for template
2260         constant parameters, not VAR_DECLs.
2261
2262 Sat Nov 19 15:28:31 1994  Jim Wilson  (wilson@chestnut.cygnus.com)
2263
2264         * typeck.c (build_binary_op_nodefault): Can shorten shift only if
2265         shift count is less than size in bits of arg0.
2266
2267 Thu Nov 17 15:30:50 1994  Mike Stump  <mrs@cygnus.com>
2268
2269         * gxx.gperf, hash.h, lex.c (init_lex, real_yylex), parse.y: Add new
2270         ANSI keywords and, and_eq, bitand, bitor, explicit, namespace, not,
2271         not_eq, or, or_eq, typename, using, xor, xor_eq to g++.  Still need
2272         to add support for explicit, namespace, typename, and using, support
2273         for the rest is already in.
2274
2275 Thu Nov 17 10:56:50 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2276
2277         * typeck2.c (build_m_component_ref): Check the basetype of the
2278         member pointer against the main variant of the object type.
2279
2280 Mon Nov 14 14:21:52 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2281
2282         * cvt.c (convert_to_reference): Make sure that the original expr
2283         gets its type back when converting a reference.
2284
2285         * method.c (build_overload_name): Clear numeric_outputed_need_bar here.
2286         (build_decl_overload): Instead of here.
2287
2288 Tue Nov  8 17:11:24 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
2289
2290         * cvt.c (cp_convert): Don't build a TARGET_EXPR if we're not in a
2291         function.
2292
2293         * typeck.c (convert_for_initialization): Handle initialization from
2294         a TARGET_EXPR.
2295
2296 Sun Nov  6 01:34:24 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2297
2298         * pt.c (lookup_nested_type_by_name): Fix list-walking logic.
2299         (tsubst): When replacing a TEMPLATE_TYPE_PARM, propagate
2300         TYPE_READONLY and TYPE_VOLATILE from the argument.
2301         (unify): When unifying with a TEMPLATE_TYPE_PARM, remove cv-quals
2302         present in parm from arg.
2303         (type_unification): Strip REFERENCE_TYPE from the argument type.
2304         (unify): Don't strip REFERENCE_TYPE from the argument type.
2305
2306 Sat Nov  5 22:42:15 1994  Greg McGary  (gkm@magilla.cichlid.com)
2307
2308         * pt.c (do_type_instantiation): Check to see if there's a
2309         IDENTIFIER_TEMPLATE on a class before calling
2310         instantiate_member_templates().
2311
2312 Fri Nov  4 19:04:18 1994  Mike Stump  <mrs@cygnus.com>
2313
2314         * gc.c (get_bad_cast_node): New routine to support compile time
2315         throws of bad_cast.
2316         * gc.c (build_dynamic_cast): Support throwing of bad_cast at compile
2317         time.
2318
2319 Fri Nov  4 11:12:00 1994  Mike Stump  <mrs@cygnus.com>
2320
2321         * except.c: Add hppa support.
2322
2323 Fri Nov  4 10:50:50 1994  Mike Stump  <mrs@cygnus.com>
2324
2325         * except.c: Add rs6000 support.
2326
2327 Thu Nov  3 14:24:23 1994  Mike Stump  <mrs@cygnus.com>
2328
2329         * except.c (do_unwind): Add i[34]86 support.
2330
2331 Thu Nov  3 00:10:46 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2332
2333         * pt.c (do_pending_expansions): Unset TREE_PUBLIC on implicit
2334         instantiations.
2335
2336 Wed Nov  2 15:08:24 1994  Kung Hsu  (kung@mexican.cygnus.com)
2337
2338         * decl.c (finish_function): emit types used in method parameters
2339         into symbol table.
2340
2341 Wed Nov  2 15:05:47 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2342
2343         * pt.c (process_template_parm): Allow pointer to member function
2344         template parameter types.
2345         (uses_template_parms): Handle pointer to member function
2346         CONSTRUCTORs.
2347
2348         * g++.c (main): Cast first argument of bzero to (char *).
2349         Pass -lstdc++ instead of -lg++ unless we are invoked as 'g++'.
2350
2351 Mon Oct 31 14:50:48 1994  Kung Hsu  (kung@mexican.cygnus.com)
2352
2353         * gc.c (build_dynamic_cast): rewrite to make it work.
2354         * class.c (finish_vtbls): build more vtables if flag_rtti is on.
2355         * class.c (modify_all_direct_vtables): ditto.
2356         * init.c (expand_direct_vtbls_init): expand more vtables if
2357         flag_rtti is on.
2358         * decl.c (init_type_desc): add default return.
2359
2360 Tue Oct 25 17:13:09 1994  Kung Hsu  (kung@mexican.cygnus.com)
2361
2362         * tree.c (debug_binfo): get rid of the initial size entry of
2363         vtable.
2364         * cp-tree.h: change flag_dossier to flag rtti, define type
2365         descriptor type nodes.
2366         * decl.c (init_type_desc): new function to initialize type
2367         descriptor type nodes.
2368         * decl.c (record_builtin_type): change flag_dossier to flag_rtti.
2369         * lex.c (init_lex): ditto.
2370         * decl.c : change variable flag_dossier to flag_rtti.
2371         * decl.c (duplicate_decls): get rid initial size entry of vtable.
2372         * decl.c (hack_incomplete_structures): take out assert 164.
2373         * search.c (get_abstract_virtuals_1): ditto.
2374         * search.c (dfs_init_vbase_pointers): change CLASSTYPE_DOSSIER to
2375         CLASSTYPE_RTTI.
2376         * parse.y: ditto.
2377         * class.c (prepare_fresh_vtable): for virtual bases, get right
2378         offset.
2379         * class.c (add_virtual_function): change flag_dossier to
2380         flag_rtti.
2381         * class.c (modify_one_vtable): modify the right rtti entry.
2382         * class.c (override_one_vtable): get rid of size entry.
2383         * class.c (finish_struct): change flag_dossier to flag_rtti, and
2384         build extra vtables, build type descriptors for polymorphic
2385         classes.
2386         * gc.c (build_headof): make headof() works correctly with new
2387         rtti.
2388         * gc.c (build_typeid): make this function work with new rtti.
2389         * gc.c (get_typeid): make this function work with new rtti.
2390         * gc.c (build_bltn_desc): new function for new rtti.
2391         * gc.c (build_user_desc): ditto.
2392         * gc.c (build_class_desc): ditto.
2393         * gc.c (build_ptr_desc): ditto.
2394         * gc.c (build_attr_desc): ditto.
2395         * gc.c (build_func_desc): ditto.
2396         * gc.c (build_ptmf_desc): ditto.
2397         * gc.c (build_ptmd_desc): ditto.
2398         * gc.c (build_t_desc): ditto.
2399         * gc.c : comment out old build_t_desc, build_i_desc, build_m_desc.
2400
2401 Tue Oct 25 13:37:41 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2402
2403         * call.c (convert_harshness): Check for TREE_UNSIGNED differences
2404         after checking for integral conversions.
2405
2406 Sun Oct 23 13:19:55 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2407
2408         * decl2.c: Declare flag_access_control.
2409         (struct lang_f_options): Add access-control.
2410         * expr.c (cplus_expand_expr, NEW_EXPR): Unset flag_access_control
2411         for the call to expand_aggr_init to copy the object out of the
2412         pcc_struct_return slot.
2413         * search.c (compute_access): if (!flag_access_control) return
2414         access_public.
2415
2416 Fri Oct 21 00:32:54 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2417
2418         * lex.c (cons_up_default_function): Don't try to defer method
2419         synthesis now.
2420
2421         * decl.c (init_decl_processing): Use __pure_virtual for abort_fndecl
2422         instead of abort, since the OSF/1 dynamic linker doesn't like to see
2423         relocation entries for abort.
2424
2425         * tree.c (array_type_nelts_total): Use sizetype, not
2426         integer_type_node.
2427         (array_type_nelts_top): Ditto.
2428
2429 Thu Oct 20 15:48:27 1994  Mike Stump  <mrs@cygnus.com>
2430
2431         * decl.c (grokdeclarator): Added handling for catch parameters
2432         (CATCHPARM).
2433         * except.c (expand_start_catch_block): Use the new CATCHPARM context
2434         instead of NORMAL.
2435         * except.c (expand_throw): Don't let convert_to_reference complain
2436         about what we are doing.
2437
2438 Thu Oct 20 12:55:24 1994  Jim Wilson  (wilson@cygnus.com)
2439
2440         * method.c (emit_thunk): Call instantiate_virtual_regs.
2441
2442 Wed Oct 19 14:15:33 1994  Mike Stump  <mrs@cygnus.com>
2443
2444         * except.c (expand_exception_blocks): Make sure throw code doesn't
2445         get put in function that won't be output.
2446
2447 Mon Oct 17 18:03:15 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2448
2449         * decl.c (init_decl_processing): Make alloca a builtin.
2450
2451 Thu Oct 27 21:10:25 1994  Craig Burley  (craig@burley)
2452
2453         * g++.c (main): Only decrement "added" and set "library" to
2454         NULL when "library" != NULL (just like 940829 fix).
2455
2456 Mon Oct 17 15:56:11 1994  Mike Stump  <mrs@cygnus.com>
2457
2458         * except.c (expand_start_catch_block): Make sure the false label
2459         gets onto the permanent obstack, as it is used for the exception
2460         table.
2461
2462 Fri Oct 14 18:54:48 1994  Mike Stump  <mrs@cygnus.com>
2463
2464         * class.c (modify_one_vtable): Since the DECL_CONTEXT of fndecl can
2465         be set just below, use current_fndecl instead.
2466
2467 Fri Oct 14 15:12:22 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2468
2469         * init.c (expand_aggr_vbase_init_1): Don't call expand_aggr_init_1
2470         with LOOKUP_SPECULATIVELY.
2471         (expand_default_init): Abort if build_method_call returns NULL_TREE.
2472
2473         * typeck.c (build_modify_expr): Don't just build a MODIFY_EXPR if
2474         the rhs is a TARGET_EXPR.
2475
2476         * parse.y (left_curly): Anonymous types are not affected by #pragma
2477         interface/implementation.
2478
2479         * method.c (synthesize_method): Don't call setup_vtbl_ptr for the
2480         default constructor if it isn't needed.
2481
2482         * lex.c (cons_up_default_function): Do synthesize methods for
2483         anonymous types if necessary.
2484
2485 Thu Oct 13 17:44:55 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2486
2487         * method.c (build_decl_overload): Set numeric_outputed_need_bar to 0.
2488
2489 Wed Oct 12 13:27:57 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2490
2491         * typeck.c (build_modify_expr): Understand how to copy an aggregate.
2492
2493         * init.c (expand_default_init): Ditto.  Also remove some of the
2494         crufty code that assumes methods will not be synthesized properly.
2495
2496         * lex.c (cons_up_default_function): If the containing type has no
2497         name, these functions should never need to be called, so just
2498         declare them.
2499
2500         * lex.c (real_yylex): Use HOST_BITS_PER_WIDE_INT to determine the
2501         bitmask for lexing character constants.
2502
2503         * call.c (build_method_call): Disable code that tries to do tricky
2504         stuff with a default parameter that is a constructor call, but
2505         actually does other tricky stuff that breaks things.
2506
2507 Wed Oct 12 16:14:01 1994  Benoit Belley  <belley@cae.ca>
2508
2509         * decl.c (finish_enum): Disable code which forces enums to be signed,
2510         since this conflicts with their use as bitfields. type_promotes_to
2511         handles promotion of enums of underlying unsigned types to signed
2512         integer types.
2513
2514 Wed Oct 12 13:24:03 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2515
2516         * cvt.c (type_promotes_to): Also promote enums to long if
2517         appropriate.
2518
2519         * typeck.c (default_conversion): Don't expect type_promotes_to to
2520         return a main variant.
2521
2522 Wed Oct 12 12:19:45 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2523
2524         * call.c (build_scoped_method_call): Don't lose side effects in the
2525         object expression when calling a non-existent destructor.
2526
2527 Fri Sep  2 19:05:21 1994  Rohan Lenard  (rjl@iassf.easams.com.au)
2528
2529         * call.c (build_scoped_method_call): Remove erroneous error message
2530         when destructor call is written as a scoped call.
2531
2532 Tue Oct 11 23:48:31 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2533
2534         * various: Cast pointer arguments to bzero and bcopy to char *.
2535
2536 Tue Oct 11 19:34:32 1994  Mike Stump  <mrs@cygnus.com>
2537
2538         * class.c (get_derived_offset): Added a type parameter to limit how
2539         far up the CLASSTYPE_VFIELD_PARENT chain we search.
2540         * class.c (modify_one_vtable, fixup_vtable_deltas): When forming the
2541         offset to put into the vtable for the this parameter, make sure we
2542         don't offset from a parent of the DECL_CONTEXT of the function.
2543
2544 Tue Oct 11 16:10:52 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2545
2546         * pt.c (do_function_instantiation): Set DECL_EXTERNAL and
2547         TREE_STATIC when setting DECL_INTERFACE_KNOWN.
2548         (do_type_instantiation): Ditto.
2549
2550         * lex.c (cons_up_default_function): Set DECL_INTERFACE_KNOWN,
2551         DECL_EXTERNAL and TREE_STATIC as appropriate.
2552
2553         * decl2.c (finish_file): Also synthesize methods that don't have
2554         DECL_EXTERNAL set.  Set interface_unknown before doing so.
2555
2556         * decl.c (start_function): If DECL_INTERFACE_KNOWN is set on the
2557         function decl, don't muck with TREE_PUBLIC and DECL_EXTERNAL.
2558
2559 Mon Oct 10 00:56:53 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2560
2561         * lex.c (cons_up_default_function): Mark methods in a template class
2562         as template instances.  Store the values of interface_unknown and
2563         interface_only for do_pending_inlines.
2564         (do_pending_inlines): Use them.
2565
2566         * decl2.c (finish_file): If we haven't seen a definition of a
2567         function declared static, make the decl non-PUBLIC so compile_file
2568         can give an error.
2569
2570 Sun Oct  9 02:42:29 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2571
2572         * method.c (do_build_copy_constructor): Handle anonymous unions.
2573         (do_build_assign_ref): Ditto.
2574         (largest_union_member): Move from lex.c.
2575
2576 Sat Oct  8 14:59:43 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2577
2578         Re-implement g++'s vague linkage independent of TREE_PUBLIC.
2579         * pt.c (instantiate_member_templates): Lose redundant
2580         -fexternal-templates handling.
2581         (tsubst): Set TREE_PUBLIC and DECL_EXTERNAL on new decls.  Don't set
2582         TREE_STATIC or DECL_INTERFACE_KNOWN.
2583         (do_pending_expansions): Predicate on DECL_INTERFACE_KNOWN instead
2584         of DECL_EXTERNAL for explicit instantiations.
2585         (do_function_instantiation): Do the new thing.
2586         (do_type_instantiation): Ditto.
2587         (instantiate_template): Deal with member templates defined in a .cc
2588         file with -fexternal-templates.
2589         * except.c (expand_exception_blocks): Use DECL_LINKAGE_KNOWN to
2590         decide whether to stick builtin_throw here.
2591         * decl2.c (import_export_inline): Predicate on DECL_INTERFACE_KNOWN
2592         rather than TREE_PUBLIC.  Generally fix rules.
2593         (finish_file): Use DECL_INITIAL to determine whether or not a method
2594         has been synthesized, rather than TREE_ASM_WRITTEN.
2595         * decl.c (warn_extern_redeclared_static): Use DECL_PUBLIC instead of
2596         TREE_PUBLIC.
2597         (pushdecl): Ditto.
2598         (duplicate_decls): Ditto.  Deal with DECL_DECLARED_STATIC and
2599         DECL_INTERFACE_KNOWN. 
2600         (redeclaration_error_message): Fix checking for conflicting linkage.
2601         (define_function): Set DECL_INTERFACE_KNOWN.
2602         (grokfndecl): Function decls are PUBLIC until we are sure about
2603         their linkage.  Set DECL_DECLARED_STATIC as needed.
2604         (start_function): Deal with linkage.  Move pushdecl after linkage
2605         magic.
2606         (finish_function): Don't set TREE_ASM_WRITTEN on discarded inlines.
2607         * cp-tree.h (lang_decl_flags): Add interface_known and
2608         declared_static.
2609         (DECL_INTERFACE_KNOWN): New macro.
2610         (DECL_DECLARED_STATIC): New macro.
2611         (DECL_PUBLIC): New macro.
2612
2613         Clean up bogus use of TREE_PUBLIC.
2614         * class.c (alter_access): Fix mistaken use of TREE_PUBLIC (it
2615         doesn't correspond to TREE_PROTECTED and TREE_PRIVATE).
2616         * init.c (do_friend): Don't arbitrarily set TREE_PUBLIC.
2617
2618 Wed Oct  5 13:44:41 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2619
2620         * call.c (build_overload_call_real): Don't immediately do
2621         array->pointer conversion.
2622
2623         * pt.c (type_unification): If not passing to a reference, strip
2624         cv-quals.  Also handle array->pointer conversion.
2625
2626 Tue Oct  4 17:45:37 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2627
2628         * decl.c (grokdeclarator): Don't warn about applying const to a
2629         const typedef or template type parameter.
2630
2631         * decl2.c (finish_file): Also synthesize methods after walking the
2632         vtables.  Ugly ugly ugly.
2633
2634 Mon Oct  3 15:02:41 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2635
2636         * various: Remove lingering remnants of old exception handling code.
2637
2638         * decl2.c (finish_file): Synthesize methods before walking the
2639         vtables, so that the vtables get emitted as needed.
2640
2641         * decl.c (shadow_tag): Remove obsolete code for pushing tags and
2642         dealing with exceptions.
2643
2644 Mon Oct  3 13:05:27 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>
2645
2646         * Make-lang.in (g++-cross): Depend upon version.o and $(LIBDEPS).
2647
2648 Mon Oct  3 02:59:28 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2649
2650         * decl2.c (finish_file): Fix inline handling.
2651
2652 Sun Oct  2 00:21:56 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2653
2654         * decl.c (grokdeclarator): Handle redundant scope even better.
2655         ({push,pop}_cp_function_context): Take toplev parameter.
2656
2657         * method.c (synthesize_method): Pass toplev parameter to
2658         {push,pop}_cp_function_context depending on decl_function_context
2659         (fndecl).
2660
2661         * typeck.c (build_x_unary_op): Unary & on OFFSET_REFs is always the
2662         built-in version.
2663
2664         * method.c (synthesize_method): Don't be confused by __in_chrg
2665         parameter.
2666
2667         * class.c (popclass): Set C_C_D like start_function does.
2668
2669         * decl.c (grokdeclarator): Handle redundant scope better.
2670
2671         * parse.y (expr_or_declarator): Add '(' expr_or_declarator ')' rule.
2672         (direct_notype_declarator): Ditto.
2673         (complex_direct_notype_declarator): Remove it here.
2674
2675 Sat Oct  1 21:42:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
2676
2677         * init.c (resolve_offset_ref): Fix types used in resolving .*
2678         expressions.
2679
2680 Sat Oct  1 15:18:49 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
2681
2682         Beginnings of work to synthesize methods only when needed.
2683         * call.c (build_method_call): Synthesize methods as necessary
2684         (currently never necessary).
2685         * class.c (popclass): Don't try to set C_C_D here, as it'll end up
2686         on the wrong obstack.
2687         * decl.c (push_cp_function_context): Mostly copied from
2688         push_c_function_context.
2689         (pop_cp_function_context): Similarly.
2690         (finish_function): Reverse order of poplevel and pop_nested_class so
2691         that current_class_decl is restored properly.  
2692         (start_function): Ditto.
2693         (finish_function): Add parameter 'nested'.  Don't call
2694         permanent_allocation if (nested).
2695         * various: Pass extra parameter to finish_function.     
2696         * decl2.c (finish_file): Reorganize end-of-file inline handling,
2697         synthesizing methods as necessary.
2698         * lex.c (cons_up_default_function): Call mark_inline_for_output.
2699         Only synthesize methods immediately if #pragma implementation
2700         (currently disabled).
2701         (do_pending_inlines): Call synthesize_method.
2702         * method.c (synthesize_method): New function; all method synthesis
2703         goes through here.  Calls do_build_assign_ref and
2704         do_build_copy_constructor.
2705         (build_default_constructor): Remove.
2706         (build_dtor): Ditto.
2707         (build_assign_ref): Rename to do_build_assign_ref and remove stuff
2708         done by synthesize_method.
2709         (build_copy_constructor): Similarly.
2710
2711 Thu Sep 29 16:58:52 1994  Mike Stump  <mrs@cygnus.com>
2712
2713         * typeck.c (c_expand_return): Use magic so the backend can fixup the
2714         assignment into the return register, so cleanups won't clobber it.
2715
2716 Thu Sep 29 13:08:50 1994  Jason Merrill  (jason@deneb.cygnus.com)
2717
2718         * method.c (hack_identifier): Don't call assemble_external for
2719         template decls.
2720
2721         * decl.c (finish_decl): Also end temporary allocation if the decl in
2722         question has a type of error_mark_node.
2723
2724 Wed Sep 28 21:45:00 1994  Mike Stump  <mrs@cygnus.com>
2725
2726         * typeck.c (build_modify_expr): When optimizing ?: on lhs, make sure
2727         that if the ?: was a reference type, that the subparts will be also.
2728
2729 Wed Sep 28 16:14:04 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
2730
2731         * except.c (register_exception_table): Use Pmode, not PTRmode.
2732
2733 Fri Sep 23 13:54:27 1994  Jason Merrill  (jason@deneb.cygnus.com)
2734
2735         * lex.c (do_pending_inlines): Do method synthesis after the
2736         pending_inlines have been reversed.
2737
2738 Thu Sep 22 12:53:03 1994  Per Bothner  (bothner@kalessin.cygnus.com)
2739
2740         * decl2.c (finish_file):  Fix Brendan's fix:  Only call
2741         register_exception_table if there is a non-empty exception table.
2742
2743 Thu Sep 22 12:03:46 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
2744
2745         * decl2.c (finish_file): Only do register_exception_table if
2746         -fhandle-exceptions is being used.
2747
2748 Wed Sep 21 19:01:51 1994  Per Bothner  (bothner@kalessin.cygnus.com)
2749
2750         * except.c (output_exception_table_entry):  Simplify
2751         by using assemble_integer.
2752         (build_exception_table):  Change to return a count.
2753         Cleanup to use standard macros, instead of hard-wired
2754         sparc asm format.  Don't make __EXCEPTION_TABLE__ global.
2755         (register_exception_table):  New function.  Generate call to builtin.
2756         * decl2.c (finish_file):  Call register_exception_table.
2757         * cp-tree.h (build_exception_table):  Fix prototype.
2758
2759 Wed Sep 21 13:20:42 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
2760
2761         * tree.c (break_out_calls): Don't try to duplicate the DECL_INITIAL.
2762
2763         * decl2.c (delete_sanity): Give an error at trying to delete a
2764         function.
2765
2766 Wed Sep 21 11:47:10 1994  Jason Merrill  (jason@deneb.cygnus.com)
2767
2768         * lex.c (cons_up_default_function): Mark synthesized destructors
2769         inline.
2770
2771         * decl.c (duplicate_decls): Ignore redeclarations of wchar_t as
2772         something other than __wchar_t, complaining if -pedantic and not in
2773         a system header.
2774
2775 Tue Sep 20 09:43:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
2776
2777         * decl.c (xref_tag): Set up BINFO_INHERITANCE_CHAIN on base binfos
2778         here.
2779
2780         * typeck.c (build_modify_expr): Require complete type after checking
2781         for error_mark_node.
2782
2783         * call.c (build_method_call): Print parmtypes when complaining of
2784         ambiguous call.
2785
2786         * typeck.c (build_modify_expr): Handle assignment to array from
2787         non-array.
2788
2789         * decl.c (lookup_name_real): Deal with got_scope == error_mark_node.
2790
2791         * call.c (build_method_call): Don't bother with the exact match.
2792
2793 Mon Sep 19 00:51:39 1994  Jason Merrill  (jason@deneb.cygnus.com)
2794
2795         * init.c (expand_aggr_init): If we munge the type of the variable,
2796         also munge the type of the initializer.
2797
2798         * decl.c (grokdeclarator): Use <= when comparing to RID_LAST_MODIFIER.
2799         (init_decl_processing): Push artificial declaration of wchar_t so
2800         people don't have to declare it before they can use it.
2801
2802         * error.c (cp_line_of): return lineno in lieu of 0.
2803
2804         * typeck.c (convert_for_assignment): Handle conversion of pmfs to
2805         int and bool.
2806         (build_component_ref): Fold the COMPONENT_REF in case it can be
2807         reduced.
2808
2809         * typeck2.c (store_init_value): Don't pedwarn about non-constant
2810         bracketed initializers for automatic variables.
2811
2812 Sun Sep 18 10:12:12 1994  Jason Merrill  (jason@deneb.cygnus.com)
2813
2814         * error.c (dump_decl): Don't say `typedef enum foo foo'.
2815
2816         * decl.c (start_decl): Don't set TREE_PUBLIC on template decls just
2817         because they're affected by #pragma i/i.  We'll deal with that when
2818         they get instantiated.
2819
2820         * typeck.c (build_unary_op): Clean up cruft in ADDR_EXPR case.
2821
2822         * class.c (instantiate_type): Set TREE_CONSTANT on instantiated
2823         ADDR_EXPRs if appropriate.
2824
2825         * decl.c (build_ptrmemfunc_type): Unset IS_AGGR_TYPE on pmf types.
2826
2827         * typeck.c (build_ptrmemfunc): Handle &overloaded_method as an
2828         initializer properly.
2829         * typeck2.c (digest_init): Ditto.
2830
2831         * tree.c (cp_build_type_variant): Like c_build_type_variant, except
2832         it uses build_cplus_array_type.
2833         * *.c: Use cp_build_type_variant instead of c_build_type_variant.
2834
2835         * pt.c (do_type_instantiation): Don't try to instantiate nested
2836         enums.
2837
2838 Tue Sep 13 10:56:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
2839
2840         * cvt.c (build_up_reference): Handle preincrement and predecrement
2841         properly.
2842
2843 Tue Sep 13 09:51:59 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
2844
2845         * decl.c (finish_decl): Only lay out the rtl for DECL if it is, in
2846         fact, static.
2847
2848 Mon Sep 12 14:40:30 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
2849
2850         * decl.c (finish_decl): Lay out the rtl for DECL before doing
2851         grok_reference_init, in case it's static.
2852
2853 Mon Sep 12 12:45:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
2854
2855         * class.c (finish_struct): Don't synthesize constructors if the
2856         class has a field with the same name as the class.  Don't die on
2857         classes with no constructors or destructors.  Don't die if the head
2858         and tail of the class are in different files.
2859
2860         * decl.c (grokdeclarator): Don't treat a function pointer field
2861         with the same name as the class as a constructor.
2862
2863 Fri Sep  9 13:17:00 1994  Jason Merrill  (jason@deneb.cygnus.com)
2864
2865         * typeck.c (build_c_cast): Pull constant values out of their
2866         variables here.
2867
2868         * decl.c (duplicate_decls): Only propagate DECL_CHAIN in
2869         FUNCTION_DECLs and TEMPLATE_DECLs.
2870
2871 Thu Sep  8 10:07:48 1994  Jason Merrill  (jason@deneb.cygnus.com)
2872
2873         * decl.c (duplicate_decls): Propagate DECL_CHAIN in all DECLs that
2874         have it.
2875
2876         * pt.c (unify): REALs and INTEGERs only unify with their own genus.
2877         (instantiate_member_templates): Don't muck with DECL_EXTERNAL and
2878         TREE_PUBLIC unless -fexternal-templates.
2879
2880 Wed Sep  7 13:17:10 1994  Jason Merrill  (jason@deneb.cygnus.com)
2881
2882         * pt.c (do_type_instantiation): Call instantiate_member_templates.
2883         Deal with specializations.
2884         (tsubst): Don't stick the mangled name in DECL_NAME for function
2885         instantiations.  Don't push them, either.
2886
2887         * decl2.c (grokfield): Move code for generating the
2888         DECL_ASSEMBLER_NAME for static members from here.
2889         * method.c (build_static_name): To here.
2890         * decl.c (grokvardecl): Call build_static_name.
2891         (duplicate_decls): Keep old DECL_ASSEMBLER_NAME.
2892
2893 Mon Sep  5 12:49:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
2894
2895         * call.c (build_method_call): if -Wsynth, warn when selecting
2896         synthesized op= over user-supplied one cfront would select.
2897         * decl2.c (lang_decode_option): Handle -Wsynth.
2898
2899 Fri Sep  2 15:11:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
2900
2901         * decl.c (finish_enum): Overhaul to fix several bugs.
2902         (start_enum): Disable useless code.
2903
2904 Thu Sep  1 16:04:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
2905
2906         * typeck.c (c_expand_return): Warn about returning a reference to a
2907         temporary.
2908         (convert_arguments): Increment argument counter when using default
2909         arguments, too.
2910
2911 Wed Aug 31 14:29:22 1994  Jason Merrill  (jason@deneb.cygnus.com)
2912
2913         * decl.c (finish_decl): If the type of decl is error_mark_node,
2914         don't bother trying to do anything.
2915
2916         * typeck.c (convert_for_initialization): If the rhs contains a
2917         constructor call, pretend the lhs type needs to be constructed.
2918
2919         * init.c (expand_default_init): If we stick the object inside the
2920         initializer, mark the initializer used.
2921
2922 Tue Aug 30 13:50:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
2923
2924         * method.c (build_assign_ref): return *this;
2925         (build_assign_ref): Fix base assignment order.
2926         (build_copy_constructor): Fix member init order.
2927
2928 Mon Aug 29 13:54:39 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
2929
2930         * g++.c (main): Remember to clear out SAW_SPECLANG after we see
2931         its argument.
2932
2933 Sat Aug 27 09:36:03 1994  Jason Merrill  (jason@deneb.cygnus.com)
2934
2935         * method.c (build_copy_constructor): Also copy virtual bases.
2936
2937 Fri Aug 26 17:05:15 1994  Jason Merrill  (jason@deneb.cygnus.com)
2938
2939         * lex.c (do_pending_inlines): Clear out pending_inlines before doing
2940         any synthesis.  Also first set deja_vu on all pending_inlines.
2941
2942         * method.c (build_assign_ref): Use build_member_call to invoke base
2943         operator=, rather than build_modify_expr.  And use
2944         build_reference_type instead of TYPE_REFERENCE_TO.
2945         (build_copy_constructor): Use TYPE_NESTED_NAME to identify the
2946         basetype.
2947
2948         * decl2.c (grokfield): Don't complain about undefined local class
2949         methods.
2950
2951         * class.c (finish_struct): Don't try to synthesize methods here.
2952         * lex.c (do_pending_inlines): Instead, synthesize them here.
2953         (init_lex): Initialize synth_obstack.
2954         (cons_up_default_function): Stick synthesis request on
2955         pending_inlines.
2956
2957 Fri Aug 26 12:24:14 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
2958
2959         * call.c (build_method_call) [PCC_STATIC_STRUCT_RETURN]: Also
2960         accept an RTL_EXPR in what we're about to use for the instance,
2961         since anything which would end up with pcc_struct_return set
2962         inside cplus_expand_expr.
2963
2964         * cp-tree.h (cons_up_default_function): Note change of prototype.
2965
2966 Thu Aug 25 23:05:30 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
2967
2968         * class.c (finish_struct): Undid change from Aug 21 testing
2969         CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING.
2970         * parse.y (left_curly): Ditto, undid change from Aug 21.
2971         * decl.c (xref_tag): Undid change from Aug 21, set
2972         CLASSTYPE_INTERFACE correctly, and added comments.
2973
2974 Thu Aug 25 00:36:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
2975
2976         Rework approach to synthesized methods; don't go through the parser
2977         anymore.
2978         * class.c (finish_struct): Use new synthesis approach.
2979         * lex.c (cons_up_default_function): Now just creates declaration,
2980         not code.
2981         (largest_union_member): #if 0 out.
2982         (default_assign_ref_body): Ditto.
2983         (default_copy_constructor_body): Ditto.
2984         * method.c (build_default_constructor): New function to synthesize X().
2985         (build_copy_constructor): Synthesize X(X&).
2986         (build_assign_ref): Synthesize X::operator=(X&).
2987         (build_dtor): Synthesize ~X().
2988
2989         * error.c (cp_line_of): If we're dealing with an artificial
2990         TYPE_DECL, look at the type instead.
2991
2992 Wed Aug 24 11:11:50 1994  Jason Merrill  (jason@deneb.cygnus.com)
2993
2994         * init.c (sort_member_init): Check warn_reorder.
2995         * decl2.c (lang_decode_option): Handle -W{no-,}reorder.
2996
2997         * cp-tree.h (CLASSTYPE_SOURCE_LINE): New macro.
2998         * error.c (cp_line_of): Use CLASSTYPE_SOURCE_LINE for aggregates.
2999         * class.c (finish_struct): Set CLASSTYPE_SOURCE_LINE.
3000
3001 Tue Aug 23 09:28:35 1994  Mike Stump  <mrs@cygnus.com>
3002
3003         * error.c (dump_decl): Improve wording, so that error messages
3004         dont't read template<, class foo>...
3005
3006 Mon Aug 22 15:30:51 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
3007
3008         * parse.y (label_colon): Also match a TYPENAME as a label name,
3009         since they may have declared a class by that name but have also
3010         tried to have a local label under the same name.
3011
3012         * pt.c (coerce_template_parms): Call cp_error, not cp_error_at,
3013         for the message so they know at what point it was instantiated.
3014
3015 Sun Aug 21 23:07:35 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
3016
3017         * class.c (finish_struct): Move setting of CLASSTYPE_INTERFACE and
3018         CLASSTYPE_VTABLE_NEEDS_WRITING for signatures up to left_curly time.
3019         * decl.c (xref_tag): Move setting of CLASSTYPE_INTERFACE and
3020         CLASSTYPE_VTABLE_NEEDS_WRITING for signatures down to left_curly time.
3021         * parse.y (left_curly): New final resting place for setting
3022         CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING for signatures.
3023
3024         * class.c (finish_struct): Don't test for function/field name
3025         conflicts in signatures, since all the fields are compiler-constructed.
3026
3027 Fri Aug 19 14:04:47 1994  Kung Hsu  (kung@mexican.cygnus.com)
3028
3029         * method.c (build_overload_nested_name): in qualified name
3030         mangling, the template with value instantiation will have numeric
3031         at end and may mixed with the name length of next nested level.
3032         Add a '_' in between.
3033         * method.c (build_overload_name): ditto.
3034         * method.c (build_overload_identifier): ditto.
3035
3036 Thu Aug 18 16:24:43 1994  Mike Stump  <mrs@cygnus.com>
3037
3038         * error.c (dump_decl): Handle NULL args.
3039
3040 Thu Sep 29 16:15:36 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>
3041
3042         * g++.c: Rework last change so it's done like collect.c (and 
3043         gcc.c).
3044
3045 Wed Sep 14 10:17:27 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>
3046
3047         * g++.c: Include <sys/errno.h> in case `errno' is a macro
3048         as permitted by ANSI C.
3049
3050 Thu Aug 18 12:48:09 1994  Mike Stump  <mrs@cygnus.com>
3051
3052         * class.c (finish_struct): Move setting of CLASSTYPE_INTERFACE and
3053         CLASSTYPE_VTABLE_NEEDS_WRITING up to left_curly time.
3054         * decl.c (xref_tag): Move setting of CLASSTYPE_INTERFACE and
3055         CLASSTYPE_VTABLE_NEEDS_WRITING down to left_curly time.
3056         * parse.y (left_curly): New final resting place for setting
3057         CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING.
3058
3059 Thu Aug 11 11:32:42 1994  H.J. Lu  (hjl@nynexst.com)
3060
3061         * g++.c (main): Only decrement "added" and set "library" to
3062           NULL when "library" != NULL.
3063
3064 Sat Aug 13 00:14:52 1994  Jason Merrill  (jason@deneb.cygnus.com)
3065
3066         * decl.c (grokdeclarator): Don't set TREE_PUBLIC on a function decl
3067         just because its class has a known interface.
3068         (decls_match): Deal with new format of template parms.
3069
3070         * lex.c (cons_up_default_function): Don't play with TREE_PUBLIC and
3071         DECL_EXTERNAL here.
3072
3073 Fri Aug 12 01:55:15 1994  Jason Merrill  (jason@deneb.cygnus.com)
3074
3075         * decl.c (pushtag): SET_DECL_ARTIFICIAL on gratuitous typedefs.
3076         (xref_defn_tag): Ditto.
3077         (pushdecl): Only allow artificial typedefs to be shadowed.
3078
3079         * init.c (emit_base_init): Pass the right binfos to
3080         expand_aggr_init_1.
3081
3082         * class.c (delete_duplicate_fields_1): Make it work right.
3083         (finish_struct): Catch function/field name conflict.
3084
3085         * decl2.c (check_classfn): Pass the function to cp_error, not just
3086         the name.
3087
3088         * init.c (sort_member_init): Warn when order of member initializers
3089         does not match order of member declarations.
3090         (emit_base_init): Call expand_aggr_init_1 with LOOKUP_PROTECT.
3091
3092         * error.c (dump_expr): Handle lists of functions.
3093
3094         * decl.c (start_function): #pragma interface only affects functions
3095         that would otherwise be static.
3096         (finish_decl): Don't warn about an unused variable if it has both
3097         constructor and destructor, since the 'resource allocation is
3098         initialization' idiom is relatively common.
3099
3100         * typeck.c (comp_target_types): Don't handle TEMPLATE_TYPE_PARMs.
3101         (comp_target_parms): Ditto.
3102         (compparms): Never consider default parms.
3103         (common_base_type): Don't choose a virtual baseclass if there is a
3104         more derived class in common.
3105         (build_conditional_expr): If pedantic, pedwarn about conversion to
3106         common base in conditional expr.
3107
3108         * class.c (instantiate_type): Handle template instantiation better.
3109
3110         * typeck.c (convert_arguments): Don't try to get tricky and convert
3111         to int directly when PROMOTE_PROTOTYPES is set, as it breaks
3112         user-defined conversions.
3113
3114         * lex.c (check_for_missing_semicolon): Also give error at end of
3115         file.
3116
3117         * call.c (build_method_call): Don't promote arrays to pointers here.
3118
3119         * typeck.c (convert_arguments): Don't require the actual parameter
3120         to be of a complete type if the formal parameter is a reference.
3121
3122 Thu Aug 11 15:21:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
3123
3124         * decl.c (grokdeclarator): Soften 'static' on member function error
3125         to pedwarn.
3126
3127         * init.c (build_new): Don't automatically save rval.
3128         (build_offset_ref): Do field lookup with proper basetype_path.
3129
3130 Thu Aug 11 12:46:54 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
3131
3132         * errfn.c (cp_silent): Declare to mark when we should avoid
3133         emitting warnings and errors.
3134         (cp_error): Check it.
3135         (cp_warning): Likewise.
3136         (cp_pedwarn): Likewise.
3137         (cp_compiler_error): Likewise.
3138         (cp_error_at): Likewise.
3139         (cp_warning_at): Likewise.
3140         (cp_pedwarn_at): Likewise.
3141         * call.c (compute_conversion_costs): Set CP_SILENT when we start
3142         out, and make sure we turn it off before we leave.
3143
3144 Thu Aug 11 00:02:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
3145
3146         * decl2.c (grok_array_decl): Try computing *(A+B) if neither
3147         argument is obviously an array.
3148
3149 Wed Aug 10 15:32:04 1994  Jason Merrill  (jason@deneb.cygnus.com)
3150
3151         * typeck.c (c_expand_start_case): Do cleanups here.
3152
3153         * parse.y (xcond): Do bool conversion here, too.
3154         (simple_stmt, SWITCH case): Don't do cleanups here.
3155
3156         * decl.c (duplicate_decls): Don't treat builtins that have been
3157         explicitly declared specially.
3158
3159 Tue Aug  9 01:16:09 1994  Jason Merrill  (jason@deneb.cygnus.com)
3160
3161         * tree.c (make_deep_copy): Support copying pointer, reference,
3162         function, array, offset and method types.
3163
3164         * decl.c (init_decl_processing): Mark exit and abort as
3165         BUILT_IN_NONANSI so that duplicate_decls is kinder about
3166         redeclaration.
3167         (duplicate_decls): Don't give two errors for redeclaring a C
3168         function with the same parms but a different return type.
3169
3170         * parse.y (paren_cond_or_null): Do cleanup and bool conversion here.
3171         (condition): Instead of here.
3172         (simple_stmt, SWITCH case): Also do cleanup here.
3173
3174         * decl2.c (finish_anon_union): Only break out FIELD_DECLs.
3175
3176         * call.c (build_method_call): Don't throw away the side effects of
3177         the object in a call to a non-existent constructor.
3178         * parse.y (primary): Ditto.
3179
3180         * method.c (build_decl_overload): Oop.
3181
3182         * decl2.c (lang_decode_option): Deal with flag_no_nonansi_builtin,
3183         warn about uselessness of specifying -fansi-overloading.
3184
3185         * method.c (build_decl_overload): Treat any non-member new with one
3186         parameter as __builtin_new.
3187
3188         * decl.c (init_decl_processing): Setup built-in meanings of exit,
3189         _exit and abort.
3190
3191 Mon Aug  8 15:03:30 1994  Jason Merrill  (jason@deneb.cygnus.com)
3192
3193         * error.c (dump_readonly_or_volatile): Put a space between const and
3194         volatile if both apply.
3195
3196         * init.c (perform_member_init): Clean up after this initialization.
3197         (emit_base_init): Clean up after each base init, not after all have
3198         been done.
3199         (expand_aggr_vbase_init_1): Clean up after this init.
3200
3201 Sun Aug  7 14:55:05 1994  Jason Merrill  (jason@deneb.cygnus.com)
3202
3203         * call.c (build_method_call): Deal with destroying references.
3204
3205         * parse.y (condition): Do bool_truthvalue_conversion here.
3206         (paren_expr_or_null): And here.
3207         (simple_if): Not here.
3208         (simple_stmt): Or here.
3209
3210 Sat Aug  6 22:29:45 1994  Jason Merrill  (jason@deneb.cygnus.com)
3211
3212         * parse.y (paren_expr_or_null): Wrap the expression in a
3213         CLEANUP_POINT_EXPR.
3214         (condition): Ditto.
3215
3216 Sat Aug  6 19:46:37 1994  Rohan Lenard  (rjl@easams.com.au)
3217
3218         * call.c (build_scoped_method_call): Fix error message when
3219         destructor call refers to a nonexistent type.
3220
3221 Sat Apr 16 22:43:30 1993  Gerald Baumgartner  (gb@cs.purdue.edu)
3222
3223         * lex.h (rid): Deleted RID_RAISES, it's never used.
3224         Moved RID_PUBLIC, RID_PRIVATE, RID_PROTECTED, RID_EXCEPTION,
3225         RID_TEMPLATE and RID_SIGNATURE to the end of the enumeration,
3226         they don't need to be touched in `grokdeclarator.'
3227         (RID_LAST_MODIFIER): Defined macro to be RID_MUTABLE.
3228
3229         * decl.c (grokdeclarator): Use RID_LAST_MODIFIER instead of
3230         RID_MAX as loop limit for finding declaration specifiers.
3231
3232 Sat Apr  3 21:59:07 1993  Gerald Baumgartner  (gb@cs.purdue.edu)
3233
3234         * lex.c (debug_yytranslate): Moved to parse.y since it needs to
3235         access `yytname,' which is static in parse.c.
3236
3237 Fri Apr  2 23:36:57 1993  Gerald Baumgarnter  (gb@cs.purdue.edu)
3238
3239         * cp-tree.h (GNU_xref_ref): Fixed typo in extern declaration, it
3240         was `GNU_xref_def' instead of `GNU_xref_ref.'
3241
3242 Fri Aug  5 14:20:16 1994  Jason Merrill  (jason@deneb.cygnus.com)
3243
3244         * pt.c (do_function_instantiation): Don't set TREE_PUBLIC and
3245         DECL_EXTERNAL on 'extern' instantiations; wait until EOF to do that.
3246         (do_type_instantiation): Ditto.
3247
3248         * decl2.c (import_export_inline): Decides at EOF what an inline's
3249         linkage should be.
3250         (finish_file): Call it.
3251
3252         * decl.c (start_function): Don't rely on the settings of TREE_PUBLIC
3253         and DECL_EXTERNAL from do_*_instantiation.  Only set
3254         DECL_DEFER_OUTPUT on inlines whose linkage might actually change.
3255         (finish_function): Use DECL_DEFER_OUTPUT to decide which inlines to
3256         mark for later consideration, rather than DECL_FUNCTION_MEMBER_P.
3257
3258 Fri Aug  5 01:12:20 1994  Mike Stump  <mrs@cygnus.com>
3259
3260         * class.c (get_class_offset_1, get_class_offset): New routine to
3261         find the offset of the class where a virtual function is defined,
3262         from the complete type.
3263         * class.c (modify_one_vtable, fixup_vtable_deltas): Use
3264         get_class_offset instead of virtual_offset as get_class_offset will
3265         always provide the right answer.
3266         * tree.c (virtual_offset): Remove.  It only ever worked some of the
3267         time.
3268
3269 Tue Aug  2 12:44:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
3270
3271         * call.c (build_method_call): Put back unary_complex_lvalue call
3272         that I thought was redundant.
3273
3274         * typeck.c (c_expand_return): Fix a case I missed before.
3275
3276 Sun Jul 31 17:54:02 1994  Jason Merrill  (jason@deneb.cygnus.com)
3277
3278         * pt.c (unify): Strip cv-quals from template type arguments (when
3279         'const T*' is matched to 'const char*', that does not mean that T is
3280         'const char').
3281
3282 Fri Jul 29 01:03:06 1994  Jason Merrill  (jason@deneb.cygnus.com)
3283
3284         * pt.c (do_type_instantiation): Instantiate nested TAGS, not
3285         typedefs.  Third time's the charm?
3286
3287         * parse.y (template_parm): Support default template parms.
3288         * pt.c (process_template_parm): Ditto.
3289         (end_template_parm_list): Ditto.
3290         (coerce_template_parms): Ditto.
3291         (mangle_class_name_for_template): Ditto.
3292         (push_template_decls): Ditto.
3293         (unify): Ditto.
3294         * method.c (build_overload_identifier): Ditto.
3295         * error.c (dump_decl): Ditto.
3296
3297 Wed Jul 27 17:47:00 1994  Jason Merrill  (jason@deneb.cygnus.com)
3298
3299         * pt.c (do_type_instantiation): Only instantiate nested *classes*.
3300
3301 Tue Jul 26 13:22:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
3302
3303         * search.c (note_debug_info_needed): Also emit debugging information
3304         for the types of fields.
3305
3306 Mon Jul 25 00:34:44 1994  Jason Merrill  (jason@deneb.cygnus.com)
3307
3308         * pt.c (lookup_template_class): Pass 'template' to
3309         coerce_template_parms instead of 'in_decl', since it's a more
3310         meaningful context.
3311
3312         * typeck.c (c_expand_return): Make sure any cleanups for the return
3313         expression get run.
3314         (build_c_cast): Use CONVERT_EXPR for conversion to void.
3315
3316         * pt.c (do_type_instantiation): Also instantiate nested types.
3317
3318         * typeck.c (convert_for_assignment): Don't die when comparing
3319         pointers with different levels of indirection.
3320
3321         * decl.c (grokdeclarator): The sub-call to grokdeclarator for
3322         class-local typedefs sets DECL_ARGUMENTS, so we need to clear it
3323         out.
3324
3325         * decl2.c (finish_anon_union): Don't die if the union has no
3326         members.
3327
3328         * decl.c (grokdeclarator): Undo changes to declspecs when we're done
3329         so that 'typedef int foo, bar;' will work.
3330
3331         * decl2.c (finish_file): Don't call expand_aggr_init for
3332         non-aggregates.
3333
3334 Mon Jul 25 00:03:10 1994  Teemu Torma  (tot@trema.fi)
3335
3336         * decl.c (finish_function): We can't inline constructors and
3337         destructors under some conditions with -fpic, but don't unset
3338         DECL_INLINE.
3339
3340 Mon Jul 25 00:03:10 1994  Jason Merrill  (jason@deneb.cygnus.com)
3341
3342         * typeck.c (build_object_ref): Make sure 'datum' is a valid object.
3343
3344 Sun Jul 24 14:19:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
3345
3346         * class.c (finish_struct): Don't set DECL_FIELD_BITPOS on
3347         non-fields.
3348         (finish_struct_methods): Use copy_assignment_arg_p.
3349
3350         * cvt.c (cp_convert): If expr is an OFFSET_REF, resolve it instead
3351         of giving an error.
3352
3353         * typeck.c (build_binary_op_nodefault): Don't set result_type if we
3354         don't know how to compare the operands.
3355
3356         * decl.c (grokdeclarator): Avoid seg fault when someone uses '__op'
3357         as a declarator-id in their program.  Like the Linux headers do.
3358         Arrgh.
3359
3360         * tree.c (lvalue_p): Treat calls to functions returning objects by
3361         value as lvalues again.
3362
3363         * typeck.c (build_component_addr): Use convert_force to convert the
3364         pointer in case the component type is also a private base class.
3365
3366         * search.c (get_matching_virtual): Fix bogus warning of overloaded
3367         virtual.
3368
3369         * pt.c (overload_template_name): Set DECL_ARTIFICIAL on the created
3370         TYPE_DECL to fix bogus shadowing warnings.
3371
3372 Fri Jul 22 01:15:32 1994  Jason Merrill  (jason@deneb.cygnus.com)
3373
3374         * init.c (expand_aggr_init_1): const and volatile mismatches do not
3375         prevent a TARGET_EXPR from initializing an object directly.
3376
3377 Tue Jul 19 17:55:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
3378
3379         * cvt.c (build_up_reference): Allow building up references to
3380         `this', don't warn about making references to artificial variables
3381         (like `this').
3382
3383         * tree.c (lvalue_p): `this' is not an lvalue.
3384
3385         * call.c (build_method_call): Accept using a typedef name (or
3386         template type parameter) for explicit destructor calls.
3387
3388 Wed Jul 13 03:57:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
3389
3390         * method.c (hack_identifier): Put back old code so lists of
3391         non-functions will be handled properly.
3392
3393         * cp-tree.h (TYPE_NEEDS_CONSTRUCTING): #if 0 out; this macro is now
3394         defined in the language-independent tree.h.
3395
3396         * tree.c (count_functions): Avoid bogus warning when compiling this
3397         function.
3398
3399 Mon Jul 11 18:37:20 1994  Jason Merrill  (jason@deneb.cygnus.com)
3400
3401         * decl.c (grok_reference_init): Always save the initializer of a
3402         reference.
3403
3404 Fri Jul  8 17:41:46 1994  Mike Stump  <mrs@cygnus.com>
3405
3406         * decl.c (cplus_expand_expr_stmt): Wrap statement expressions inside
3407         CLEANUP_POINT_EXPRs so that the stack slots can be reused.
3408         (disabled for now)
3409
3410 Fri Jul  8 12:59:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
3411
3412         * method.c (hack_identifier): Fix for new overloading.
3413
3414         * typeck.c (build_binary_op_nodefault): Don't mess with division by
3415         zero.
3416
3417 Fri Jul  8 13:20:28 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
3418
3419         * decl2.c (finish_file): Only call walk_sigtables, if
3420         flag_handle_signatures is turned on, don't waste time otherwise.
3421
3422 Fri Jul  8 02:27:41 1994  Jason Merrill  (jason@deneb.cygnus.com)
3423
3424         * decl.c (push_overloaded_decl): Don't create overloads of one when
3425         shadowing a class type.
3426         * typeck.c (build_x_function_call): Complain about overloads of one.
3427
3428         * decl.c (grokdeclarator): Don't try to treat a char* as a tree.
3429         (grokdeclarator): Fix setting of TREE_STATIC.
3430         (start_decl): Clear DECL_IN_AGGR_P after calling duplicate_decls.
3431
3432 Thu Jul  7 22:20:46 1994  Gerald Baumgartner  (gb@andros.cygnus.com)
3433
3434         * cp-tree.h (walk_sigtables): Created extern declaration.
3435         * decl2.c (walk_sigtables): Created function, patterned after
3436         walk_vtables, even though we only need it to write out sigtables.
3437         (finish_sigtable_vardecl): Created function.
3438         (finish_vtable_vardecl): Changed 0 to NULL_PTR.
3439         (finish_file): Call walk_sigtables.
3440
3441         * sig.c (build_signature_table_constructor): Mark class member
3442         function pointed to from signature table entry as addressable.
3443
3444 Thu Jul  7 13:39:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
3445
3446         * decl.c (start_decl): Check new decl of static member variable
3447         against the declaration in the class here.
3448         (grokvardecl): Instead of here.
3449
3450         * class.c (prepare_fresh_vtable): Call import_export_vtable if not
3451         -fvtable-thunks.
3452         (build_vtable): Ditto.
3453
3454         * decl2.c (import_export_vtable): Move logic for deciding the
3455         interface of a template class from here.
3456         (import_export_template): To here.
3457         (finish_vtable_vardecl): Call import_export_template before
3458         import_export_vtable.
3459
3460 Wed Jul  6 20:25:48 1994  Mike Stump  <mrs@cygnus.com>
3461
3462         * except.c (init_exception_processing): Setup interim_eh_hook to
3463         call lang_interim_eh. 
3464         * except.c (do_unwind): Propagate throw object value across
3465         stack unwinding.
3466         * except.c (saved_throw_value): Used to hold the value of the object
3467         being thrown.  It is always a reference to the real value.
3468         * except.c (expand_start_catch_block): Add handling for the
3469         value of the exception object.
3470         * except.c (expand_start_catch_block): Add handler for the handler,
3471         so that throws inside the handler go to the outer block.
3472         * except.c (expand_end_catch_block): Ditto.
3473         * parse.y (handler_args): Use parm instead, as the other doesn't yet
3474         handle references correctly.
3475
3476 Wed Jul  6 17:55:32 1994  Per Bothner  (bothner@kalessin.cygnus.com)
3477
3478         * decl2.c (mark_vtable_entries):  If -ftable-thunks, set the
3479         vtable entry properly to abort.
3480
3481 Tue Jul  5 14:07:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
3482
3483         * typeck.c (build_binary_op_nodefault): Downgrade division by zero
3484         errors to warnings.
3485
3486         * call.c (build_overload_call_real): Handle fnname being a list of
3487         functions.
3488         * typeck.c (build_x_function_call): Pass list of functions to
3489         build_overload_call, not just the name.
3490         * tree.c (count_functions): Complain when called for invalid
3491         argument.
3492
3493         * decl.c (grokdeclarator): Fix settings of TREE_STATIC, TREE_PUBLIC
3494         and DECL_EXTERNAL on static members and initialized const members.
3495         * decl2.c (grokfield): Reflect this change.
3496
3497 Fri Jul  1 09:35:51 1994  Jason Merrill  (jason@deneb.cygnus.com)
3498
3499         * parse.y (init): ANSI C++ does not forbid { }.
3500
3501 Thu Jun 30 00:35:22 1994  Jason Merrill  (jason@deneb.cygnus.com)
3502
3503         * decl2.c (lang_decode_option): Set warn_nonvdtor along with -Wall.
3504         warn_nonvdtor defaults to off.
3505
3506         * class.c (instantiate_type): Use comptypes rather than relying on 
3507         types to satisfy ==.
3508
3509         * decl.c (start_function): Set DECL_DEFER_OUTPUT on all inlines that
3510         might be static.
3511
3512         * tree.c (build_cplus_new): Never build WITH_CLEANUP_EXPRs.
3513
3514         * decl.c (grok_reference_init): Deal with ADDR_EXPRs of TARGET_EXPRs.
3515
3516         * cvt.c (cp_convert): Pass 0 to with_cleanup_p arg of
3517         build_cplus_new.
3518
3519 Wed Jun 29 22:31:09 1994  Jason Merrill  (jason@deneb.cygnus.com)
3520
3521         * decl2.c (finish_file): Maybe consider static inlines multiple
3522         times, in case they reference each other.
3523
3524 Tue Jun 28 11:58:38 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
3525
3526         * class.c (finish_struct): Don't `cons_up_default_function's
3527         for signatures.
3528         (finish_struct): Handle an empty method_vec correctly.
3529
3530         * decl.c (grokdeclarator): Don't warn about a signature being
3531         empty in a signature pointer declaration if we only saw a
3532         forward declaration of the signature.  Changed `warning's into
3533         `cp_warning's.
3534
3535         * sig.c (build_sigtable): Don't die if a null signature table
3536         constructor is returned.
3537         (build_signature_pointer_constructor): If the signature table
3538         constructor is null, the _sptr field is set to a null pointer
3539         and cast to the appropriate type.  Make copies of all null
3540         pointers so that the type null_pointer_node doesn't get changed.
3541         (build_signature_table_constructor): Added comments.
3542
3543         * sig.c (build_signature_pointer_constructor): Complain if we
3544         try to assign to/initialize a signature pointer/reference of
3545         an undefined signature.
3546
3547 Mon Jun 27 14:05:16 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
3548
3549         * typeck2.c (store_init_value): Don't be pedantic about
3550         non-constant initializers of signature tables/pointers/references.
3551
3552 Fri Jun 24 16:49:41 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
3553
3554         * decl.c (grokdeclarator): If we are grokking an opaque typedef
3555         in a signature, don't complain about it begin static.
3556
3557 Wed Jun 29 16:44:45 1994  Mike Stump  <mrs@cygnus.com>
3558
3559         Fixes a problem of the this pointer being wrong in virtual calls to
3560         methods that are not overridden in more derived classes.
3561
3562         * class.c (fixup_vtable_delta): New routine.  It will fixup the
3563         delta entries in vtables, wheever they need updating.
3564         * class.c (finish_struct): Call the new routine for all virtual
3565         bases, as they can have different offsets, than those used in base
3566         classes that we derive our vtable from.
3567
3568 Tue Jun 28 23:49:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
3569
3570         * typeck.c (build_binary_op): Use the types before default
3571         conversions in the error message.
3572
3573         * *.c: Use c_build_type_variant instead of build_type_variant where
3574         the type might be an array.
3575
3576         * call.c (build_method_call): Call build_type_variant and
3577         build_reference_type in the right order.
3578         * decl.c (record_builtin_type): Ditto.
3579
3580 Wed Jun 29 16:58:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
3581
3582         * call.c (build_method_call): Call build_type_variant and
3583         build_reference_type in the right order.
3584         * decl.c (record_builtin_type): Ditto.
3585
3586 Tue Jun 28 23:49:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
3587
3588         * typeck.c (build_binary_op): Use the types before default
3589         conversions in the error message.
3590
3591         * *.c: Use c_build_type_variant instead of build_type_variant where
3592         the type might be an array.
3593
3594 Sat Jun 25 11:50:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
3595
3596         * cvt.c (convert_to_reference): Try UDC's before doing the
3597         reinterpret_cast thang, though.
3598
3599 Fri Jun 24 01:24:01 1994  Jason Merrill  (jason@deneb.cygnus.com)
3600
3601         * typeck.c (c_expand_return): Don't USE the return value location
3602         after we've expanded the jump.
3603
3604         * decl2.c (finish_file): Make sure DECL_SAVED_INSNS is not 0 before
3605         trying to write out an inline.
3606
3607         * cvt.c (build_up_reference): Also do address adjustment when the
3608         target type uses MI.
3609         (convert_to_reference): Try UDCs only after built-in conversions.
3610         (build_type_conversion_1): Don't play games with the argument to the
3611         method.
3612         (build_type_conversion): #if 0 out code for binding to reference.
3613
3614 Thu Jun 23 00:22:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
3615
3616         * decl2.c (finish_file): Use TREE_SYMBOL_REFERENCED to decide
3617         whether to emit inlines.
3618
3619         * decl.c (grokdeclarator): Set explicit_int for decls that just
3620         specify, say, 'long'.
3621
3622         * init.c (do_friend): Do overload C functions (or call pushdecl,
3623         anyaway).
3624
3625 Wed Jun 22 13:40:49 1994  Jason Merrill  (jason@deneb.cygnus.com)
3626
3627         * cvt.c (build_up_reference): Don't call readonly_error.
3628         (convert_to_reference): Propagate const and volatile from expr to
3629         its type.
3630
3631         * tree.c (lvalue_p): Random CALL_EXPRs are not lvalues.
3632
3633         * cvt.c (build_up_reference): Break out WITH_CLEANUP_EXPR when
3634         creating a temporary.
3635         (convert_to_reference): Lose excessive and incorrect trickiness.
3636         (cp_convert): Call build_cplus_new with with_cleanup_p set.
3637
3638         * typeck2.c (build_functional_cast): Ditto.
3639
3640 Tue Jun 21 17:38:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
3641
3642         * decl.c (grokdeclarator): signed, unsigned, long and short all
3643         imply 'int'.
3644
3645         * decl.c (grokdeclarator): Allow "this is a type" syntax.
3646         (grok_reference_init): Simplify and fix.
3647
3648 Sun Jun 19 17:08:48 1994  Jason Merrill  (jason@deneb.cygnus.com)
3649
3650         * decl.c (grokdeclarator): pedwarn about a typedef that specifies no
3651         type.
3652
3653 Sat Jun 18 04:16:50 1994  Jason Merrill  (jason@deneb.cygnus.com)
3654
3655         * decl.c (start_function): Move TREE_PUBLIC and DECL_EXTERNAL
3656         tinkering to after call to pushdecl.
3657
3658 Fri Jun 17 14:48:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
3659
3660         * call.c (build_method_call): Handle destructors for non-aggregate
3661         types properly.
3662
3663 Thu Jun 16 16:48:05 1994  Jason Merrill  (jason@deneb.cygnus.com)
3664
3665         * call.c (build_method_call): Make sure that the name given for the
3666         destructor matches the constructor_name of the instance.
3667
3668         * pt.c (do_function_instantiation): A non-extern instantiation
3669         overrides a later extern one.
3670         (do_type_instantiation): Ditto.
3671
3672 Wed Jun 15 19:34:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
3673
3674         * init.c (expand_aggr_init): Use TYPE_MAIN_VARIANT to get the
3675         unqualified array type.
3676
3677         * cp-tree.h (EMPTY_CONSTRUCTOR_P): Tests whether NODE is a
3678         CONSTRUCTOR with no elements.
3679
3680         * decl.c (various): Lose empty_init_node.
3681         (finish_decl): Use EMPTY_CONSTRUCTOR_P, do the empty CONSTRUCTOR
3682         thing depending on the value of DECL_COMMON instead of
3683         flag_conserve_space, do the empty CONSTRUCTOR thing for types that
3684         don't have constructors, don't treat a real empty CONSTRUCTOR
3685         specially.
3686
3687         * typeck2.c (process_init_constructor): Don't treat empty_init_node
3688         specially.
3689
3690 Wed Jun 15 19:05:25 1994  Mike Stump  <mrs@cygnus.com>
3691
3692         * class.c (override_one_vtable): Don't forget to merge in an old
3693         overrider when we wanted to reuse a vtable, but couldn't.
3694
3695 Wed Jun 15 15:03:16 1994  Jason Merrill  (jason@deneb.cygnus.com)
3696
3697         * decl.c (start_decl): Put statics in common again.
3698
3699         * decl.c (grokdeclarator): Return NULL_TREE for an error rather than
3700         setting the type to error_mark_node.
3701
3702         * typeck.c (build_modify_expr): Build up a COMPOUND_EXPR for enum
3703         bitfield assignments.
3704
3705 Tue Jun 14 12:23:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
3706
3707         * decl.c (grok_op_properties): Const objects can be passed by value.
3708
3709 Mon Jun 13 03:10:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
3710
3711         * decl2.c (import_export_vtable): Force implicit instantiations to
3712         be interface_only when -fno-implicit-templates.
3713
3714         * decl.c (duplicate_decls): Redeclaring a class template name is an
3715         error.
3716
3717         * pt.c (end_template_decl): Call GNU_xref_decl for class templates.
3718         * xref.c (GNU_xref_decl): Support templates.
3719
3720 Sat Jun 11 17:09:05 1994  Jason Merrill  (jason@deneb.cygnus.com)
3721
3722         * decl.c (grok_op_properties): Split out checking for whether this
3723         function should suppress the default assignment operator.
3724         * decl2.c (grok_function_init): Ditto.
3725         (copy_assignment_arg_p): New function do do just that.
3726         Now considers virtual assignment operators that take a base as an
3727         argument to count as copy assignment operators.
3728
3729         * search.c (dfs_debug_mark): Lose checks for DWARF_DEBUG and
3730         TREE_ASM_WRITTEN, as they are redundant.
3731
3732         * pt.c (end_template_decl): Don't try to set DECL_CLASS_CONTEXT on a
3733         decl that has no LANG_SPECIFIC part.
3734         (do_type_instantiation): Force the debugging information for this
3735         type to be emitted.
3736
3737         * decl.c (start_decl): Clear up uses of various types of templates
3738         (say sorry for static data members, rather than "invalid template"). 
3739         (expand_static_init): Fix initialization of static data members of
3740         template classes.
3741
3742 Fri Jun 10 00:41:19 1994  Jason Merrill  (jason@deneb.cygnus.com)
3743
3744         * decl.c (grokdeclarator): Set DECL_CONTEXT on static data members.
3745
3746         * g++.c (main): Use -xc++-cpp-output for .i files.
3747
3748         * pt.c (tsubst): Give meaningful error about declaring template for
3749         a copy constructor which was not declared in the class template.
3750         (do_type_instantiation): Explicit instantiation before the class
3751         template is an error.
3752         (instantiate_template): Don't die if tsubst returns error_mark_node.
3753
3754 Thu Jun  9 19:04:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
3755
3756         Don't synthesize the copy assignment operator if the one in a base
3757         class is pure virtual.
3758         * cp-tree.h (TYPE_HAS_ABSTRACT_ASSIGN_REF): New macro to indicate
3759         whether the type has a pure virtual copy assignment operator.
3760         * class.c (finish_base_struct): Don't generate the copy assignment
3761         operator if a base class has a pure virtual one.
3762         * decl.c (grok_op_properties): Add disabled code to set
3763         TYPE_HAS_ABSTRACT_ASSIGN_REF with comment pointing to where it is
3764         actually set.
3765         * decl2.c (grok_function_init): Set TYPE_HAS_ABSTRACT_ASSIGN_REF.
3766
3767         * decl2.c (import_export_vtable): Always treat template
3768         instantiations as if write_virtuals >= 2, and treat implicit
3769         instantiations as external if -fno-implicit-templates.
3770         (finish_file): Output all pending inlines if
3771         flag_keep_inline_functions.
3772
3773 Wed Jun  8 20:48:02 1994  Mike Stump  <mrs@cygnus.com>
3774
3775         * tree.c (layout_vbasetypes): Align virtual base classes inside
3776         complete objects, so that we don't core dump on machines such as
3777         SPARCs when we access members that require larger than normal
3778         alignments, such as a double.  Also, we bump up the total alignment
3779         on the complete type, as necessary.
3780
3781 Wed Jun  8 16:18:14 1994  Jason Merrill  (jason@deneb.cygnus.com)
3782
3783         * gxxint.texi (Free Store): New section with code for examining
3784         cookie.
3785         (Limitations of g++): Remove operator delete entry, since it is no
3786         longer accurate.  Fix access control entry.
3787
3788         * typeck.c (build_unary_op): Pedwarn about taking the address of or
3789         incrementing a cast to non-reference type.
3790         (build_modify_expr): Use convert instead of convert_force again.
3791
3792         * search.c (get_base_distance): Use IS_AGGR_TYPE_CODE to check for
3793         class type, not == RECORD_TYPE.
3794
3795         * decl.c (grokdeclarator): Cope with grokfndecl returning NULL_TREE.
3796
3797         * typeck2.c (report_case_error): #if 0 out.
3798         * lex.c (real_yylex): Lose RANGE.
3799         * parse.y: Ditto.
3800
3801 Tue Jun  7 18:17:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
3802
3803         * parse.y (simple_stmt, case ranges): Use ELLIPSIS instead of RANGE.
3804
3805 Mon Jun  6 19:39:57 1994  Jason Merrill  (jason@deneb.cygnus.com)
3806
3807         * typeck.c (build_c_cast): Don't shortcut conversions to the same
3808         type.  Don't replace consts with their values here, since that's now
3809         done in cp_convert.
3810
3811         * cvt.c (cp_convert): When converting to bool, take
3812         integer_zero_node to false_node and all other INTEGER_CSTs to
3813         true_node.
3814         (build_type_conversion): Don't complain about multiple conversions
3815         to float if we're not really converting.
3816
3817 Fri Jun  3 02:10:56 1994  Jason Merrill  (jason@deneb.cygnus.com)
3818
3819         Implement 'extern template class A<int>;' syntax for suppressing
3820         specific implicit instantiations.
3821         * cp-tree.h: Update prototypes for do_*_instantiation.
3822         * pt.c (do_pending_expansions): Don't compile 'extern' explicit
3823         instantiations.
3824         (do_function_instantiation): Set DECL_EXTERNAL on 'extern' explicit
3825         instantiations.
3826         (do_type_instantiation): Ditto.
3827         * parse.y (explicit_instantiation): Support 'extern template class
3828         A<int>;' syntax.
3829         * decl.c (start_function): Don't modify the settings of TREE_PUBLIC
3830         and DECL_EXTERNAL on explicit instantiations.
3831
3832         * cvt.c (cp_convert): Replace constants with their values before
3833         converting.
3834         (cp_convert): Consistently use 'e' instead of 'expr'.
3835
3836 Thu Jun  2 03:53:30 1994  Jason Merrill  (jason@deneb.cygnus.com)
3837
3838         * typeck2.c (build_x_arrow): Resolve OFFSET_REFs first.
3839
3840 Wed Jun  1 18:57:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
3841
3842         * typeck2.c (digest_init): Handle initializing a pmf with an
3843         overloaded method.
3844         * typeck.c (build_ptrmemfunc): Handle overloaded methods.
3845
3846         * decl.c (pushtag): Use build_decl to make TYPE_DECLs.
3847         (xref_defn_tag): Ditto.
3848         * pt.c (process_template_parm): Ditto.
3849         (lookup_template_class): Ditto.
3850         (push_template_decls): Ditto.
3851         (instantiate_class_template): Ditto.
3852         (create_nested_upt): Ditto.
3853         * class.c (finish_struct): Don't try to set DECL_CLASS_CONTEXT on
3854         TYPE_DECLs.
3855
3856         * typeck.c (convert_arguments): Make sure type is not NULL before
3857         checking its TREE_CODE.
3858
3859 Wed Jun  1 17:40:39 1994  Mike Stump  <mrs@cygnus.com>
3860
3861         * class.c (get_derived_offset): New routine.
3862         * class.c (finish_base_struct): Make sure we set BINFO_VTABLE and
3863         BINFO_VIRTUALS when we choose a new base class to inherit from.
3864         * class.c (modify_one_vtable): Use get_derived_offset to get the
3865         offset to the most base class subobject that we derived this binfo
3866         from.
3867         * class.c (finish_struct): Move code to calculate the
3868         DECL_FIELD_BITPOS of the vfield up, as we need might need it for
3869         new calls to get_derived_offset in modify_one_vtable.
3870
3871 Wed Jun  1 16:50:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
3872
3873         * init.c (build_member_call): Use build_pointer_type instead of
3874         TYPE_POINTER_TO.
3875
3876 Wed Jun  1 11:11:15 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
3877
3878         * decl.c (grokdeclarator): Make sure we have a DNAME set before we
3879         try to use it in an error.
3880
3881 Wed Jun  1 09:48:49 1994  Mike Stump  <mrs@cygnus.com>
3882
3883         * typeck.c (convert_arguments, convert_for_initialization): Don't
3884         strip NOP_EXPRs, when we are converting to a reference.
3885
3886 Wed Jun  1 01:11:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
3887
3888         * typeck.c (build_modify_expr): Don't dereference references when
3889         initializing them.
3890
3891         * decl2.c (grokfield): Don't check for grokdeclarator returning
3892         error_mark_node any more.
3893
3894         * decl.c (grokfndecl): Return NULL_TREE instead of error_mark_node.
3895         (start_method): Return void_type_node instead of error_mark_node.
3896
3897         * typeck.c (build_modify_expr): Resolve offset refs earlier.
3898
3899 Tue May 31 16:06:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
3900
3901         * call.c (build_method_call): Resolve OFFSET_REFs in the object.
3902
3903         * typeck.c (build_modify_expr): Dereference references before trying
3904         to assign to them.
3905
3906         * call.c (build_method_call): Don't confuse type conversion
3907         operators with constructors.
3908         * typeck2.c (build_functional_cast): Just call build_c_cast if there
3909         was only one parameter.
3910         * method.c (build_typename_overload): Don't set
3911         IDENTIFIER_GLOBAL_VALUE on these identifiers.
3912         * decl.c (grok_op_properties): Warn about defining a type conversion
3913         operator that converts to a base class (or reference to it).
3914         * cvt.c (cp_convert): Don't try to use a type conversion operator
3915         when converting to a base class.
3916         (build_type_conversion_1): Don't call constructor_name_full on an
3917         identifier.
3918         * cp-tree.h (DERIVED_FROM_P): Should be self-explanatory.
3919
3920         * decl.c (start_decl): Don't complain that error_mark_node is an
3921         incomplete type.
3922         (finish_decl): Check for type == error_mark_node.
3923
3924 Mon May 30 23:38:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
3925
3926         * decl.c (start_function): Set DECL_DEFER_OUTPUT on implicit
3927         instantiations and inline members.
3928
3929         * spew.c (yylex): Set looking_for_template if the next token is a '<'.
3930
3931         * lex.h: Declare looking_for_template.
3932
3933         * decl.c (lookup_name_real): Use looking_for_template to arbitrate
3934         between type and template interpretations of an identifier.
3935
3936 Sat May 28 04:07:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
3937
3938         * pt.c (instantiate_template): Zero out p if we found a
3939         specialization.
3940
3941         * decl.c (grokdeclarator): Elucidate warning.
3942         (grokdeclarator): If pedantic AND -ansi, complain about long long.
3943
3944         Make explicit instantiation work reasonably.  It is now appropriate
3945         to deprecate the use of -fexternal-templates.
3946         * pt.c (instantiate_template): Set DECL_TEMPLATE_SPECIALIZATION or
3947         DECL_IMPLICIT_INSTANTIATION on fndecl as appropriate.
3948         (end_template_instantiation): Reflect changes in USE_TEMPLATE
3949         semantics.
3950         (do_pending_expansions): if (!flag_implicit_templates) DECIDE(0);
3951         (do_function_instantiation): Don't set EXPLICIT_INST if
3952         flag_external_templates is set.  Do set TREE_PUBLIC and DECL_EXTERN
3953         appropriately otherwise.
3954         (do_type_instantiation): Set interface info for class.  Set
3955         TREE_PUBLIC and DECL_EXTERN for methods.  Do none of this if
3956         flag_external_templates is set.
3957         * parse.y: Reflect changes in USE_TEMPLATE semantics.
3958         * decl2.c: New flag flag_implicit_templates determines whether or
3959         not implicit instantiations get emitted.  This flag currently
3960         defaults to true, and must be true for -fexternal-templates to work.
3961         (finish_file): Consider flag_implement_inlines when
3962         setting DECL_EXTERNAL.  Consider flag_implicit_templates when
3963         deciding whether or not to emit a static copy.
3964         * decl.c (start_function): Set TREE_PUBLIC and DECL_EXTERNAL
3965         properly for template instantiations.
3966         (start_method): Set DECL_IMPLICIT_INSTANTIATION on methods of a
3967         template class.
3968         * cp-tree.h (CLASSTYPE_USE_TEMPLATE): Change semantics.
3969         (DECL_USE_TEMPLATE): Parallel macro for FUNCTION and VAR_DECLs.
3970         (various others): Accessor macros for the above.
3971
3972 Fri May 27 13:57:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
3973
3974         * typeck.c (build_binary_op_nodefault): Division by constant zero is
3975         an error.
3976
3977 Fri May 27 13:50:15 1994  Mike Stump  <mrs@cygnus.com>
3978
3979         * class.c (override_one_vtable): Don't modify things we don't own.
3980
3981 Fri May 27 01:42:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
3982
3983         * decl.c (finish_decl): Don't postpone processing the initializer of
3984         a decl with DECL_EXTERNAL set, and do call rest_of_compilation for a
3985         PUBLIC const at toplevel.
3986         (grokdeclarator): pedwarn about initializing non-const or
3987         non-integral statics in the class body.
3988
3989         * decl.c (pushtag): Don't try to set DECL_CLASS_CONTEXT on a
3990         TYPE_DECL.
3991
3992         * call.c (convert_harshness): Dereference reference on rhs before
3993         proceeding, properly grok passing const things to non-const
3994         references.
3995
3996         * typeck.c (build_unary_op): Soften error about taking the address
3997         of main() to a pedwarn.
3998
3999         * lex.c (default_copy_constructor_body): Unambiguously specify base
4000         classes (i.e. A((const class ::A&)_ctor_arg) ).
4001         (default_assign_ref_body): Ditto.
4002
4003 Thu May 26 13:13:55 1994  Gerald Baumgartner  (gb@mexican.cygnus.com)
4004
4005         * decl2.c (grokfield): Don't complain about local signature
4006         method declaration without definition.
4007
4008         * call.c (convert_harshness): If `type' is a signature pointer
4009         and `parmtype' is a pointer to a signature, just return 0.  We
4010         don't really convert in this case; it's a result of making the
4011         `this' parameter of a signature method a signature pointer.
4012
4013         * call.c (build_method_call): Distinguish calling the default copy
4014         constructor of a signature pointer/reference from a signature
4015         member function call.
4016
4017 Thu May 26 12:56:25 1994  Jason Merrill  (jason@deneb.cygnus.com)
4018
4019         * decl2.c (grokfield): Don't set TREE_PUBLIC on member function
4020         declarations.
4021
4022         * decl.c (duplicate_decls): A previous function declaration as
4023         static overrides a subsequent non-static definition.
4024         (grokdeclarator): Don't set TREE_PUBLIC on inline method
4025         declarations.
4026
4027 Wed May 25 14:36:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
4028
4029         * decl.c (grokdeclarator): Handle initialization of static const
4030         members.
4031         (finish_decl): Ditto.
4032
4033         * decl2.c (grokfield): Allow initialization of static const members
4034         even when pedantic.
4035
4036         * decl2.c (grokfield): Deal with grokdeclarator returning
4037         error_mark_node.
4038
4039         * decl.c (grok_ctor_properties): Return 0 for A(A) constructor.
4040         (grokfndecl): Check the return value of grok_ctor_properties.
4041         (start_method): Ditto.
4042
4043         * parse.y (absdcl): Expand type_quals inline.
4044
4045 Tue May 24 19:10:32 1994  Jason Merrill  (jason@deneb.cygnus.com)
4046
4047         * decl.c (pushtag): Use IS_AGGR_TYPE rather than checking for a
4048         RECORD_TYPE.
4049
4050 Tue May 24 18:09:16 1994  Per Bothner  (bothner@kalessin.cygnus.com)
4051
4052         * cp-tree.h (VTABLE_NAME_FORMAT):  If flag_vtable_thunks,
4053         always use "__vt_%s".
4054         * decl2.c (finish_vtable_vardecl):  Don't consider abstract virtuals
4055         when looking for a "sentinal" method (to decide on emitting vtables).
4056         * decl2.c (finish_file):  Scan all decls for thunks that need
4057         to be emitted.
4058         * decl2.c (finish_vtable_vardecl):  Don't bother calling emit_thunk.
4059         * method.c (make_thunk):  Use a more meaningful label.  If there
4060         exists a matching top-level THUNK_DECL re-use it;  otherwise
4061         create a new THUNK_DECL (and declare it).
4062         * method.c (emit_thunk):  Make thunk external/public depending
4063         on the underlying method.
4064
4065 Tue May 24 00:22:04 1994  Jason Merrill  (jason@deneb.cygnus.com)
4066
4067         * pt.c (tsubst): Use lookup_name_nonclass to find guiding decls, not
4068         lookup_name.
4069
4070         * call.c (build_overload_call_real): Don't immediately pick a
4071         function which matches perfectly.
4072
4073         * decl.c (grokdeclarator): Use c_build_type_variant for arrays.
4074         (grokdeclarator): Warn about, and throw away, cv-quals attached to a
4075         reference (like 'int &const j').
4076
4077         * typeck.c (convert_arguments): Don't mess with i for methods.
4078         * call.c (build_method_call): Pass the function decl to
4079         convert_arguments.
4080
4081         * typeck.c (comp_ptr_ttypes_real): New function.  Implements the
4082         checking for which multi-level pointer conversions are allowed.
4083         (comp_target_types): Call it.
4084         (convert_for_assignment): Check const parity on the ultimate target
4085         type, too.  And make those warnings pedwarns.
4086
4087 Mon May 23 14:11:24 1994  Jason Merrill  (jason@deneb.cygnus.com)
4088
4089         * error.c (dump_char): Use TARGET_* for character constants.
4090
4091 Mon May 23 13:03:03 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
4092
4093         * tree.c (debug_no_list_hash): Make static.
4094
4095         * decl.c (decls_match): Say the types don't match if newdecl ends up
4096         with a null type, after we've checked if olddecl does.
4097         (pushdecl): Check if the decls themselves match before looking for
4098         an extern redeclared as static, to avoid inappropriate and incorrect
4099         warnings.
4100
4101 Fri May 20 14:04:34 1994  Jason Merrill  (jason@deneb.cygnus.com)
4102
4103         * decl.c (grokdeclarator): Make warning about duplicate short, etc.
4104         a pedwarn.
4105
4106         * typeck.c (build_c_cast): Casting to function or method type is an
4107         error.
4108
4109         * class.c (finish_struct): Make warning for anonymous class with no
4110         instances a pedwarn.
4111
4112         * Makefile.in (stamp-parse): Expect a s/r conflict.
4113
4114         * typeck.c (build_modify_expr): pedwarn about using a non-lvalue
4115         cast as an lvalue.
4116
4117 Thu May 19 12:08:48 1994  Jason Merrill  (jason@deneb.cygnus.com)
4118
4119         * cvt.c (type_promotes_to): Make sure bool promotes to int rather
4120         than unsigned on platforms where sizeof(char)==sizeof(int).
4121
4122 Wed May 18 14:27:06 1994  Jason Merrill  (jason@deneb.cygnus.com)
4123
4124         * typeck.c (build_c_cast): Tack on a NOP_EXPR when casting to
4125         another variant.
4126         (build_modify_expr): Don't strip NOP_EXPRs, and don't get tricky
4127         and treat them as lvalues.
4128
4129         * decl.c (shadow_tag): Do complain about forward declarations of
4130         enums and empty declarations.
4131         * parse.y: Don't complain about forward declarations of enums and
4132         empty declarations.
4133
4134         * typeck.c (convert_for_assignment): Complain about changing
4135         the signedness of a pointer's target type.
4136
4137         * parse.y (stmt): Move duplicated code for checking case values from
4138         here.
4139         * decl2.c (check_cp_case_value): To here.  And add a call to
4140         constant_expression_warning.
4141
4142         * typeck.c (convert_for_assignment): Don't complain about assigning
4143         a negative value to bool.
4144
4145         * decl.c (init_decl_processing): Make bool unsigned.
4146
4147         * class.c (finish_struct): Allow bool bitfields.
4148
4149 Wed May 18 12:35:27 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
4150
4151         * Make-lang.in (c++.install-man): Get g++.1 from $(srcdir)/cp.
4152
4153 Wed May 18 03:28:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
4154
4155         * cvt.c (build_type_conversion): Lose special handling of
4156         truthvalues.
4157
4158         * search.c (dfs_pushdecls): Improve shadowing warning.
4159
4160 Tue May 17 13:34:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
4161
4162         * init.c (build_delete): Throw away const and volatile on `this'.
4163
4164         * decl.c (finish_enum): Put the constants in TYPE_VALUES again,
4165         rather than the enumerators.
4166         (pushtag): s/cdecl/c_decl/g
4167
4168 Mon May 16 23:04:01 1994  Stephen R. van den Berg  (berg@pool.informatik.rwth-aachen.de)
4169
4170         * cp/typeck.c (common_type): Attribute merging.
4171         (comp_types): Utilise COMP_TYPE_ATTRIBUTES macro.
4172
4173         * cp/parse.y: Revamp attribute parsing.
4174
4175 Mon May 16 01:40:34 1994  Jason Merrill  (jason@deneb.cygnus.com)
4176
4177         * decl.c (shadow_tag): Also check for inappropriate use of auto and
4178         register.
4179
4180         * method.c (build_overload_name): Clarify that the illegal case is a
4181         pointer or reference to array of unknown bound.
4182
4183         * error.c (dump_type_prefix): Print references to arrays properly.
4184
4185         * typeck.c (various): Be more helpful in pointer
4186         comparison diagnostics.
4187
4188         * tree.c (lvalue_p): MODIFY_EXPRs are lvalues again.  Isn't this
4189         fun?
4190
4191         * parse.y: Also catch an error after valid stmts.
4192
4193         * search.c (dfs_init_vbase_pointers): Don't abort because `this' is
4194         const.
4195
4196         * typeck.c (convert_for_initialization): If call to
4197         convert_to_reference generated a diagnostic, print out the parm
4198         number and function decl if any.
4199
4200         * errfn.c (cp_thing): Check atarg1 to determine whether or not we're
4201         specifying a line, not atarg.
4202
4203         * tree.c (build_cplus_method_type): Always make `this' const.
4204
4205         * decl2.c (grokclassfn): If -fthis-is-variable and this function is
4206         a constructor or destructor, make `this' non-const.
4207
4208         * typeck.c (build_modify_expr): Don't warn specially about
4209         assignment to `this' here anymore, since it will be caught by the
4210         usual machinery.
4211
4212         * various: Disallow specific GNU extensions (variable-size arrays,
4213         etc.) when flag_ansi is set, not necessarily when pedantic is set,
4214         so that people can compile with -pedantic-errors for tighter const
4215         checking and such without losing desirable extensions.
4216
4217         * typeck2.c (build_functional_cast): Call build_method_call with
4218         LOOKUP_PROTECT.
4219         (process_init_constructor): Only process FIELD_DECLs.
4220
4221         * decl.c (finish_decl): Also force static consts with no explicit
4222         initializer that need constructing into the data segment.
4223
4224         * init.c (build_delete): Undo last patch, as it interferes with
4225         automatic cleanups.
4226
4227 Sat May 14 01:59:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
4228
4229         * call.c, class.h, cp-tree.h, cvt.c, decl2.c: Lose old overloading
4230         code.
4231
4232         * init.c (build_delete): pedwarn about using plain delete to delete
4233         an array.
4234
4235 Fri May 13 16:45:07 1994  Jason Merrill  (jason@deneb.cygnus.com)
4236
4237         * typeck.c (comp_target_types): Be more helpful in contravariance
4238         warnings, and make them pedwarns.
4239
4240         * decl.c (grokdeclarator): Use decl_context to decide whether or not
4241         this is an access declaration.
4242
4243         * class.c (finish_struct_bits): Set TYPE_HAS_INT_CONVERSION if it
4244         has a conversion to enum or bool, too.
4245
4246 Fri May 13 16:31:27 1994  Mike Stump  <mrs@cygnus.com>
4247
4248         * method.c (emit_thunk):  Make declaration for
4249         current_call_is_indirect local (needed for hppa).
4250
4251 Fri May 13 16:16:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
4252
4253         * pt.c (uses_template_parms): Grok BOOLEAN_TYPE.
4254         (tsubst): Ditto.
4255
4256 Fri May 13 16:23:32 1994  Mike Stump  <mrs@cygnus.com>
4257
4258         * pt.c (tsubst): If there is already a function for this expansion,
4259         use it.
4260         * pt.c (instantiate_template): Ditto.
4261
4262 Fri May 13 10:30:42 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
4263
4264         * parse.y (implicitly_scoped_stmt, simple_stmt case): Use
4265         kept_level_p for MARK_ENDS argument to expand_end_bindings, to avoid
4266         generating debug info for unemitted symbols on some systems.
4267
4268         * cp-tree.h (build_static_cast, build_reinterpret_cast,
4269         build_const_cast): Add declarations.
4270
4271 Fri May 13 09:50:31 1994  Mike Stump  <mrs@cygnus.com>
4272
4273         * search.c (expand_indirect_vtbls_init): Fix breakage from Apr 27
4274         fix.  We now try get_binfo, and if that doesn't find what we want,
4275         we go back to the old method, which still sometimes fails.
4276
4277 Fri May 13 01:43:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
4278
4279         * parse.y (initdcl): Call cplus_decl_attributes on the right
4280         variable.
4281         * decl2.c (cplus_decl_attributes): Don't call decl_attributes for
4282         void_type_node.
4283
4284         * typeck.c (build_binary_op_nodefault): Change result_type for
4285         comparison ops to bool.
4286         (build_binary_op): Convert args of && and || to bool.
4287         * cvt.c (build_default_binary_type_conversion): Convert args of &&
4288         and || to bool.
4289         (build_default_unary_type_conversion): Convert arg of ! to bool.
4290         (type_promotes_to): bool promotes to int.
4291
4292 Fri May 13 01:43:18 1994  Mike Stump  <mrs@cygnus.com>
4293
4294         Implement the new builtin `bool' type.
4295         * typeck.c (build_binary_op_nodefault): Convert args of && and || to
4296         bool.
4297         (build_unary_op): Convert arg of ! to bool.
4298         * parse.y: Know true and false.  Use bool_truthvalue_conversion.
4299         * method.c (build_overload_value): Know bool.
4300         (build_overload_name): Ditto.
4301         * lex.c (init_lex): Set up RID_BOOL.
4302         * gxx.gperf: Add bool, true, false.
4303         * error.c (*): Know bool.
4304         * decl.c (init_decl_processing): Set up bool, true, false.
4305         * cvt.c (cp_convert): Handle conversion to bool.
4306         (build_type_conversion): Ditto.
4307         * *.c: Accept bool where integers and enums are accepted (use
4308         INTEGRAL_CODE_P macro).
4309
4310 Thu May 12 19:13:54 1994  Richard Earnshaw  (rwe11@cl.cam.ac.uk)
4311
4312         * g++.c: Use #ifdef for __MSDOS__, not #if.
4313
4314 Thu May 12 18:05:18 1994  Mike Stump  <mrs@cygnus.com>
4315
4316         * decl2.c (lang_f_options): Handle -fshort-temps.  -fshort-temps
4317         gives old behavior , and destroys temporaries earlier.  Default
4318         behavior now conforms to the ANSI working paper.
4319
4320 Thu May 12 14:45:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
4321
4322         * typeck.c (build_modify_expr): Understand MODIFY_EXPR as an lvalue.
4323         Use convert_force to convert the result of a recursive call when we
4324         are dealing with a NOP_EXPR.  Don't automatically wrap MODIFY_EXPRs
4325         in COMPOUND_EXPRs any more.
4326         (various): Lose pedantic_lvalue_warning.
4327         (unary_complex_lvalue): Understand MODIFY_EXPR.
4328
4329         * cvt.c (convert_to_reference): Allow DECL to be error_mark_node if
4330         we don't know what we're initializing.
4331
4332 Wed May 11 01:59:36 1994  Jason Merrill  (jason@deneb.cygnus.com)
4333
4334         * cvt.c (convert_to_reference): Modify to use convtype parameter.
4335         Only create temporaries when initializing a reference, not when
4336         casting.
4337         (cp_convert): New main function.
4338         (convert): Call cp_convert.
4339         * cvt.c, decl.c, typeck.c: Fix calls to convert_to_reference.
4340         * cp-tree.h (CONV_*): New constants used by conversion code for
4341         selecting conversions to perform.
4342
4343         * tree.c (lvalue_p): MODIFY_EXPRs are no longer lvalues.
4344
4345         * typeck.c (build_{static,reinterpret,const_cast): Stubs that just
4346         call build_c_cast.
4347         * parse.y: Add {static,reinterpret,const}_cast.
4348         * gxx.gperf: Ditto.
4349
4350         * typeck.c (common_type): Allow methods with basetypes of different
4351         UPTs.
4352         (comptypes): Deal with UPTs.
4353         (build_modify_expr): Wrap all MODIFY_EXPRs in a COMPOUND_EXPR.
4354
4355         * pt.c (end_template_decl): Check for multiple definitions of member
4356         templates.
4357
4358         * call.c (build_method_call): Complain about calling an abstract
4359         virtual from a constructor.
4360
4361         * typeck.c (pointer_int_sum): Check for the integer operand being 0
4362         after checking the validity of the pointer operand.
4363
4364         * typeck2.c (digest_init): Pedwarn about string initializer being
4365         too long.
4366
4367 Tue May 10 12:10:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
4368
4369         * decl.c (push_overloaded_decl): Only throw away a builtin if the
4370         decl in question is the artificial one.
4371
4372         * parse.y (simple_stmt, switch): Use implicitly_scoped_stmt because
4373         expand_{start,end}_case cannot happen in the middle of a block.
4374
4375         * cvt.c (build_type_conversion_1): Use convert again.
4376
4377 Tue May 10 11:52:04 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
4378
4379         * typeck2.c (digest_init): Make sure we check for signed and
4380         unsigned chars as well when warning about string initializers.
4381
4382         * init.c (emit_base_init): Check if there's a DECL_NAME on the
4383         member before trying to do an initialization for it.
4384
4385 Tue May 10 11:34:37 1994  Mike Stump  <mrs@cygnus.com>
4386
4387         * except.c: Don't do anything useful when cross compiling.
4388
4389 Tue May 10 03:04:13 1994  Jason Merrill  (jason@deneb.cygnus.com)
4390
4391         * decl.c (duplicate_decls): Fix up handling of builtins yet again.
4392         (push_overloaded_decl): Ditto.
4393
4394         * cvt.c (convert): Don't look for void type conversion.
4395
4396 Mon May  9 18:05:41 1994  Jason Merrill  (jason@deneb.cygnus.com)
4397
4398         * init.c (do_friend): Only do a pushdecl for friends, not
4399         pushdecl_top_level.
4400
4401 Mon May  9 13:36:34 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)
4402
4403         * decl.c (lookup_name_current_level): Put empty statement after
4404         the label OUT to make the code valid C.
4405
4406 Mon May  9 12:20:57 1994  Jason Merrill  (jason@deneb.cygnus.com)
4407
4408         * typeck.c (build_binary_op_nodefault): Only complain about
4409         comparing void * and a function pointer if void * is smaller.
4410
4411 Sun May  8 01:29:13 1994  Jason Merrill  (jason@deneb.cygnus.com)
4412
4413         * decl.c (lookup_name_current_level): Move through temporary binding
4414         levels.
4415
4416         * parse.y (already_scoped_stmt): Revive.
4417         (simple_stmt): Use it again.
4418
4419         * decl.c (poplevel): Always call poplevel recursively if we're
4420         dealing with a temporary binding level.
4421
4422 Sat May  7 10:52:28 1994  Mike Stump  <mrs@cygnus.com>
4423
4424         * decl.c (finish_decl): Make sure we run cleanups for initial values
4425         of decls.  Cures memory leak.
4426         * decl.c (expand_static_init): Ditto for static variables.
4427         * decl2.c (finish_file): Ditto for globals.
4428
4429 Sat May  7 03:57:44 1994  Jason Merrill  (jason@deneb.cygnus.com)
4430
4431         * typeck.c (commonparms): Don't complain about redefining default
4432         args.
4433
4434         * decl.c (duplicate_decls): Don't complain twice about conflicting
4435         function decls.
4436         (decls_match): Don't look at default args.
4437         (redeclaration_error_message): Complain about redefining default
4438         args.
4439
4440         * call.c (build_overload_call_real): Also deal with guiding
4441         declarations coming BEFORE the template decl.
4442
4443         * pt.c (unify): Allow different parms to have different
4444         cv-qualifiers.
4445         (unify): Allow trivial conversions on non-template parms.
4446
4447 Fri May  6 03:53:23 1994  Jason Merrill  (jason@deneb.cygnus.com)
4448
4449         * pt.c (tsubst): Support OFFSET_TYPEs.
4450         (unify): Ditto.
4451
4452         * decl2.c (finish_decl_parsing): Call push_nested_class with a type.
4453
4454         * init.c (build_offset_ref): Fix error message.
4455         * search.c (lookup_field): Ditto.
4456
4457         * call.c (build_scoped_method_call): Pass binfo to
4458         build_method_call.
4459         * typeck.c (build_object_ref): Ditto.
4460
4461         * typeck2.c (binfo_or_else): Don't return a _TYPE.
4462
4463         * class.c (finish_struct): Don't complain about re-use of inherited
4464         names or shadowing of type decls.
4465         * decl.c (pushdecl_class_level): Ditto.
4466
4467         * decl.c (finish_enum): Set the type of all the enums.
4468
4469         * class.c (finish_struct): Don't get confused by access decls.
4470
4471         * cp-tree.h (TYPE_MAIN_DECL): New macro to get the _DECL for a
4472         _TYPE.  You can stop using TYPE_NAME for that now.
4473
4474         * parse.y: Lose doing_explicit (check $0 instead).
4475         * gxx.gperf: 'template' now has a RID.
4476         * lex.h (rid): Ditto.
4477         * lex.c (init_lex): Set up the RID for 'template'.
4478
4479         * parse.y (type_specifier_seq): typed_typespecs or
4480         nonempty_type_quals.  Use it.
4481         (handler_args): Fix bogus syntax.
4482         (raise_identifier{,s}, optional_identifier): Lose.
4483         * except.c (expand_start_catch_block): Use grokdeclarator to parse
4484         the catch variable.
4485         (init_exception_processing): The second argument to
4486         __throw_type_match is ptr_type_node.
4487
4488         Fri May  6 07:18:54 1994  Chip Salzenberg  (chip@fin)
4489
4490         [ change propagated from c-decl.c of snapshot 940429 ]
4491         * cp/decl.c (finish_decl): Setting asmspec_tree should not
4492         zero out the old RTL.
4493
4494 Fri May  6 01:25:38 1994  Mike Stump  <mrs@cygnus.com>
4495
4496         Add alpha exception handling support to the compiler.
4497         Quick and dirty backend in except.c.
4498
4499         * cp/*:  Remove most remnants of old exception handling support.
4500         * decl.c (finish_function): Call expand_exception_blocks to put
4501         the exception hanlding blocks at the end of the function.
4502         * dec.c (hack_incomplete_structures): Make sure expand_decl_cleanup
4503         comes after expand_decl_init.
4504         * except.c: Reimplementation.
4505         * expr.c (cplus_expand_expr): Handle THROW_EXPRs.
4506         * lex.c (init_lex): Always have catch, try and throw be reserved
4507         words, so that we may always parse exception handling.
4508         * parse.y: Cleanup to support new interface into exception handling.
4509         * tree.def (THROW_EXPR): Add.
4510
4511 Thu May  5 17:35:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
4512
4513         * parse.y (simple_stmt, for loops): Use implicitly_scoped_stmt.
4514         (various): Lose .kindof_pushlevel and partially_scoped_stmt.
4515
4516 Thu May  5 16:17:27 1994  Kung Hsu  (kung@mexican.cygnus.com)
4517
4518         * parse.y (already_scoped_stmt): move expand_end_binding() to
4519         fix the unmatched LBB/LBE in stabs.
4520
4521 Thu May  5 14:36:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
4522
4523         * decl.c (set_nested_typename): Set TREE_MANGLED on the new
4524         identifiers.
4525         (pushdecl): Check TREE_MANGLED.
4526         (xref_tag): Ditto.
4527         * cp-tree.h (TREE_MANGLED): This identifier is a
4528         DECL_NESTED_TYPENAME (named to allow for future use to denote
4529         mangled function names as well).
4530
4531         Implement inconsistency checking specified in [class.scope0].
4532         * decl.c (lookup_name_real): Don't set ICV here after all.
4533         (finish_enum): Also set the type of the enumerators themselves.
4534         (build_enumerator): Put the CONST_DECL in the list instead of its
4535         initial value.
4536         (pushdecl_class_level): Check inconsistent use of a name in the
4537         class body.
4538         * class.c (finish_struct): Check inconsistent use of a name in the
4539         class body.  Don't set DECL_CONTEXT on types here anymore.
4540         * parse.y (qualified_type_name): Note that the identifier has now
4541         been used (as a type) in the class body.
4542         * lex.c (do_identifier): Note that the identifier has now been used
4543         (as a constant) in the class body.
4544         * error.c (dump_decl): Print type and enum decls better.
4545
4546 Thu May  5 09:35:35 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
4547
4548         * typeck.c (build_modify_expr): Warn about assignment to `this'.
4549
4550 Wed May  4 15:55:49 1994  Jason Merrill  (jason@deneb.cygnus.com)
4551
4552         * init.c (build_delete): Use the global operator delete when
4553         requested.
4554
4555         * decl.c (lookup_name_real): If we find the type we're looking in a
4556         base class while defining a class, set IDENTIFIER_CLASS_VALUE for
4557         the type.
4558
4559         * class.c (finish_struct): Remove a couple of dependencies on
4560         language linkage.
4561
4562         * decl.c (pushtag): Classes do nest in extern "C" blocks.
4563         (pushdecl): Only set DECL_NESTED_TYPENAME on the canonical one for
4564         the type.
4565         (pushtag): Remove another dependency on the language linkage.
4566
4567         * lex.c (cons_up_default_function): Don't set DECL_CLASS_CONTEXT to
4568         a const-qualified type.
4569
4570         * decl.c (push_overloaded_decl): Throw away built-in decls here.
4571         (duplicate_decls): Instead of here.
4572
4573 Wed May  4 15:27:40 1994  Per Bothner  (bothner@kalessin.cygnus.com)
4574
4575         * typeck.c (get_member_function_from_ptrfunc):  Do The Right
4576         Thing (I hope) if we're using thunks.
4577
4578 Wed May  4 13:52:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
4579
4580         * parse.y (specialization): aggr template_type_name ';'.
4581         (named_class_head_sans_basetype): Use it.
4582         (explicit_instantiation): Ditto.
4583         (tmpl.2): Revert.
4584
4585         * cvt.c (build_type_conversion_1): Use convert_for_initialization,
4586         rather than convert, to do conversions after the UDC.
4587
4588         * cp-tree.h (SHARED_MEMBER_P): This member is shared between all
4589         instances of the class.
4590
4591         * search.c (lookup_field): If the entity found by two routes is the
4592         same, it's not ambiguous.
4593
4594 Wed May  4 12:10:00 1994  Per Bothner  (bothner@kalessin.cygnus.com)
4595
4596         * decl.c (lookup_name_real):  Check for a NULL TREE_VALUE,
4597         to prevent the compiler from crashing ...
4598
4599 Wed May  4 11:19:45 1994  Jason Merrill  (jason@deneb.cygnus.com)
4600
4601         * call.c (build_method_call): If we don't have an object, check
4602         basetype_path to figure out where to look up the function.
4603
4604         * typeck.c (convert_for_initialization): Pass TYPE_BINFO (type) to
4605         build_method_call in case exp is NULL_TREE.
4606
4607 Tue May  3 16:02:53 1994  Per Bothner  (bothner@kalessin.cygnus.com)
4608
4609         Give a vtable entries a unique named type, for the sake of gdb.
4610         * class.c (build_vtable_entry):  The addres of a thunk now has
4611         type vtable_entry_type, not ptr_type_node.
4612         * method.c (make_thunk):  Fix type of THUNK_DECL.
4613         * class.c (add_virtual_function, override_one_vtable):  Use
4614         vfunc_ptr_type_node, instead of ptr_type_node.
4615         * cp-tree.h (vfunc_ptr_type_node):  New macro.
4616         * decl.c (init_decl_processing):  Make vtable_entry_type
4617         be a unique type of pointer to a unique function type.
4618
4619 Tue May  3 09:20:44 1994  Jason Merrill  (jason@deneb.cygnus.com)
4620
4621         * parse.y (do_explicit): Sets doing_explicit to 1.
4622         (explicit_instantiation): Use do_explicit rather than TEMPLATE
4623         directly, add "do_explicit error" rule.
4624         (datadef): Set doing_explicit to 0 after an explicit instantiation.
4625         (tmpl.2): Don't instantiate if we see a ';' unless we're doing an
4626         explicit instantiation.
4627         (named_class_head_sans_basetype): Remove aggr template_type_name
4628         ';' again.
4629
4630 Mon May  2 23:17:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
4631
4632         * search.c (lookup_nested_tag): Lose.
4633
4634         * decl2.c (grokfield): Set DECL_CONTEXT on TYPE_DECLs.
4635         (lookup_name_nonclass): Lose.
4636
4637         * decl.c (poplevel_class): Add force parameter.
4638         (lookup_name_real): Fix handling of explicit scoping which specifies
4639         a class currently being defined.  Add 'nonclass' argument.
4640         (lookup_name, lookup_name_nonclass): Shells for lookup_name_real.
4641
4642         * class.c (finish_struct): Don't unset IDENTIFIER_CLASS_VALUEs here.
4643         (popclass): Force clearing of IDENTIFIER_CLASS_VALUEs if we're being
4644         called from finish_struct.
4645
4646 Mon May  2 19:06:21 1994  Per Bothner  (bothner@kalessin.cygnus.com)
4647
4648         * decl.c (init_decl_processing), cp-tree.h:  Removed memptr_type.
4649         (It seeems redundant, given build_ptrmemfunc_type.)
4650         * typeck.c (get_member_function_from_ptrfunc), gc.c (build_headof,
4651         build_classof):  Use vtable_entry_type instead of memptr_type.
4652         * method.c (emit_thunk):  Call poplevel with functionbody==0
4653         to prevent DECL_INITIAL being set to a BLOCK.
4654
4655 Mon May  2 15:02:11 1994  Jason Merrill  (jason@deneb.cygnus.com)
4656
4657         * parse.y (named_class_head_sans_basetype): Add "aggr
4658         template_type_name ';'" rule for forward declaration of
4659         specializations.
4660
4661 Mon May  2 15:02:11 1994  Jason Merrill  (jason@deneb.cygnus.com)
4662
4663         * class.c (instantiate_type): Deal with pmf's.
4664
4665         * Make-lang.in (cc1plus): Don't depend on OBJS or BC_OBJS, since
4666         stamp-objlist does.
4667
4668         * Makefile.in (../cc1plus): Depend on OBJDEPS.
4669         (OBJDEPS): Dependency version of OBJS.
4670
4671 Mon May  2 12:51:31 1994  Kung Hsu  (kung@mexican.cygnus.com)
4672
4673         * search.c (dfs_debug_mark): unmark TYPE_DECL_SUPPRESS_DEBUG, not
4674         DECL_IGNORED_P.
4675
4676 Fri Apr 29 12:29:56 1994  Jason Merrill  (jason@deneb.cygnus.com)
4677
4678         * class.c (finish_struct): Clear out memory of local tags.  And
4679         typedefs.
4680
4681         * decl2.c (grokclassfn): Don't set DECL_CONTEXT to a cv-qualified
4682         type.
4683         * search.c (get_matching_virtual): Be more helpful in error message.
4684
4685         * *: Use DECL_ARTIFICIAL (renamed from DECL_SYNTHESIZED).
4686
4687         * lex.c (default_assign_ref_body): Expect TYPE_NESTED_NAME to work.
4688         (default_copy_constructor_body): Ditto.
4689
4690         * class.c (finish_struct): Don't gratuitously create multiple decls
4691         for nested classes.
4692
4693 Thu Apr 28 23:39:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
4694
4695         Avoid clobbering the arg types of other functions when reverting
4696         static member functions.
4697         * decl.c (revert_static_member_fn): Rearrange arguments, don't
4698         require values for 'fn' and 'argtypes', add warning to comment
4699         above.
4700         (decls_match): Rearrange arguments in call to rsmf.
4701         (grok_op_properties): Don't pass values for fn and argtypes.
4702         * pt.c (instantiate_template): Don't pass values for fn and argtypes.
4703
4704 Thu Apr 28 16:29:11 1994  Doug Evans  (dje@canuck.cygnus.com)
4705
4706         * Make-lang.in (cc1plus): Depend on stamp-objlist.
4707         * Makefile.in (BC_OBJS): Delete.
4708         (OBJS): Cat ../stamp-objlist to get language independent files.
4709         Include ../c-common.o.
4710         (../cc1plus): Delete reference to BC_OBJS.
4711
4712 Thu Apr 28 02:12:08 1994  Jason Merrill  (jason@deneb.cygnus.com)
4713
4714         * search.c (compute_access): No really, deal with static members
4715         properly.  Would I lie to you?
4716
4717         Implement lexical hiding of function declarations.
4718         * pt.c (tsubst): Use lookup_name to look for function decls to guide
4719         instantiation.
4720         * method.c (build_opfncall): Use lookup_name_nonclass to look for
4721         non-member functions.
4722         * init.c (do_friend): Use lookup_name_nonclass to look for
4723         functions.
4724         * error.c (ident_fndecl): Use lookup_name to look for functions.
4725         * decl2.c (lookup_name_nonclass): New function, skips over
4726         CLASS_VALUE.
4727         * decl.c (struct binding_level): Lose overloads_shadowed field.
4728         (poplevel): Don't deal with overloads_shadowed.
4729         (push_overloaded_decl): Do lexical hiding for functions.
4730         * class.c (instantiate_type): Don't check non-members if we have
4731         members with the same name.
4732         * call.c (build_method_call): Use lookup_name_nonclass instead of
4733         IDENTIFIER_GLOBAL_VALUE to check for non-member functions.
4734         (build_overload_call_real): Ditto.
4735
4736         * decl.c (duplicate_decls): Check for ambiguous overloads here.
4737         (push_overloaded_decl): Instead of here.
4738         
4739         * decl.c (pushdecl): Back out Chip's last change.
4740
4741         * decl.c (grok_op_properties): operators cannot be static members.
4742
4743         * cp-tree.h (DECL_SYNTHESIZED): DECL_SOURCE_LINE == 0
4744         (SET_DECL_SYNTHESIZED): DECL_SOURCE_LINE = 0
4745         * lex.c (cons_up_default_function): Use SET_DECL_SYNTHESIZED.
4746
4747         * method.c (do_inline_function_hair): Don't put friends of local
4748         classes into global scope, either.
4749
4750         * typeck2.c (build_functional_cast): Don't look for a function call
4751         interpretation.
4752
4753 Thu Apr 28 15:19:46 1994  Mike Stump  <mrs@cygnus.com>
4754
4755         * cp-tree.h: disable use of backend EH.
4756
4757 Wed Apr 27 21:01:24 1994  Doug Evans  (dje@canuck.cygnus.com)
4758
4759         * Make-lang.in (c++.distdir): mkdir tmp/cp first.
4760         * Makefile.in (INCLUDES): Move definition to same place as
4761         parent makefile.
4762         (ALLOCA): Define.
4763         (OLDAR_FLAGS): Delete.
4764         (OLDCC): Define.
4765         (DIR): Delete.
4766         (CLIB): Define.
4767         (####site): Delete.
4768         (SUBDIR_USE_ALLOCA): Don't use ALLOCA if compiling with gcc.
4769
4770 Wed Apr 27 19:10:04 1994  Kung Hsu  (kung@mexican.cygnus.com)
4771
4772         * decl.c (xref_tag): not to use strstr(), it's not available on
4773         all platforms.
4774
4775 Wed Apr 27 18:10:12 1994  Jason Merrill  (jason@deneb.cygnus.com)
4776
4777         * class.c (finish_struct): Resolve yet another class/pmf confusion.
4778
4779         * call.c (build_overload_call_real): Don't take the single-function
4780         shortcut if we're dealing with an overloaded operator.
4781
4782 Wed Apr 27 17:35:37 1994  Mike Stump  <mrs@cygnus.com>
4783
4784         * search.c (get_base_distance): Search the virtual base class
4785         binfos, incase someone wants to convert to a real virtual base
4786         class.
4787         * search.c (expand_indirect_vtbls_init): Use convert_pointer_to_real
4788         instead of convert_pointer_to, as it now will work.
4789
4790 Wed Apr 27 15:36:49 1994  Jason Merrill  (jason@deneb.cygnus.com)
4791
4792         * cvt.c (convert_to_reference): Don't complain about casting away
4793         const and volatile.
4794
4795         * typeck.c (build_unary_op): References are too lvalues.
4796
4797 Wed Apr 27 13:58:05 1994  Mike Stump  <mrs@cygnus.com>
4798
4799         * class.c (override_one_vtable): We have to prepare_fresh_vtable
4800         before we modify it, not after, also, we cannot reuse an old vtable,
4801         once we commit to a new vtable.  Implement ambiguous overrides in
4802         virtual bases as abstract.  Hack until we make the class
4803         ill-formed.
4804
4805 Wed Apr 27 01:17:08 1994  Jason Merrill  (jason@deneb.cygnus.com)
4806
4807         * parse.y (unary_expr): Expand new_placement[opt] and
4808         new_initializer[opt] inline.
4809
4810         * search.c (lookup_fnfields): Don't throw away the inheritance
4811         information here, either.
4812         (compute_access): Handle static members properly.
4813
4814         * init.c (build_member_call): Always set basetype_path, and pass it
4815         to lookup_fnfields.
4816
4817         * search.c (lookup_field): Deal properly with the case where
4818         xbasetype is a chain of binfos; don't throw away the inheritance
4819         information.
4820         (compute_access): protected_ok always starts out at 0.
4821
4822         * init.c (resolve_offset_ref): Don't cast `this' to the base type
4823         until we've got our basetype_path.
4824
4825         * cp-tree.h (IS_OVERLOAD_TYPE): aggregate or enum.
4826
4827         * cvt.c (build_up_reference): Use build_pointer_type rather than
4828         TYPE_POINTER_TO.
4829
4830         * call.c (convert_harshness_ansi): Call type_promotes_to for reals
4831         as well.
4832
4833         * cvt.c (type_promotes_to): Retain const and volatile, add
4834         float->double promotion.
4835
4836         * decl.c (grokdeclarator): Don't bash references to arrays into
4837         references to pointers in function parms.  Use type_promotes_to.
4838
4839 Tue Apr 26 23:44:36 1994  Mike Stump  <mrs@cygnus.com>
4840
4841         Finish off Apr 19th work.
4842
4843         * class.c (finish_struct_bits): Rename has_abstract_virtuals to
4844         might_have_abstract_virtuals.
4845         * class.c (strictly_overrides, override_one_vtable,
4846         merge_overrides): New routines to handle virtual base overrides.
4847         * class.c (finish_struct): Call merge_overrides to handle overrides
4848         in virtual bases.
4849
4850 Tue Apr 26 12:45:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
4851
4852         * typeck.c (build_function_call): Call build_function_call_real with
4853         LOOKUP_NORMAL.
4854
4855         * *: Don't deal with TYPE_EXPRs.
4856
4857         * tree.c (lvalue_p): If the type of the expression is a reference,
4858         it's an lvalue.
4859
4860         * cvt.c (convert_to_reference): Complain about passing const
4861         lvalues to non-const references.
4862         (convert_from_reference): Don't arbitrarily throw away const and
4863         volatile on the target type.
4864
4865         * parse.y: Simplify and fix rules for `new'.
4866
4867         * decl.c (grok_op_properties): operator void is illegal.
4868
4869 Mon Apr 25 02:36:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
4870
4871         * parse.y (components): Anonymous bitfields can still have declspecs.
4872
4873         * decl.c (pushdecl): Postpone handling of function templates like we
4874         do C functions.
4875
4876         * search.c (expand_indirect_vtbls_init): Fix infinite loop when
4877         convert_pointer_to fails.
4878
4879         * call.c (compute_conversion_costs_ansi): A user-defined conversion
4880         by itself is better than that UDC followed by standard conversions.
4881         Don't treat integers and reals specially.
4882
4883         * cp-tree.h: Declare flag_ansi.
4884
4885         * typeck.c (c_expand_return): pedwarn on return in void function
4886         even if the expression is of type void.
4887         (build_c_cast): Don't do as much checking for casts to void.
4888         (build_modify_expr): pedwarn about array assignment if this code
4889         wasn't generated by the compiler.
4890
4891         * tree.c (lvalue_p): A comma expression is an lvalue if its second
4892         operand is.
4893
4894         * typeck.c (default_conversion): Move code for promoting enums and
4895         ints from here.
4896         * cvt.c (type_promotes_to): To here.
4897         * call.c (convert_harshness_ansi): Use type_promotes_to.  Also fix
4898         promotion semantics for reals.
4899
4900 Sun Apr 24 16:52:51 1994  Doug Evans  (dje@canuck.cygnus.com)
4901
4902         * Make-lang.in (c++.install-common): Check for g++-cross.
4903         * Makefile.in: Remove Cygnus cruft.
4904         (config.status): Delete.
4905         (RTL_H): Define.
4906         (TREE_H): Use complete pathname, some native makes have minimal
4907         VPATH support.
4908         (*.o): Use complete pathname to headers in parent dir.
4909         (doc, info, dvi): Delete.
4910
4911 Sun Apr 24 16:52:51 1994  Doug Evans  (dje@canuck.cygnus.com)
4912
4913         * Make-lang.in (c++.install-common): Check for g++-cross.
4914         * Makefile.in: Remove Cygnus cruft.
4915         (config.status): Delete.
4916         (RTL_H): Define.
4917         (TREE_H): Use complete pathname, some native makes have minimal
4918         VPATH support.
4919         (*.o): Use complete pathname to headers in parent dir.
4920         (doc, info, dvi): Delete.
4921
4922 Sun Apr 24 00:47:49 1994  Jason Merrill  (jason@deneb.cygnus.com)
4923
4924         * decl.c (pushdecl): Avoid redundant warning on redeclaring function
4925         with different return type.
4926         (decls_match): Compare return types strictly.
4927
4928 Fri Apr 22 12:55:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
4929
4930         * cvt.c (build_type_conversion): Do try to convert through other
4931         pointers.  This will fail if the class defines multiple pointer
4932         conversions.
4933
4934         * error.c (dump_type_prefix): Print out pointers to arrays properly.
4935         (dump_type_suffix): Ditto.  (was 'int *[]', now 'int (*)[]')
4936
4937         * typeck.c (build_unary_op): Disallow ++/-- on pointers to
4938         incomplete type.
4939
4940         * decl.c (duplicate_decls): Check mismatched TREE_CODES after
4941         checking for shadowing a builtin.  If we're redeclaring a builtin
4942         function, bash the old decl to avoid an ambiguous overload.
4943
4944         * cvt.c (convert_to_reference): Don't force arrays to decay here.
4945
4946         * tree.c (lvalue_p): A MODIFY_EXPR is an lvalue.
4947
4948         * decl.c (duplicate_decls): Don't assume that the decls will have
4949         types.
4950
4951         Mon Apr 18 11:35:32 1994  Chip Salzenberg  (chip@fin.uucp)
4952
4953         [ cp/* changes propagated from c-* changes in 940318 snapshot ]
4954         * c-decl.c (pushdecl): Warn if type mismatch with another external decl
4955         in a global scope.
4956
4957         Fri Apr 22 06:38:56 1994  Chip Salzenberg  (chip@fin.uucp)
4958
4959         * cp/typeck2.c (signature_error): Use cp_error for "%T".
4960
4961         Mon Apr 18 11:59:59 1994  Chip Salzenberg  (chip@fin.uucp)
4962
4963         [ cp/* changes propagated from c-* changes in 940415 snapshot ]
4964         * cp/decl.c (duplicate_decls, pushdecl, builtin_function):
4965         Use DECL_FUNCTION_CODE instead of DECL_SET_FUNCTION_CODE.
4966
4967         Mon Apr 18 11:55:18 1994  Chip Salzenberg  (chip@fin.uucp)
4968
4969         [ cp/* changes propagated from c-* changes in 940409 snapshot ]
4970         * cp/decl.c (duplicate_decls): Put new type in same obstack as
4971         old ones, or permanent if old ones in different obstacks.
4972
4973         Mon Apr 18 11:48:49 1994  Chip Salzenberg  (chip@fin.uucp)
4974
4975         [ cp/* changes propagated from c-* changes in 940401 snapshot ]
4976         * cp/parse.y (attrib): Handle string args as expressions,
4977         merging the two rules.  `mode' attribute now takes a string arg.
4978         Delete the rule for an identifier as arg.
4979
4980         Mon Apr 18 11:24:00 1994  Chip Salzenberg  (chip@fin.uucp)
4981
4982         [ cp/* changes propagated from c-* changes in 940312 snapshot ]
4983         * cp/typeck.c (pointer_int_sum): Multiplication should be done signed.
4984         (pointer_diff): Likewise the division.
4985
4986         Sun Mar  6 19:43:39 1994  Chip Salzenberg  (chip@fin.uucp)
4987
4988         [ cp/* changes propagated from c-* changes in 940304 snapshot ]
4989         * cp/decl.c (finish_decl): Issue warning for large objects,
4990         if requested.
4991
4992         Sat Feb 19 22:20:32 1994  Chip Salzenberg  (chip@fin.uucp)
4993
4994         [ cp/* changes propagated from c-* changes in 940218 snapshot ]
4995         * cp/parse.y (attrib): Handle attribute ((section ("string"))).
4996         * cp/decl.c (duplicate_decls): Merge section name into new decl.
4997
4998         Tue Feb  8 09:49:17 1994  Chip Salzenberg  (chip@fin.uucp)
4999
5000         [ cp/* changes propagated from c-* changes in 940206 snapshot ]
5001         * cp/typeck.c (signed_or_unsigned_type): Check for any
5002         INTEGRAL_TYPE_P not just INTEGER_TYPE.
5003
5004         Mon Dec  6 13:35:31 1993  Norbert Kiesel  (norbert@i3.INformatik.rwth-aachen.DE)
5005
5006         * cp/decl.c (finish_enum): Start from 0 when determining precision
5007         for short enums.
5008
5009         Fri Dec  3 17:07:58 1993  Ralph Campbell  (ralphc@pyramid.COM)
5010
5011         * cp/parse.y (unary_expr): Look at $1 for tree_code rather than
5012         casting $$.
5013
5014         Wed Nov 17 19:22:09 1993  Chip Salzenberg  (chip@fin.uucp)
5015
5016         * cp/typeck.c (build_binary_op_nodefault): Propagate code
5017         from C front-end to optimize unsigned short division.
5018         (build_conditional_expr): Fix bug in "1 ? 42 : (void *) 8".
5019
5020         Wed Nov 17 19:17:18 1993  Chip Salzenberg  (chip@fin.uucp)
5021
5022         * cp/call.c (convert_harshness_ansi): Given an (e.g.) char
5023         constant, prefer 'const char &' to 'int'.
5024
5025         Wed Feb  3 13:11:48 1993  Chip Salzenberg  (chip@fin.uucp)
5026
5027         * cp/class.c (finish_struct_methods):  Handle multiple
5028         constructors in fn_fields list.
5029
5030 Fri Apr 22 12:48:10 1994  Kung Hsu  (kung@mexican.cygnus.com)
5031
5032         * class.c (finish_struct): use TYPE_DECL_SUPPRESS_DEBUG to flag
5033         types not to be dumped in stabs, like types in #pragma interface.
5034         * decl.c (init_decl_processing): use TYPE_DECL_SUPPRESS_DEBUG to
5035         mark unknown type.
5036
5037 Fri Apr 22 03:27:26 1994  Doug Evans  (dje@cygnus.com)
5038
5039         * Language directory reorganization.
5040         See parent makefile.
5041
5042 Thu Apr 21 18:27:57 1994  Per Bothner  (bothner@kalessin.cygnus.com)
5043
5044         * cp-tree.h (THUNK_DELTA):  It is normally negative, so
5045         use signed .i variant of frame_size rather than unsigned .u.
5046         * cp-tree.h (VTABLE_NAME_FORMAT):  If flag_vtable_thunks,
5047         use "VT" rather than "vt" due to binary incompatibility.
5048         * class.c (get_vtable_name):  Use strlen of VTABLE_NAME_FORMAT,
5049         rather than sizeof, since it is now an expression.
5050         * class.c (modify_one_vtable):  Modify to skip initial element
5051         containing a count of the vtable.
5052
5053 Thu Apr 21 00:09:02 1994  Jason Merrill  (jason@deneb.cygnus.com)
5054
5055         * lex.c (check_newline): Force interface_unknown on main input file.
5056
5057         * pt.c (do_pending_expansions): Always emit functions that have been
5058         explicitly instantiated.
5059         (do_function_instantiation): Set DECL_EXPLICITLY_INSTANTIATED.
5060         (do_type_instantiation): Set CLASSTYPE_VTABLE_NEEDS_WRITING and
5061         DECL_EXPLICITLY_INSTANTIATED on all my methods.
5062         * parse.y (explicit_instantiation): Call do_type_instantiation for
5063         types.
5064         * decl2.c (finish_vtable_vardecl): Call import_export_vtable.
5065         * decl.c (start_function): Don't set DECL_EXTERNAL on a function
5066         that has been explicitly instantiated.
5067         * cp-tree.h (DECL_EXPLICITLY_INSTANTIATED): Alias for
5068         DECL_LANG_FLAG_4.
5069         * class.c: Move import_export_vtable to decl2.c, and comment out all
5070         uses.
5071
5072 Wed Apr 20 16:51:06 1994  Jason Merrill  (jason@deneb.cygnus.com)
5073
5074         * lex.c (process_next_inline): Don't muck with DECL_INLINE.
5075         (do_pending_inlines): Ditto.
5076
5077 Tue Apr 19 22:25:41 1994  Mike Stump  <mrs@cygnus.com>
5078
5079         Reimplement vtable building, and most vtable pointer setting.
5080         Allows for earier maintenance, easier understandability, and most
5081         importantly, correct semantics.
5082
5083         * class.c (build_vtable): Removed unneeded
5084         SET_BINFO_VTABLE_PATH_MARKED.
5085         * class.c (prepare_fresh_vtable): Ditto.  Added argument.
5086         * class.c (modify_vtable_entry): General cleanup.
5087         * class.c (related_vslot, is_normal, modify_other_vtable_entries,
5088         modify_vtable_entries): Removed.
5089         * class.c (add_virtual_function): General cleanup.
5090         * class.c (finish_base_struct): Setup BINFO_VTABLE and
5091         BINFO_VIRTUALS as early as we can, so that modify_all_vtables can
5092         work.
5093         * class.c (finish_vtbls): New routine, mostly from
5094         unmark_finished_struct.
5095         * class.c (overrides): New routine.
5096         * class.c (modify_one_vtable): New routine, mostly from
5097         modify_other_vtable_entries and modify_vtable_entries.
5098         * class.c (modify_all_direct_vtables, modify_all_indirect_vtables,
5099         modify_all_vtables): New routines.
5100         * class.c (finish_struct): Added arguemnt to prepare_fresh_vtable
5101         call.  General cleanup on how pending_hard_virtuals are handled.
5102         General cleanup on modifying vtables.  Use finish_vtbls, instead of
5103         unmark_finished_struct.
5104         * cp-tree.h (init_vtbl_ptrs, expand_direct_vtbls_init,
5105         get_first_matching_virtual, get_matching_virtual,
5106         expand_vbase_vtables_init,  expand_indirect_vtbls_init): Update.
5107         * cvt.c (convert_pointer_to_real): cleanup error message.
5108         * decl.c (grokfndecl): General cleanup.
5109         * decl.c (finish_function): Change init_vtbl_ptrs call to
5110         expand_direct_vtbls_init.  Change expand_vbase_vtables_init call to
5111         expand_indirect_vtbls_init.
5112         * init.c (expand_virtual_init): Remove unneeded argument.
5113         * init.c (init_vtbl_ptrs): Rename to expand_direct_vtbls_init, added
5114         two arguments to make more general.  Made more general.  Now can be
5115         used for vtable pointer initialization from virtual bases.
5116         * init.c (emit_base_init): Change expand_vbase_vtables_init call to
5117         expand_indirect_vtbls_init.  Change init_vtbl_ptrs call to
5118         expand_direct_vtbls_init.
5119         * init.c (expand_virtual_init): General cleanup.
5120         * init.c (expand_default_init): Change expand_vbase_vtables_init
5121         call to expand_indirect_vtbls_init.
5122         * init.c (expand_recursive_init_1): Change expand_vbase_vtables_init
5123         call to expand_indirect_vtbls_init.
5124         * init.c (expand_recursive_init): Change expand_vbase_vtables_init
5125         call to expand_indirect_vtbls_init.
5126         * search.c (get_first_matching_virtual): Rename to
5127         get_matching_virtual.  General cleanup and remove setting of
5128         DECL_CONTEXT.  That is now done in a cleaner way in
5129         modify_vtable_entry and add_virtual_function.
5130         * search.c (expand_vbase_vtables_init): Rename to
5131         expand_indirect_vtbls_init.  General cleanup.  Use
5132         expand_direct_vtbls_init to do hard work.  Ensures that _all_ vtable
5133         pointers from virtual bases are set up.
5134         * search.c (bfs_unmark_finished_struct, unmark_finished_struct):
5135         Removed.
5136
5137         * *.[chy]: Remove support for VTABLE_USES_MASK.
5138
5139 Tue Apr 19 12:51:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
5140
5141         * cvt.c (convert_to_reference): Use NOP_EXPRs to switch between
5142         reference and pointer types instead of bashing the types directly.
5143
5144         * call.c (build_overload_call_real): Use the TREE_CODE to determine
5145         whether the function is overloaded or not, rather than
5146         TREE_OVERLOADED.
5147         * *: Remove all uses of TREE_OVERLOADED.
5148
5149         * decl.c (grokdeclarator): Only complain about initializing const
5150         fields when -ansi or -pedantic.
5151
5152 Tue Apr 19 12:42:42 1994  Doug Evans  (dje@canuck.cygnus.com)
5153
5154         * cp-tree.h (THUNK_DELTA): frame_size is now a union.
5155
5156 Mon Apr 18 00:17:13 1994  Jason Merrill  (jason@deneb.cygnus.com)
5157
5158         Do overloading on a block-by-block basis, not function-by-function.
5159         * decl.c: Lose overloads_to_forget.
5160         (struct binding_level): Add overloads_shadowed field.
5161         (poplevel): Restore overloads_shadowed.
5162         (push_overloaded_decl): Use overloads_shadowed instead of
5163         overloads_to_forget.
5164         (finish_function): Don't look at overloads_to_forget.
5165
5166         Copy enum_overflow logic from c-decl.c.
5167         * decl.c (start_enum): Initialize enum_overflow.
5168         (build_enumerator): Use enum_overflow.  Also use current_scope().
5169
5170         * search.c (current_scope): Move Brendan's comment from
5171         build_enumerator here.
5172
5173         * typeck.c (convert_for_assignment): Change warnings to pedwarns for
5174         discarding const/volatile.
5175
5176 Sat Apr 16 01:18:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
5177
5178         * typeck.c (comp_target_parms): Accept TEMPLATE_TYPE_PARMs on the rhs.
5179         (comp_target_types): Ditto.
5180
5181         * decl.c (lookup_name): Don't unset got_scope here.
5182
5183         * spew.c (yylex): Only replace yylval with the TYPE_NESTED_NAME if
5184         got_scope != NULL_TREE.
5185
5186 Fri Apr 15 16:36:33 1994  Jason Merrill  (jason@deneb.cygnus.com)
5187
5188         Horrible kludge to prevent templates from being instantiated by
5189         their base classes.
5190         * parse.y (template_instantiate_once): Unset TYPE_BEING_DEFINED
5191         before we get to left_curly.
5192         * pt.c (instantiate_class_template): Set TYPE_BEING_DEFINED.
5193
5194         * error.c (dump_decl): If it's a typedef, print out the name of the
5195         decl, not just the underlying type.
5196
5197         * decl.c (pushdecl): If the old duplicate decl was a TYPE_DECL,
5198         update the IDENTIFIER_TYPE_VALUE of its name.
5199
5200         * decl2.c (finish_file): When processing the initializer for a
5201         static member, pretend that the dummy function is a member of the
5202         same class.
5203
5204 Fri Apr 15 15:56:35 1994  Kung Hsu  (kung@mexican.cygnus.com)
5205
5206         * class.c (build_vtable_entry): revert Apr 4 change.
5207         * decl2.c (mark_vtable_entries): replace pure virtual function
5208         decl with abort's.
5209
5210 Fri Apr 15 13:49:33 1994  Jason Merrill  (jason@deneb.cygnus.com)
5211
5212         * typeck.c (build_conditional_expr): Pedwarn on pointer/integer
5213         mismatch, and don't pedwarn on 0/function pointer mismatch.
5214
5215         * typeck2.c (digest_init): Lose code for special handling of unions.
5216         (process_init_constructor): Since they're handled just fine here.
5217         Pedwarn on excess elements.
5218
5219         * decl2.c (grokfield): Complain about local class method declaration
5220         without definition.
5221
5222 Fri Apr 15 13:19:40 1994  Per Bothner  (bothner@kalessin.cygnus.com)
5223
5224         * method.c (emit_thunk):  Add extern declaration for
5225         current_call_is_indirect (needed for hppa).
5226
5227 Thu Apr 14 16:12:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
5228
5229         Improve local class support; allow classes in different blocks to
5230         have the same name.
5231         * decl.c (pushtag): Support local classes better.
5232         (pushdecl_nonclass_level): New function for pushing mangled decls of
5233         nested types into the appropriate scope.
5234         (xref_defn_tag): Use pushdecl_nonclass_level instead of
5235         pushdecl_top_level. 
5236         (grokfndecl): Don't mess with IDENTIFIER_GLOBAL_VALUE for local
5237         class methods.
5238         * method.c (do_inline_function_hair): Ditto.
5239
5240         * class.c (finish_struct): It is legal for a class with no
5241         constructors to have nonstatic const and reference members.
5242
5243 Thu Apr 14 07:15:11 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
5244
5245         * decl.c (push_overloaded_decl): Avoid giving errors about
5246         built-ins, since duplicate_decls will have given warnings/errors
5247         for them.
5248
5249 Thu Apr 14 03:45:12 1994  Jason Merrill  (jason@deneb.cygnus.com)
5250
5251         * cvt.c (convert_to_reference): Warn about casting pointer type to
5252         reference type when this is probably not what they wanted.
5253
5254 Wed Apr 13 13:12:35 1994  Per Bothner  (bothner@kalessin.cygnus.com)
5255
5256         * decl.c (finish_decl):  Don't mindlessly set TREE_USED for
5257         static consts any more (toplev.c has now been modified to
5258         not emit warnings if they are unused).
5259
5260 Wed Apr 13 00:22:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
5261
5262         * decl.c (grok_op_properties): If op new/delete get here with
5263         METHOD_TYPEs, do a revert_static_member_fn.
5264
5265         * cp-tree.h (IDENTIFIER_CLASS_TYPE_VALUE): Lose.
5266         * init.c (is_aggr_typedef): Don't look at
5267         IDENTIFIER_CLASS_TYPE_VALUE.
5268         (get_aggr_from_typedef): Ditto.
5269         (get_type_value): Ditto.
5270         * call.c (build_scoped_method_call): Don't rely on overloaded
5271         template names having IDENTIFIER_CLASS_VALUE set.
5272
5273         * parse.y (component_decl_1, fn.def2): Revert rules for
5274         constructors.
5275         (component_decl_1, fn.def2): Use $1 instead of $$, since $$ is being
5276         clobbered.
5277
5278         * decl.c (start_function): Only warn about `void main()' if pedantic
5279         || warn_return_type.
5280
5281 Tue Apr 12 02:14:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
5282
5283         Clean up overloading of the template name.
5284         * class.c (pushclass): overload the template name whenever pushing
5285         into the scope of a template class, not just if it is
5286         uninstantiated.
5287         (popclass): Correspondingly.
5288         * search.c (push_class_decls): Don't overload_template_name.
5289         * pt.c (overload_template_name): Don't set IDENTIFIER_LOCAL_VALUE or
5290         DECL_CONTEXT on things.
5291         * parse.y (left_curly): Don't overload_template_name.
5292         * class.c (finish_struct): Don't undo_template_name_overload.
5293
5294         * method.c (build_opfncall): Only pass one argument to global op
5295         delete.
5296
5297         * call.c (build_method_call): Use TYPE_VEC_DELETE_TAKES_SIZE to
5298         decide how many arguments to use for vec delete.
5299
5300         * decl.c (grok_op_properties): Be consistent in modifying
5301         current_class_type.
5302         (grokdeclarator): Only complain about function decls with no return
5303         type if we're being pedantic.
5304
5305 Mon Apr 11 00:10:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
5306
5307         Add support for operator new [] and operator delete [].
5308
5309         * tree.def: Add VEC_NEW_EXPR and VEC_DELETE_EXPR.
5310         * ptree.c (print_lang_type): Indicate vec new/delete.
5311         * parse.y: Support vec new/delete.
5312         * method.c (build_decl_overload): Deal with vec new/delete.
5313         (build_opfncall): Ditto.
5314         * lex.c (init_lex): Set up values of ansi_opname and opname_tab for
5315         vec new/delete.  vec new uses "__vn", and vec delete uses "__vd".
5316         * init.c (init_init_processing): Set up BIVN and BIVD.
5317         (do_friend): Don't clean up after mistaken setting of TREE_GETS_NEW,
5318         since it doesn't happen any more.
5319         (build_new): Support vec new.  Always call something.
5320         (build_x_delete): Support vec delete.
5321         (build_vec_delete): Lose dtor_dummy argument, add use_global_delete,
5322         and pass it to build_x_delete.
5323         * decl2.c (delete_sanity): Don't change behavior by whether or not
5324         the type has a destructor.  Pass use_global_delete to
5325         build_vec_delete.
5326         (coerce_delete_type): Make sure that the type returned has a first
5327         argument of ptr_type_node.
5328         * decl.c (init_decl_processing): Also declare the global vec
5329         new/delete.
5330         (grokdeclarator): Also force vec new/delete to be static.
5331         (grok_op_properties): Note presence of vec new/delete, and play with
5332         their args.  If vec delete takes the optional size_t argument, set
5333         TYPE_VEC_DELETE_TAKES_SIZE.
5334         * cp-tree.h (TYPE_GETS_{REG,VEC}_DELETE): New macros to simplify
5335         checking for one delete or the other.
5336         (lang_type): gets_new and gets_delete are now two bits long.  The
5337         low bit is for the non-array version.  Lose gets_placed_new.
5338         (TYPE_VEC_DELETE_TAKES_SIZE): New macro indicating that the vec
5339         delete defined by this class wants to know how much space it is
5340         deleting.
5341         (TYPE_VEC_NEW_USES_COOKIE): New macro to indicate when vec new must
5342         add a header containing the number of elements in the vector; i.e.
5343         when the elements need to be destroyed or vec delete wants to know
5344         the size.
5345         * class.c (finish_struct_methods): Also check for overloading vec
5346         delete.
5347         * call.c (build_method_call): Also delete second argument for vec
5348         delete.
5349
5350         * decl.c (grokdeclarator): Correct complaints again.
5351         (grokdeclarator): Fix segfault on null declarator.
5352         (decls_match): Also accept redeclaration with no arguments if both
5353         declarations were in C context.  Bash TREE_TYPE (newdecl) here.
5354         (duplicate_decls): Instead of here.
5355
5356         * parse.y (nested_name_specifier_1): Lose rules for dealing with
5357         syntax errors nicely, since they break parsing of 'const i;'.
5358
5359         * decl.c (lookup_name): if (got_scope == current_class_type)
5360         val = IDENTIFIER_CLASS_VALUE (name).
5361
5362         * search.c (lookup_nested_tag): Look in enclosing classes, too.
5363
5364         * spew.c (yylex): Only look one character ahead when checking for a
5365         SCOPE.
5366
5367         * lex.c (check_newline): Read first nonwhite char before
5368         incrementing lineno.
5369
5370         * decl.c (grokdeclarator): Don't claim that typedefs are variables
5371         in warning.
5372
5373         * parse.y: Divide up uses of unqualified_id into
5374         notype_unqualified_id and unqualified_id, so that TYPENAME can be
5375         used as an identifier after an object.
5376
5377         * class.c (push_nested_class): Don't push into non-class scope.
5378
5379         * decl.c (grokdeclarator): If an identifier could be a type
5380         conversion operator, but has no associated type, it's not a type
5381         conversion operator.
5382
5383         * pt.c (unify): Check for equality of constants better.
5384
5385         * decl.c (grokdeclarator): Don't complain about access decls.
5386
5387 Sun Apr 10 02:39:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
5388
5389         * decl.c (grokdeclarator): pedwarn about data definitions without
5390         types here.
5391
5392         * parse.y (datadef): Don't pedwarn about decls without types here,
5393         since that is valid for functions.
5394         (fn.def2, component_decl): Support constructors with declmods again.
5395         (nomods_initdecls): For decls without any mods, so that we don't try
5396         to get declspecs from some arbitrary $0.
5397
5398         * search.c (lookup_field): Use cp_error.
5399
5400         * parse.y (nested_name_specifier_1): Don't check aggr/non-aggr type
5401         here; it breaks destructors for non-aggr types.
5402
5403         * decl.c (lookup_name): Only look for TYPE_DECLs in base classes of
5404         a type being defined, like the comment says.
5405         If got_scope is not an aggregate, just return NULL_TREE.
5406
5407         * pt.c (create_nested_upt): Kung's code for creating types nested
5408         within uninstantiated templates now lives here (it used to live in
5409         hack_more_ids).  It needs to be expanded.
5410
5411         * parse.y: Stop calling see_typename so much.
5412
5413         * decl.c (lookup_name): Deal with TTPs and UPTs.
5414
5415         * lex.c (real_yylex): Don't set looking_for_typename just because we
5416         saw a 'new'.
5417         (dont_see_typename): #if 0 out.
5418
5419         * spew.c (yylex): Increment looking_for_typename if the next
5420         character is SCOPE, rather than setting it to 1; this way, the value
5421         from seeing an aggr specifier will not be lost.  This kinda relies
5422         on looking_for_typename never being < 0, which is now true.
5423
5424         * parse.y (nested_name_specifier_1): Accept TEMPLATE_TYPE_PARMs,
5425         too.
5426         (named_class_head_sans_basetype): Accept template types, too.  Oops.
5427
5428 Fri Apr  8 16:39:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
5429
5430         * decl2.c (reparse_decl_as_expr1): Handle SCOPE_REFs.
5431
5432         * parse.y: Lose START_DECLARATOR.
5433
5434         * search.c (lookup_nested_tag): New function to scan CLASSTYPE_TAGS
5435         for a class.
5436
5437         * parse.y: Simplify fn.def2 and component_decl.  Support 'enum
5438         A::foo' syntax.  Catch invalid scopes better.
5439
5440         * parse.y, lex.c: lose TYPENAME_COLON.
5441
5442         * decl2.c (groktypefield): #if 0 out.
5443
5444         * decl.c (lookup_name): If the type denoted by got_scope is
5445         currently being defined, look in CLASSTYPE_TAGS rather than FIELDS.
5446
5447         * class.c (push_nested_class): Don't try to push into
5448         error_mark_node.
5449
5450 Fri Apr  8 07:26:36 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
5451
5452         * Makefile.in (stamp-parse): Update count of conflicts to 33.
5453
5454 Thu Apr  7 17:47:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
5455
5456         A saner implementation of nested types that treats template types
5457         no differently from non-template types.  There are still some
5458         shortcomings of our system; most notably, it is difficult to look
5459         for a nested type that is hidden by another name, because of the way
5460         we keep track of hidden types.  But this shouldn't be a problem for
5461         just about anyone.  Perhaps lookup_field should be fixed up a bit.
5462
5463         * spew.c: Moved handling of nested types/scoping from the lexer
5464         into the parser.  Removed variable template_type_seen_before_scope.
5465         Removed functions frob_identifier, hack_more_ids, and various cruft
5466         that was #if 0'd out in the past, reducing the size of the file from
5467         1146 lines to 450 lines.  We can't quite do away with spew.c yet,
5468         though; we still need it for do_aggr () and checking for SCOPE after
5469         the current identifier.  And setting lastiddecl.
5470
5471         * parse.y: Moved handling of nested types/scoping from the lexer
5472         into the parser, using a new global variable `got_scope'.  Reduced
5473         the number of states by 53.  Implemented all uses of explicit global
5474         scope.  Removed terminals SCOPED_TYPENAME and SCOPED_NAME.  Removed
5475         nonterminals tmpl.1, scoped_base_class, id_scope, typename_scope,
5476         scoped_typename.  Added nonterminals nested_type,
5477         qualified_type_name, complete_type_name, qualified_id, ptr_to_mem,
5478         nested_name_specifier, global_scope, overqualified_id, type_name.
5479         Changed many others.  Added 9 new reduce/reduce conflicts, which are
5480         nested type parallels of 9 that were already in the grammar for
5481         non-nested types.  Eight of the now 33 conflicts should be removed
5482         in the process of resolving the late binding between variable and
5483         function decls.
5484
5485         * gxxint.texi (Parser): Update.
5486
5487         * cp-tree.h (IS_AGGR_TYPE_CODE): Add UNINSTANTIATED_P_TYPE.
5488
5489         * lex.h: Add decl for got_scope.
5490
5491         * lex.c (see_typename): Claim to be the lexer when calling
5492         lookup_name.
5493
5494         * decl.c (lookup_name): When called from the lexer, look at
5495         got_scope and looking_at_typename; otherwise don't.
5496
5497 Thu Apr  7 22:05:47 1994  Mike Stump  <mrs@cygnus.com>
5498
5499         31th Cygnus<->FSF merge.
5500
5501 Thu Apr  7 17:47:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
5502
5503         * decl2.c (mark_vtable_entries): Call this to mark all the
5504         entries in the vtable addressable.
5505         (finish_decl_parsing): Handle SCOPE_REFs.
5506
5507         * decl.c (decls_match): Always call compparms with strict == 1.
5508         Handle the special case of C function redecl here.
5509         (duplicate_decls): Only keep the old type if the new decl takes no
5510         arguments.
5511
5512         * typeck.c (compparms): Also allow t1 to be ... if strict == 0.
5513
5514 Thu Apr  7 16:17:50 1994  Mike Stump  <mrs@cygnus.com>
5515
5516         * class.c (build_vtable_entry): Fix breakage introduced Apr 5
5517         17:48:41.
5518
5519 Wed Apr  6 16:05:10 1994  Per Bothner  (bothner@kalessin.cygnus.com)
5520
5521         * init.c (build_virtual_init), search.c (build_vbase_vtables_init),
5522         ch-tree.h:  Every place these functions were called, the result was
5523         immediately passed to expand_expr_stmt.  Reduce redundancy by
5524         calling expand_expr_init *inside* these functions.  These
5525         makes for a simpler interface, and we don't have to build
5526         compound expressions.  Hence, rename these function to:
5527         expand_virtual_init and expand_vbase_vtables_init respectively.
5528         * init.c, decl.c:  Change callers of these functions.
5529         * init.c, cp-tree.h (expand_virtual_init):  Make static.
5530
5531         * decl2.c (finish_file): Check TREE_PUBLIC||TREE_ADDRESSABLE
5532         rather than DECL_SAVED_INSNS before emitting inlines.
5533
5534 Wed Apr  6 13:06:39 1994  Jason Merrill  (jason@deneb.cygnus.com)
5535
5536         * spew.c (init_spew): #if 0 out stuff used by arbitrate_lookup.
5537
5538         * decl.c (duplicate_decls): If this is a new declaration of an
5539         extern "C" function, keep the type (for the argtypes).
5540         (redeclaration_error_message): Don't check DECL_LANGUAGE here.
5541         (decls_match): Call compparms with a value of strict dependent on
5542         the value of strict_prototypes for DECL_LANGUAGE (oldecl).
5543
5544         * typeck.c (compparms): ... is only equivalent to non-promoting
5545         parms if we're not being strict.
5546
5547         * parse.y (empty_parms): Don't check flag_ansi || pedantic here.
5548
5549         * decl.c (init_decl_processing): if (flag_ansi || pedantic)
5550         strict_prototypes_lang_c = strict_prototypes_lang_cplusplus;
5551
5552         * decl2.c (grok_function_init): Don't set DECL_INITIAL on pure
5553         virtuals.
5554
5555 Tue Apr  5 17:48:41 1994  Per Bothner  (bothner@kalessin.cygnus.com)
5556
5557         Support for implementing vtables with thunks.
5558         * tree.def (THUNK_DECL):  New TREE_CODE.
5559         * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY), tree.c
5560         (fnaddr_from_vtable_entry):  Handle flag_vtable_thunks case.
5561         * cp-tree.h (memptr_type):  New variable.
5562         * class.c (build_vtable_entry):  Build thunk if necessary.
5563         * class.c (build_vfn_ref):  If using thunks, don't need
5564         to add delta field from vtable (there is none!).
5565         * decl.c: Add memptr_type as well as vtable_entry_type.
5566         If using thunks, the latter is just ptr_type_node.
5567         * gc.c, typeck.c:  Use memptr_typeChange, not vtable_entry_type.
5568         * decl2.c (finish_vtable_vardecl):  Handle thunks.
5569         * expr.c (cplus_expand_expr):  Support THUNK_DECL.
5570
5571         * decl.c (grokdeclarator):  Set DECL_THIS_EXTERN if "extern".
5572         * decl.c (start_function):  Set current_extern_inline based on
5573         DECL_THIS_EXTERN, not TREE_PUBLIC.
5574         * decl.c (finish_function):  Call mark_inline_for_output if needed,
5575
5576         Improve intelligence about when to emit inlines.
5577         * cp-tree.h (lang_decl_flags):  New field saved_inline.
5578         * cp-tree.h (DECL_SAVED_INLINE):  New macro.
5579         * class.c (add_virtual_function):  Don't set TREE_ADDRESSABLE.
5580         * decl.h, decl.c (pending_addressable_inlines):  Removed.
5581         * decl2.c (pending_addressable_inlines):  Renamed to saved_inlines.
5582         * decl2.c (mark_inline_for_output):  Do nothing if
5583         DECL_SAVED_INLINE;  otherwise set it (and add to saved_inlines list).
5584         * decl2.c (finish_vtable_vardecl):  SET_CLASSTYPE_INTERFACE_KNOWN
5585         and set CLASSTYPE_INTERFACE_ONLY if there is a non-inline virtual.
5586         * decl2.c (finish_file):  Writing out inlines later, so we can
5587         also handle the ones needed for vtbales.
5588         * decl2.c (write_vtable_entries, finish_vtable_typedecl):  Removed.
5589
5590         * cp-tree.h, class.c, decl2.c, search.c:  Remove -fvtable-hack
5591         and flag_vtable_hack.   Use -fvtable-thunks and flag_vtable_thunks
5592         instead.  (The rationale is that these optimizations both break binary
5593         compatibility, but should become the default in a future release.)
5594
5595 Wed Apr  6 10:53:56 1994  Mike Stump  <mrs@cygnus.com>
5596
5597         * class.c (modify_vtable_entries): Never reset the DECL_CONTEXT
5598         of a fndecl, as we might not be from that vfield.
5599
5600 Tue Apr  5 17:43:35 1994  Kung Hsu  (kung@mexican.cygnus.com)
5601
5602         * class.c (add_virtual_function): fix bug for pure virtual, so
5603         that DECL_VINDEX of the dummy decl copied won't be error.
5604         (see also Apr 4 change)
5605
5606 Tue Apr  5 17:23:45 1994  Per Bothner  (bothner@kalessin.cygnus.com)
5607
5608         * typeck.c (c_expand_return):  Before checking that we're not
5609         returning the address of a local, make sure it's a VAR_DECL.
5610         (And don't worry about it being a TREE_LIST.)
5611
5612 Tue Apr  5 13:26:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
5613
5614         * parse.y (YYDEBUG): Always define.
5615         * lex.c (YYDEBUG): Ditto.
5616
5617 Mon Apr  4 11:28:17 1994  Kung Hsu  (kung@mexican.cygnus.com)
5618
5619         * class.c (finish_struct): backup out the change below, put the
5620         new change for the same purpose. The change below breaks code.
5621
5622         * class.c (finish_struct): if pure virtual, copy node and make
5623         RTL point to abort, then put in virtual table.
5624         * decl2.c (grok_function_iit): reinstate Mar 31 change.
5625
5626 Sat Apr  2 03:12:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
5627
5628         * init.c (build_new): pedwarn about newing const and volatile
5629         types.
5630
5631         * tree.c (get_identifier_list): Only do the special handling
5632         thing if we're dealing with the main variant of the record type.
5633
5634         * cvt.c (convert_to_reference): When converting between
5635         compatible reference types, use the pointer conversion machinery.
5636         Don't just blindly overwrite the old type.
5637
5638 Fri Apr  1 17:14:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
5639
5640         * call.c (build_method_call): When looking at global functions,
5641         be sure to use instance_ptr for the first argument, not some version
5642         of it that has been cast to a base class.  Also do this before
5643         comparing candidates.
5644
5645 Thu Mar 31 19:50:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
5646
5647         * call.c (build_method_call): Constructors can be called for
5648         const objects.
5649
5650 Thu Mar 31 16:20:16 1994  Kung Hsu  (kung@mexican.cygnus.com)
5651
5652         * decl2.c (grok_func_init): do not abort as rtl for pur virtual
5653         fucntions. They can be defined somewhere else.
5654
5655 Sat Jan 23 23:23:26 1994  Stephen R. van den Berg  (berg@pool.informatik.rwth-aachen.de)
5656
5657         * decl.c (init_decl_processing): Declare __builtin_return_address
5658         and __builtin_frame_address for C++ as well.
5659
5660 Thu Mar 31 12:35:49 1994  Mike Stump  <mrs@cygnus.com>
5661
5662         * typeck2.c (store_init_value): Integral constant variables are
5663         always constant, even when doing -fpic.
5664
5665 Sat Jan 23 23:23:26 1994  Stephen R. van den Berg  (berg@pool.informatik.rwth-aachen.de)
5666
5667         * decl.c (redeclaration_error_message): Pass the types to
5668         comptypes.
5669
5670 Wed Mar 30 21:29:25 1994  Mike Stump  <mrs@cygnus.com>
5671
5672         Cures incorrect errors about pure virtuals in a class, when they
5673         have been overridden in a derived class.
5674
5675         * search.c (get_abstract_virtuals): Reimplement.
5676         * search.c (get_abstract_virtuals_1): New routine.
5677
5678 Wed Mar 30 14:10:04 1994  Jason Merrill  (jason@deneb.cygnus.com)
5679
5680         * pt.c (push_template_decls): Make the pushed level pseudo
5681         global.
5682
5683         * parse.y (extdefs): Don't pop everything if the current binding
5684         level is pseudo_global.
5685
5686         * decl.c (pop_everything): Stop on reaching a pseudo-global
5687         binding level.
5688
5689         * cp-tree.h (DECL_FUNCTION_MEMBER_P): Change to more reliable test.
5690
5691         * decl.c (duplicate_decls): Only copy DECL_SOURCE_{FILE_LINE} if
5692         the old decl actually had an initializer.
5693
5694         * {various}: Clean up gcc -W complaints.
5695
5696         * cp-tree.h (DECL_FUNCTION_MEMBER_P): Currently defined to be
5697         (DECL_CONTEXT (NODE) != NULL_TREE).
5698
5699         * parse.y (lang_extdef): Call pop_everything if necessary.
5700
5701         * decl.c (pop_everything): New function for popping binding
5702         levels left over after a syntax error.
5703         (pushdecl): Use DECL_FUNCTION_MEMBER_P to decide whether or not
5704         a function is a member.
5705
5706 Wed Mar 30 14:20:50 1994  Mike Stump  <mrs@cygnus.com>
5707
5708         Cures calling a more base base class function, when a more derived
5709         base class member should be called in some MI situations.
5710
5711         * search.c (make_binfo): Use more the more specialized base
5712         binfos from the binfo given as the second argument to make_binfo,
5713         instead of the unspecialized ones from the TYPE_BINFO.
5714         * class.c (finish_base_struct): Ditto, update callers.
5715         * search.c (dfs_get_vbase_types): Ditto.
5716         * tree.c (propagate_binfo_offsets, layout_vbasetypes): Ditto.
5717         * decl.c (xref_tag): Use NULL_TREE instead of 0.
5718         * lex.c (make_lang_type): Ditto.
5719
5720 Wed Mar 30 14:10:04 1994  Jason Merrill  (jason@deneb.cygnus.com)
5721
5722         * decl.c (pushdecl): If pushing a C-linkage function, only do a
5723         push_overloaded_decl.
5724         (duplicate_decls): Standard overloading does not shadow built-ins.
5725
5726 Tue Mar 29 00:54:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
5727
5728         * pt.c (end_template_decl): Don't call push_overloaded_decl.
5729
5730         * init.c (do_friend): Don't call push_overloaded_decl.
5731
5732         * decl.c (pushdecl): Call push_overloaded_decl for functions and
5733         function templates.
5734         (duplicate_decls): functions and function templates are not
5735         duplicates, but don't complain about calling this function to
5736         compare them.
5737         (push_overloaded_decl): Don't deal with linkage.  Call
5738         duplicate_decls.
5739         (redeclaration_error_message): Deal with linkage.
5740
5741         * decl.c (start_function): If push_overloaded_decl returns an
5742         older version of the function, deal with it.
5743
5744         * decl.c (start_function): Be sure only to push_overloaded_decl
5745         for non-members.
5746
5747         * decl.c (grokfndecl): Put back clearing of DECL_CHAIN for
5748         methods.
5749         (start_function): Lose broken and redundant code for checking old
5750         decl.
5751
5752         * init.c (add_friend): Give line numbers of both friend decls
5753         when warning about re-friending.
5754
5755         * pt.c (tsubst): Use comptypes rather than == to compare the
5756         types of the method as declared and as defined, since default
5757         parameters may be different.
5758
5759         * call.c (build_method_call): Use brendan's candidate printing
5760         routine.
5761
5762         * decl.c (start_method): Methods defined in the class body are
5763         inline whether or not it's a template class.
5764
5765 Mon Mar 28 16:39:26 1994  Jason Merrill  (jason@deneb.cygnus.com)
5766
5767         * parse.y (initdcl0): Add "extern" to current_declspecs if
5768         have_extern_spec && ! used_extern_spcec.
5769
5770         * tree.c (really_overloaded_fn): A fn with more than one
5771         overload.
5772
5773         * pt.c (end_template_decl): Use really_overloaded_fn.
5774
5775         * decl.c (duplicate_decls): When smashing a decl into a previous
5776         definition, keep the old file and line.
5777         Don't deal with overloaded functions.
5778         Lose old code for checking arg types of functions.
5779         Check for overloaded C functions.
5780         (pushdecl): Deal with overloaded functions.
5781         (start_decl): Expect pushdecl to return an appropriate function decl.
5782         (start_function): Ditto.
5783         (push_overloaded_decl): Don't check for overloaded C functions.
5784
5785         * *.c: Stop using DECL_OVERLOADED, it being archaic.
5786         TREE_OVERLOADED should probably go, too.
5787
5788 Mon Mar 28 14:00:45 1994  Ron Guilmette  (rfg@netcom.com)
5789
5790         * typeck.c (comp_target_types): Call comp_target_parms with
5791         strict == 1.
5792
5793 Sun Mar 27 00:07:45 1994  Jason Merrill  (jason@deneb.cygnus.com)
5794
5795         * parse.y (empty_parms): Don't parse () as (...) in extern "C"
5796         sections if we're compiling with -ansi or -pedantic.
5797
5798         * decl.c (decls_match): Don't treat (int) and (int&) as matching.
5799
5800         * decl2.c (grokfield): Don't pedwarn twice about initializing
5801         field.
5802
5803         * decl.c (push_overloaded_decl): Warn about shadowing
5804         constructor.
5805         (redeclaration_error_message): Don't allow 'int a; int a;'
5806
5807         * cvt.c (build_up_reference): Only check for valid upcast if
5808         LOOKUP_PROTECT is set, not just any flag.
5809
5810 Fri Mar 25 01:22:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
5811
5812         * lex.c (check_newline): When we see a #pragma implementation,
5813         also set it for the main input file.
5814
5815         * init.c (build_new): Convert array size argument to size_t.
5816
5817         * parse.y (primary): If we're doing a parenthesized type-id, call
5818         groktypename before passing it to build_new.
5819
5820         * call.c (build_method_call): Deal properly with const and
5821         volatile for instances of reference type.
5822
5823         * decl.c (store_return_init): Change 'if (pedantic) error' to 'if
5824         (pedantic) pedwarn'.
5825
5826         * decl.c (grokdeclarator): Don't complain about putting `static'
5827         and `inline' on template function decls.
5828
5829 Thu Mar 24 23:18:19 1994  Jason Merrill  (jason@deneb.cygnus.com)
5830
5831         * call.c (build_method_call): Preserve const & volatile on
5832         `this'.
5833
5834 Thu Mar 24 16:21:52 1994  Mike Stump  <mrs@cygnus.com>
5835
5836         * init.c (build_new, build_vec_delete): Use global new and delete
5837         for arrays. 
5838         * decl2.c (delete_sanity): Ditto.
5839
5840 Thu Mar 24 02:10:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
5841
5842         * cvt.c (convert_to_reference): If i is an lvalue,
5843         (int &)i -> *(int*)&i, as per 5.2.8p9 of the latest WP.
5844         (convert_force): Call convert_to_reference with LOOKUP_COMPLAIN.
5845
5846 Wed Mar 23 17:45:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
5847
5848         * decl.c (duplicate_decls): Also propagate DECL_TEMPLATE_MEMBERS
5849         and DECL_TEMPLATE_INSTANTIATIONS.
5850
5851         * init.c (build_new): Handle array typedefs properly.
5852
5853 Wed Mar 23 18:23:33 1994  Mike Stump  <mrs@cygnus.com>
5854
5855         30th Cygnus<->FSF merge.
5856
5857 Wed Mar 23 00:46:24 1994  Mike Stump  <mrs@cygnus.com>
5858
5859         * class.c (modify_vtable_entries): Avoid running off the end of the
5860         virtuals list when processing a virtual destructor.
5861         * class.c (get_vtable_entry): Ditto.
5862
5863 Wed Mar 23 00:23:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
5864
5865         * decl.c (duplicate_decls): If two template decls don't match,
5866         just return 0.
5867
5868 Tue Mar 22 23:49:41 1994  Jason Merrill  (jason@deneb.cygnus.com)
5869
5870         * typeck.c (convert_for_assignment): Don't pedwarn about
5871         converting function pointer to void *.
5872
5873 Tue Mar 22 22:23:19 1994  Mike Stump  <mrs@cygnus.com>
5874
5875         Major revamp of pointer to member functions.  Cures major
5876         nonfunctionality when used in casts, and MI situations.
5877
5878         * cvt.c (convert_force): Update call site of build_ptrmemfunc.
5879         * typeck.c (convert_for_assignment): Ditto.
5880         * typeck2.c (digest_init): Ditto.
5881         * typeck2.c (process_init_constructor): Simplify by moving code into
5882         digest_init.
5883         * typeck2.c (digest_init): Do default_conversions on init value, if
5884         we are processing pointer to member functions.
5885         * class.c (get_vfield_offset): Now non-static.  Convert bit offset
5886         into byte offset.
5887         * cp-tree.h (get_vfield_offset): Ditto.
5888         * typeck.c (get_member_function_from_ptrfunc): Convert down to right
5889         instance, before fetching vtable pointer.
5890         * typeck.c (get_delta_difference): New routine.
5891         * typeck.c (build_ptrmemfunc): Revamp to handle casting better, also
5892         get vtable pointer out of right subobject.
5893
5894 Tue Mar 22 17:56:48 1994  Mike Stump  <mrs@cygnus.com>
5895
5896         * search.c (get_binfo): Return NULL instead of aborting, when
5897         passed a UNION_TYPE.
5898
5899 Tue Mar 22 12:44:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
5900
5901         These patches implement handling of redefinition/redeclaration of
5902         templates.
5903
5904         * typeck.c (comptypes): Simplify.  All TEMPLATE_TYPE_PARMs are
5905         considered compatible.
5906
5907         * parse.y (template_def): Pass defn argument to end_template_decl.
5908
5909         * pt.c (end_template_decl): Add defn argument.  Check for
5910         redefinition.  Simplify.
5911
5912         * error.c (OB_UNPUT): New macro, to remove mistakes.
5913         (aggr_variety): Subroutine of dump_aggr_type.
5914
5915         * decl.c (decls_match): Support templates.
5916         (duplicate_decls): No longer static.  Don't try to lay out template
5917         decls.
5918         (pushdecl): Simplify.
5919
5920         * cp-tree.h (DECL_TEMPLATE_MEMBERS): Use DECL_SIZE instead of
5921         DECL_INITIAL.
5922
5923 Mon Mar 21 11:46:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
5924
5925         * error.c (dump_decl): Support class template decls.
5926         (dump_type): Don't adorn template type parms.
5927
5928         * decl.c (duplicate_decls): Save DECL_TEMPLATE_INFO from old decl
5929         if it was a definition.
5930         (redeclaration_error_message): Do the cp_error thang, and reject
5931         redefinition of templates.
5932
5933 Mon Mar 21 19:36:06 1994  Per Bothner  (bothner@kalessin.cygnus.com)
5934
5935         * decl.c (grokdeclarator):  Set TREE_PUBLIC for METHOD_TYPE
5936         in FIELD context, when appropriate.  Also,
5937         CLASSTYPE_INTERFACE_ONLY is irrelevant to setting TREE_PUBLIC.
5938         Also, simplify check for bogus return specifiers.
5939
5940 Mon Mar 21 11:46:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
5941
5942         * parse.y (after_type_declarator1): Expand type_quals.
5943         (notype_declarator1): Ditto.
5944         (absdcl1): Ditto.
5945
5946 Sat Mar 19 01:05:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
5947
5948         * decl.c (grokdeclarator): Treat class-local typedefs like static
5949         members; i.e. 'typedef int f();' means that f is a function type,
5950         not a method type.
5951
5952         * parse.y (decl): Change direct_* back to *.
5953         (type_id): Change direct_abstract_declarator to absdcl.
5954         (direct_declarator, direct_initdecls, direct_initdcl0): Remove again.
5955
5956 Fri Mar 18 12:47:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
5957
5958         These two patches fix crashes on instantiating a template inside a
5959         function with C linkage or containing labels.
5960
5961         * class.c (current_lang_stacksize): No longer static.
5962
5963         * decl.c (struct saved_scope): Add lang_base, lang_stack,
5964         lang_name, lang_stacksize, and named_labels.
5965         (push_to_top_level): Save them.
5966         (pop_from_top_level): Restore them.
5967
5968         * gxxint.texi (Parser): Update.
5969
5970         These two patches finish moving the task of expr/declarator
5971         ambiguity resolution from the lexer to the parser, and add one more
5972         r/r conflict.  START_DECLARATOR can now be nuked.
5973
5974         * parse.y (decl): Add "direct_" in typespec X rules.
5975         (direct_declarator): New nonterminal for
5976         direct_after_type_declarator and direct_notype_declarator.
5977         (direct_initdecls): Like initdecls, but uses direct_initdcl0.
5978         (direct_initdcl0): Like initdcl0, but uses direct_declarator.
5979         (named_parm): Add typespec direct_declarator rule.
5980
5981         * spew.c (yylex): #if 0 out START_DECLARATOR insertion.
5982
5983         These two patches disable some excessive cleverness on the part of
5984         g++; a non-class declaration always hides a class declaration in the
5985         same scope, and g++ was trying to unhide it depending on the
5986         enclosing expression.
5987
5988         * spew.c (arbitrate_lookup): #if 0 out.
5989
5990         * decl.c (lookup_name): Never call arbitrate_lookup.
5991
5992         * parse.y (complex_notype_declarator1): Add '*'
5993         complex_notype_declarator1 and '&' complex_notype_declarator1 rules.
5994
5995         * parse.y (complex_direct_notype_declarator): Restore id_scope
5996         see_typename TYPENAME rule, remove all other rules beginning with
5997         those tokens.
5998         (notype_unqualified_id): Add '~' see_typename IDENTIFIER rule.
5999
6000 Thu Mar 17 17:30:01 1994  Jason Merrill  (jason@deneb.cygnus.com)
6001
6002         These changes fix the compiler's handling of the functional cast/
6003         object declaration ambiguities in section 6.8 of the ARM.  They also
6004         add 11 reduce/reduce conflicts.  Sigh.
6005
6006         * parse.y: Add precedence decls for OPERATOR and '~'.
6007         (notype_unqualified_id): New nonterminal, encompasses all of the
6008         ANSI unqualified-id nonterminal except TYPENAMEs.
6009         (expr_or_declarator): New nonterminal to delay parsing of code like
6010         `int (*a)'.
6011         (primary): Use notype_unqualified_id.
6012         (decl): Add typespec initdecls ';' and typespec declarator ';'
6013         rules.
6014         (initdcl0): Deal with the above.
6015         (complex_notype_declarator1): A notype_declarator that is not also
6016         an expr_or_declarator.
6017         (complex_direct_notype_declarator): A direct_notype_declarator that
6018         doesn't conflict with expr_or_declarator.  Use
6019         notype_unqualified_id.  Remove id_scope see_typename TYPENAME rule.
6020         (functional_cast): New nonterminal, for the three functional cast
6021         rules.  So that they can be moved after
6022         complex_direct_notype_declarator.
6023         (see_typename): Don't accept type_quals any more.
6024
6025         * decl2.c (reparse_decl_as_expr): New function to deal with parse
6026         nodes for code like `int (*a)++;'.      
6027         (reparse_decl_as_expr1): Recursive subroutine of the above.
6028         (finish_decl_parsing): New function to deal with parse nodes for
6029         code like `int (*a);'.  See the difference?
6030
6031 Thu Mar 17 12:16:10 1994  Mike Stump  <mrs@cygnus.com>
6032
6033         These changes break binary compatibility in code with classes
6034         that use virtual bases.
6035
6036         * search.c (dfs_get_vbase_types): Simplify and correct to make
6037         sure virtual bases are initialized in dfs ordering.
6038         * search.c (get_vbase_types): Simplify and make readable.
6039
6040 Thu Mar 17 12:01:10 1994  Jason Merrill  (jason@deneb.cygnus.com)
6041
6042         * parse.y: s/ typename / type_id /g
6043
6044 Wed Mar 16 17:42:52 1994  Kung Hsu  (kung@mexican.cygnus.com)
6045
6046         * parse.y (typespec): add SCOPE TYPENAME for global scoped 
6047         type. e.g. ::B x.
6048
6049         * decl.c (complete_array_type): fix a bug that in -pendantic
6050         mode even there's no initializer, it will continue to build
6051         default index.
6052
6053 Wed Mar 16 17:43:07 1994  Jason Merrill  (jason@deneb.cygnus.com)
6054
6055         * parse.y (direct_notype_declarator): Add PTYPENAME rule, remove
6056         all of the scoped PTYPENAME rules.
6057
6058 Wed Mar 16 16:39:02 1994  Mike Stump  <mrs@cygnus.com>
6059
6060         * init.c (build_offset_ref): The value of A::typedef_name is
6061         always the TYPE_DECL, and never an error.
6062
6063 Tue Mar 15 20:02:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
6064
6065         * search.c (get_base_distance_recursive): Two binfos can only
6066         represent the same object if they are both via_virtual.
6067
6068         * class.c (finish_base_struct): Check vbases for ambiguity, too.
6069
6070         * search.c (get_vbase_types): Accept binfo argument, too.
6071
6072 Tue Mar 15 19:22:05 1994  Kung Hsu  (kung@mexican.cygnus.com)
6073
6074         * decl.c (complete_array_type): complete TYPE_DOMAIN of the 
6075         initializer also, because back-end requires it.
6076
6077 Tue Mar 15 15:33:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
6078
6079         * error.c (dump_expr): Support member functions (which show up as
6080         OFFSET_REFs).
6081
6082 Mon Mar 14 16:24:36 1994  Mike Stump  <mrs@cygnus.com>
6083
6084         * init.c (build_new): Set the return type of multidimensional
6085         news correctly.
6086
6087 Fri Mar 11 15:35:39 1994  Kung Hsu  (kung@mexican.cygnus.com)
6088
6089         * call.c (build_method_call): if basetype not equal to type
6090         of the instance, use the type of the instance in building
6091         destructor.
6092
6093 Thu Mar 10 17:07:10 1994  Kung Hsu  (kung@mexican.cygnus.com)
6094
6095         * parse.y (direct_notype_declarator): add push_nested_type for
6096         'template_type SCOPED_NAME' rule.
6097
6098 Tue Mar  8 00:19:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
6099
6100         * parse.y (parm): Add typed_declspec1 {absdcl, epsilon} rules.
6101
6102 Sat Mar  5 04:47:48 1994  Jason Merrill  (jason@deneb.cygnus.com)
6103
6104         * parse.y (regcast_or_absdcl): New nonterminal to implement late
6105         reduction of constructs like `int ((int)(int)(int))'.
6106         (cast_expr): Use it.
6107         (sub_cast_expr): Everything that can come after a cast.
6108         (typed_declspecs1): typed_declspecs that are not typed_typespecs.
6109         (direct_after_type_declarator): Lose PAREN_STAR_PAREN rule.
6110         (direct_abstract_declarator): Replace '(' parmlist ')' rule with
6111         '(' complex_parmlist ')' and regcast_or_absdcl.
6112         (parmlist): Split
6113         (complex_parmlist): Parmlists that are not also typenames.
6114         (parms_comma): Enabler.
6115         (named_parm): A parm that is not also a typename.  Use declarator
6116         rather than dont_see_typename abs_or_notype_decl.  Expand
6117         typed_declspecs inline.
6118         (abs_or_notype_decl): Lose.
6119         (dont_see_typename): Comment out.
6120         (bad_parm): Break out abs_or_notype_decl into two rules.
6121
6122 Fri Mar  4 18:22:39 1994  Jason Merrill  (jason@deneb.cygnus.com)
6123
6124         * decl2.c (reparse_decl_as_casts): New function to change parse
6125         nodes for `(int)(int)(int)' from "function taking int and returning
6126         function taking int and returning function taking int" to "... cast
6127         to int, cast to int, cast to int".
6128
6129         * decl2.c (reparse_decl_as_expr): Recursive function to change
6130         parse nodes for `A()()' from "function returning function returning
6131         A" to "A().operator()".
6132
6133         * parse.y (primary): Replace `typespec LEFT_RIGHT' rule with
6134         `typespec fcast_or_absdcl' rule.
6135         (fcast_or_absdcl): New nonterminal to implement late reduction of
6136         constructs like `A()()()()'.
6137         (typename): Replace `typespec absdcl1' rule with
6138         `typespec direct_abstract_declarator' rule.
6139         (direct_abstract_declarator): Replace `LEFT_RIGHT type_quals' rule
6140         with `fcast_or_absdcl type_quals' rule.
6141
6142 Fri Mar  4 16:18:03 1994  Mike Stump  <mrs@cygnus.com>
6143
6144         * tree.c (lvalue_p): Improve OFFSET_REF handling, so that it
6145         matches Section 5.5.
6146
6147 Fri Mar  4 14:01:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
6148
6149         * error.c (dump_type_prefix): Don't print basetype twice for
6150         pmfs.
6151
6152 Fri Mar  4 13:24:33 1994  Mike Stump  <mrs@cygnus.com>
6153
6154         * typeck.c (convert_arguments): Handle setHandler(A::handlerFn)
6155         so that it is like setHandler(&A::handlerFn).  Cures an `invalid
6156         lvalue in unary `&''.
6157
6158 Fri Mar  4 11:15:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
6159
6160         * gxxint.texi (Copying Objects): New section discussing default
6161         op= problems with virtual inheritance.
6162
6163         * decl2.c (grokoptypename): Just does grokdeclarator and
6164         build_typename_overload, since the parser can't call grokdeclarator
6165         directly.
6166
6167         * method.c (build_typename_overload): Set IDENTIFIER_GLOBAL_VALUE
6168         and TREE_TYPE on generated identifiers.
6169
6170         * decl.c (grokdeclarator): Don't deal with TYPE_EXPRs anymore.
6171
6172         * parse.y (parm): Convert `const char *' to `__opPCc' here.
6173
6174         * error.c (dump_decl): Say sorry rather than my_friendly_aborting
6175         if we can't figure out what to do.
6176         (dump_type*): Ditto.
6177
6178         * typeck2.c (build_m_component_ref): 'component' is an expr, not
6179         a decl.  Also move the IS_AGGR_TYPE check after the stripping of
6180         REFERENCE_TYPE.
6181
6182 Fri Mar  4 04:46:05 1994  Mike Stump  <mrs@cygnus.com>
6183
6184         * call.c (build_method_call): Handle b->setHandler(A::handlerFn)
6185         so that it is like b->setHandler(&A::handlerFn).  Cures an `invalid
6186         lvalue in unary `&''.
6187
6188 Thu Mar  3 12:38:15 1994  Jason Merrill  (jason@deneb.cygnus.com)
6189
6190         * parse.y: Add precedence specification for START_DECLARATOR.
6191         (type_quals): Move before primary.
6192         (typename): Move before typed_declspecs, add 'typespec absdcl1' rule.
6193
6194         * decl2.c (grokoptypename): Lose.
6195
6196         * decl.c (grokdeclarator): Parse TYPE_EXPRs in the initial scan,
6197         rather than waiting until later.
6198
6199 Wed Mar  2 14:12:23 1994  Jason Merrill  (jason@deneb.cygnus.com)
6200
6201         * parse.y (unary_expr): Use 'typename' in 'new' rules, rather
6202         than expanding it inline.
6203         (typename): Expand empty option of (former) absdcl inline.
6204         (abs_or_notype_decl): Ditto.
6205         (absdcl): Lose empty rule.
6206         (conversion_declarator): New nonterminal for 'typename' of 'operator
6207         typename'.
6208         (operator_name): Use it instead of absdcl.
6209
6210         * parse.y: Add precedence declarations for SCOPED_TYPENAME,
6211         TYPEOF, and SIGOF.
6212         (typed_declspecs): Accept typed_typespecs, rather than typespec
6213         directly.  Add rules with reserved_typespecquals.
6214         (reserved_declspecs): Don't accept typespecqual_reserved at the
6215         beginning of the list.  The typed_declspecs rule will deal with this
6216         omission.
6217         (declmods): Accept nonempty_type_quals, rather than TYPE_QUAL
6218         directly.
6219
6220         * parse.y (direct_notype_declarator,
6221         direct_after_type_declarator, direct_abstract_declarator): Split up
6222         the declarator1 nonterminals to match the draft standard and avoid
6223         ambiguities.
6224         (new_type_id, new_declarator, direct_new_declarator,
6225         new_member_declarator): New nonterminals to implement the subset of
6226         'typename' allowed in new expressions.
6227         (unary_expr): Use new_type_id instead of typename.
6228         (after_type_declarator1, absdcl1): Fix semantics of member pointers.
6229         (abs_member_declarator, after_type_member_declarator): Lose.
6230
6231         * parse.y (absdcl1): Don't require parens around
6232         abs_member_declarator.
6233         (abs_member_declarator): Lose see_typename from rules.
6234         (after_type_member_declarator): Ditto.
6235
6236         * tree.c (get_identifier_list): New function, containing code
6237         previously duplicated in get_decl_list and list_hash_lookup_or_cons.
6238         (get_decl_list): Use it.
6239         (list_hash_lookup_or_cons): Ditto.
6240
6241         * parse.y (typed_declspecs, declmods): It's not necessary to hash
6242         the declspecs on class_obstack, so don't.  This way typed_typespecs
6243         can reduce to typed_declspecs.
6244
6245 Wed Mar  2 14:29:18 1994  Jason Merrill (jason@cygnus.com)
6246
6247         * cvt.c (build_up_reference): If we aren't checking visibility,
6248         also allow base->derived conversions.
6249
6250 Mon Feb 28 15:14:29 1994  Per Bothner  (bothner@kalessin.cygnus.com)
6251
6252         * typeck.c (build_c_cast): Remove bogus hack when converting
6253         to a reference type.
6254
6255         * cp-tree.h (lang_decl::vbase_init_list, DECL_VBASE_INIT_LIST):
6256         Removed, not used.
6257         (lang_stype::methods, lang_decl::next_method): New fields.
6258         (CLASSTYPE_METHODS, DECL_NEXT_METHOD):  New macros.
6259         * decl.c (duplicate_decls):  Preserve DECL_NEXT_METHOD.
6260
6261         * cp-tree.h, decl2.c (flag_vtable_hack):  New flag.
6262         * decl2.c (finish_vtable_vardecl):  If flag_vtable_hack,
6263         and  !CLASSTYPE_INTERFACE_KNOWN, try to use the presence of
6264         a non-inline virtual function to control emitting of vtables.
6265         * class.c (finish_struct):  Build CLASSTYPE_METHODS list.
6266         * search.c (build_vbase_vtables_init):  Don't assemble_external
6267         (yet) if flag_vtable_hack.
6268         * class.c (build_vfn_ref):  Ditto.
6269
6270 Mon Feb 28 14:54:13 1994  Jason Merrill  (jason@deneb.cygnus.com)
6271
6272         * parse.y (component_decl): Don't include "typed_declspecs
6273         declarator ';'" speedup, since it breaks enums.
6274
6275 Fri Feb 25 15:43:44 1994  Per Bothner  (bothner@kalessin.cygnus.com)
6276
6277         * class.c (finish_struct):  Minor optimization for building
6278         fn_fields list.
6279
6280 Fri Feb 25 15:23:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
6281
6282         * decl.c (start_function): Fix detection of function overloading.
6283
6284 Thu Feb 24 22:26:19 1994  Mike Stump  <mrs@cygnus.com>
6285
6286         * lex.c (check_newline): #pragma interface can take a string
6287         argument, just like #pragma implementation.  #pragma implementation
6288         checks for garbage on the line, line #pragma interface does.  Main
6289         input files do not auto implement like named files, #pragma
6290         implementation must be used explicitly.
6291
6292 Thu Feb 24 17:09:01 1994  Jason Merrill  (jason@deneb.cygnus.com)
6293
6294         * parse.y (components): Handle list of one again.
6295         (notype_components): Ditto.
6296         (after_type_declarator1): Take maybe_raises out again.
6297
6298         * gxxint.texi (Parser): Document additional r/r conflict.
6299
6300 Wed Feb 23 14:42:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
6301
6302         * gxxint.texi (Parser): Add node.
6303
6304         * Makefile.in (stamp-parse): Update expected conflict count.
6305
6306         * parse.y (various): Replace "declmods declarator" with "declmods
6307         notype_declarator".  The comment saying that "declmods declarator ';'"
6308         corresponds to "int i;" was wrong; it corresponds to "const i;".
6309         (component_decl): Add "typed_declspecs declarator ';'" rule; this
6310         *does* correspond to "int i;".  Change "declmods components" to
6311         "declmods notype_components".
6312         (components): Don't deal with a list of one anymore.
6313         (notype_components): New nonterminal, corresponds to notype_declarator.
6314         ({after_,no}type_component_decl{,0}): More new nonterminals.
6315         ({after_,no}type_declarator): Fold in START_DECLARATOR token.
6316         Eliminates four reduce/reduce conflicts.
6317
6318         (expr): Depend on nontrivial_exprlist instead of nonnull_exprlist.
6319         (nontrivial_exprlist): New nonterminal: A list of at least two
6320         expr_no_commas's.
6321         (nonnull_exprlist): Depend on nontrival_exprlist.
6322         Eliminates four reduce/reduce conflicts.
6323
6324         (named_class_head): Move intermediate code block into separate
6325         nonterminal so that we can stick %prec EMPTY on it.
6326
6327         Add more %prec EMPTY's to eliminate remaining shift/reduce
6328         conflicts.
6329
6330         (after_type_declarator): Add maybe_raises to fndecl rules.
6331         (after_type_declarator_no_typename): Remove.
6332         For correctness.
6333
6334         Document remaining reduce/reduce conflicts.
6335
6336 Tue Feb 22 12:10:32 1994  Jason Merrill  (jason@deneb.cygnus.com)
6337
6338         * search.c (get_base_distance): Only bash BINFO_INHERITANCE_CHAIN
6339         (TYPE_BINFO (type)) if we care about the path.
6340
6341         * tree.c (lvalue_p): A COND_EXPR is an lvalue if both of the
6342         options are.
6343
6344 Mon Feb 21 19:59:40 1994  Mike Stump  <mrs@cygnus.com>
6345
6346         * Makefile.in (mostlyclean): lex.c is a source file, don't
6347         remove.
6348
6349 Sat Feb 19 01:27:14 1994  Jason Merrill  (jason@deneb.cygnus.com)
6350
6351         * parse.y: Eliminate 20 shift/reduce conflicts.
6352
6353 Fri Feb 18 11:49:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
6354
6355         * pt.c (type_unification): Add subr argument; if set, it means
6356         that we are calling ourselves recursively, so a partial match is OK.
6357         (unify): Support pointers to methods and functions.
6358         (tsubst): Support method pointers.
6359         * decl.c (build_ptrmemfunc_type): No longer static, so that
6360         tsubst can get at it.
6361
6362         * init.c (is_aggr_typedef): Pretend template type parms are
6363         aggregates.
6364         * decl2.c (build_push_scope): If cname refers to a template type
6365         parm, just grin and nod.        
6366
6367         * call.c (build_overload_call_real): Pass subr argument to
6368         type_unification.
6369         * pt.c (do_function_instantiation): Ditto.
6370         * class.c (instantiate_type): Ditto.
6371
6372         * search.c (get_base_distance): If BINFO is a binfo, use it and
6373         don't mess with its BINFO_INHERITANCE_CHAIN.
6374
6375         * cvt.c (convert_to_reference): Fix temporary generation.
6376         If ambiguous, return error_mark_node.
6377
6378         * init.c (build_new): Put back some necessary code.
6379
6380 Thu Feb 17 15:39:47 1994  Jason Merrill  (jason@deneb.cygnus.com)
6381
6382         * init.c (build_new): Deal with array types properly.
6383
6384         * search.c (get_binfo): Become a shell for get_base_distance.
6385         (get_binfo_recursive): Lose.
6386         (get_base_distance_recursive): Find the path to the via_virtual base
6387         that provides the most access.
6388         (get_base_distance): Ditto.
6389
6390         * parse.y (explicit_instantiation): Syntax is 'template class
6391         A<int>', not 'template A<int>'.
6392
6393         * typeck.c (convert_for_initialization): Remove bogus warning.
6394
6395         * parse.y (datadef): Revert patch of Oct 27.
6396
6397 Thu Feb 17 15:12:29 1994  Per Bothner  (bothner@kalessin.cygnus.com)
6398
6399         * class.c (build_vfn_ref):  Cast delta field to ptrdiff_type_node,
6400         rather than integer_type_node.  Does wonders for the Alpha.
6401
6402 Thu Feb 17 13:36:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
6403
6404         * decl.c (build_ptrmemfunc_type): Make sure that the pmf type
6405         goes onto the same obstack as its target type.
6406
6407 Wed Feb 16 00:34:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
6408
6409         * cvt.c (convert_to_reference): If converting via constructor
6410         on local level, go back to build_cplus_new approach.
6411
6412         * tree.c (build_cplus_new): If with_cleanup_p, set cleanup slot
6413         to error_mark_node to prevent expand_expr from building a cleanup
6414         for this variable.
6415
6416         * lex.c (default_assign_ref_body): Return *this from the memcpy
6417         version, too.
6418
6419         * decl.c (grok_reference_init): Just return if called with
6420         error_mark_node, don't worry about initializing non-const reference
6421         with temporary.
6422
6423         * cvt.c (convert_to_reference): Do the right thing for
6424         non-aggregate reference conversions, pedwarn when generating a
6425         non-const reference to a temporary.
6426
6427         * class.c (finish_struct): TYPE_HAS_COMPLEX_{INIT,ASSIGN}_REF and
6428         TYPE_NEEDS_CONSTRUCTING all depend on TYPE_USES_VIRTUAL_BASECLASSES
6429         again.
6430
6431 Tue Feb 15 19:47:19 1994  Jason Merrill  (jason@deneb.cygnus.com)
6432
6433         * decl.c (grok_reference_init): Pawn off a lot of the work on
6434         convert_to_reference.  Generally do the right thing.
6435
6436         * cvt.c (convert_to_reference): Conform to the initial comment;
6437         i.e. don't create temps if decl != error_mark_node.  Handle
6438         cleanups better for temps that do get created.  Don't pretend
6439         that we can use an 'A' to initialize a 'const double &' just by
6440         tacking on a NOP_EXPR.  Support LOOKUP_SPECULATIVELY.
6441
6442         * call.c (build_method_call): Set TREE_HAS_CONSTRUCTOR on
6443         constructor calls.      
6444
6445 Mon Feb 14 14:50:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
6446
6447         * decl.c (grok_reference_init): Make a temporary for initializing
6448         const reference from constant expression.
6449
6450 Mon Feb 14 11:31:31 1994  Per Bothner  (bothner@kalessin.cygnus.com)
6451
6452         * cp-tree.h, decl.c (set_identifier_local_value):  Deleted function.
6453         * decl.c (pushdecl):  Define decl in correct binding_level
6454         (which isn't always the inner_binding_level).
6455
6456         * cvt.c (build_up_reference):  Don't ever call expand_aggr_init.
6457         It's ugly, and I don't think it's the right thing to do.
6458
6459         * cp-tree.h, class.c, decl.c, decl2.c, sp/search.c: 
6460         Remove NEW_CLASS_SCOPING, assuming it is always 1.
6461         * decl.c (pop_decl_level):  Removed; manually inlined.
6462
6463 Sun Feb 13 19:04:56 1994  Jason Merrill  (jason@deneb.cygnus.com)
6464
6465         * class.h (candidate): Add basetypes field.
6466
6467         * call.c (build_method_call): Do access checking after choosing a
6468         function, not before.
6469
6470         * Makefile.in (cvt.o, call.o, method.o): Depend on class.h.
6471         (mostlyclean): Remove ../cc1plus.
6472
6473 Fri Feb 11 11:52:26 1994  Jason Merrill  (jason@deneb.cygnus.com)
6474
6475         * class.c (finish_struct): Don't allow adjusting access to a field
6476         of a base class if a local field has the same name.
6477
6478         * error.c (dump_type_prefix): Output basetype for METHOD_TYPEs.
6479
6480 hu Jan 13 17:55:51 EST 1994 Gnanasekaran Swaminathan (gs4t@virginia.edu)
6481
6482             * cp-tree.h (DESTRUCTOR_NAME_P): do not confuse AUTO_TEMP names
6483             with destructor names when either NO_DOLLAR_IN_LABEL or
6484             NO_DOT_IN_LABEL are not defined.
6485
6486             Now `template <class T, T f(T&), const T*> class A {...}' works.
6487
6488             * pt.c (grok_template_type): substitute template parm types
6489             with actual types in complex type as well.
6490             (coerce_template_parms): update the grok_template_type ()
6491             function call.
6492
6493         * pt.c (tsubst): Traverse method list using DECL_CHAIN.
6494
6495         * decl.c (grok_op_properties): Allow operator++/-- to have
6496         default arguments.
6497
6498         * typeck2.c (store_init_value): Don't abort when called to
6499         initialize a type that needs constructing with a CONSTRUCTOR.
6500
6501         * init.c (expand_aggr_init_1, CONSTRUCTOR case): If
6502         store_init_value fails, build and expand an INIT_EXPR.  If
6503         store_init_value succeeds, call expand_decl_init.
6504
6505 Fri Feb 11 02:49:23 1994  Mike Stump  <mrs@cygnus.com>
6506
6507         * class.c (build_vbase_path): Use complete_type_p instead of
6508         resolves_to_fixed_type_p to determine if the virtual bases are in
6509         their right place for the type of expr.  Cures problem of thinking a
6510         virtual base class is one place, when it is in fact someplace else.
6511
6512 Fri Feb 11 00:26:46 1994  Mike Stump  <mrs@cygnus.com>
6513
6514         * init.c (resolve_offset_ref): Make sure we first convert to
6515         intermediate type, if given, when dealing with members off `this'.
6516         Solves an incorrrect `type `foo' is not a base type for type
6517         `multiple'' when it is infact, a base type.
6518
6519 Thu Feb 10 21:49:35 1994  Mike Stump  <mrs@cygnus.com>
6520
6521         * class.c (modify_other_vtable_entries): Use get_binfo, instead
6522         of binfo_value.  Solves problem with compiler giving a `base class
6523         `B' ambiguous in binfo_value (compiler error)' on complex MI
6524         herarchies, when a virtual function is first defied in a virtual
6525         base class.
6526
6527 Thu Feb 10 17:19:32 1994  Mike Stump  <mrs@cygnus.com>
6528
6529         * class.c (build_vbase_path): Don't complain about ambiguous
6530         intermediate conversion when converting down to a virtual base
6531         class, even if they might seem to be ambiguous.
6532
6533 Thu Feb 10 12:18:26 1994  Jason Merrill  (jason@deneb.cygnus.com)
6534
6535         * typeck2.c (build_functional_cast): #if 0 out constructor
6536         inheritance code, improve error messages.
6537
6538         * class.c (finish_base_struct): Complain about base with only
6539         non-default constructors in derived class with no constructors.
6540
6541         * decl.c (grokdeclarator): Fix detection of virtual new/delete.
6542
6543 Wed Feb  9 22:02:32 1994  Mike Stump  <mrs@cygnus.com>
6544
6545         * search.c (build_mi_virtuals, add_mi_virtuals,
6546         report_ambiguous_mi_virtuals): Removed unneeded code.
6547         * class.c (finish_struct_bits): Ditto.
6548
6549 Wed Feb  9 11:27:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
6550
6551         * pt.c (end_template_instantiation): Push decl before
6552         pop_from_top_level.
6553
6554         * typeck2.c (build_m_component_ref): Make sure datum is of
6555         aggregate type.
6556
6557         * init.c (get_type_value): New function, returns
6558         IDENTIFIER_TYPE_VALUE or IDENTIFIER_CLASS_TYPE_VALUE or NULL_TREE.
6559
6560         * call.c (build_method_call): Don't die on call to destructor for
6561         non-type.
6562
6563         * decl.c (grokdeclarator): Complain about virtual op new and op
6564         delete, make static virtuals unvirtual instead of unstatic.
6565
6566         * typeck.c (build_c_cast): Also call default_conversion on
6567         methods.
6568
6569         * decl.c (grokdeclarator): Don't complain about anonymous
6570         bitfields.
6571
6572         * parse.y (simple_stmt, for loops): Move the continue point after
6573         the cleanups.
6574
6575         * class.c (finish_struct): Fix setting of
6576         TYPE_HAS_COMPLEX_INIT_REF.
6577
6578 Tue Feb  8 13:21:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
6579
6580         * init.c (build_new): Deal with `new double (1)'.
6581
6582         * class.c (finish_struct): TYPE_HAS_COMPLEX_*_REF are supersets of
6583         TYPE_HAS_REAL_*_REF, but TYPE_HAS_COMPLEX_INIT_REF is independent of
6584         TYPE_NEEDS_CONSTRUCTING.
6585
6586         * decl.c (duplicate_decls): Propagate access decls.
6587
6588         * typeck2.c (process_init_constructor): Accept empty_init_node
6589         for initializing unions.
6590
6591         * class.c, lex.c, cp-tree.h: Use
6592         TYPE_HAS_COMPLEX_ASSIGN_REF where TYPE_HAS_REAL_ASSIGN_REF was used
6593         before, use TYPE_HAS_COMPLEX_INIT_REF for TYPE_NEEDS_CONSTRUCTING in
6594         some places.
6595
6596         * decl.c (finish_decl): Don't complain about uninitialized const
6597         if it was initialized before.
6598
6599 Mon Feb  7 18:12:34 1994  Jason Merrill  (jason@deneb.cygnus.com)
6600
6601         * lex.c (default_assign_ref_body): Don't deal with vbases for
6602         now.
6603
6604         * decl.c (finish_decl): Fix reversed logic for objects and other
6605         things that need to be constructed but have no initializer.
6606
6607         * class.c (finish_struct): Don't set TYPE_HAS_* flags that are
6608         set by grok_op_properties or finish_decl.
6609
6610         * decl.c: Don't warn about extern redeclared inline unless
6611         -Wextern-inline is given.
6612         * decl2.c (lang_decode_option): Ditto.
6613         * cp-tree.h: Ditto.
6614
6615 Mon Feb  7 17:29:24 1994  Per Bothner  (bothner@kalessin.cygnus.com)
6616
6617         * decl.c (pushdecl_with_scope): Fix thinko.  Add forward
6618         declaration.
6619
6620         * decl.c (pushdecl_with_scope):  New function.
6621         * decl.c (pushdecl_top_level):  Use new function.
6622         * decl.c (pushtag):  Initialize newdecl.
6623         * decl.c (pushtag):  Push new type decl into correct scope.
6624
6625 Mon Feb  7 14:42:03 1994  Jason Merrill  (jason@deneb.cygnus.com)
6626
6627         * call.c, cvt.c, init.c, search.c, cp-tree.h:
6628         Eradicate LOOKUP_PROTECTED_OK.
6629
6630 Mon Feb  7 13:57:19 1994  Per Bothner  (bothner@kalessin.cygnus.com)
6631
6632         * decl.c (pushtag, xref_tag), cp-tree.h:  Add extra parameter
6633          'globalize' to signify implicit declarations.
6634         * decl.c (globalize_nested_type, maybe_globalize_type):  Removed.
6635         * decl.c (set_identifier_type_value_with_scope):  New function.
6636         * decl.c (set_identifier_local_value):  Simplify.
6637         * spew.c (yylex, do_addr):  Modify to return a _DEFN if a
6638         forward declaration (followed by ';' and not preceded by 'friend').
6639         * class.c, decl.c, except.c, init.c, parse.y,
6640         pt.c, search.c: Add new argument to calls to xref_tag and
6641         pushtag.
6642
6643 Mon Feb  7 00:22:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
6644
6645         * cp-tree.h (ACCESSIBLY_UNIQUELY_DERIVED_P): New macro, means what
6646         ACCESSIBLY_DERIVED_FROM_P meant before.
6647         (ACCESSIBLY_DERIVED_FROM_P): Now disregards ambiguity.
6648
6649         * cvt.c (build_up_reference): Call get_binfo with PROTECT == 1.
6650
6651         * search.c (get_base_distance_recursive): Members and friends of
6652         a class X can implicitly convert an X* to a pointer to a private or
6653         protected immediate base class of X.
6654         (get_binfo_recursive): Ditto.
6655         (get_base_distance): Ignore ambiguity if PROTECT < 0.
6656         (get_binfo): Lose multiple values of PROTECT.
6657         (compute_access): Protected is OK if the start of the
6658         search is an accessible base class of current_class_type.
6659
6660         * method.c (build_opfncall): Do check access on operator new here.
6661
6662         * decl.c (finish_function): Don't check access on operator new
6663         here.
6664
6665 Sun Feb  6 14:06:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
6666
6667         * decl.c (xref_tag): The base of a derived struct is NOT always
6668         public.  Duh.
6669
6670         * pt.c (do_explicit_instantiation): New function, called from
6671         parser to do explicit function instantiation.
6672         (type_unification): Allow the args list to be terminated with
6673         void_list_node.
6674         (do_pending_expansions): Look at i->interface for non-member
6675         templates.
6676
6677         * parse.y (datadef): Move explicit_instantiation here.
6678         (structsp): From here.
6679         (datadef): Complain about `int;'.
6680
6681 Sun Feb  6 12:33:18 1994  Per Bothner  (bothner@kalessin.cygnus.com)
6682
6683         * pt.c (end_template_instantiation), cp-tree.h:  Remove unused
6684         second parameter, and simplify first from a TREE_LIST where
6685         we only care about its TREE_VALUE to just the value (an IDENTIFIER).
6686         * pt.c (instantiate_member_templates):  Simplify argument list
6687         from a TREE_LIST to just an IDENTIFIER.
6688         * lex.c (yyprint):  PRE_PARSED_CLASS_DECL is now just an IDENTIFIER.
6689         * parse.y (template_instantiate_once):  Simplify accordingly.
6690         * decl.c (inner_binding_level): New.  Use various places to
6691         simplify.
6692
6693 Sun Feb  6 02:49:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
6694
6695         * typeck2.c (build_functional_cast): int() -> int(0).
6696
6697 Sat Feb  5 00:53:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
6698
6699         * class.c (finish_struct): Don't do a bitwise copy for op= if the
6700         class has a virtual function table.
6701
6702         * typeck.c (convert_for_initialization): Restore warnings about
6703         not using defined op=.  Should really be my_friendly_aborts, I
6704         s'pose.
6705
6706 Fri Feb  4 14:21:00 1994  Jason Merrill  (jason@deneb.cygnus.com)
6707
6708         * class.c (finish_struct): Tidy up conditions for doing bitwise
6709         copies of objects.
6710
6711         * decl.c (build_default_constructor): #if 0 out.
6712
6713         * *: Eradicate TYPE_GETS_{ASSIGNMENT,ASSIGN_REF,CONST_ASSIGN_REF,
6714         CONST_INIT_REF}, TYPE_HAS_REAL_CONSTRUCTOR.
6715
6716         * decl.c (grokdeclarator): Don't return void_type_node for
6717         friends being defined here.
6718
6719         * init.c (perform_member_init): Only do the init if it's useful.
6720
6721         * lex.c (default_copy_constructor_body): If we don't need to do
6722         memberwise init, just call __builtin_memcpy.
6723         (default_assign_ref_body): Ditto.
6724
6725         * decl.c (grokdeclarator): If friendp && virtualp, friendp = 0.
6726
6727 Fri Feb  4 13:02:56 1994  Mike Stump  <mrs@cygnus.com>
6728
6729         * lex.c (reinit_parse_for_method, cons_up_default_function):
6730         Don't give warn_if_unknown_interface warning when it came from a
6731         system header file.
6732         * pt.c (end_template_decl, instantiate_template): Ditto.
6733         * decl.c (start_decl): Ditto.
6734
6735 Fri Feb  4 00:41:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
6736
6737         * decl.c (grokdeclarator): Don't try to set TYPE_WAS_ANONYMOUS on
6738         enums.
6739
6740         * decl2.c (constructor_name_full): Use IS_AGGR_TYPE_CODE instead of
6741         IS_AGGR_TYPE, since we don't know it's a type.
6742
6743 Thu Feb  3 11:36:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
6744
6745         * decl.c (grokdeclarator): Don't complain about anonymous unions.
6746
6747         * cp-tree.h (TYPE_WAS_ANONYMOUS): This struct was originally
6748         anonymous, but had a name given to it by a typedef.
6749
6750         * decl.c (grokdeclarator): When renaming an anonymous struct, set
6751         TYPE_WAS_ANONYMOUS.
6752
6753         * decl2.c (constructor_name_full): Use TYPE_WAS_ANONYMOUS.
6754
6755         * cp-tree.h (DECL_UNDEFINED_FRIENDS): #if 0 out.
6756
6757         * init.c (xref_friend): Don't set up DECL_UNDEFINED_FRIENDS.
6758         (embrace_waiting_friends): Don't use DECL_UNDEFINED_FRIENDS.
6759         
6760         * decl.c (grokdeclarator): Set TYPE_NESTED_NAME properly on nested
6761         anonymous structs that get typedef'd.
6762
6763         * decl.c (grokdeclarator): Always return void_type_node for
6764         friends.
6765
6766         * error.c (dump_function_decl): Don't use DECL_CLASS_CONTEXT for
6767         friends.
6768         (dump_function_decl): Don't print out default args for
6769         a function used in an expression.
6770
6771         * decl.c (grokdeclarator): Give error on abstract declarator used
6772         in an invalid context (i.e. `void (*)();').
6773
6774         * error.c (cp_line_of): Support _TYPE nodes.
6775         (cp_file_of): Ditto.
6776
6777         * cvt.c (build_up_reference): Don't abort if passed a SAVE_EXPR;
6778         it can happen for the RHS of an assignment stmt where the LHS is
6779         a COND_EXPR.
6780
6781         * init.c (expand_aggr_init_1): Deal with bracketed initializer
6782         lists properly.
6783
6784         * class.c (finish_struct): Deal with enumerators and typedefs
6785         again.
6786
6787 Wed Feb  2 11:30:22 1994  Jason Merrill  (jason@deneb.cygnus.com)
6788
6789         * class.c (finish_struct): Tidy up loop over fields.
6790
6791         * errfn.c (cp_thing): Don't advance twice after a format.
6792
6793         * class.c (finish_struct): Complain about needing a constructor
6794         if a member has only non-default constructors, and don't try to
6795         generate a default constructor.
6796
6797         * decl.c (finish_decl): Also do the constructor thing if
6798         TYPE_NEEDS_CONSTRUCTING is set (for arrays).
6799
6800         * search.c (unuse_fields): New function: mark all fields in this
6801         type unused.
6802         (dfs_unuse_fields): Helper function.
6803
6804         * class.c (pushclass): If the new class is the same as the old
6805         class, still unuse the fields.
6806         (unuse_fields): Move to search.c.
6807
6808         * decl.c (grok_op_properties): Add friendp argument.
6809         (grokfndecl): Pass it.
6810         (start_method): Ditto.
6811
6812         * decl2.c (delete_sanity): Add use_global_delete parameter to catch
6813         ::delete calls.
6814
6815         * parse.y (unary_expr): Pass new parameter to delete_sanity.
6816
6817         * lex.c (default_copy_constructor_body): Don't choke if the union
6818         has no fields.
6819         (default_assign_ref_body): Ditto.
6820
6821         * call.c (compute_conversion_costs_ansi): Do the right thing for
6822         ellipsis matches.
6823
6824         * decl.c (push_to_top_level): Optimize.
6825
6826         * decl.c (start_function): Look for the lexical scope of a friend
6827         in DECL_CLASS_CONTEXT.
6828
6829         * init.c (do_friend): Set DECL_CLASS_CONTEXT on global friends.
6830
6831 Tue Feb  1 15:59:24 1994  Jason Merrill  (jason@deneb.cygnus.com)
6832
6833         * cp-tree.h (TREE_GETS_PLACED_NEW): New macro.
6834
6835         * init.c (init_init_processing): Don't assign BIN/BID to the
6836         IDENTIFIER_GLOBAL_VALUEs of their respective operators.
6837         (build_new): Check TREE_GETS_PLACED_NEW.
6838
6839         * decl.c (grok_op_properties): Don't set TREE_GETS_NEW for a decl of
6840         op new with placement, set TREE_GETS_PLACED_NEW.
6841
6842         * cp-tree.h (ANON_UNION_P): New macro.  Applies to decls.
6843
6844         * class.c (finish_struct): Don't treat anonymous unions like
6845         other aggregate members.  Do synthesize methods for unions without
6846         a name, since they may or may not be "anonymous unions".
6847
6848         * decl2.c (grok_x_components): Wipe out memory of synthesized methods
6849         in anonymous unions.
6850
6851         * lex.c (default_copy_constructor_body): Support unions.
6852         (default_assign_ref_body): Ditto.
6853
6854 Mon Jan 31 12:07:30 1994  Jason Merrill  (jason@deneb.cygnus.com)
6855
6856         * cp-tree.h: Fix documentation of LOOKUP_GLOBAL, add prototypes.
6857
6858         * error.c (args_as_string): New function (%A), like type_as_string
6859         except NULL_TREE -> "..."
6860
6861         * call.c (build_overload_call_real): Fix for new overloading.
6862
6863         * decl.c (grok_op_properties): Set all of the TYPE_OVERLOADS_* flags
6864         here.
6865
6866         * parse.y (operator_name): Instead of here.
6867
6868         * typeck2.c (build_functional_cast): Treat a TREE_LIST as a list
6869         of functions.
6870
6871         * call.c (build_overload_call_real): Support LOOKUP_SPECULATIVELY.
6872
6873         * method.c (build_opfncall): Don't need to massage return value
6874         any more, call build_overload_call with all flags.
6875
6876         * typeck.c (build_x_binary_op): Put back speculative call to
6877         build_opfncall.
6878         (build_x_unary_op): Ditto.
6879         (build_x_conditional_expr): Ditto.
6880
6881 Mon Jan 31 10:00:30 1994  Mike Stump  <mrs@cygnus.com>
6882
6883         * cvt.c (build_type_conversion_1): Change call to pedwarn into
6884         warning, and conditionalize upon warn_cast_qual.
6885
6886 Fri Jan 28 11:48:15 1994  Jason Merrill  (jason@deneb.cygnus.com)
6887
6888         * search.c (lookup_field): If xbasetype is a binfo, copy it to
6889         avoid clobbering its inheritance info.
6890
6891         * call.c (build_method_call): Don't overwrite basetype_path with
6892         TYPE_BINFO (inst_ptr_basetype) if they have the same type.
6893
6894         * search.c (compute_access): Fix handling of protected inheritance
6895         and friendship with the enclosing class.
6896
6897         * typeck2.c (store_init_value): Allow passing of TREE_CHAIN for
6898         initialization of arbitrary variable.
6899
6900         * typeck2.c (build_functional_cast): Only try calling a method if
6901         one exists.
6902
6903         * decl.c (grokdeclarator): Move handling of constructor syntax
6904         initialization into first loop for generality.
6905         (parmlist_is_random): Lose.
6906
6907         * lex.c (cons_up_default_function): Set TREE_PARMLIST on arguments
6908         to default function.
6909
6910 Thu Jan 27 19:26:51 1994  Jason Merrill  (jason@deneb.cygnus.com)
6911
6912         * decl.c (grokparms): Abort if we get called with something we don't
6913         expect.
6914
6915 Thu Jan 27 17:37:25 1994  Mike Stump  <mrs@cygnus.com>
6916
6917         * call.c (build_overload_call_real): Change argument complain to
6918         flags to match style of rest of code.  Pass it down to
6919         build_function_call_real as necessary.
6920         * call.c (build_overload_call, build_overload_call_maybe): Change
6921         argument complain to flags to match style of rest of code.
6922         * cp-tree.h (build_function_call_real): Added fourth flags
6923         argument.
6924         * cvt.c (convert_to_reference): Only give warning messages, if
6925         LOOKUP_COMPLAIN is set.
6926         * typeck.c (build_x_function_call): Change simple complain
6927         argument to build_overload_call_maybe and build_overload_call, to
6928         LOOKUP_COMPLAIN to match style of rest of code.
6929         * typeck2.c (build_functional_cast): Ditto.
6930         * typeck.c (build_function_call_real): Add flags, so that we can
6931         not complain, if we don't want to complain.  Complain about
6932         arguments, if we are complaining, otherwise don't.
6933         * typeck.c (build_function_call, build_function_call_maybe):
6934         Stick in flags argument.
6935         * typeck.c (build_x_binary_op, build_x_unary_op,
6936         build_x_conditional_expr, build_x_compound_expr): Follow style of
6937         build_x_indirect_ref, as it is more correct and more common.
6938
6939 Thu Jan 27 14:36:20 1994  Jason Merrill  (jason@deneb.cygnus.com)
6940
6941         * call.c (build_method_call): Don't check for being called with
6942         a pointer.
6943
6944         * decl2.c (finish_file): Don't play with DECL_CLASS_CONTEXT for the
6945         static initializer function.
6946
6947         * init.c (build_member_call): Use convert_force here, too.
6948
6949         * search.c (compute_access): Only treat static members specially
6950         if they are referenced directly.
6951
6952 Wed Jan 26 18:28:14 1994  Jason Merrill  (jason@deneb.cygnus.com)
6953
6954         * gxxint.texi (Access Control): New node.
6955
6956         * search.c (current_scope): New function; returns whichever of
6957         current_class_type and current_function_decl is the most nested.
6958         (compute_access): Total overhaul to make it clearer and more
6959         correct.  Don't use the cache for now; in the only situation where
6960         it was used before, it gained nothing.  This frees up three of the
6961         DECL_LANG_FLAGs for possible other use!
6962
6963         * cp-tree.h: #if 0 out DECL_PUBLIC & friends.
6964
6965         * typeck.c (build_component_ref_1): Don't check DECL_PUBLIC.
6966
6967         * call.c (build_method_call): Use convert_force to cast `this' --
6968         rely on the access checking for the method itself.
6969
6970         * init.c (is_friend): Do the nesting thing, handle types.  I am
6971         my own friend.
6972         (is_friend_type): Become a shell for is_friend.
6973         (add_friend): Never stick in ctype.
6974         Why are the friendship functions in init.c, anyway?
6975
6976 Wed Jan 26 17:50:00 1994  Mike Stump  <mrs@cygnus.com>
6977
6978         * cvt.c (build_type_conversion_1): Don't conditionalize call to
6979         pedwarn upon pedantic.
6980
6981 Wed Jan 26 17:20:46 1994  Mike Stump  <mrs@cygnus.com>
6982
6983         * cvt.c (convert_to_reference): Add 8.4.3 checking so that one
6984         gets a warning if one tries to initialize a non-const & from a
6985         non-lvalue.
6986         * cvt.c (convert_to_reference): Use %P format for argument
6987         numbers in warnings.
6988
6989 Wed Jan 26 14:35:06 1994  Mike Stump  <mrs@cygnus.com>
6990
6991         * init.c (build_delete): Follow style in call.c to construct the
6992         virtual call to the desctructor, as that code is right.  Fixes a
6993         problem of the compiler saying a pointer conversion is ambiguous.
6994
6995 Wed Jan 26 11:28:14 1994  Jason Merrill  (jason@deneb.cygnus.com)
6996
6997         * cp-tree.h (VTABLE_NAME_P): Change other occurrence of
6998         VTABLE_NAME_FORMAT to VTABLE_NAME.
6999
7000         * *: s/visibility/access/g
7001
7002 Tue Jan 25 18:39:12 1994  Jason Merrill  (jason@deneb.cygnus.com)
7003
7004         * typeck.c (build_modify_expr): Don't smash references if INIT_EXPR.
7005
7006 Tue Jan 25 13:54:29 1994  Mike Stump  <mrs@cygnus.com>
7007
7008         * init.c (build_delete): Back out Jan 17th & 18th pacthes, as
7009         they break libg++.
7010
7011 Tue Jan 25 13:11:45 1994  Jason Merrill  (jason@deneb.cygnus.com)
7012
7013         * decl.c (duplicate_decls): Fix pointer arithmetic.
7014
7015 Mon Jan 24 15:50:06 1994  Chip Salzenberg  (chip@fin.uucp)
7016
7017             [ cp-* changes propagated from c-* changes in 940114 snapshot ]
7018             * cp-parse.y (maybe_attribute): Allow multiple __attribute__
7019             clauses on a declaration.
7020
7021 Mon Jan 24 17:06:23 1994  Jason Merrill  (jason@deneb.cygnus.com)
7022
7023         * class.c (finish_struct): Do synthesize methods for anon
7024         structs, just not unions.
7025
7026 Mon Jan 24 13:50:13 1994  Kung Hsu  (kung@mexican.cygnus.com)
7027
7028         * decl.c (xref_tag): handle anonymous nested type.
7029         * decl.c (globalize_nested_type): add no globalize bit check.
7030         * spew.c (hack_more_ids) : templated nested decl not push top
7031         level.
7032
7033         * parse.y : get rid of 'goto do_components'. It is much better
7034         for debugging.
7035
7036         * decl.c (is_anon_name): get rid of the function and use the
7037         macro ANON_AGGRNAME_P.
7038         * pt.c : ditto.
7039
7040 Fri Jan 21 14:06:02 1994  Jason Merrill  (jason@deneb.cygnus.com)
7041
7042         * class.c (finish_struct): Don't synthesize any methods for
7043         anonymous structs/unions.
7044
7045         * typeck.c (build_modify_expr): Don't treat pmf's as class objects.
7046
7047 Thu Jan 20 18:56:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
7048
7049         * method.c (build_opfncall): Call build_indirect_ref on
7050         synthesized instance for operator delete.
7051
7052         * pt.c (type_unification): Don't abort if called with a list of
7053         types in ARGS.
7054
7055         * class.c (instantiate_type): Deal with function templates.
7056
7057 Thu Jan 20 16:55:35 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)
7058
7059         * Makefile.in (CC): Default to cc not gcc.
7060
7061 Thu Jan 20 13:47:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
7062
7063         * typeck.c (build_modify_expr): Call constructor if appropriate.
7064
7065         * decl.c (push_to_top_level): Clear out class-level bindings cache.
7066
7067 Wed Jan 19 13:51:22 1994  Jason Merrill  (jason@deneb.cygnus.com)
7068
7069         * call.c (resolve_scope_to_name): Work recursively (previously only
7070         looked down one level).
7071
7072         * lex.c (do_pending_inlines): If we're still dealing with the last
7073         batch of inlines, don't start working on a new one.
7074
7075         * Makefile.in (stamp-parse): Update conflict count.
7076         (TAGS): Fix.
7077
7078         * parse.y (explicit_instantiation): New rule; implements
7079         'template A<int>' syntax (though not 'template foo(int)' yet).
7080         (structsp): Add explicit_instantiation.
7081
7082 Tue Jan 18 13:53:05 1994  Jason Merrill  (jason@deneb.cygnus.com)
7083
7084         * class.c (finish_struct, etc.): Simplify decision to synthesize
7085         a destructor.
7086
7087         * call.c, class.c, cp-tree.h, decl.c, init.c,
7088         ptree.c, search.c, typeck.c, typeck2.c: Nuke
7089         TYPE_NEEDS_CONSTRUCTOR (change all calls to TYPE_NEEDS_CONSTRUCTING).
7090         * init.c (expand_aggr_init_1): Don't try non-constructor methods
7091         of initializing objects.
7092         (build_new): Don't try other methods if the constructor lookup fails.
7093
7094         * class.c (finish_base_struct): Set cant_have_default_ctor and
7095         cant_synth_copy_ctor properly.
7096         (finish_struct): Ditto.
7097
7098 Mon Jan 17 13:58:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
7099
7100         * typeck.c (build_modify_expr_1): #if 0 out again.
7101         (build_modify_expr): #if 0 out memberwise init code again.
7102
7103         * lex.c (default_copy_constructor_body): Be const-correct.
7104         (default_assign_ref_body): Ditto.
7105
7106         * init.c (perform_member_init): Use TYPE_HAS_CONSTRUCTOR to decide
7107         whether or not to use it, rather than TYPE_NEEDS_CONSTRUCTING.
7108         (expand_aggr_init): Disable silent conversion from initializer list
7109         to list of args for a constructor.
7110
7111         * class.c (base_info): Lose needs_default_ctor.
7112         (finish_base_struct): Ditto.
7113         (finish_struct): Ditto.
7114
7115         * decl.c (init_decl_processing): Don't turn off flag_default_inline
7116         just because flag_no_inline is on.
7117         (finish_decl): Use TYPE_HAS_CONSTRUCTOR to decide to use
7118         constructor.
7119
7120         * class.c (finish_struct): Synthesize default ctor whenever
7121         allowed.
7122
7123         * Makefile.in (TAGS): Don't try to run etags on cp-parse.y.
7124
7125 Sat Jan 15 18:34:33 1994  Mike Stump  <mrs@cygnus.com>
7126
7127         * Makefile.in, configure: Handle the C++ front-end in a
7128         subdirectory.
7129         * cp-*: Move C++ front-end to cp/*.
7130
7131 Fri Jan 14 14:09:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
7132
7133         * cp-typeck.c (build_function_call_real): Modify to match other
7134         instances of taking the address of the function.
7135
7136         * cp-class.c (finish_struct): Set TYPE_HAS_REAL_CONSTRUCTOR to 1 if
7137         there are non-synthesized constructors.
7138         Only set TYPE_NEEDS_CONSTRUCTOR if TYPE_HAS_REAL_CONSTRUCTOR.
7139         Always generate copy constructor if possible.
7140
7141         * cp-tree.h (lang_type): Add has_real_constructor bitfield.
7142         (TYPE_HAS_REAL_CONSTRUCTOR): Define.
7143
7144         * cp-lex.c (default_copy_constructor_body): Use init syntax
7145         for all bases.
7146
7147         * cp-type2.c (store_init_value): Only give error for initializer list
7148         if TYPE_HAS_REAL_CONSTRUCTOR.
7149
7150 Thu Jan 13 15:38:29 1994  Jason Merrill  (jason@deneb.cygnus.com)
7151
7152         * cp-tree.h (DECL_SYNTHESIZED): Add defn.
7153         (lang_decl): Add synthesized bitfield to decl_flags.
7154
7155         * cp-lex.c (cons_up_default_function): Use DECL_SYNTHESIZED to mark
7156         artificial methods, rather than a line # of 0.
7157
7158 Fri Jan 14 18:25:29 1994  Kung Hsu  (kung@mexican.cygnus.com)
7159
7160         * cp-decl (xref_tag): fix a bug in conflict type.
7161         * cp-parse.y : add SCOPED_NAME for uninstantiated template nested
7162         type reference.
7163         * cp-spew.c (yylex) : generated SCOPED_NAME token.
7164         * cp-lex.c (yyprint): handle SCOPED_NAME.
7165
7166 Fri Jan 14 17:00:29 1994  Mike Stump  <mrs@cygnus.com>
7167
7168         * cp-decl.c (pushdecl): Revert patch from Jan 11 19:33:03, as it is
7169         not right.
7170
7171 Thu Jan 13 14:00:35 1994  Kung Hsu  (kung@mexican.cygnus.com)
7172
7173         * cp-decl2.c (grok_x_components): fix a bug that enum type does not
7174         have type_flags.
7175
7176 Thu Jan 13 11:39:34 1994  Mike Stump  <mrs@cygnus.com>
7177
7178         Ensure that all vtable pointers are initialized with all the right
7179         values.
7180
7181         * cp-class.c (is_normal): Changed to reflect new meaning of
7182         CLASSTYPE_VFIELD_PARENT.
7183         * cp-class.c (maybe_fixup_vptrs): Use of
7184         CLASSTYPE_NEEDS_VIRTUAL_REINIT here is misguided.  Use
7185         BINFO_MODIFIED instead.
7186         * cp-class.c (finish_struct): Changed to reflect new meaning of
7187         CLASSTYPE_VFIELD_PARENT.
7188         * cp-decl.c (get_binfo_from_vfield): Removed, unneeded now.
7189         * cp-decl.c (finish_function): Use init_vtbl_ptrs, instead of open
7190         coding it here.
7191         * cp-init.c (init_vfields): Changed name to init_vtbl_ptrs, and
7192         re-implement.
7193         * cp-init.c (emit_base_init): Use new name init_vtbl_ptrs.
7194         * cp-tree.h (vfield_parent): Changed to integer.
7195         * cp-tree.h (CLASSTYPE_VFIELD_PARENT): Changed docs to reflect new
7196         meaning.
7197         * cp-tree.h (init_vtbl_ptrs): Added init_vtbl_ptrs.
7198
7199 Wed Jan 12 18:24:16 1994  Kung Hsu  (kung@mexican.cygnus.com)
7200
7201         * cp-decl.c (xref_tag): re-implement globalize nested type.
7202         * cp-decl2.c (grok_x_components): ditto.
7203         * cp-parse.y: ditto.
7204         * cp-tree.h (lang_type): add no_globalize bit in type_flags.
7205
7206 Wed Jan 12 14:08:09 1994  Jason Merrill  (jason@deneb.cygnus.com)
7207
7208         * cp-decl.c (grokdeclarator): Don't set TREE_PUBLIC on friend
7209         decls with a definition attached.
7210
7211         * cp-typeck.c (build_modify_expr): Undo previous change in the case
7212         of INIT_EXPRs.
7213
7214 Tue Jan 11 19:33:03 1994  Jason Merrill  (jason@deneb.cygnus.com)
7215
7216         * cp-typeck.c (build_modify_expr): Replace code for generating
7217         assignment semantics for classes with an error.
7218         (build_modify_expr_1): #if 0 out.
7219
7220         * cp-decl.c (pushdecl): Patch bogus design of pushdecl
7221         behavior for overloaded functions (it doesn't push anything).
7222
7223         * cp-class.c (finish_struct): When generating default op=,
7224         set TYPE_HAS_ASSIGNMENT.
7225
7226 Mon Jan 10 18:48:06 1994  Mike Stump  <mrs@cygnus.com>
7227
7228         * cp-cvt.c (convert): Make {double, clashing enum} -> enum
7229         invalid.
7230         * cp-typeck.c (convert_for_assignment): Simplify.
7231         * cp-decl2.c (warn_enum_clash): Removed.
7232         * invoke.texi (-Wenum-clash): Removed.
7233         * toplev.c (-Wenum-clash): Removed.
7234
7235 Mon Jan 10 17:48:37 1994  Kung Hsu  (kung@mexican.cygnus.com)
7236
7237         * cp-decl.c (finish_decl): fix incorrect popclass call.
7238
7239         * cp-decl.c (is_anon_name): new function, check whether the name
7240         is anonymous name generated by compiler.
7241         * cp-decl.c (grokdeclarator): allow nested SCOPE_REF
7242         * cp-spew.c (hack_more_ids): handle nested type in template.
7243         * cp-parse.y : handle nested type reference in uninstantiated
7244         template.
7245         * cp-call.c (build_method_call): handle uninstantiated template
7246         case.
7247         * cp-pt.c (search_nested_type_in_tmpl): new function, search nested 
7248         type in template.
7249         * cp-pt.c (lookup_nested_type_by_name): new function, lookup nested 
7250         type by name.
7251         * cp-pt.c (tsubst): handle nested type search by name.
7252
7253 Mon Jan 10 14:32:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
7254
7255         * cp-init.c (build_member_call): Propagate qualifiers to new type.
7256
7257         * cp-call.c (build_method_call): Count functions the new way.
7258
7259 Fri Jan  7 19:03:26 1994  Jason Merrill  (jason@deneb.cygnus.com)
7260
7261         * cp-decl.c (pushtag): Set DECL_ASSEMBLER_NAME for nested classes,
7262         too.
7263
7264 Tue Jan  4 16:45:51 1994  Kung Hsu  (kung@cirdan.cygnus.com)
7265
7266         * cp-parse.y: change to handle whether to globalize nested class.
7267         * cp-decl.c(xref_tag, maybe_globalize_type): Ditto.
7268
7269 Mon Jan  3 22:22:32 1994  Gerald Baumgartner  (gb@cygnus.com)
7270
7271         * Makefile.in cp-call.c cp-class.c cp-cvt.c cp-decl.c cp-decl2.c
7272         cp-error.c cp-init.c cp-lex.c cp-lex.h cp-method.c cp-parse.y
7273         cp-spew.c cp-tree.c cp-tree.h cp-type2.c cp-typeck.c cp-xref.c
7274         gplus.gperf toplev.c: Incorporated C++ signature extension.
7275         * cp-sig.c: New file, contains most of signature processing.
7276         * cp-hash.h: Regenerated from gplus.gperf.
7277
7278         * gcc.1 g++.1: Added explanation for  the `-fhandle-signatures'
7279         and `-fno-handle-signatures' command line flags.
7280
7281         * gcc.texi: Changed the last-modification date.
7282         * invoke.texi: Added `-fhandle-signatures' in the list of
7283         C++ language options.  Added explanation for this option.
7284
7285 Tue Dec 28 21:10:03 1993  Mike Stump  <mrs@cygnus.com>
7286
7287         * cp-init.c (expand_vec_init): Remove comptypes test, as it is too
7288         harsh here.
7289
7290 Tue Dec 28 13:42:22 1993  Mike Stump  <mrs@cygnus.com>
7291
7292         * cp-pt.c (do_pending_expansions): Decide to expand a template
7293         member function, based upon it's class type, not the class type of
7294         the first place it was declared.
7295
7296 Tue Dec 28 05:42:31 1993  Mike Stump  <mrs@cygnus.com>
7297
7298         * cp-class.c (is_normal): New routine, use to determine when the
7299         given binfo is the normal one.  (The one that should have the simple
7300         vtable name.)
7301         * cp-class.c (modify_other_vtable_entries): Use DECL_ASSEMBLER_NAME
7302         to check if two fndecls are `the same'.  Sometimes this routine can
7303         modify the main vtable, and normal should be 1, in that case, so use
7304         is_normal() to determine if this is the main vtable for the class.
7305         Don't recurse down virtual bases, as they are shared, and we take
7306         care of them elsewhere.
7307         * cp-class.c (modify_vtable_entries): If we have already updated the
7308         vtable with the new virtual, don't do it again.
7309         * cp-class.c (finish_struct): Set CLASSTYPE_VFIELD_PARENT as
7310         appropriate.  Do virtual function overriding in virtual bases, after
7311         normal overriding, so that the base function list in DECL_VINDEX is
7312         not overridden, before we have a chance to run through the list.
7313         Use DECL_ASSEMBLER_NAME to check if two fndecls are `the same'.
7314         Make sure we pass the right address into modify_vtable_entries.
7315         * cp-tree.h (CLASSTYPE_VFIELD_PARENT): New field to indicate which
7316         binfo is the one that has the vtable that we based our vtable on.
7317
7318 Fri Dec 24 09:40:52 1993  Michael Tiemann  (tiemann@blues.cygnus.com)
7319
7320         * cp-typeck.c (c_expand_start_case): Use default_conversion to
7321         convert expression from reference type if necessary.
7322
7323 Wed Dec 22 17:58:43 1993  Jason Merrill  (jason@deneb.cygnus.com)
7324
7325         * cp-typeck.c (build_unary_op): Make sure that it's a TREE_LIST before
7326         trying to read its TREE_VALUE.
7327
7328         * cp-class.c (finish_struct_methods): Clear DECL_IN_AGGR_P here.
7329         (finish_struct): Instead of here.
7330
7331 Tue Dec 21 14:34:25 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7332
7333         * cp-tree.c (list_hash_lookup_or_cons): Make sure the type doesn't
7334         have TYPE_PTRMEMFUNC_P set before we try to build its
7335         CLASSTYPE_ID_AS_LIST.
7336         (get_decl_list): Likewise, when trying to read it.
7337
7338         * cp-tree.h (VTABLE_NAME): No def with NO_{DOLLAR,DOT} defined.
7339         (VTABLE_NAME_P): Use it instead of VTABLE_NAME_FORMAT.
7340
7341 Mon Dec 20 13:35:03 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7342
7343         * cp-typeck.c (rationalize_conditional_expr): New function.
7344         (unary_complex_lvalue): Use it.
7345         (build_modify_expr): Use it, since trying to do an ADDR_EXPR of it
7346         with build_unary_op won't cut it.  Don't wrap the COND_EXPR with a
7347         SAVE_EXPR either.
7348
7349         * cp-decl2.c (explicit_warn_return_type): Deleted variable.
7350         (lang_decode_option): Set warn_return_type, not explicit_*, for
7351         -Wreturn-type and -Wall.  This is what rest_of_compilation uses to
7352         decide if it should go into jump_optimize or not.
7353         * cp-tree.h (explicit_warn_return_type): Deleted.
7354         * cp-decl.c (grokdeclarator): Use warn_return_type, not explicit_*.
7355         (finish_function): Also complain about no return in a non-void fn if
7356         we're being pedantic (don't rely on use of -Wreturn-type).
7357
7358 Fri Dec 17 15:45:46 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7359
7360         * cp-decl.c (grokdeclarator): Forbid declaration of a function as
7361         static if it's being done inside another function.
7362
7363         * cp-search.c (compute_visibility): Check for friendship both ways.
7364
7365 Fri Dec 17 14:28:25 1993  Jason Merrill  (jason@deneb.cygnus.com)
7366
7367         * cp-cvt.c (build_default_binary_type_conversion): Make error
7368         messages more helpful.
7369
7370         * cp-error.c (op_as_string): New function, returns "operator =="
7371         given EQ_EXPR or suchlike.
7372
7373 Fri Dec 17 13:28:11 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7374
7375         * cp-call.c (print_n_candidates): New function.
7376         (build_overload_call_real): Use it when we complain about a call
7377         being ambiguous.
7378
7379 Fri Dec 17 12:41:17 1993  Jason Merrill  (jason@deneb.cygnus.com)
7380
7381         * cp-call.c (build_method_call): Fix checking for static call
7382         context.
7383
7384         * cp-method.c (build_opfncall): Call build_indirect_ref on argument
7385         to operator new.
7386
7387         * cp-init.c (build_new): Don't mess with rval when building
7388         indirect ref.
7389
7390 Thu Dec 16 16:48:05 1993  Kung Hsu  (kung@cirdan.cygnus.com)
7391
7392         * cp-lex.c (default_assign_ref_body): add check when TYPE_NESTED_
7393         NAME(type) may not be exist. It's not a problem for old compiler.
7394
7395 Thu Dec 16 14:46:06 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7396
7397         * cp-tree.h (CLASSTYPE_ALTERS_VISIBILITIES_P): Delete macro, it's
7398         never used for anything.
7399         (struct lang_type, member type_flags): Delete field
7400         `alters_visibility', and up `dummy' by 1.
7401         * cp-class.c (finish_base_struct): Delete code that copies the
7402         setting of CLASSTYPE_ALTERS_VISIBILITIES_P.
7403         (finish_struct): Delete code that sets it.
7404
7405 Thu Dec 16 14:44:39 1993  Jason Merrill  (jason@deneb.cygnus.com)
7406
7407         * cp-decl.c, cp-init.c, cp-typeck.c: Fix arguments to
7408         build_method_call that I messed up before.
7409
7410         * cp-search.c (get_base_distance): If protect > 1, allow immediate
7411         private base.
7412
7413         * cp-class.c (finish_base_struct): Set cant_synth_* correctly.
7414         (finish_struct): Ditto.  Well, nigh-correctly; it won't deal
7415         properly with the case where a class contains an object of an
7416         ambiguous base class which has a protected op=.  Should be fixed
7417         when the access control code gets overhauled.
7418         (finish_struct_methods): Set TYPE_HAS_NONPUBLIC_* correctly.
7419
7420 Thu Dec 16 12:17:06 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7421
7422         * cp-lex.c (real_yylex): Turn the code back on that deals with
7423         __FUNCTION__ and __PRETTY_FUNCTION__.  Don't use lookup_name, to
7424         avoid the ambiguity problems that led to it being turned off in the
7425         first place.
7426
7427         * cp-method.c (hack_identifier): Also check for a TYPE_PTRMEMFUNC_P
7428         to see if something is a method.
7429
7430 Wed Dec 15 18:35:58 1993  Mike Stump  <mrs@cygnus.com>
7431
7432         * cp-typeck.c (build_modify_expr): Avoid error messages on small
7433         enum bit fields.
7434         * cp-typeck.c (convert_for_assignment): Add missing argument to
7435         cp_warning and cp_pedwarn calls.
7436
7437 Wed Dec 15 18:25:32 1993  Jason Merrill  (jason@deneb.cygnus.com)
7438
7439         * cp-parse.y (member_init): ANSI C++ doesn't forbid old-style base
7440         initializers; it's just anachronistic.
7441
7442         * cp-decl.c (finish_decl): Don't require external-linkage arrays
7443         to have a complete type at declaration time when pedantic.
7444
7445 Tue Dec 14 11:37:23 1993  Jason Merrill  (jason@deneb.cygnus.com)
7446
7447         * cp-decl.c (pushdecl): Don't set DECL_CONTEXT if it's already set.
7448
7449         * cp-call.c (build_method_call): Don't dereference pointer given
7450         as instance.
7451
7452         * cp-decl.c (finish_function): Don't pass pointer to
7453         build_method_call.
7454         (finish_function): Ditto.
7455
7456         * cp-typeck.c (build_x_function_call): Ditto.
7457
7458         * cp-method.c (build_component_type_expr): Ditto.
7459
7460         * cp-init.c (build_member_call): Ditto.
7461         (build_new): Ditto.
7462
7463 Mon Dec 13 18:04:33 1993  Kung Hsu  (kung@cirdan.cygnus.com)
7464
7465         * cp-decl.c (xref_tag): fix regression created by changes made 
7466         in Dec. 7 1993.
7467         * cp-decl.c (xref_defn_tag): fix parallel nested class problem.
7468
7469 Fri Dec 10 12:40:25 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7470
7471         * cp-call.c (compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print
7472         out the final evaluation of the function, so we can see if ELLIPSIS,
7473         USER, and EVIL were set at the end.
7474
7475         * cp-call.c (convert_harshness_ansi): When the parm isn't an lvalue,
7476         only go for setting TRIVIAL_CODE if we are dealing with types that
7477         are compatible.
7478
7479 Thu Dec  9 18:27:22 1993  Mike Stump  <mrs@cygnus.com>
7480
7481         * cp-decl.c (flag_huge_objects): New flag to allow large objects.
7482         * toplev.c (lang_options): Ditto.
7483         * cp-decl2.c (flag_huge_objects, lang_f_options): Ditto.
7484         * cp-decl.c (delta_type_node): New type for delta entries.
7485         * cp-tree.h (delta_type_node): Ditto.
7486         * cp-decl.c (init_decl_processing): Setup delta_type_node.
7487         * cp-decl.c (init_decl_processing, build_ptrmemfunc_type): Use
7488         delta_type_node instead of short_integer_type_node. 
7489         * cp-class.c (build_vtable_entry): Ditto.
7490
7491 Thu Dec  9 16:19:05 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7492
7493         * cp-tree.h (OPERATOR_TYPENAME_P): Define outside of
7494         NO_{DOLLAR,DOT} macro checks, so it always gets defined.
7495         (VTABLE_NAME_P): Define for NO_DOT && NO_DOLLAR_IN_LABEL.
7496
7497 Wed Dec  8 17:38:06 1993  Mike Stump  <mrs@cygnus.com>
7498
7499         * cp-decl.c (finish_decl): Make sure things that can go into
7500         "common", do go into common, if -fcommon is given.
7501
7502 Wed Dec  8 13:01:54 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7503
7504         * cp-call.c (print_harshness) [DEBUG_MATCHING]: New function.
7505         (compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print out
7506         argument matching diagnostics to make instantly clear what the
7507         compiler is doing.
7508
7509         * cp-call.c (convert_harshness_ansi): If the parm isn't an lvalue,
7510         then check to see if the penalty was increased due to
7511         signed/unsigned mismatch, and use a TRIVIAL_CODE if it wasn't.
7512
7513 Tue Dec  7 18:29:14 1993  Kung Hsu  (kung@cirdan.cygnus.com)
7514
7515         * cp-decl.c (xref_tag, pushtag): Fix nested class search/resolution
7516         problem.
7517
7518 Tue Dec  7 16:09:34 1993  Jason Merrill  (jason@deneb.cygnus.com)
7519
7520         * cp-class.c (finish_struct): Before synthesizing methods, if no
7521         methods have yet been declared then set nonprivate_method.  Don't
7522         set non_private method after synthesizing a method.
7523
7524         * cp-lex.c (extract_interface_info): If flag_alt_external_templates
7525         is set, tie emitted code to the location of template instantiation,
7526         rather than definition.
7527
7528         * cp-tree.h: Declare flag_alt_external_templates.
7529
7530         * cp-decl2.c (lang_decode_option): Support -falt-external-templates.
7531
7532         * toplev.c (lang_options): Ditto.
7533
7534        Mon Oct  4 12:50:02 1993  Chip Salzenberg  (chip@fin.uucp)
7535
7536         [changes propagated from 930810 snapshot]
7537         * cp-decl.c (init_decl_processing): Make long long available for use
7538         as SIZE_TYPE and PTRDIFF_TYPE.
7539         (finish_decl): Allow file-scope static incomplete array.
7540         (grokdeclarator): Don't pass on const and volatile fron function
7541         value type to function type.
7542         Warn here for volatile fn returning non-void type.
7543         * cp-parse.y (attrib): Accept attributes `volatile' with alias
7544         `noreturn', and `const'.
7545         * cp-typeck.c (default_conversion): Don't lose const and volatile.
7546         (build_binary_op_nodefault): Generate pedantic warning for comparison
7547         of complete pointer type with incomplete pointer type.
7548         (build_c_cast): Be careful that null pointer constant be INTEGER_CST.
7549
7550 Tue Dec  7 10:46:48 1993  Jason Merrill  (jason@deneb.cygnus.com)
7551
7552         * cp-init.c (expand_vec_init): When creating a temporary for copying
7553         arrays, use the type of the source, not the target.
7554
7555         * cp-cvt.c (convert): Pass an argument for errtype to
7556         convert_to_reference.
7557
7558         * cp-error.c (dump_expr, COMPONENT_REF & CALL_EXPR): Deal with
7559         methods, -> and `this'.
7560
7561 Mon Dec  6 17:12:33 1993  Jason Merrill  (jason@deneb.cygnus.com)
7562
7563         * cp-error.c (parm_as_string): New function; returns `this' or arg
7564         number.  Corresponds to %P.
7565         (dump_expr): Deal with method calls.
7566
7567         * cp-cvt.c (convert_to_reference): Stop using warn_for_assignment.
7568         * cp-typeck.c (convert_for_assignment): Ditto.
7569         (warn_for_assignment): Lose.
7570
7571 Mon Dec  6 11:33:35 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7572
7573         * cp-call.c (ideal_candidate_ansi): Delete code that was never
7574         doing anything useful.  Instead, sort once, and DO NOT wipe
7575         out any codes with EVIL_CODE, since that's what we use as a
7576         marker for the end of the list of candidates.
7577
7578         * cp-cvt.c (convert_to_aggr): Make sure to always set H_LEN.
7579
7580 Mon Dec  6 12:49:17 1993  Jason Merrill  (jason@deneb.cygnus.com)
7581
7582         * cp-init.c (get_aggr_from_typedef): New function, like
7583         is_aggr_typedef but returns the _TYPE.
7584
7585         * cp-call.c, cp-init.c, cp-method.c: Eradicate err_name.
7586
7587 Sun Dec  5 18:12:48 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7588
7589         * cp-lex.c (readescape): Pedwarn when a hex escape is out of range.
7590
7591 Thu Nov 25 23:50:19 1993  Chip Salzenberg  (chip@fin.uucp)
7592
7593         Delay language context change until beginning of next decl.
7594
7595         * cp-lex.h (c_header_level): Removed.
7596         (pending_lang_change): Declared.
7597         * cp-lex.c (c_header_level): Renamed from in_c_header, made static.
7598         (pending_lang_change): Defined.
7599         (check_newline): Rework code that recognizes line number and
7600         filename changes.  Instead of pushing and popping lang context,
7601         increment and decrement pending_lang_change.
7602         (do_pending_lang_change):  Push and pop lang context according
7603         to value of pending_lang_change.
7604         * cp-parse.y (extdefs): Use lang_extdef instead of extdef.
7605         (extdef): Same as extdef, but call do_pending_lang_change() first.
7606
7607 Mon Nov 15 15:39:15 1993  Chip Salzenberg  (chip@fin.uucp)
7608
7609         * cp-typeck.c (build_binary_op_nodefault): Warn for ordered
7610         compare of ptr with 0 only if pedantic in both cases.
7611
7612 Thu Nov 25 13:31:37 1993  Chip Salzenberg  (chip@fin.uucp)
7613
7614         Reinstate the below patch, which got lost in the Cygnus merge:
7615         Tue Nov 23 13:59:24 1993  Hallvard B Furuseth  (hbf@durin.uio.no)
7616         * cp-parse.y (maybe_type_qual): Don't fail to set $$.
7617
7618 Wed Nov 17 19:03:30 1993  Chip Salzenberg  (chip@fin.uucp)
7619
7620         * cp-parse.y (attrib): Allow "ident(ident)" like the C front end.
7621
7622 Fri Oct 22 20:43:37 1993  Paul Eggert  (eggert@twinsun.com)
7623
7624         * cp-lex.c (real_yylex): Diagnose floating point constants
7625         that are too large.
7626
7627 Wed Nov 17 19:10:37 1993  Chip Salzenberg  (chip@fin.uucp)
7628
7629         * cp-type2.c (build_functional_cast): ARM page 16: When a class
7630         and an object, function or enumerator are declared in the same
7631         scope with the same name, the class name is hidden.
7632
7633 Wed Nov 17 19:07:18 1993  Chip Salzenberg  (chip@fin.uucp)
7634
7635         * cp-call.c (convert_harshness_ansi): Distinguish float, double,
7636         and long double from each other when overloading.
7637         (compute_conversion_costs_{ansi,old}, build_method_call,
7638         build_overlay_call_real, convert_to_aggr): Always set and
7639         always use H_LEN member of candidate structure.
7640
7641 Mon Oct 11 23:10:53 1993  Chip Salzenberg  (chip@fin.uucp)
7642
7643         * cp-decl.c (duplicate_decls): Note redeclarations of library
7644         functions, and generate distinct warnings for them.
7645
7646 Mon Oct  4 12:26:49 1993  Chip Salzenberg  (chip@fin.uucp)
7647
7648         Support format warnings in G++.
7649
7650         * cp-tree.h: Protect against multiple inclusion.
7651         Declare all public functions in c-common.c (copy from c-tree.h).
7652         (STDIO_PROTO): Define.
7653         (warn_format): Declare.
7654         (record_format_info): Remove declaration.
7655         * cp-decl.c (init_decl_processing): Call init_function_format_info.
7656         * cp-decl2.c (lang_decode_option): Make "-Wall" include warn_format.
7657         * cp-typeck.c (build_function_call_real): Call check_function_format.
7658         (record_format_info): Remove -- obsolete stub.
7659
7660 Sat Jul 24 12:04:29 1993  Chip Salzenberg  (chip@fin.uucp)
7661
7662         * cp-decl.c (duplicate_decls): Don't warn for non-extern var decl
7663         following an extern one (for -Wredundant-decls).
7664         * cp-parse.y (primary): In statement expression case, if compstmt
7665         returns something other than a BLOCK, return it unchanged.
7666
7667 Thu Dec  2 20:44:58 1993  Chip Salzenberg  (chip@fin.uucp)
7668
7669         * cp-decl.c (warn_extern_redeclared_static): New function made
7670         from code extracted from pushdecl.
7671         (duplicate_decls, pushdecl): Call new function.
7672         (lookup_name_current_level): Allow for IDENTIFIER_GLOBAL_VALUE
7673         to be a TREE_LIST when function is declared in 'extern "C" {}'.
7674
7675 Fri Dec  3 16:01:10 1993  Jason Merrill  (jason@deneb.cygnus.com)
7676
7677         * cp-class.c (duplicate_tag_error): Use cp_error.
7678         (finish_base_struct): Check for ambiguity with direct base, and don't
7679         generate op= or copy ctor if it exists.
7680
7681 Fri Dec  3 15:32:34 1993  Kung Hsu  (kung@cirdan.cygnus.com)
7682
7683         * cp-init.c (expand_member_init): when initializer name is null,
7684         don't try to build it now because emit_base_init will handle it.
7685
7686 Fri Dec  3 12:28:59 1993  Jason Merrill  (jason@deneb.cygnus.com)
7687
7688         * cp-lex.c (init_lex): Initialize input_filename to "<internal>" for
7689         code such as ExceptionHandler::operator=.
7690
7691 Fri Dec  3 10:32:08 1993  Jason Merrill  (jason@deneb.cygnus.com)
7692
7693         * cp-decl.c (grokdeclarator): Don't try to print out dname when
7694         complaining about arrays of references if decl_context==TYPENAME,
7695         since it will be null.
7696
7697         * cp-decl2.c: Default to flag_ansi_overloading.
7698
7699 Thu Dec  2 18:05:56 1993  Kung Hsu  (kung@cirdan.cygnus.com)
7700
7701         * cp-call.c (build_method_call): use binfo from instance if it's
7702         different from binfo (basetype_path) passed from above.
7703
7704 Thu Dec  2 12:48:36 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7705
7706 Wed Nov 17 19:14:29 1993  Chip Salzenberg  (chip@fin.uucp)
7707
7708         cp-error.c (dump_expr): Use unsigned chars to output a
7709         TREE_REAL_CST in hex.
7710
7711 Thu Dec  2 11:05:48 1993  Jason Merrill  (jason@deneb.cygnus.com)
7712
7713         * cp-class.c (finish_struct): Fix typo in setting
7714         cant_synth_asn_ref.
7715
7716         * cp-tree.h (TYPE_NESTED_NAME): New macro, does
7717         DECL_NESTED_TYPENAME (TYPE_NAME (NODE)).
7718
7719         * cp-lex.c (default_copy_constructor_body): Change
7720         DECL_NAME (TYPE_NAME (btype)) to TYPE_NESTED_NAME (btype).
7721         (default_assign_ref_body): Ditto.
7722         (default_copy_constructor_body): Call operator= explicitly for
7723         base classes that have no constructor.
7724
7725 Thu Dec  2 10:47:15 1993  Michael Tiemann  (tiemann@blues.cygnus.com)
7726
7727         * cp-call.c (build_method_call): If the instance variable is
7728         converted to error_mark_node when we're trying to convert it to the
7729         base type of a method we're looking up, return error_mark_node.
7730
7731 Thu Dec  2 10:41:16 1993  Torbjorn Granlund  (tege@cygnus.com)
7732
7733         * cp-typeck.c (build_binary_op_nodefault): In *_DIV_EXPR *_MOD_EXPR
7734         cases, tests for unsigned operands by peeking inside a NOP_EXPR.
7735
7736 Wed Dec  1 13:33:34 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7737
7738         * cp-call.c (compute_conversion_costs_ansi): Use the size of struct
7739         harshness_code, not the size of short, for clearing out the
7740         ansi_harshness.
7741
7742         * cp-call.c (print_candidates): New function.
7743         (build_method_call): When we had some candidates, but didn't get a
7744         usable match, don't report that we got an error with the first
7745         candidate.  Instead, say there were no matches, and list the
7746         candidates with print_candidates.  In the second pass, make sure we
7747         clear out ever_seen, so we can accurately count the number of
7748         functions that qualified.
7749
7750 Wed Dec  1 09:53:59 1993  Torbjorn Granlund  (tege@cygnus.com)
7751
7752         * cp-typeck.c (build_binary_op_nodefault): Shorten for *_MOD_EXPR
7753         only if op1 is known to be != -1.
7754         (build_binary_op_nodefault): Handle *_DIV_EXPR likewise.
7755
7756 Tue Nov 30 14:07:26 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
7757
7758         * cp-method.c (hack_identifier): If the field itself is private, and
7759         not from a private base class, say so.
7760
7761 Mon Nov 29 03:00:56 1993  Jason Merrill  (jason@deneb.cygnus.com)
7762
7763         * cp-decl.c (grokdeclarator): Always warn on initialization of
7764         const member.
7765
7766 Wed Nov 24 00:49:35 1993  Jason Merrill  (jason@deneb.cygnus.com)
7767
7768         * cp-class.c (finish_struct): Set TYPE_GETS_CONST_* properly.
7769         (finish_base_struct): Set cant_synth_asn_ref properly.
7770
7771         * cp-lex.c (cons_up_default_function): Add section for operator=.
7772         (default_assign_ref_body): New function, mostly cribbed from
7773         default_copy_constructor_body.
7774
7775         * cp-class.c (base_info): Add members cant_synth_copy_ctor,
7776         cant_synth_asn_ref, no_const_asn_ref.
7777         (finish_base_struct): Update no_const_asn_ref, note that you should
7778         update cant_synth_*, propagate TYPE_GETS_ASSIGN_REF.
7779         (finish_struct): Add decls for cant_synth_*, no_const_asn_ref, and
7780         initialize them properly.  Set no_const_asn_ref properly.  Set
7781         cant_synth_* in some of the situations where they should be set.
7782         Propagate TYPE_GETS_ASSIGN_REF.  Use cant_synth_copy_ctor.  Add call
7783         to cons_up_default_function for operator=.
7784
7785 Tue Nov 23 20:24:58 1993  Mike Stump  <mrs@cygnus.com>
7786
7787         * cp-cvt.c (convert_force): Add code to perform casting of pointer
7788         to member function types.
7789         * cp-typeck.c (build_ptrmemfunc): Add FORCE parameter to indicate
7790         when the conversion should be done, regardless.
7791         * cp-tree.h (build_ptrmemfunc): Ditto.
7792         * cp-type2.c (digest_init): Ditto.
7793         * cp-typeck.c (convert_for_assignment): Ditto.
7794
7795 Tue Nov 23 18:06:58 1993  Jason Merrill  (jason@deneb.cygnus.com)
7796
7797         * cp-error.c (dump_expr): Do the right thing for variables of
7798         reference type.
7799
7800         * cp-decl.c (grok_op_properties): Set TYPE_HAS_ASSIGN_REF
7801         and its kin properly.
7802         (xref_tag): Propagate TYPE_GETS_ASSIGN_REF.
7803
7804 Tue Nov 23 12:26:13 1993  Mike Stump  <mrs@cygnus.com>
7805
7806         * cp-method.c (build_opfncall): Don't count pointer to member
7807         functions as aggregates here, as we don't want to look up methods in
7808         them.  The compiler would core dump if we did, as they don't have
7809         normal names.
7810         * cp-typeck.c (build_indirect_ref): Improve wording on error
7811         message.
7812
7813 Mon Nov 22 14:22:23 1993  Jason Merrill  (jason@deneb.cygnus.com)
7814
7815         * cp-decl.c (grok_op_properties): Allow operator?: with pedwarn
7816         (since it's supported in other compiler bits).
7817
7818         * cp-method.c (report_type_mismatch): Use cp_error; ignore err_name
7819         argument.
7820
7821         * cp-error.c (dump_function_decl): Don't print return type for
7822         constructors and destructors.
7823
7824         * cp-cvt.c (cp_convert_to_pointer): Import code from
7825         convert_to_pointer so we can return error_mark_node in the case of an
7826         error, and to allow more meaningful error messages.
7827         (build_type_conversion): Don't go through void* when trying
7828         to convert to a pointer type.
7829
7830         * cp-decl.c (grokfndecl): Move call to grok_op_properties back
7831         after grokclassfn so that it's dealing with the right decl.
7832         (grok_op_properties): Don't assert !methodp for op new and op delete.
7833
7834         * cp-init.c (build_delete): Don't use TYPE_BUILT_IN (there are now
7835         no uses of it in the compiler).
7836
7837         * cp-call.c (build_scoped_method_call): Fix for destructors of simple
7838         types.
7839         (build_method_call): Ditto.
7840
7841 Fri Nov 19 12:59:38 1993  Jason Merrill  (jason@deneb.cygnus.com)
7842
7843         * cp-tree.c (count_functions): Abstraction function.
7844
7845         * cp-call.c (build_overload_call_real): Deal with new overloading
7846         properly, remove dead code.
7847
7848         * gcc.c (default_compilers): Generate and use .ii files in the
7849         intermediate stage of compiling C++ source.
7850
7851 Fri Nov 19 11:26:09 1993  Jim Wilson  (wilson@sphagnum.cygnus.com)
7852
7853         * cp-expr.c (cplus_expand_expr): Make call_target a valid memory
7854         address before using it, so it can be later safely compared.
7855
7856 Fri Nov 12 15:30:27 1993  Jason Merrill  (jason@deneb.cygnus.com)
7857
7858         * cp-pt.c (tsubst): Deal with new overloading.
7859
7860         * cp-typeck.c (fntype_p): is the arg function type?
7861         (comp_target_parms): pedwarn on conversion from (anything) to (...).
7862         (build_x_function_call): Deal with new overloading.
7863
7864         * cp-tree.c (decl_list_length): Deal with new overloading.
7865         (decl_value_member): Like value_member, but for DECL_CHAINs.
7866
7867         * cp-decl.c (duplicate_decls): Deal with new overloading.
7868         (start_decl): Ditto.
7869
7870         * cp-class.c (instantiate_type): Deal with new overloading.
7871
7872         * cp-call.c (convert_harshness_ansi): Deal with new overloading.
7873         (convert_harshness_old): Deal with new overloading.
7874         (build_overload_call_real): Ditto.
7875
7876 Mon Nov  8 13:50:49 1993  Jason Merrill  (jason@deneb.cygnus.com)
7877
7878         * cp-tree.c (get_unique_fn): New function; returns FUNCTION_DECL
7879         if unambiguous, NULL_TREE otherwise.
7880         (get_first_fn): Returns the first appropriate FUNCTION_DECL.
7881         (is_overloaded_fn): Returns whether or not the passed tree is
7882         a function or list of functions.
7883
7884         * cp-init.c (init_init_processing): use `get_first_fn' to find
7885         the FUNCTION_DEFN for new and delete.
7886
7887         * cp-decl.c (push_overloaded_decl): Use new overloading strategy, cut
7888         code size in half (I spit on special cases).
7889
7890 Tue Sep  7 20:03:33 1993  Jason Merrill  (jason@deneb.cygnus.com)
7891
7892         * cp-decl.c: Allow references and template type parameters as well
7893
7894 Local Variables:
7895 eval: (auto-fill-mode)
7896 left-margin: 8
7897 fill-column: 76
7898 End: