OSDN Git Service

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