OSDN Git Service

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