OSDN Git Service

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