OSDN Git Service

84th Cygnus<->FSF merge
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 Fri Mar  1 13:09:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
2
3         * pt.c (instantiate_class_template): If we don't have a pattern
4         yet, that's OK.
5         (coerce_template_parms): If we see a local class, bail.
6
7         * decl.c (grok_reference_init): Make sure there's a type before
8         checking its code.
9
10         * pt.c (do_function_instantiation): Avoid crashing on invalid decls.
11         (push_template_decl): Ditto.
12
13         * parse.y (named_class_head): Set
14         CLASSTYPE_TEMPLATE_SPECIALIZATION here if we have basetypes.
15
16         * decl.c (xref_tag): Diagnose redeclaration of template
17         type-parameter name.
18
19         * error.c (dump_type): Handle anonymous template type parms.
20
21         * pt.c (instantiate_template): Use TYPE_MAIN_DECL instead of
22         TYPE_STUB_DECL.
23         (coerce_template_parms): Ditto.
24
25 Thu Feb 29 16:26:01 1996  Mike Stump  <mrs@cygnus.com>
26
27         * class.c (instantiate_type, case {ARRAY,INDIRECT}_REF,
28         case ADDR_EXPR): Don't modify rhs if a subinstantiation fails.
29
30 Thu Feb 29 08:20:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
31
32         * pt.c (instantiate_template): Take the MAIN_VARIANT of the type
33         before trying to get its STUB_DECL.
34         (coerce_template_parms): Ditto.
35
36         * parse.y (template_type_parm): If they didn't use 'class',
37         pretend they did after giving an error.
38
39         * pt.c (coerce_template_parms): Diagnose use of local class.
40
41         * decl.c (grok_reference_init): Use instantiate_type.
42
43         * error.c (dump_expr): Handle TEMPLATE_DECLs.
44
45         * parse.y (named_class_head): Diagnose mismatching types and tags.
46
47         * decl.c (pushdecl): Type decls and class templates clash with
48         artificial type decls, not hide them.
49
50         * decl.c (redeclaration_error_message): Diagnose redefinition of
51         templates properly.
52         (duplicate_decls): Diagnose disallowed overloads for template
53         functions, too.
54
55         * decl.c (start_decl): Call complete_type before checking for a
56         destructor.
57
58         * pt.c (tsubst): Use tsubst_expr on the elts of a VEC.
59
60         * decl.c (xref_tag): A TEMPLATE_TYPE_PARM is a match.
61
62 Wed Feb 28 09:28:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
63
64         * decl.c (grok_op_properties): Don't check for operator++(int) in
65         a template.
66
67         * tree.c (perm_manip): Return a copy of variable and function
68         decls with external linkage.
69
70         * tree.def: Change some of the min tree codes to type "1".
71         * pt.c (uses_template_parms): Handle 'e's, return 1 for LOOKUP_EXPRs.
72         * method.c (build_overload_int): Emit something arbitrary for
73         anything but an INTEGER_CST if we're in a template.
74
75         * decl.c (cp_finish_decl): Call complete_type before deciding
76         whether or not to lay out the decl.
77
78         * lex.c (do_identifier): Check for DECL_INITIAL before using it.
79
80 Tue Feb 27 16:35:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
81
82         * typeck2.c (build_x_arrow): Call complete_type.
83
84         * pt.c (add_pending_template): Broken out.
85         (lookup_template_class): If -fexternal-templates, call it for all
86         the methods of implemented types.
87         (instantiate_class_template): Instead of instantiating them here.
88         (instantiate_decl): Handle -fexternal-templates earlier.
89
90 Tue Feb 27 15:51:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
91
92         * search.c, lex.c, decl.c, class.c, cp-tree.h: Don't wrap the
93         memoized lookup stuff inside GATHER_STATISTICS.
94
95 Tue Feb 27 10:38:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
96
97         * decl.c (start_decl): Complain about array of incomplete type
98         here.
99         (grokdeclarator): Not here.
100
101         * parse.y (template_parm): Expand full_parm inline so we can set
102         the rule's precedence.
103
104         * pt.c (tsubst_expr): If we're in a template, just do tsubst_copy.
105         (tsubst): tsubst_expr the DECL_INITIAL of FIELD_DECLs.
106         * decl2.c (grokbitfield): Don't check for integer constant here.
107         * class.c (finish_struct_1): Check here.
108
109         * decl.c (define_label): Make the min decl go on permanent_obstack.
110
111         * pt.c (unify): Don't handle CONST_DECLs.
112         (uses_template_parms): Don't check DECL_INITIAL on a CONST_DECL.
113         (tsubst_copy): Ditto.
114
115         * lex.c (do_identifier): Do pull the DECL_INITIAL out of a
116         CONST_DECL for a template parm.
117
118 Mon Feb 26 12:48:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
119
120         * decl.c (grokdeclarator): Complain about array of incomplete type
121         here.
122         (start_decl_1): Not here.
123
124         * pt.c (tsubst): Handle pointer-to-function declarators.
125
126         * method.c (hack_identifier): If pedantic, diagnose local class
127         methods that require a static chain.
128
129         * decl.c (grok_op_properties): No longer static.
130         * cp-tree.h: Declare it.
131         * pt.c (tsubst): Call it for operators.
132         Use tsubst_copy for TREE_VECs.
133
134         * parse.y (template_arg): The expr has precedence like '>'.
135
136 Fri Feb 23 14:51:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
137
138         * pt.c (coerce_template_parms): Don't coerce an expression using
139         template parms.
140         (uses_template_parms): Also check DECL_INITIAL in CONST_DECLs.
141         (tsubst): Don't use build_index_2_type if the max_value uses template
142         parms.
143         * method.c (build_overload_int): Emit something arbitrary for an
144         expression using template parms.
145
146         * parse.y (template_close_bracket): New non-terminal to catch use
147         of '>>' instead of '> >' in template class names.
148         (template_type): Use it.
149         * Makefile.in (CONFLICTS): Causes one more r/r conflict.
150
151         * tree.def: Add CAST_EXPR.
152         * typeck2.c (build_functional_cast): Use CAST_EXPR instead of
153         CONVERT_EXPR for minimal_parse_mode.
154         * typeck.c (build_c_cast): Ditto.
155         * pt.c (tsubst_copy): Ditto.
156         * decl2.c (build_expr_from_tree): Ditto.
157         * error.c (dump_expr): Ditto.
158
159 Fri Feb 23 10:36:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
160
161         * except.c (SetTerminate, SetUnexpected): Put back global vars.
162         (init_exception_processing): Put back decl/init of
163         set_unexpected_fndecl and set_terminate_fndecl, needed to get the
164         fns from libstdc++.
165
166         * decl.c (struct binding_level): Delete ACCEPT_ANY bitfield.
167         (declare_uninstantiated_type_level, uninstantiated_type_level_p):
168         Delete unused fns.
169         * cp-tree.h (declare_uninstantiated_type_level,
170         uninstantiated_type_level_p): Delete prototypes.
171
172 Thu Feb 22 19:36:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
173
174         * pt.c (tsubst_expr): Add default return.
175
176 Thu Feb 22 16:47:24 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
177
178         * error.c (fndecl_as_string): Delete unused arg CNAME.
179         * sig.c (build_signature_table_constructor,
180         build_signature_method_call): Fix calls.
181
182         * class.c (the_null_vtable_entry): Delete var definition.
183         (init_class_processing): Delete tree the_null_vtable_entry init.
184         * decl.c (no_print_{functions, builtins}): Declare as static.
185         (__tp_desc_type_node): #if 0 var definition.
186         (init_type_desc): #if 0 init of __tp_desc_type_node.
187         (vb_off_identifier): Move var decl into init_decl_processing.
188         (current_function_assigns_this): Declare as static.
189         (int_ftype_ptr_ptr_int, void_ftype_ptr_int_int): Delete var decls.
190         (init_decl_processing): Delete init of void_ftype_ptr_ptr_int.
191         Move decls of string_ftype_ptr_ptr and int_ftype_string_string here.
192         * decl2.c (delete_sanity): Delete definition/mod of local var ELT_SIZE.
193         * init.c (BI_header_type, BI_header_size): Declare as static.
194         * pt.c (template_classes): Delete unused var.
195         (add_pending_template): Delete decl for non-existent fn.
196         (lookup_template_class): Delete vars CODE and TAG_CODE.
197         (instantiate_template): Delete unused var TARGS.
198         * cp-tree.h (vb_off_identifier, current_function_assigns_this):
199         Delete decls.
200         (__tp_desc_type_node): #if 0 var decl.
201         (fndecl_as_string): Fix prototype.
202
203 Thu Feb 22 15:56:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
204
205         * tree.def: Add GOTO_STMT.
206         * pt.c (tsubst_expr): Support goto and labels.
207         * decl.c (define_label): Support minimal parsing.
208         * parse.y (simple_stmt): Ditto.
209
210 Thu Feb 22 15:30:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
211
212         * xref.c (GNU_xref_member): Only define/set var I if
213         XREF_SHORT_MEMBER_NAMES is defined, to match when it's actually
214         used.
215         (GNU_xref_end_scope): Delete unused fifth arg TRNS.
216         (GNU_xref_end): Fix call.
217         * decl.c (poplevel, poplevel_class, finish_method): Fix calls.
218         * cp-tree.h (GNU_xref_end_scope): Fix prototype.
219
220         * tree.c (build_exception_variant): Delete unused vars I, A, T,
221         T2, and CNAME.
222         (layout_vbasetypes): Delete unused var NONVIRTUAL_VAR_SIZE.
223         (mapcar): Delete unused var CODE.
224         (build_cplus_new): Delete unused arg WITH_CLEANUP_P.
225         (break_out_cleanups): Fix call.
226         (bot_manip): Likewise.
227         * call.c (build_method_call): Likewise.
228         * cvt.c (build_up_reference, convert_to_reference, cp_convert):
229         Likewise.
230         * typeck.c (unary_complex_lvalue, build_modify_expr,
231         convert_for_initialization): Likewise.
232         * typeck2.c (build_functional_cast): Likewise.
233         * cp-tree.h (build_cplus_new): Fix prototype.
234
235         * repo.c (open_repo_file): Delete unused var Q.
236         (repo_compile_flags, repo_template_declared,
237         repo_template_defined, repo_class_defined, repo_inline_used,
238         repo_vtable_used, repo_tinfo_used): #if 0 unused fns.
239         (repo_get_id, repo_vtable_used): Declare as static. 
240         * cp-tree.h (mark_{decl,class}_instantiated, finish_repo): Add
241         prototypes.
242
243 Thu Feb 22 14:53:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
244
245         * parse.y (pending_inlines): Add function_try_block case.
246
247         * pt.c (unify): Fix for template const parms.
248
249 Thu Feb 22 13:24:15 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
250
251         * lex.c (extract_interface_info): Delete forward decl.
252         (default_copy_constructor_body, default_assign_ref_body): Delete
253         decls for non-existent functions.
254         (synth_firstobj, inline_text_firstobjs): Delete unused vars.
255         (init_lex): Delete setting them.
256         (cons_up_default_function): Delete unused vars FUNC_BUF,
257         FUNC_LEN, and COMPLEX.  Delete code setting COMPLEX.  Delete old
258         #if 0'd synth code.
259         (toplevel, expression_obstack): Delete unused extern decls.
260         (tree_node_kind): Delete unused enum.
261         (tree_node_counts, tree_node_sizes): Wrap with #ifdef
262         GATHER_STATISTICS.
263         (tree_node_kind_names): Delete unused extern decl.
264         (synth_obstack): Delete unused var.
265         (init_lex): Don't set it.
266         (init_parse): Add decl before use.
267         (reduce_count): Only define #ifdef GATHER_STATISTICS && REDUCE_LENGTH.
268         (current_unit_{name, language}): Delete unused vars. 
269         (check_newline): Don't bother setting them, just accept the #pragma.
270         * cp-tree.h (init_repo, peek_yylex): Add prototypes.
271         (current_unit_{name, language}): Delete decls.
272
273         * search.c: Wrap all of the memoized functions, macros, and
274         variables inside #ifdef GATHER_STATISTICS.
275         (lookup_field, lookup_fnfields): Likewise.
276         (init_search_processing): Likewise.
277         (reinit_search_statistics): Wrap whole function.
278         * lex.c (reinit_lang_specific): Wrap call to reinit_search_statistics.
279
280         * decl.c (finish_function): Only call pop_memoized_context if
281         GATHER_STATISTICS is defined.
282         (start_function): Likewise for push_memoized_context.
283         * class.c (pushclass, popclass): Likewise.
284
285         * cp-tree.h (CLASSTYPE_MTABLE_ENTRY): Move definition from here...
286         * search.c (CLASSTYPE_MTABLE_ENTRY): ... to here.
287
288         * cvt.c (cp_convert): Delete unused local var FORM.
289         * cp-tree.h (can_convert, can_convert_arg, real_lvalue_p): Add
290         prototypes.
291
292 Thu Feb 22 13:19:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
293
294         * pt.c (do_poplevel): Oops; really return what we get from
295         poplevel this time.
296
297 Thu Feb 22 11:41:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
298
299         * cp-tree.h (is_aggr_type): Add prototype.
300
301         * cp-tree.h ({push,pop}_cp_function_context): Add decls.
302         * method.c ({push,pop}_cp_function_context): Delete decls.
303         * except.c (start_eh_unwinder, end_eh_unwinder): Declare as void.
304         (SetUnexpected, SetTerminate): Delete unused vars.
305         (init_exception_processing): Don't set SetUnexpected or
306         SetTerminate.  Don't set SET_UNEXPECTED_FNDECL or SET_TERMINATE_FNDECL.
307         (output_exception_table_entry): Delete unused array LABEL.
308         (expand_internal_throw): Delete unused var PARAMS.
309         (expand_start_catch_block): Delete unused var CLEANUP.
310         (emit_exception_table): Delete unused var EH_NODE_DECL.
311         (expand_builtin_throw): Delete unused vars UNWIND_AND_THROW and
312         GOTO_UNWIND_AND_THROW.  Don't set them.
313         (end_eh_unwinder): Add top decl.
314         (pop_rtl_from_perm): Delete unused decl of PERMANENT_OBSTACK.
315         (exception_section, push_rtl_perm, do_function_call,
316         lang_interim_eh, push_eh_cleanup, eh_outer_context,
317         expand_end_eh_spec, end_eh_unwinder): Declare as static.
318         (saved_pc, saved_throw_type, saved_throw_value, saved_cleanup,
319         throw_used): Likewise.
320         * cp-tree.h (expand_end_eh_spec): Delete prototype.
321
322         * search.c (dfs_mark, dfs_mark_vtable_path,
323         dfs_unmark_vtable_path, dfs_mark_new_vtable,
324         dfs_unmark_new_vtable, dfs_clear_search_slot,
325         dfs_search_slot_nonempty_p, bfs_markedp, bfs_unmarkedp,
326         bfs_marked_vtable_pathp, bfs_unmarked_vtable_pathp,
327         bfs_marked_new_vtablep, bfs_unmarked_new_vtablep): #if 0 unused
328         functions.
329         (n_fields_searched, n_calls_lookup_field, n_calls_lookup_field_1,
330         n_calls_lookup_fnfields, n_calls_lookup_fnfields_1,
331         n_calls_get_base_type, n_outer_fields_searched, n_contexts_saved):
332         Only define #ifdef GATHER_STATISTICS.
333         (reinit_search_statistics): Only init some vars if GATHER_STATISTICS
334         is defined.
335         (vbase_decl): Delete var definition.
336         (init_search): Delete old decl.
337         (init_vbase_pointers): Delete building of VBASE_DECL, since it's
338         never actually used.
339         (expand_indirect_vtbls_init): Delete init of VBASE_DECL.
340         (get_base_distance_recursive): Delete unused fourth arg
341         BASETYPE_PATH.  Fix call .
342         (get_base_distance): Fix call.
343         (push_class_decls): Delete unused var ID.
344         (make_memoized_table_entry): Declare as static.
345         (breadth_first_search): Declare as static.
346         (tree_has_any_destructor_p): Declare as static.
347         (pop_class_decls): Delete unused arg pop_class_decls.
348         * class.c (popclass): Fix call to pop_class_decls.
349         * cp-tree.h (make_memoized_table_entry, breadth_first_search,
350         tree_has_any_destructor_p): Delete prototypes.
351
352         * rtti.c (build_ptmf_desc): Delete unused arg TYPE.
353         (build_t_desc): Fix call.  Delete unused vars ELEMS and TT.
354         (build_dynamic_cast): Delete unused local vars TMP1 and RETVAL.
355         (build_user_desc): Delete unused var T.
356         (build_class_desc): Delete unused vars T and OFF.
357         (build_t_desc): Delete unused var NAME_STRING.
358         (build_headof): Make static.
359         (get_bad_cast_node): Likewise.
360         (get_def_to_follow): Likewise.
361         * cp-tree.h (init_type_desc): Add prototype.
362         (build_headof): Remove prototype.
363
364 Thu Feb 22 00:54:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
365
366         * pt.c (tsubst): Only look for matching decls at file scope for
367         non-member functions.
368
369         * call.c (build_scoped_method_call): Handle scoped destructor
370         calls in templates.
371
372         * decl.c (*_top_level): Also save previous_class_values.
373
374         * pt.c (tsubst_expr): Support do {} while loops.
375         * parse.y (simple_stmt): Ditto.
376         * tree.def: Ditto.
377
378         * method.c (build_overload_identifier): For a class nested in a
379         template class, don't mangle in the template parms from our
380         context.
381
382         * lex.c, cp-tree.h: Remove support for template instantiations in
383         the pending_inlines code.
384         * pt.c: Remove dead functions and unused arguments.
385         (uses_template_parms): TYPENAME_TYPEs always use template parms.
386         * parse.y: Stop passing anything to end_template_decl.
387         * tree.c (print_lang_statistics): Only print tinst info #ifdef
388         GATHER_STATISTICS.
389
390 Wed Feb 21 16:57:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
391
392         * init.c (expand_recursive_init{,_1}): Delete decls. 
393         (sort_member_init): Delete unused var INIT.
394         (emit_base_init): Delete unused var X.
395         (build_offset_ref): Delete unused var CNAME.
396         (sort_member_init): Delete unused var FIELDS_TO_UNMARK.
397         (emit_base_init): Delete unused local var BASE.  Delete extern
398         decl of IN_CHARGE_IDENTIFIER.
399         (build_delete): Delete unused local var VIRTUAL_SIZE.
400
401         * init.c (build_vec_delete): Delete unused third arg ELT_SIZE.
402         (build_delete): Fix call.
403         * decl2.c (delete_sanity): Likewise.
404         * cp-tree.h (build_vec_delete): Update prototype.
405
406         * typeck.c (common_base_type): Delete unused var TMP.
407         (build_binary_op): Delete local var ARGS_SAVE.
408         (build_array_ref): Delete unused var ITYPE.
409         (c_expand_return): Delete unused var USE_TEMP.
410
411         * typeck.c (compexcepttypes): Delete unused arg STRICT.
412         (comptypes): Fix calls.
413         * decl.c (duplicate_decls): Likewise.
414         * cp-tree.h (compexcepttypes): Delete extra arg.
415
416         * decl2.c (check_classfn): Delete unused second arg CNAME.
417         * decl.c (start_decl, grokfndecl): Fix calls.
418         * init.c (do_friend): Likewise.
419         * cp-tree.h (check_classfn): Update prototype.
420
421         * cp-tree.h (signature_error, import_export_vtable,
422         append_signature_fields, id_in_current_class, mark_used,
423         copy_assignment_arg_p): Add decls.
424         * decl2.c (mark_used): Delete decl.
425
426         * class.c (n_*): Wrap with #ifdef GATHER_STATISTICS.
427
428         * class.c (get_vtable_entry): Diable unused function.
429         (doing_hard_virtuals): Delete unused static global var.
430         (finish_struct_1): Don't init DOING_HARD_VIRTUALS.
431         (prepare_fresh_vtable): Delete unused vars PATH and RESULT.
432         (overrides): Delete unused vars RETTYPE and BASE_RETTYPE.
433         (modify_one_vtable): Delete unused var OLD_RTTI.
434         (finish_struct_anon): Delete unused vars OFFSET and X.
435         (finish_struct_bits): Delete unused var METHOD_VEC.
436         (get_basefndecls): Delete unused var PURPOSE.  Delete unused
437         for-scope local variable METHODS.
438
439         * call.c (user_harshness): Delete unused/unneeded arg PARM.
440         (ideal_candidate): Delete unused args BASETYPE and PARMS.
441         (build_method_call): Delete unused args passed into ideal_candidate.
442         (build_overload_call_real): Likewise.  Delete unused var OVERLOAD_NAME.
443         * cp-tree.h (synthesize_method): Add decl.
444
445         * decl.c (note_level_for_for): Give void return type.
446         (pushdecl_nonclass_level): Likewise.
447         (finish_function): Delete unused vars VFIELDS and ALLOCATED_THIS.
448         (poplevel): Delete unused var IMPLICIT_TRY_BLOCK.
449         (suspend_binding_level): Delete unused var LEVEL.
450         (duplicate_decls): Delete unused var CTYPE.
451         (duplicate_decls): Delete unused var PREVIOUS_C_DECL.
452         (init_decl_processing): Delete unused vars FLOAT_ENDLINK and
453         PTR_ENDLINK.
454         (grokdeclarator): Delete unused var C.
455         (grokdeclarator): Delete unused var SIZE_VARIES.
456         (grokparms): Delete unused var SAW_VOID.
457         (start_function): Delete unused var OLDDECL.
458         (cplus_expand_expr_stmt): Delete unused var
459         REMOVE_IMPLICIT_IMMEDIATELY. 
460
461         * cp-tree.h (pushdecl_nonclass_level): Fix prototype.
462
463         * Makefile.in (CONFLICTS): Update to 12 shift/reduce.
464
465 Wed Feb 21 00:06:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
466
467         * tree.c (build_min): Set TREE_COMPLEXITY to lineno.
468         (build_min_nt): Ditto.
469         * pt.c (do_pushlevel): Emit line note.
470         (do_poplevel): Return what we get from poplevel.
471         (tsubst_expr): Set lineno from TREE_COMPLEXITY in stmt nodes.
472         * parse.y: Use do_pushlevel and do_poplevel.
473         * cp-tree.h: Declare do_poplevel.
474         
475         * cp-tree.h: Declare at_eof.
476         * decl.c (cp_finish_decl): Pass it to rest_of_decl_compilation.
477         * decl2.c (import_export_decl): Renamed from import_export_inline.
478         (finish_file): Call it to do interface handling for statics.
479         * pt.c (tsubst_copy): Call mark_used on variables and functions
480         used here.
481
482         * decl2.c (finish_file): Don't emit statics we can't generate.
483         * pt.c (instantiate_decl): Don't set interface on instantiations
484         we can't generate.
485
486         * cp-tree.h (struct tinst_level): Change 'classname' to 'decl'.
487         * tree.c (print_lang_statistics): Print max template depth.
488         * pt.c (push_tinst_level): Dump entire instantiation context.
489         (instantiate_class_template): Use it and pop_tinst_level.
490         (instantiate_decl): Ditto.
491
492         * call.c class.c cp-tree.h decl.c decl2.c error.c lex.c method.c
493         pt.c ptree.c tree.def: Remove all traces of UNINSTANTIATED_P_TYPE.
494
495 Tue Feb 20 18:21:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
496
497         * call.c class.c cp-tree.h cvt.c decl.c decl2.c error.c expr.c
498         init.c lex.c method.c parse.y pt.c repo.c search.c spew.c tree.c
499         tree.def typeck.c typeck2.c xref.c: Massive, systemic changes for
500         the new template implementation.
501
502 Tue Feb 20 17:14:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
503
504         * decl2.c (check_cp_case_value): Use STRIP_TYPE_NOPS.
505
506 Thu Feb 15 18:44:42 1996  Mike Stump  <mrs@cygnus.com>
507
508         * decl.c (cp_finish_decl): Delay emitting the debug information for
509         a typedef that has been installed as the canonical typedef, if the
510         type has not yet been defined.
511
512 Thu Feb 15 09:39:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
513
514         * decl2.c (grokfield): Still call pop_nested_class for access decls.
515
516 Wed Feb 14 17:30:04 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
517
518         * decl.c (lookup_label): Call label_rtx.
519
520         * decl.c (make_binding_level): New function.
521         (pushlevel, pushlevel_class): Call it instead of explicit
522         duplicate calls to xmalloc.
523
524         * decl.c (init_decl_processing): Delete useless build_pointer_type
525         call.
526
527         * decl.c (float_ftype_float, ldouble_ftype_ldouble): Add definitions.
528         (sizet_ftype_string): Delete variable.
529         (init_decl_processing): Add built-in functions fabsf, fabsl,
530         sqrtf, sqrtl, sinf, sin, sinl, cosf, cos, cosl.  New local
531         variable strlen_ftype, used for strlen.
532
533 Wed Feb 14 16:21:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
534
535         * decl.c (push_to_top_level): Start from current_binding_level
536         again for now; the stl hacks depend on g++ being broken in this
537         way, and it'll be fixed in the template rewrite.
538
539         * tree.def: Add USING_DECL.
540         * decl2.c (do_class_using_decl): Implement.
541         (grokfield): Pass access decls off to do_class_using_decl instead of
542         grokdeclarator.
543         * error.c (dump_decl): Handle USING_DECLs.
544         * decl.c (grokdeclarator): Remove code for handling access decls.
545         * class.c (finish_struct_1): Adjust accordingly, treat using-decls
546         as access decls for now.
547         (finish_struct): Don't check USING_DECLs for other uses of the name.
548
549         * search.c (get_matching_virtual): Use cp_error_at.
550
551 Wed Feb 14 10:36:58 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
552
553         * typeck.c (comptypes): Default COMP_TYPE_ATTRIBUTES to 1, to
554         match c-typeck.c.
555         (self_promoting_args_p): Move the check that TYPE is non-nil
556         before trying to look at its main variant.
557         (unsigned_type, signed_type): Add checking of DI/SI/HI/QI nodes.
558
559         * cp-tree.h (DECL_WAITING_FRIENDS, SET_DECL_WAITING_FRIENDS):
560         Delete macros.
561         * init.c (xref_friend, embrace_waiting_friends): Delete functions.
562         (do_friend): Delete call to xref_friend.
563         * class.c (finish_struct_1): Delete call to embrace_waiting_friends.
564
565         * typeck.c (convert_sequence): #if 0 unused function.
566
567         * cp-tree.h (DECL_IN_MEMORY_P): New macro w/ the check that used to
568         be in decl_in_memory_p.
569         (decl_in_memory_p): Delete decl.
570         * expr.c (decl_in_memory_p): Delete fn.
571         * typeck.c (mark_addressable): Use DECL_IN_MEMORY_P.
572
573         * decl.c (cp_finish_decl): Use DECL_IN_MEMORY_P.
574
575 Tue Feb 13 12:51:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
576
577         * class.c (finish_struct_1): Check for a pure-specifier on a
578         non-virtual function here.
579
580         * decl2.c (grok_function_init): Don't check whether the function
581         is virtual here.
582         (grokfield): Don't call check_for_override here.
583
584         * decl.c (push_to_top_level): Start from inner_binding_level,
585         check class_shadowed in class levels.
586
587 Mon Feb 12 17:46:59 1996  Mike Stump  <mrs@cygnus.com>
588
589         * decl.c (resume_level): Ignore things that don't have names, instead
590         of core dumping.
591
592 Mon Feb 12 15:47:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
593
594         * decl2.c (grokfield): Set DECL_VINDEX properly for FUNCTION_DECLs.
595
596 Sat Feb 10 17:59:45 1996  Jason Merrill  <jason@yorick.cygnus.com>
597
598         * class.c (finish_struct_1): Set DECL_VINDEX properly on a
599         synthesized dtor.
600
601         * parse.y (complete_type_name): Bind global_scope earlier.
602         (complex_type_name): Ditto.
603         (qualified_type_name): Remove.
604
605 Thu Feb  8 15:15:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
606
607         * decl.c (grokfndecl): Move code that looks for virtuals in base
608         classes...
609         * class.c (check_for_override): ... to a new function.
610         (finish_struct_1): Call it.
611
612         * cp-tree.h: Declare warn_sign_compare.
613
614         * typeck.c (build_binary_op_nodefault): Check warn_sign_compare
615         rather than extra_warnings to decide whether to warn about
616         comparison of signed and unsigned.
617
618         * decl2.c (lang_decode_option): Handle warn_sign_compare.  -Wall
619         implies -Wsign-compare.  -Wall doesn't imply -W.
620
621 Wed Feb  7 15:27:57 1996  Mike Stump  <mrs@cygnus.com>
622
623         * typeck.c (build_component_ref): Fix to handle anon unions in base
624         classes as well.
625
626 Wed Feb  7 14:29:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
627
628         * class.c (resolves_to_fixed_type_p): Delete code dealing with
629         a WITH_CLEANUP_EXPR, since we don't generate them any more.
630         * cvt.c (build_up_reference): Likewise.
631         * decl.c (grok_reference_init): Likewise.
632         (cp_finish_decl): Likewise.
633         * error.c (dump_expr): Likewise.
634         * tree.c (real_lvalue_p): Likewise.
635         (lvalue_p): Likewise.
636         (build_cplus_new): Likewise.
637         (unsave_expr_now): Likewise.
638         * typeck.c (unary_complex_lvalue, build_modify_expr,
639         c_expand_return): Likewise.
640
641 Tue Feb  6 13:39:22 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
642
643         Make the C++ front-end pay attention to attributes for structures.
644         * class.c (finish_struct): New argument ATTRIBUTES, passed down into
645         finish_struct_1.
646         (finish_struct_1): New argument ATTRIBUTES; call cplus_decl_attributes.
647         Take out old round_up_size use and setting the DECL_ALIGN possibly
648         using it.  Take out setting of TYPE_ALIGN to round_up_size, which
649         can override what the attribute set.
650         * cp-tree.h (finish_struct): Update prototype.
651         * parse.y (template_instantiate_once): Pass a NULL_TREE for the
652         attributes to finish_struct.
653         (structsp): For a CLASS decl, add maybe_attribute to rule and pass that
654         value down into finish_struct.
655         * Makefile.in (CONFLICTS): Switch to 7 shift/reduce conflicts.
656
657 Tue Feb  6 13:12:15 1996  Per Bothner  <bothner@kalessin.cygnus.com>
658
659         * decl.c (poplevel):  Re-word dead for local handling.
660         (pushdecl):  Remove useless DECL_DEAD_FOR_LOCAL test.
661         (cp_finish_decl):  If is_for_scope, check for duplicates so
662         we can disable is_for_scope.  Otherwise, preserve_temp_slots.
663
664         * lex.c (do_identifier):  Use global binding in preference of
665         dead for local variable.
666
667 Mon Feb  5 17:46:46 1996  Mike Stump  <mrs@cygnus.com>
668
669         * init.c (initializing_context): Handle anon union changes, the
670         context where fields of anon unions can be initialized now has to be
671         found by walking up the TYPE_CONTEXT chain.
672
673 Fri Feb  2 14:54:04 1996  Doug Evans  <dje@charmed.cygnus.com>
674
675         * decl.c (start_decl): #ifdef out code to set DECL_COMMON
676         if ASM_OUTPUT{,_ALIGNED}_BSS is defined.
677         (obscure_complex_init): If bss is supported, always set
678         DECL_INITIAL to error_mark_node.
679
680 Thu Feb  1 16:19:56 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
681
682         * init.c (is_friend): Make sure there's a context before we see if
683         it's an aggr type.
684
685 Thu Feb  1 15:44:53 1996  Mike Stump  <mrs@cygnus.com>
686
687         * init.c (is_friend): Classes are not friendly with nested classes.
688
689 Thu Feb  1 15:27:37 1996  Doug Evans  <dje@charmed.cygnus.com>
690
691         * lex.c (check_newline): Pass last character read to HANDLE_PRAGMA,
692         and record its result.
693
694 Thu Feb  1 09:27:01 1996  Mike Stump  <mrs@cygnus.com>
695
696         * class.c (finish_struct_anon): Switch around code to not move anon
697         union elements around, nor mess up their contexts, nor offsets,
698         instead we now build up the right number of COMPONENT_REFs for all
699         the anon unions that may be present at build_component_ref time.
700         * typeck.c (lookup_anon_field): New routine to handle field lookup
701         on fields without names.  We find them, based upon their unique type
702         instead.
703         * typeck.c (build_component_ref): Allow FIELD_DECL components.
704         Handle finding components in anonymous unions, and ensure that a
705         COMPONENT_REF is built for each level as necessary.
706
707 Tue Jan 30 18:18:23 1996  Mike Stump  <mrs@cygnus.com>
708
709         * cvt.c (build_up_reference): Make the INDIRECT_BIND case come after
710         code that ensures that copy ctors are used if appropriate.
711
712 Tue Jan 30 17:35:14 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
713
714         * init.c (build_vec_delete): Only give an error if base isn't an
715         error_mark_node.
716
717 Mon Jan 29 17:09:06 1996  Mike Stump  <mrs@cygnus.com>
718
719         * spew.c (do_aggr): `new struct S;' isn't a forward declaration.
720         (yylex): If we see `new', keep slurping.
721
722 Thu Jan 25 18:31:36 1996  Mike Stump  <mrs@cygnus.com>
723
724         * class.c (finish_struct_1): Move code for handling anon unions...
725         (finish_struct_anon): to here.  Fixup so that we do the offset
726         calculations right, and so that the fields are physically moved to
727         the containers's chain.
728
729 Thu Jan 25 18:27:37 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
730
731         * decl.c (grokdeclarator): Avoid trying to get an operand off an
732         identifier node.
733
734 Wed Jan 24 11:25:30 1996  Jim Wilson  <wilson@chestnut.cygnus.com>
735
736         * typeck.c (pointer_int_sum): Use TYPE_PRECISION (sizetype) not
737         POINTER_SIZE to agree with expr.c.
738
739 Thu Jan 25 13:01:23 1996  Mike Stump  <mrs@cygnus.com>
740
741         * search.c (lookup_field): Don't report ambiguities if protect is 0,
742         instead return NULL_TREE.
743
744 Wed Jan 24 13:01:26 1996  Mike Stump  <mrs@cygnus.com>
745
746         * class.c (finish_struct_1): Call warn_hidden if we want warnings
747         about overloaded virtual functions.
748         (warn_hidden): New routine to warn of virtual functions that are
749         hidden by other virtual functions, that are not overridden.
750         (get_basefndecls): New routine, used by warn_hidden.
751         (mark_overriders): New routine, used by warn_hidden.
752         * search.c (get_matching_virtual): Remove old warning that just
753         isn't very useful.
754
755 Tue Jan 23 12:26:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
756
757         * decl.c (output_builtin_tdesc_entries): #if 0 the function definition.
758
759         * typeck.c (null_ptr_cst_p): Delete unused fn.
760         (build_function_call_maybe): Delete unused fn.
761
762         * expr.c (extract_init): #if 0 the code after unconditional return 0
763         for now.
764
765         Delete old cadillac code.
766         * edsel.c: Remove file.
767         * Make-lang.in (CXX_SRCS): Take edsel.c off the list.
768         * Makefile.in (CXX_OBJS): Delete edsel.o.
769         (edsel.o): Delete rule.
770         * cp-tree.h (flag_cadillac): Delete var decl.
771         * lang-options.h: Delete "-fcadillac" and "-fno-cadillac".
772         * decl2.c (flag_cadillac): Delete var definition.
773         (lang_decode_option): Delete handling of -fcadillac and -fno-cadillac.
774         (grokfield): Delete code depending on flag_cadillac.
775         (finish_anon_union): Likewise.
776         * class.c (finish_struct_1): Likewise.
777         (pushclass): Likewise.
778         (popclass): Likewise.
779         (push_lang_context): Likewise.
780         (pop_lang_context): Likewise.
781         * decl.c (init_decl_processing): Likewise.
782         (start_decl): Likewise.
783         (cp_finish_decl): Likewise.
784         (xref_tag): Likewise.
785         (finish_enum): Likewise.
786         (start_function): Likewise.
787         (finish_function): Likewise.
788         (finish_stmt): Likewise.
789         * lex.c (lang_init): Likewise.
790         (check_newline): Likewise.
791
792         * lex.c (do_pending_inlines): Delete synthesized method kludge.
793
794         Delete defunct, ancient garbage collection implementation.
795         * rtti.c: New file with the RTTI stuff from gc.c.
796         * gc.c: Removed file (moved the remaining stuff into rtti.c).
797         * Makefile.in (CXX_OBJS): Replace gc.o with rtti.o.
798         (rtti.o): New rule, replacing gc.o.
799         * Make-lang.in (CXX_SRCS): Replace gc.c with rtti.c.
800         * cp-tree.h: Delete gc-related fn decls.
801         (DECL_GC_OFFSET): Delete macro.
802         (flag_gc): Delete extern decl.
803         * decl.c (current_function_obstack_index): Delete var decl.
804         (current_function_obstack_usage): Delete var decl.
805         (start_function): Delete clearing of current_function_obstack_index
806         and current_function_obstack_usage.
807         (init_decl_processing): Delete code relying on -fgc.
808         Delete call to init_gc_processing.
809         (cp_finish_decl): Delete calls to build_static_gc_entry and
810         type_needs_gc_entry.  Delete gc code setting DECL_GC_OFFSET.
811         (store_parm_decls): Delete -fgc calls to cp_expand_decl_cleanup
812         and to expand_expr of a __gc_main call.
813         (maybe_gc_cleanup): Delete var decl.
814         (finish_function): Delete call to expand_gc_prologue_and_epilogue.
815         * decl2.c (flag_gc): Delete var decl.
816         (lang_f_options): Delete offering of -fgc.
817         (lang_decode_option): Delete -fgc and -fno-gc handling.
818         (get_temp_regvar): Delete gc code.
819         * init.c (build_new): Delete gc code.
820         * lex.c (init_lex): Delete checking of flag_gc.
821
822         * typeck.c (convert_arguments): Delete gc code.
823         (build_component_addr): Delete -fgc warning.
824         (build_modify_expr): Delete gc code.
825
826         * decl2.c (build_push_scope): Delete fn.
827         * cp-tree.h (build_push_scope): Delete decl.
828
829         * search.c (clear_search_slots): Delete fn.
830         * cp-tree.h (clear_search_slots): Delete decl.
831
832         * search.c (tree_needs_constructor_p): Delete fn.
833         * cp-tree.h (tree_needs_constructor_p): Delete decl.
834
835         * tree.c (id_cmp): Delete fn.
836
837         * tree.c (set_fnaddr_from_vtable_entry): Delete fn.
838         * cp-tree.h (set_fnaddr_from_vtable_entry): Delete decl.
839
840         * tree.c (decl_value_member): Delete fn.
841         * cp-tree.h (decl_value_member): Delete decl.
842
843         * tree.c (list_hash_lookup_or_cons): Delete fn.
844         * cp-tree.h (list_hash_lookup_or_cons): Delete decl.
845
846         * method.c (cplus_exception_name): Delete fn.
847         (EXCEPTION_NAME_{PREFIX, LENGTH}): Delete macros.
848
849         * spew.c (shift_tokens): Delete fn.
850
851 Mon Jan 22 17:49:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
852
853         * except.c (init_exception_processing): Pass 1 to needs_pop in calls
854         to cp_finish_decl.
855         * parse.y: Ditto.
856
857 Mon Jan 22 17:34:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
858
859         * tree.c (build_cplus_staticfn_type): Delete function definition;
860         never used.
861         * cp-tree.h (build_cplus_staticfn_type): Delete decl.
862
863         * tree.c (virtual_member): Delete function definition; never used.
864         * cp-tree.h (virtual_member): Delete decl.
865
866 Fri Jan 19 18:03:14 1996  Mike Stump  <mrs@cygnus.com>
867
868         * typeck.c (build_component_ref): Handle getting vbase pointers
869         out of complex multiple inheritance better.
870
871 Fri Jan 19 16:27:40 1996  Mike Stump  <mrs@cygnus.com>
872
873         * typeck.c (build_object_ref): Make sure we use the real type, not
874         any reference type.
875
876 Fri Jan 19 16:01:47 1996  Mike Stump  <mrs@cygnus.com>
877
878         * tree.c (build_exception_variant): Don't create new types if we
879         don't have to, also build new types on the right obstack.
880
881 Fri Jan 19 14:09:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
882
883         * decl.c (store_bindings): Split out from push_to_top_level.
884         (push_to_top_level): Call it for b->type_shadowed on class binding
885         levels.
886
887 Fri Jan 19 13:53:14 1996  Mike Stump  <mrs@cygnus.com>
888
889         * search.c (expand_upcast_fixups): Fix so that offsets stored in
890         vbase_offsets are always right.  Fixes a problem where virtual base
891         upcasting and downcasting could be wrong during conversions on this
892         during virtual function dispatch at ctor/dtor time when dynamic
893         vtable fixups for deltas are needed.  This only sounds easier than
894         it is.  :-)
895         (fixup_virtual_upcast_offsets): Change to reflect new calling
896         convention for expand_upcast_fixups.
897
898 Fri Jan 19 12:23:08 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
899
900         * decl2.c (grokbitfield): Strip the NOPs from WIDTH before we
901         check that it's usable as the bitfield width.
902
903 Wed Jan 17 21:22:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
904
905         * decl2.c (grokfield): Call cplus_decl_attributes with the attrlist.
906         Pass a null tree to grokdeclarator for its ATTRLIST arg, since it's
907         only ever used for functions in it.
908
909 Wed Jan 17 12:10:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
910
911         * parse.y (qualified_type_name): Use the TYPE_DECL, not the type.
912         (nested_type): Ditto.
913         (nested_name_specifier): Use lastiddecl.
914
915         * decl.c (grokdeclarator): Adjust accordingly.
916         * init.c (expand_member_init): Ditto.
917         * parse.y (base_class): Ditto.
918         * typeck2.c (build_functional_cast): Ditto.
919
920         * typeck2.c (build_functional_cast): Fill in name after we've
921         checked for non-aggr type.
922
923 Wed Jan 17 10:18:01 1996  Mike Stump  <mrs@cygnus.com>
924
925         * decl2.c (warn_pointer_arith): Default to on.
926
927 Tue Jan 16 12:45:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
928
929         * lex.c (is_rid): New function.
930         * decl.c (grokdeclarator): Diagnose reserved words used as
931         declarator-ids.
932
933 Tue Jan 16 11:39:40 1996  Jason Merrill  <jason@yorick.cygnus.com>
934
935         * tree.c (get_decl_list): Don't lose cv-quals.
936
937         * decl.c (grokdeclarator): Fix SCOPE_REF handling and diagnose
938         typespecs used as declarator-ids.
939
940 Tue Jan 16 11:09:42 1996  Mike Stump  <mrs@cygnus.com>
941
942         * decl.c (poplevel): When poping a level, don't give a warning for
943         any subblocks that already exist.
944
945 Tue Jan 16 00:25:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
946
947         * typeck.c (build_object_ref): Finish what I started.
948
949         * parse.y (qualified_type_name): Don't check TYPE_BUILT_IN.
950
951         * decl2.c (constructor_name_full): Handle TEMPLATE_TYPE_PARMs.
952
953         * decl.c (grokdeclarator): Also accept TEMPLATE_TYPE_PARM as a
954         scope.
955
956 Mon Jan 15 16:19:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
957
958         * decl.c (xref_tag): Handle passing a type in directly.
959
960         * parse.y (qualified_type_name): Pull out the type.
961         (nested_type): Ditto.
962         Take types directly instead of as identifiers.
963         * call.c (build_scoped_method_call): Take types directly instead of
964         as identifiers.
965         * decl.c (xref_basetypes): Ditto.
966         * init.c (expand_member_init): Ditto.
967         (build_member_call): Ditto.
968         (build_offset_ref): Ditto.
969         * typeck2.c (build_scoped_ref): Ditto, remove bogus code.
970         * method.c (do_build_assign_ref): Ditto.
971         * decl.c (grokdeclarator): Handle a type appearing as the
972         declarator-id for constructors.
973         * method.c (do_build_copy_constructor): current_base_init_list now
974         uses the types directly, not their names.
975         * init.c (sort_base_init): Ditto.
976         (expand_member_init): Ditto.
977         * init.c (is_aggr_type): New function, like is_aggr_typedef.
978
979 Mon Jan 15 08:45:01 1996  Jeffrey A Law  (law@cygnus.com)
980
981         * tree.c (layout_basetypes): Call build_lang_field_decl instead
982         of build_lang_decl if first arg is a FIELD_DECL.
983         (tree_copy_lang_decl_for_deferred_output): Reverse test for when
984         to copy DECL_MAIN_VARIANT and DECL_CHAIN.
985
986 Thu Jan 11 14:55:07 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
987
988         * decl.c (cp_finish_decl): Only clear TREE_USED if DECL_NAME is
989         non-empty.
990         * except.c (expand_start_catch_block): Set TREE_USED to avoid
991         warnings about the catch handler.
992
993 Mon Jan  8 17:35:12 1996  Jason Merrill  <jason@yorick.cygnus.com>
994
995         * typeck.c (build_modify_expr): Use a COMPOUND_EXPR instead of
996         expand_target_expr.
997
998 Thu Jan  4 12:30:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
999
1000         Fix access control to use trees rather than integers.
1001         * class.c (access_{default, public, protected, private,
1002         default_virtual, public_virtual, private_virtual}_node): Add
1003         definitions.
1004         (init_class_processing): Do creation of those nodes.
1005         * cp-tree.h (access_type): Delete enum decl.
1006         (access_{default, public, protected, private, default_virtual,
1007         public_virtual, private_virtual}_node): Add decls.
1008         (compute_access): Change return type.
1009         * search.c (compute_access): Have tree return type, instead of enum.
1010         (lookup_field): Declare THIS_V and NEW_V to be tree nodes.
1011         * lex.c (real_yylex): Use yylval.ttype for giving the value of the
1012         access_* node for each of RID_{PUBLIC, PRIVATE, PROTECTED}.
1013         * parse.y (VISSPEC): Make ttype rather than itype.
1014         (base_class_access_list): Likewise.
1015         * *.[cy]: Change all refs of `access_public' to `access_public_node',
1016         etc.
1017         * call.c (build_method_call): Make ACCESS be a tree.
1018         * class.c (alter_access, finish_struct_1, filter_struct): Likewise.
1019         * cvt.c (convert_to_aggr): Likewise.
1020         * init.c (build_offset_ref, resolve_offset_ref, build_delete):
1021         Likewise.
1022         * method.c (hack_identifier): Likewise.
1023         * typeck.c (build_component_ref_1, build_component_ref): ): Likewise.
1024
1025 Thu Jan  4 11:02:20 1996  Mike Stump  <mrs@cygnus.com>
1026
1027         * typeck.c (pointer_int_sum, pointer_diff): Make code agree with C
1028         frontend, and make it more consistent with respect to
1029         warn_pointer_arith.
1030
1031 Tue Jan  2 00:13:38 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
1032
1033         * decl.c (pushdecl): Check for duplicate parameter names.
1034
1035 Wed Jan  3 09:25:48 1996  Mike Stump  <mrs@cygnus.com>
1036
1037         * decl.c (expand_static_init): Call assemble_external for atexit.
1038
1039 Wed Jan  3 07:55:19 1996  Mike Stump  <mrs@cygnus.com>
1040
1041         * except.c (do_unwind): Remove some generated dead code.
1042         (eh_outer_context): New routine, factor out some common code from
1043         expand_builtin_throw and end_eh_unwinder.  Add code to do return
1044         address masking for the PA.
1045         (expand_builtin_throw): Use eh_outer_context instead of open coding
1046         it here.
1047         (end_eh_unwinder): Ditto.
1048
1049 Tue Jan  2 17:00:56 1996  Mike Stump  <mrs@cygnus.com>
1050
1051         * except.c (expand_throw): Call assemble_external for __empty, if we
1052         use it.
1053
1054 Thu Dec 28 11:13:15 1995  Mike Stump  <mrs@cygnus.com>
1055
1056         * except.c (expand_builtin_throw): Use RETURN_ADDR_OFFSET instead of
1057         NORMAL_RETURN_ADDR_OFFSET.
1058         (end_eh_unwinder): Ditto.
1059
1060 Wed Dec 27 22:18:16 1995  Mike Stump  <mrs@cygnus.com>
1061
1062         * gc.c (build_dynamic_cast): Make sure we don't cast away const
1063         when dealing with references, and make sure we handle dynamic
1064         casting to a cv qualified reference.
1065
1066 Thu Dec 21 23:50:35 1995  Mike Stump  <mrs@cygnus.com>
1067
1068         * except.c (struct eh_context): New structure top hold eh context
1069         information.
1070         (push_eh_context): New routine.
1071         (pop_eh_context): Ditto.
1072         * decl.c (push_cp_function_context): Use them.
1073         (pop_cp_function_context): Ditto.
1074
1075 Wed Dec 20 12:42:51 1995  Jason Merrill  <jason@yorick.cygnus.com>
1076
1077         * decl2.c (finish_file): Also prune uninteresting functions in the
1078         inline emission loop.
1079
1080 Wed Dec 20 02:32:07 1995  Jeffrey A Law  (law@cygnus.com)
1081
1082         * sig.c (build_signature_table_constructor): Mark functions
1083         in the signature as referenced.
1084
1085 Tue Dec 19 22:36:56 1995  Jason Merrill  <jason@yorick.cygnus.com>
1086
1087         * decl2.c (finish_file): Do all the vtable/synthesis stuff before
1088         the inline emission stuff.
1089
1090 Mon Dec 18 15:51:33 1995  Jason Merrill  <jason@yorick.cygnus.com>
1091
1092         * cp-tree.h, decl2.c (flag_weak): New flag to control the use of
1093         weak symbols.   
1094         * lang-options.h: Add -f{no-,}weak.
1095         * decl.c (init_decl_processing): If the target does not support weak
1096         symbols, don't use them.
1097         * decl2.c, pt.c: s/SUPPORTS_WEAK/flag_weak/.
1098
1099 Sun Dec 17 21:13:23 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
1100
1101         * init.c (expand_member_init): warning for base init after members.
1102
1103 Sun Dec 17 22:06:56 1995  Jeffrey A Law  (law@cygnus.com)
1104
1105         * tree.c (tree_copy_lang_decl_for_deferred_output): Handle
1106         CONST_DECLs correctly.
1107
1108 Fri Dec 15 15:32:18 1995  Jason Merrill  <jason@yorick.cygnus.com>
1109
1110         * cvt.c (build_expr_type_conversion): Don't convert to a reference
1111         type.
1112
1113 Thu Dec 14 16:05:58 1995  Mike Stump  <mrs@cygnus.com>
1114
1115         * method.c (report_type_mismatch): Improve wording for volatile
1116         mismatches.
1117
1118 Thu Dec 14 14:16:26 1995  Mike Stump  <mrs@cygnus.com>
1119
1120         * init.c (expand_aggr_init_1): Use expand_aggr_init_1 instead of
1121         expand_assignment, as the later doesn't handle things that have
1122         copy constructors well.  The compiler would do bitwise copying,
1123         instead of ctor calling in some cases.
1124
1125 Wed Dec 13 17:05:54 PST 1995  Paul Eggert  <eggert@twinsun.com>
1126
1127         * g++.c (my_strerror): Return "cannot access" if errno is 0.
1128         (pfatal_with_name, perror_exec): Don't assume that
1129         the returned value from my_strerror contains no '%'s.
1130         (concat): Remove.
1131         (sys_nerror): Declare only if HAVE_STRERROR is not defined.
1132
1133 Wed Dec 13 16:22:38 1995  Jason Merrill  <jason@yorick.cygnus.com>
1134
1135         Lose CLASSTYPE_METHODS/DECL_NEXT_METHOD chain; make
1136         TYPE_METHODS/TREE_CHAIN mean what they used to. 
1137         * decl2.c (constructor_name_full): Refer to CLASSTYPE_METHOD_VEC
1138         instead of TYPE_METHODS.
1139         * decl.c (duplicate_decls): Lose references to DECL_NEXT_METHOD.
1140         * tree.c (tree_copy_lang_decl_for_deferred_output): Ditto.
1141         * cp-tree.h (CLASSTYPE_METHODS): Lose.
1142         (CLASSTYPE_METHOD_VEC): Point to lang_spec->methods instead of
1143         TYPE_METHODS.
1144         (struct lang_decl): Lose next_method field.
1145         (DECL_NEXT_METHOD): Lose.
1146         * class.c (finish_struct_methods): Don't mess with TYPE_METHODS.
1147         (finish_struct): Just use TYPE_METHODS; we don't need fn_fields
1148         anymore.
1149         (finish_struct_methods): Don't mess with the TREE_CHAINs in
1150         fn_fields.
1151
1152         * search.c (add_conversions): Don't use TREE_CHAIN to traverse method
1153         vector.
1154
1155         * call.c (build_method_call): Synthesize here even when not inlining.
1156         * typeck.c (build_function_call_real): Ditto.
1157
1158 Wed Dec 13 15:02:39 1995  Ian Lance Taylor  <ian@cygnus.com>
1159
1160         * cp/lex.c (check_newline): If DBX_DEBUGGING_INFO and write_symbols
1161         == DBX_DEBUG, call dbxout_start_new_source_file and
1162         dbxout_resume_previous_source_file when appropriate.
1163
1164 Tue Dec 12 20:38:55 1995  Mike Stump  <mrs@cygnus.com>
1165
1166         * except.c (start_anon_func): Push to the top level.
1167         (end_anon_func): Pop from the top level.
1168
1169 Mon Dec 11 18:56:14 1995  Mike Stump  <mrs@cygnus.com>
1170
1171         * cp-tree.h (build_cleanup): New routine to build cleanups.
1172         * decl.c (expand_static_init): Use build_cleanup to build a cleanup
1173         call at ctor time and use atexit to run it later.
1174         * decl2.c (build_cleanup): New routine, taken from finish_file.
1175         (finish_file): Use build_cleanup instead, and don't put function
1176         local statics in global dtor list.
1177         
1178 Wed Dec  6 14:34:29 1995  Mike Stump  <mrs@cygnus.com>
1179
1180         * except.c (expand_throw): Ensure that we have cleanups, if we try
1181         and expand cleanups.
1182
1183 Wed Dec  6 11:48:21 1995  Mike Stump  <mrs@cygnus.com>
1184
1185         * except.c (expand_throw): Add logic to manage dynamic cleanups for
1186         the EH object.
1187         (expand_end_catch_block): Use the magic of expand_goto, instead of
1188         emit_jump so that we get the cleanup for any catch clause parameter
1189         and the cleanup for the exception object.  Update to reflect label
1190         changes.
1191         (push_eh_cleanup): New routine to register a cleanup for an
1192         exception object.
1193         (empty_fndecl): Used to default cleanup actions to
1194         nothing.
1195         (init_exception_processing): Setup empty_fndecl.  Setup
1196         saved_cleanup.
1197         (expand_start_catch_block): Update to reflect label changes.  Call
1198         push_eh_object to register the cleanup for the EH object.
1199         (start_anon_func): New routine to start building lambda expressions
1200         from trees.
1201         (end_anon_func): New routine to end them.
1202         (struct labelNode): Change so that we can use tree labels, or rtx
1203         labels.
1204         (saved_cleanup): Object to check for dynamic cleanups for the
1205         exception handling object.
1206         (push_label_entry): Change so that we can use tree labels, or rtx
1207         labels.
1208         (pop_label_entry): Ditto.
1209         (top_label_entry): Ditto.
1210         (expand_start_all_catch): Use tree label instead of rtx label, so
1211         that we can get the magic of expand_goto.
1212         (expand_end_all_catch): Update to reflect label changes.
1213
1214         * class.c (build_vfn_ref): Remove building_cleanup logic, as we now
1215         use UNSAVE_EXPRs.
1216         typeck.c (get_member_function_from_ptrfunc): Remove remnants of
1217         building_cleanup logic, as we now use UNSAVE_EXPRs.
1218         * cp-tree.h (unsave_expr): Declare it.
1219         * decl.c (building_cleanup): Remove.
1220         (maybe_build_cleanup): Remove building_cleanup logic, and use
1221         UNSAVE_EXPR instead.
1222
1223 Sun Dec  3 01:34:58 1995  Mike Stump  <mrs@cygnus.com>
1224
1225         * gc.c (build_t_desc): Update error message to say <typeinfo>.
1226
1227 Thu Nov 30 12:30:05 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
1228
1229         * decl.c (pushdecl): Only warn about shadowing a local variable if
1230         warn_shadow is true.
1231
1232 Sun Nov 26 16:06:55 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
1233
1234         * typeck.c (build_binary_op_nodefault): Added warning about
1235         comparisons between different enum types with -Wall, unless
1236         -fenum-int-equiv set.
1237
1238 Wed Nov 22 15:44:02 1995  Mike Stump  <mrs@cygnus.com>
1239
1240         * class.c (finish_struct_1): Skip down to the inner type in
1241         multidimensional arrays.  Ensures ctors will be made for types that
1242         need constructing.
1243
1244 Wed Nov 22 14:19:22 1995  Mike Stump  <mrs@cygnus.com>
1245
1246         * decl.c (last_dtor_insn): New to track the last compiler generated
1247         insn in a dtor.
1248         (store_parm_decls): Set it.
1249         (finish_function): Use it to see if the dtor is empty.  Avoid doing
1250         vtable setup all the time, if we can.
1251         (struct cp_function): Add last_dtor_insn.
1252         (push_cp_function_context): Save it.
1253         (pop_cp_function_context): Restore it.
1254
1255 Wed Nov 22 11:52:19 1995  Paul Russell  <Rusty.Russell@adelaide.maptek.com.au>
1256
1257         * typeck.c (build_unary_op): Set TREE_NO_UNUSED_WARNING to avoid
1258         warnings.
1259
1260 Tue Nov 21 17:15:23 1995  Mike Stump  <mrs@cygnus.com>
1261
1262         * typeck.c (expand_target_expr): Make sure targets get put into the
1263         current temp_slot_level, so that the free_temp_slots call will reuse
1264         them.
1265
1266 Tue Nov 21 13:32:03 1995  Mike Stump  <mrs@cygnus.com>
1267
1268         * class.c (finish_struct_1): Delay delta fixups for virtual bases
1269         until after we have done the hard virtuals, to avoid a bogus `every
1270         virtual function must have a unique final overrider' for virtual
1271         functions that are only overridden by hard virtuals.
1272
1273 Thu Nov  9 13:35:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
1274
1275         * pt.c (do_function_instantiation): Don't try to find a file-scope
1276         template for a member function.
1277
1278 Tue Nov 14 06:20:35 1995  Mike Stump  <mrs@cygnus.com>
1279
1280         * g++.c (main): Add handling of -nodefaultlibs.
1281
1282 Mon Nov 13 15:45:34 1995  Mike Stump  <mrs@cygnus.com>
1283
1284         * cp-tree.h (INDIRECT_BIND): Add a way for the frontend to
1285         distinguish between direct bindings of reference variables, and
1286         indirect bindings of reference variables.
1287         * cvt.c (build_up_reference): Use it.
1288         * typeck.c (convert_arguments): Use it to indicate this is an
1289         indirect binding.
1290         * decl.c (cp_finish_decl): Ensure that we reuse stack slots as fast
1291         as they are unused.
1292         (expand_static_init): Diotto.
1293         (cplus_expand_expr_stmt): Ditto.
1294         * decl2.c (finish_file): Ditto.
1295         * init.c (perform_member_init): Ditto.
1296         (emit_base_init): Ditto.
1297         (expand_aggr_vbase_init_1): Ditto.
1298
1299 Fri Nov 10 09:19:31 1995  Jeffrey A Law  (law@cygnus.com)
1300
1301         * tree.c (tree_copy_lang_decl_for_deferred_output): Handle
1302         copying of DECL_ARGUMENTS field.
1303         (tree_copy_lang_type_for_deferred_output): Handle disgusting
1304         re-use of TYPE_LANG_SPECIFIC for pointer to member function
1305         type nodes.
1306
1307 Fri Nov 10 09:18:09 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
1308
1309         * decl.c (push_namespace): Rewrite to use build_lang_decl, so we
1310         get a DECL_LANG_SPECIFIC node.
1311         * cp-tree.h (lang_decl_flags): Add new member `level'.
1312         (NAMESPACE_LEVEL): Don't use decl.arguments, instead use the
1313         decl_flags level member.
1314
1315 Mon Nov  6 18:36:13 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
1316
1317         * call.c (build_method_call): Make sure instance has a
1318         TYPE_LANG_SPECIFIC node before we dive into it.  
1319
1320 Sat Nov  4 20:01:52 1995  Jason Molenda  (crash@phydeaux.cygnus.com)
1321
1322         * method.c (make_thunk): use TREE_SET_CODE to set thunk's tree code.
1323
1324 Thu Nov  2 17:56:57 1995  Mike Stump  <mrs@cygnus.com>
1325
1326         * decl.c (duplicate_decls): When smashing decls, smash staticness in
1327         the usual way.
1328
1329 Thu Nov  2 16:44:02 1995  Mike Stump  <mrs@cygnus.com>
1330
1331         * decl.c (poplevel): Handle the merging of subblocks of cleanups
1332         when finishing blocks that have already been created (usually due to
1333         the fixup goto code).  Fixes bad debugging information.
1334
1335 Wed Nov  1 12:33:53 1995  Jason Merrill  <jason@yorick.cygnus.com>
1336
1337         * method.c (hack_identifier): Don't abort when we get a TREE_LIST
1338         that's not a list of overloaded functions.
1339
1340 Wed Nov  1 11:38:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
1341
1342         * decl2.c (mark_vtable_entries): Check DECL_LANG_SPECIFIC on fn
1343         before trying to use DECL_ABSTRACT_VIRTUAL_P.
1344
1345 Tue Oct 31 11:56:55 1995  Jason Merrill  <jason@yorick.cygnus.com>
1346
1347         * decl2.c (mark_used): New function for hooking into setting of
1348         TREE_USED on decls.
1349         * call.c (build_method_call): Use it.
1350         * class.c (instantiate_type): Ditto.
1351         * init.c (build_offset_ref): Ditto.  Don't call assemble_external
1352         for all like-named functions.
1353         * method.c (hack_identifier): Ditto.
1354         (emit_thunk): Don't call assemble_external.
1355         (make_thunk): Create thunk as a FUNCTION_DECL so that it
1356         gets the right mode and ENCODE_SECTION_INFO works.
1357         
1358         * parse.y: Use mark_used.  Pass operator names to do_identifier.
1359         * lex.c (do_identifier): Handle operator names.
1360
1361         * decl2.c (grokclassfn): Tweak __in_chrg attributes.
1362
1363 Thu Oct 26 20:58:59 1995  Jeffrey A Law  (law@cygnus.com)
1364
1365         * cp/tree.c (tree_copy_lang_decl_for_deferred_output): Handle
1366         FIELD_DECLs and VAR_DECLs correctly.
1367
1368 Thu Oct 26 16:45:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
1369
1370         * errfn.c: Include stdio.h.
1371         (cp_sprintf): Take out decl of sprintf, and cast sprintf to errorfn*.
1372
1373 Wed Oct 25 18:58:41 1995  Mike Stump  <mrs@cygnus.com>
1374
1375         * typeck2.c (digest_init): Always convert initializers to the
1376         right type.
1377
1378 Wed Oct 25 13:25:24 1995  Mike Stump  <mrs@cygnus.com>
1379
1380         * init.c (member_init_ok_or_else): Don't allow member initializers
1381         for indirect members, as it is invalid.
1382
1383 Wed Oct 25 11:35:28 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
1384
1385         * decl.c (grokdeclarator): Don't allow `friend signed ()'.
1386
1387 Fri Oct 20 10:30:59 1995  Mike Stump  <mrs@cygnus.com>
1388
1389         * parse.y (for.init.statement): Catch compound statements inside for
1390         initializations, if we're being pedantic.
1391
1392 Fri Oct 20 10:03:42 1995  Mike Stump  <mrs@cygnus.com>
1393
1394         * decl.c (lookup_tag): Return NULL_TREE if we don't find what we are
1395         looking for.
1396
1397 Thu Oct 19 14:26:10 1995  Mike Stump  <mrs@cygnus.com>
1398
1399         * error.c (dump_expr): Don't core dump when a boolean expression is
1400         used as a default argument.
1401
1402 Thu Oct 19 10:36:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
1403
1404         * class.c (finish_struct_bits): Check aggregate_value_p instead of
1405         RETURN_IN_MEMORY.
1406
1407 Wed Oct 18 18:12:32 1995  Jason Merrill  <jason@yorick.cygnus.com>
1408
1409         * class.c (finish_struct_bits): Also set TREE_ADDRESSABLE on a
1410         BLKmode type that would otherwise be returned in registers.
1411
1412 Mon Oct 16 12:32:19 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
1413
1414         * g++.c (WITHLIBC): New macro.
1415         (main): Declare saw_libc.  Use WITHLIBC if `-lc' was used; set
1416         saw_libc and pass it at the end if it was set.
1417
1418 Wed Oct 11 16:30:34 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
1419
1420         * parse.y (fn.def1): Call split_specs_attrs in
1421         declmods notype_declarator case.
1422
1423 Sun Nov 26 14:47:42 1995  Richard Kenner  <kenner@mole.gnu.ai.mit.edu>
1424
1425         * Version 2.7.2 released.
1426
1427 Mon Nov 20 14:05:00 1995  Mike Stump  <mrs@cygnus.com>
1428
1429         * g++.c (pfatal_with_name): Add missing third argument to concat.
1430
1431 Thu Oct 26 13:59:54 1995  Mike Stump  <mrs@cygnus.com>
1432
1433         * init.c (expand_aggr_init): Handle cv qualifiers on the object's
1434         type.
1435
1436 Sat Nov 11 08:25:55 1995  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1437
1438         * Version 2.7.1 released.
1439
1440 Thu Nov  2 17:02:47 1995  Jason Merrill  <jason@yorick.cygnus.com>
1441
1442         * call.c (convert_harshness): Handle references to arrays.
1443
1444 Fri Oct 27 14:20:21 1995  Jason Merrill  <jason@yorick.cygnus.com>
1445
1446         * typeck.c (comp_target_types): Check multi-level pointer
1447         conversions in both directions.
1448
1449 Tue Oct 17 21:39:05 1995  Jason Merrill  <jason@yorick.cygnus.com>
1450
1451         * parse.y (explicit_instantiation): Fix 'extern template' with no
1452         return type.
1453
1454 Mon Oct 16 14:35:20 1995  Jason Merrill  <jason@yorick.cygnus.com>
1455
1456         * parse.y (explicit_instantiation): Support automatic instantiation
1457         of constructors.
1458         (named_class_head_*): Support out-of-class definition of nested
1459         types.
1460
1461 Wed Oct 11 12:20:56 1995  Mike Stump  <mrs@cygnus.com>
1462
1463         * search.c (envelope_add_decl): New routine.  Fix so that
1464         methods are hidden in the same way that other members are.
1465         (dfs_pushdecls): Cleanup and move functionality out of line,
1466         into envelope_add_decl. 
1467
1468 Tue Oct 10 15:46:01 1995  Mike Stump  <mrs@cygnus.com>
1469
1470         * typeck.c (mark_addressable): Only call assemble_external if we
1471         have started the output file.
1472
1473 Tue Oct 10 11:27:18 1995  Jason Merrill  <jason@yorick.cygnus.com>
1474
1475         * decl.c (start_function): Fix earlier cv-quals change.
1476
1477 Mon Oct  9 23:53:05 1995  Mike Stump  <mrs@cygnus.com>
1478
1479         * parse.y (complex_direct_notype_declarator): Only push the class if
1480         we are not already in the class.
1481
1482 Mon Oct  9 11:22:03 1995  Doug Evans  <dje@canuck.cygnus.com>
1483
1484         * decl.c (duplicate_decls): Call merge_machine_decl_attributes.
1485         Update olddecl's attributes too.
1486         (grokdeclarator): #if 0 out call to build_decl_attribute_variant.
1487         * typeck.c (common_type): Call merge_machine_type_attributes.
1488
1489 Fri Oct  6 14:44:27 1995  Mike Stump  <mrs@cygnus.com>
1490
1491         * typeck.c (mark_addressable): Add missing call to
1492         assemble_external.
1493
1494 Wed Oct  4 22:05:23 1995  Jeff Law  (law@hurl.cygnus.com
1495
1496         * cp/decl.c (deplicate_decls): Merge in deferred output
1497         status for variables.
1498         * cp/tree.c (tree_copy_lang_decl_for_deferred_output): New
1499         function to copy the g++ specific parts of a DECL node.
1500         (tree_copy_lang_type_for_deferred_output): Similarly for
1501         TYPE nodes.
1502
1503 Wed Oct  4 15:06:39 1995  Mike Stump  <mrs@cygnus.com>
1504
1505         * decl.c (store_parm_decls): Make sure the unwinder start comes
1506         before the exception specification start.
1507         * except.c (expand_exception_blocks): Make sure the unwinder end
1508         comes after the terminate protected catch clause region and after
1509         the end of the exception specification region.
1510
1511 Wed Oct  4 12:47:02 1995  Jason Merrill  <jason@yorick.cygnus.com>
1512
1513         * lex.c (real_yylex): Fix identifier case for linemode.
1514         (handle_sysv_pragma): Don't abort when we see a pragma we don't
1515         recognize.
1516
1517 Tue Oct  3 14:09:46 1995  Mike Stump  <mrs@cygnus.com>
1518
1519         * decl.c (store_parm_decls): Add a call to start_eh_unwinder.
1520         * except.c (init_exception_processing): __throw doesn't take any
1521         arguments.
1522         (expand_builtin_throw): Ditto.  Always use Pmode, instead of SImode
1523         for all pointers.  Use expand_builtin_return_addr to unwind the
1524         first level off the stack.
1525         (do_unwind): Always use Pmode, instead of SImode for all pointers.
1526         (expand_exception_blocks): Add a call to end_eh_unwinder.
1527         (start_eh_unwinder, end_eh_unwinder): New routines to build machine
1528         independent stack unwinders for function/method calls.
1529         
1530 Mon Oct  2 17:20:42 1995  Mike Stump  <mrs@cygnus.com>
1531
1532         * tree.c (unsave_expr_now): Make sure we process the argument list
1533         of any called functions.  Fixes incorrect code generation for
1534         cleanups.
1535
1536 Mon Oct  2 13:04:16 1995  Mike Stump  <mrs@cygnus.com>
1537
1538         * typeck.c (get_member_function_from_ptrfunc): Save function if it
1539         needs it.  Cures core dump on things like (this->*(f()))().
1540
1541 Sat Sep 23 22:51:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1542
1543         * decl.c (start_function): Conform to gcc cv-quals convention (no
1544         expression has a cv-qualified type) in RESULT_DECLs.
1545         * method.c (make_thunk): Ditto.
1546
1547 Fri Sep 22 10:21:13 1995  Mike Stump  <mrs@cygnus.com>
1548
1549         * decl.c (pushtag): Add in the namespace name for the tag.
1550
1551 Thu Sep 21 13:11:13 1995  Mike Stump  <mrs@cygnus.com>
1552
1553         * parse.y (maybe_base_class_list, base_class_list, base_class,
1554         base_class_access_list): Make sure we see the typenames for base
1555         classes.
1556         * lex.c (see_typename): Instead of failing to see a typename when
1557         there is no next token, perfer a typename, and get the next token.
1558
1559 Wed Sep 20 12:35:27 1995  Michael Meissner  <meissner@cygnus.com>
1560
1561         * decl.c (init_decl_processing): Add __builtin_expect.
1562
1563 Tue Sep 19 16:48:11 1995  Mike Stump  <mrs@cygnus.com>
1564
1565         * cvt.c (cp_convert_to_pointer): Don't allow leftover conversions to
1566         or from pointer to member functions, they must all be handled before
1567         this point.
1568
1569 Fri Sep 15 17:14:47 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
1570
1571         * init.c (resolve_offset_ref): Fix wording of non-static member
1572         being referenced as a static.
1573
1574 Fri Sep 15 12:39:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1575
1576         * typeck.c (build_indirect_ref): Only bash pointer if we actually
1577         call build_expr_type_conversion.
1578
1579 Thu Sep 14 18:24:56 1995  Jason Merrill  <jason@deneb.cygnus.com>
1580
1581         * cvt.c (build_expr_type_conversion): Handle conversion from
1582         reference.
1583         * typeck.c (build_indirect_ref): Avoid infinite recursion.
1584
1585 Thu Sep 14 17:23:28 1995  Mike Stump  <mrs@cygnus.com>
1586
1587         * decl.c (expand_start_early_try_stmts): New routine to start a try
1588         block at the start of the function, for function-try-blocks.
1589         * cp-tree.h (expand_start_early_try_stmts): Declare it.
1590         * parse.y (function_try_block): Use it, instead of doing it here, as
1591         we don't want to include rtl.h here, as that conflicts with RETURN
1592         in the parser.
1593
1594 Wed Sep 13 18:32:24 1995  Mike Stump  <mrs@cygnus.com>
1595
1596         * lex.c (reinit_parse_for_block): Support saving inline
1597         function-try-blocks, uses peekyylex.
1598         * parse.y (eat_saved_input): New rule, permit the parser to see that
1599         END_OF_SAVED_INPUT is ok, as it can see this when parsing the
1600         handlers of a function-try-block.
1601         (fndef): Use it.
1602         (component_decl): Make sure TRY and RETURN can come after fn.def2.
1603         * spew.c (peekyylex): New routine to peek at what will come next.
1604
1605 Wed Sep 13 16:52:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1606
1607         * typeck.c (comptypes): Tighten up comparisons of template type
1608         parms.
1609
1610         * decl.c (duplicate_decls): Turn off whining about virtual functions
1611         redeclared inline for now.
1612
1613 Wed Sep 13 11:13:40 1995  Mike Stump  <mrs@cygnus.com>
1614
1615         * decl.c (store_in_parms): New routine to put things before we
1616         put base inits.
1617         * cp-tree.h (store_in_parms): Declare it.
1618         * decl.c (store_parm_decls): Use it to makr sure the starting of the
1619         eh spec comes before base inits.
1620         (finish_function): Use sequences instead of the obsolete
1621         reorder_insns.
1622         * parse.y (fndef): Enhance readability and maintainability.  Update
1623         to include function_try_block syntax.
1624         (function_try_block): Add.
1625
1626 Tue Sep 12 17:43:07 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
1627
1628         * call.c (convert_harshness): Use comptypes, not ==, to check if
1629         TYPE and PARMTYPE are equivalent on a function type.
1630
1631 Tue Sep 12 17:31:33 1995  Douglas Rupp  (drupp@cs.washington.edu)
1632
1633         * Make-lang.in (cc1plus) : Removed unnecessary $(exeext).
1634
1635 Mon Sep 11 23:24:07 1995  Mike Stump  <mrs@cygnus.com>
1636
1637         * except.c (expand_throw): Never allocate storage for thrown pointer
1638         to objects.
1639
1640 Mon Sep 11 19:36:45 1995  Mike Stump  <mrs@cygnus.com>
1641
1642         * except.c (expand_start_catch_block): Pointers to objects come
1643         back from catch matching already dereferenced, don't dereference
1644         again.
1645
1646 Mon Sep 11 15:46:28 1995  Mike Stump  <mrs@cygnus.com>
1647
1648         * except.c (expand_throw): Only decay the throw expression, don't do
1649         any default conversions.  This is so that one can throw and catch
1650         characters, and not have them match integers.
1651
1652 Mon Sep 11 13:46:45 1995  Mike Stump  <mrs@cygnus.com>
1653
1654         * error.c (dump_aggr_type): Deal with anonymous unions that don't
1655         have a TYPE_NAME.
1656
1657 Fri Sep  8 20:40:27 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
1658
1659         * lex.c (handle_sysv_pragma): Deal with getting a comma from yylex.
1660
1661 Fri Sep  8 15:51:41 1995  Mike Stump  <mrs@cygnus.com>
1662
1663         * except.c (expand_end_eh_spec): Handle empty EH specifications.
1664
1665 Fri Sep  8 15:27:22 1995  Mike Stump  <mrs@cygnus.com>
1666
1667         * cp-tree.h (expand_start_eh_spec): Declare new routine.
1668         (expand_end_eh_spec): Ditto.
1669         * decl.c (store_parm_decls): Call expand_start_eh_spec to process
1670         exception specifications.
1671         * except.c (expand_leftover_cleanups): Remove unused parameter.
1672         (expand_end_catch_block): Ditto.
1673         (expand_exception_blocks): Ditto.
1674         (expand_start_eh_spec): New routine to mark the start of an
1675         exception specification region.
1676         (expand_end_eh_spec): New routine to mark the end of an exception
1677         specification region.
1678         (expand_exception_blocks): Call expand_end_eh_spec to process
1679         exception specifications.
1680
1681 Fri Sep  8 14:40:48 1995  Per Bothner  <bothner@kalessin.cygnus.com>
1682
1683         * lex.c (do_identifier):  Use global binding in preference of
1684         dead for local variable.
1685
1686 Wed Sep  6 19:32:59 1995  Mike Stump  <mrs@cygnus.com>
1687
1688         * cp-tree.h (build_exception_variant): Remove used first argument.
1689         * decl.c (duplicate_decls): Ditto.
1690         (grokfndecl): Ditto.
1691         (revert_static_member_fn): Ditto.
1692         * decl2.c (grok_method_quals): Ditto.
1693         * tree.c (build_exception_variant): Ditto.
1694         * typeck.c (common_type): Ditto.
1695         * decl2.c (grokclassfn): After changing the type, call
1696         build_exception_variant, if necessary.
1697
1698 Tue Sep  5 15:56:27 1995  Mike Stump  <mrs@cygnus.com>
1699
1700         * except.c (expand_throw): Run cleanups for the throw expression.
1701
1702 Wed Aug 30 15:24:38 1995  Stephen L. Favor  (sfavor@tigger.intecom.com)
1703
1704         * except.c (expand_builtin_throw): Moved gen_label_rtx calls beyond
1705         the store_parm_decls call which does initialization in the emit_*
1706         code concerning label numbering.
1707         
1708 Thu Aug 31 09:01:07 1995  Mike Stump  <mrs@cygnus.com>
1709
1710         * except.c (expand_internal_throw): Let the frontend be responsible
1711         for managing all frontend EH parameters, the backend routine only
1712         needs to deal with backend values.  type and value are no longer
1713         passed to __throw.
1714         (init_exception_processing): Ditto.
1715         (expand_start_all_catch): Ditto.
1716         (expand_end_all_catch): Ditto.
1717         (expand_leftover_cleanups): Ditto.
1718         (expand_end_catch_block): Ditto.
1719         (expand_builtin_throw): Ditto.
1720         (expand_throw): Ditto.
1721         
1722 Tue Aug 29 15:04:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1723
1724         * cp-tree.h (DECL_REAL_CONTEXT): Give the real declaration context
1725         for a decl.
1726         * decl.c (cp_finish_decl): Use it.
1727
1728 Tue Aug 29 10:30:27 1995  Mike Stump  <mrs@cygnus.com>
1729
1730         * except.c (expand_internal_throw): Oops, almost forgot type and
1731         value are now trees.
1732
1733 Mon Aug 28 17:57:45 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
1734
1735         Fix the attribute handling to make sure they get noted before we
1736         create the function's RTL, in case they can affect that.
1737         * decl.c (grokfndecl): New arg ATTRLIST.  Run
1738         cplus_decl_attributes before creating the decl's rtl.
1739         (grokdeclarator): New arg ATTRLIST, passed down into grokfndecl.
1740         (shadow_tag, groktypename, start_decl, start_method): Pass a
1741         NULL_TREE to grokdeclarator's new last arg.
1742         * decl2.c (grokfield): New arg ATTRLIST, passed into grokdeclarator.
1743         (grokbitfield, grokoptypename): Pass a NULL_TREE to
1744         grokdeclarator's new last arg.
1745         * except.c (expand_start_catch_block): Likewise.
1746         * pt.c (process_template_parm, end_template_decl,
1747         do_function_instantiation): Likewise.
1748         * cp-tree.h (grokfield): Add arg.
1749         (grokdeclarator): Move the prototype from here...
1750         * decl.h: ...to here.
1751         * lex.c (cons_up_default_function): Pass NULL_TREE to grokfield
1752         ATTRLIST argument.
1753         * parse.y: Create a list for the grokfield arg where appropriate,
1754         and pass it down instead of calling cplus_decl_attributes.
1755
1756 Mon Aug 28 15:07:24 1995  Mike Stump  <mrs@cygnus.com>
1757
1758         * except.c: Always allow turning on exception handling.  Allow cross
1759         compilations to use EH.
1760
1761 Thu Aug 24 17:39:24 1995  Mike Stump  <mrs@cygnus.com>
1762
1763         * except.c (saved_pc, saved_throw_type, saved_throw_value): Use
1764         trees, instead of rtxs, and don't depend on using special machine
1765         dependent registers.
1766         (expand_internal_throw): Ditto.
1767         (init_exception_processing): Ditto.
1768         (expand_start_all_catch): Ditto.
1769         (expand_end_all_catch): Ditto.
1770         (expand_start_catch_block): Ditto.
1771         (expand_leftover_cleanups): Ditto.
1772         (expand_end_catch_block): Ditto.
1773         (expand_builtin_throw): Ditto.
1774         (expand_throw): Ditto.
1775
1776 Wed Aug 23 17:25:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1777
1778         * cvt.c (build_expr_type_conversion): Handle conversions to
1779         reference types.
1780
1781 Wed Aug 23 15:33:59 1995  Mike Stump  <mrs@cygnus.com>
1782
1783         * except.c (do_unwind): Work around backend bug with -fpic.
1784
1785 Tue Aug 22 17:20:07 1995  Per Bothner  <bothner@kalessin.cygnus.com>
1786
1787         * decl2.c (flag_new_for_scope):  Add a new mode that follows ANSI
1788         for-scoping, but supports (and warns about) old programs.
1789         Make the new mode (with value 1) the default.
1790         (lang_f_options):  The on-value for flag_new_for_scope is now 2.
1791         * cp-tree.h (DECL_DEAD_FOR_LOCAL, DECL_ERROR_REPORTED): New macros
1792         (DECL_SHADOWED_FOR_VAR):  Likewise.
1793         * decl.c (struct binding_level):  New fields dead_vars_from_for
1794         and is_for_scope.
1795         (note_level_for_for):  New function.
1796         (poplevel):  Special processing if is_for_scope.
1797         (pushdecl):  Warn if for-scope variable shadows local.
1798         * lex.c (do_identifier):  Handle old (non-ANSI) for scoping,
1799         and warn if conflicts.
1800         * parse.y (FOR):  Call note_level_for_for.
1801
1802 Mon Aug 21 10:28:31 1995  Jason Merrill  <jason@deneb.cygnus.com>
1803
1804         * decl2.c (import_export_inline): Class interface hackery does not
1805         apply to synthesized methods.
1806
1807 Sun Aug 20 16:29:00 1995  Mike Stump  <mrs@cygnus.com>
1808
1809         * search.c (virtual_context): Find the right context more often.
1810         Solves a `recoverable compiler error, fixups for virtual function'
1811         problem.
1812
1813 Sun Aug 20 13:53:24 1995  Mike Stump  <mrs@cygnus.com>
1814
1815         * except.c (expand_start_all_catch): Ensure that we always transfer
1816         control to the right EH handler, by rethrowing the end label on the
1817         region, instead of hoping we are nested and falling through.
1818         (expand_leftover_cleanups): Ditto.
1819         (end_protect): Since we now rethrow the end label, put a
1820         nop after it, so that outer regions are recognized.
1821         * init.c (build_vec_delete_1): New routine to handle most of vector
1822         deleting, all code moved here from build_vec_delete.
1823         (build_array_eh_cleanup): Use build_vec_delete_1 to do all the real
1824         work.
1825         (expand_vec_init): If the array needs partial destructing, setup an
1826         EH region to handle it.
1827         (build_vec_delete): Move lots of code to build_vec_delete_1, use
1828         build_vec_delete_1 to do the grunt work.
1829         
1830 Sat Aug 19 14:25:33 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
1831
1832         Handle decl attributes properly for function definitions without
1833         previous attribute-loaded declarations.
1834         * decl.c (start_function): New arg ATTRS.  Add a call to
1835         cplus_decl_attributes with it before we create the RTL.
1836         * cp-tree.h (start_function): Update prototype.
1837         * parse.y (fn.def1): Pass ATTRS into start_function instead of
1838         trying to call cplus_decl_attributes too late.  Pass a NULL_TREE
1839         for other use.
1840         * decl2.c (finish_file): Pass NULL_TREE as fourth arg to
1841         start_function.
1842         * method.c (synthesize_method): Likewise.
1843         * except.c (expand_builtin_throw): Likewise for start on __throw.
1844
1845 Sat Aug 19 13:36:08 1995  Mike Stump  <mrs@cygnus.com>
1846
1847         * class.c (set_rtti_entry): Turn on -fvtable-thunk -frtti support.
1848         This changes -fvtable-thunks vtable layout, so a recompile will be
1849         necessary, if you use -fvtable-thunks.
1850         (get_vtable_entry): Use n, instead of i to be consistent with the
1851         rest of the compiler.
1852         (get_vtable_entry_n): Ditto.
1853         (add_virtual_function): Add a slot for the tdesc, if -fvtable-thunks
1854         are being used.
1855         (finish_struct_1): Ditto.
1856         (skip_rtti_stuff): New routine to collapse similar code from many
1857         different parts of the compiler.  I think I got them all.
1858         (modify_one_vtable): Use it.
1859         (fixup_vtable_deltas1): Ditto.
1860         (override_one_vtable): Ditto.
1861         * decl2.c (mark_vtable_entries): Ditto.
1862         * tree.c (debug_binfo): Ditto.
1863         * search.c (expand_upcast_fixups): Ditto.
1864         (get_abstract_virtuals_1): Ditto.  Use virtuals, instead of tmp to
1865         consistent with the rest of the compiler.
1866         (get_abstract_virtuals): Ditto.
1867         * cp-tree.h (skip_rtti_stuff): New routine, declare it.
1868         * gc.c (build_headof): Support -fvtable-thunk and -frtti together.
1869         (build_typeid): Ditto.
1870         (build_classof): Remove old style way of doing rtti.  Remove support
1871         for `classof' and `headof'.
1872         * gxx.gperf: Ditto.
1873         * hash.h: Ditto.
1874         * parse.y: Ditto.
1875
1876 Fri Aug 18 17:31:58 1995  Jason Merrill  <jason@deneb.cygnus.com>
1877
1878         * decl.c (start_function): Clear ctor_label and dtor_label.
1879
1880         * class.c (finish_struct_1): Fix handling of access decls.
1881
1882 Tue Aug 15 19:21:54 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1883
1884         * class.c (finish_struct): Only do minimal processing here, so it
1885         can be used for class template definitions, as well.
1886         (finish_struct_1): New function with the rest of the code.
1887
1888 Tue Aug 15 09:46:16 1995  Mike Stump  <mrs@cygnus.com>
1889
1890         * class.c (prepare_fresh_vtable): On second though, always build the
1891         offset (see Aug 10 change), unless -fvtable-thunks is given.  It
1892         does this by calling the new routine set_rtti_entry.
1893         (finish_struct): Ditto.
1894         (set_rtti_entry): New routine to update the rtti information at the
1895         start of the vtable.
1896
1897 Mon Aug 14 12:21:22 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
1898
1899         * error.c (dump_decl, case IDENTIFIER_NODE): Only work on a dtor
1900         if it's declared in the C++ language spec.
1901         (dump_function_decl): Likewise.
1902         (dump_function_name): Likewise.
1903         (ident_fndecl): Make sure we got something back from lookup_name.
1904         * decl.c (start_function): Likewise.
1905
1906 Fri Aug 11 16:52:15 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1907
1908         * call.c (build_method_call): Don't call build_new when calling a
1909         constructor without an instance.
1910
1911 Thu Aug 10 20:00:17 1995  Mike Stump  <mrs@cygnus.com>
1912
1913         * class.c (prepare_fresh_vtable): Always build the offset to the
1914         complete object, as it doesn't cost much.  This allows dynamic_cast
1915         to void * to work when -frtti isn't given.
1916         (finish_struct): Ditto.
1917
1918 Thu Aug 10 16:31:28 1995  Mike Stump  <mrs@cygnus.com>
1919
1920         * except.c (build_eh_type): Split out some functionality to new
1921         routine named build_eh_type_type.
1922         (build_eh_type_type): New routine.
1923         (expand_start_catch_block): Use build_eh_type_type, as we never want
1924         the dynamic type of the catch parameter, just the static type.
1925         Fixes core dumps when -frtti is used and one catchs pointers to
1926         classes.
1927
1928 Thu Aug 10 14:55:29 1995  Mike Stump  <mrs@cygnus.com>
1929
1930         * except.c (expand_builtin_throw): Since we now use normal calling
1931         conventions for __throw, we have to remove the first layer off the
1932         stack, so that the next context we search for handlers is the outer
1933         context instead of the context that had the call to __throw, if we
1934         don't immediately find the desired context.
1935
1936 Tue Aug  8 17:44:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
1937
1938         * tree.c (cp_expand_decl_cleanup): Returns int, not tree.
1939         * cp-tree.h: Update.
1940
1941         * parse.y (template_type_parm): Add support for `typename'.
1942
1943 Tue Aug  8 12:06:31 1995  Mike Stump  <mrs@cygnus.com>
1944
1945         * except.c (expand_internal_throw): New internal routine to throw a
1946         value.
1947         (expand_end_all_catch, expand_leftover_cleanups): All throwers
1948         changed to use `expand_internal_throw' instead of jumping to throw
1949         label.
1950         (expand_end_catch_block, expand_throw): Ditto.
1951         (throw_label): Removed.
1952         (expand_builtin_throw): Changed so that EH parameters are passed by
1953         normal function call conventions.  Completes Aug 4th work.
1954
1955 Fri Aug  4 17:17:08 1995  Mike Stump  <mrs@cygnus.com>
1956
1957         * cp-tree.h (expand_builtin_throw): Declare it.
1958         * decl2.c (finish_file): Call expand_builtin_throw.
1959         * except.c (make_first_label): Remove.
1960         (init_exception_processing): Don't use a LABEL_REF for throw_label,
1961         instead use a SYMBOL_REF, this is so that we don't use LABEL_REFs in
1962         other functions that don't really appear in those functions.  This
1963         solves a problem where cc1plus consumed exponential amounts of
1964         memory when -Wall was used.
1965         (expand_end_all_catch, expand_leftover_cleanups,
1966         expand_end_catch_block, expand_throw): Change all uses of
1967         throw_label to match new style.
1968         (do_unwind): Rename parameter to inner_throw_label, as it is now
1969         different from throw_label.  Also, assume that our caller will wrap
1970         the passed label with a LABEL_REF, if needed.
1971         (expand_builtin_throw): Make external, change so that the generated
1972         throw is now a real function.
1973         (expand_exception_blocks): Never generate throw code inside another
1974         function.
1975
1976 Fri Aug  4 12:20:02 1995  Mike Stump  <mrs@cygnus.com>
1977
1978         * decl.c (grokdeclarator): Move checking of mutable const objects
1979         and mutable static objects down, as we might decide during parsing
1980         to unset staticp or constp (for example, when const is part of the
1981         object being pointed to).
1982
1983 Thu Aug  3 17:13:43 1995  Mike Stump  <mrs@cygnus.com>
1984
1985         * except.c (output_exception_table_entry): Enhance portability to
1986         weird machines.
1987         (emit_exception_table): Ditto.
1988
1989 Thu Aug  3 16:41:38 1995  Mike Stump  <mrs@cygnus.com>
1990
1991         * typeck.c (build_ptrmemfunc): Handle casting of pointer to
1992         non-virtual member functions.
1993
1994 Wed Aug  2 11:58:25 1995  Mike Stump  <mrs@cygnus.com>
1995
1996         * gc.c (build_typeid): Strip cv qualifiers so that const T&, T&, T
1997         and const T all match.
1998
1999 Wed Aug  2 11:25:33 1995  Mike Stump  <mrs@cygnus.com>
2000
2001         * except.c (build_eh_type): Strip cv qualifiers so that const T&,
2002         T&, T and const T all match.
2003
2004 Tue Aug  1 14:20:16 1995  Mike Stump  <mrs@cygnus.com>
2005
2006         * except.c: Fix up comments, cleanup code and eliminate exceptNode,
2007         exceptStack, exceptstack, push_except_stmts, pop_except_stmts,
2008         new_except_stack, push_last_insn, pop_last_insn, insn_save_node and
2009         InsnSave.  Also, numerous speed improvements, and correctness
2010         improvements.  Double faulting in all situations should now be
2011         handled correctly.
2012         (expand_start_all_catch): Instead of having many terminate protected
2013         regions, just have one.
2014         (expand_start_catch_block): No longer have to protect
2015         false_label_rtx, as it isn't used for EH region marking.
2016         (expand_end_catch_block): Expand out EH cleanups here by using
2017         expand_leftover_cleanups.
2018         (expand_end_all_catch): Use sequences instead of playing with insn
2019         links directly.
2020         (expand_exception_blocks): Ditto.  Also protect all catch clauses
2021         with one terminate region.
2022
2023 Mon Jul 31 13:24:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2024
2025         * method.c (report_type_mismatch): Don't talk about an object
2026         parameter for non-methods.
2027
2028 Sun Jul 30 13:13:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2029
2030         * class.c (finish_struct): Catch private and protected members of
2031         anonymous unions here.
2032         * decl2.c (finish_anon_union): And here.
2033         * parse.y: Instead of here.
2034
2035         * errfn.c (ARGSLIST): Support passing four args.
2036         * error.c (cv_as_string): New function.
2037         (cp_printers): Add it.
2038         * call.c (build_method_call): Report 'const' at end of pseudo-decl.
2039
2040         * method.c (report_type_mismatch): Deal with a bad_arg of 0.
2041
2042         * init.c (expand_aggr_init): Handle volatile objects, too.
2043
2044 Sat Jul 29 13:42:03 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2045
2046         * decl.c (struct binding_level): Keep list of incomplete decls.
2047         (print_binding_level): Use list_length to count them.
2048         (pushdecl): Build up the list.
2049         (hack_incomplete_structures): Walk it and prune completed decls.
2050
2051 Fri Jul 28 15:26:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2052
2053         * typeck.c (comp_target_types): Don't check const and volatile for
2054         function types.
2055         (comp_ptr_ttypes_real): Ditto.
2056
2057 Thu Jul 27 15:40:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2058
2059         * typeck.c (comp_target_types): Fix.
2060
2061 Thu Jul 27 15:10:48 1995  Mike Stump  <mrs@cygnus.com>
2062
2063         * cp-tree.h (unsave_expr_now, build_unsave_expr,
2064         cp_expand_decl_cleanup): Declare new routines.
2065         * decl.c (cp_finish_decl, store_parm_decls,
2066         hack_incomplete_structures): Change all cals from
2067         expand_decl_cleanup to cp_expand_decl_cleanup.
2068         * gc.c (protect_value_from_gc): Ditto.
2069         * expr.c (cplus_expand_expr): Handle UNSAVE_EXPRs.
2070         * tree.c (unsave_expr): New routine to build an UNSAVE_EXPR.
2071         (unsave_expr_now): Backend routine used by tree expander.
2072         (cp_expand_decl_cleanup): Wrap second argument in an UNSAVE_EXPR to
2073         work around a limitation in the backend.  The backend uses the
2074         cleanups multiple times, on disjoint control flows, so we cannot
2075         pass unsaved SAVE_EXPRs to the backend.
2076         * tree.def (UNSAVE_EXPR): New tree code.
2077         * typeck.c (c_expand_return): Move goto/return code up inside
2078         conditional, as we don't always want to do this, we only want to do
2079         this when we don't otherwise finish with this control flow.
2080
2081 Thu Jul 27 10:38:43 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2082
2083         * parse.y (typespec): Only complain about typeof if we're not
2084         getting it from a system header.
2085
2086 Thu Jul 27 10:26:23 1995  Doug Evans  <dje@canuck.cygnus.com>
2087
2088         Clean up prefix attribute handling.
2089         * parse.y (reserved_declspecs): Link prefix attributes with declspecs.
2090         (declmods): Likewise.
2091         (all rules that reference typed_declspecs and declmods): Call
2092         split_specs_attrs or strip_attrs to separate declspecs and attrs.
2093         (lang_extdef): Delete resetting of prefix_attributes.
2094         (template_def, notype_declarator rule): Use NULL_TREE for
2095         prefix_attributes.
2096         (condition): Use NULL_TREE for prefix_attributes.
2097         (setattrs): Deleted.
2098         (nomods_initdcl0): Set prefix_attributes to NULL_TREE.
2099         (component_decl): Delete resetting of prefix_attributes.
2100         (component_decl_1, notype_components rule): Use NULL_TREE for
2101         prefix_attributes.
2102         (simple_stmt): Delete resetting of prefix_attributes.
2103
2104 Mon Jul 24 13:37:53 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2105
2106         * call.c (convert_harshness): Deal with reference conversions before
2107         others.  Actually do array->pointer decay.  Call comp_target_types
2108         with pointer types rather than their targets.
2109
2110         * typeck.c (comp_target_types): Avoid assigning D const * to B *.
2111
2112 Mon Jul 24 08:54:46 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2113
2114         * pt.c (to_be_restored): Move decl to global scope.
2115
2116 Sat Jul 22 12:22:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2117
2118         * decl.c (start_decl): Put back clearing of DECL_IN_AGGR_P.
2119
2120 Fri Jul 21 17:09:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2121
2122         * decl.c (grokdeclarator): Downgrade error about 'extern int A::i'
2123         to pedwarn.
2124
2125         * pt.c (instantiate_template): Also avoid instantiation if the
2126         function has already been declared to be a specialization.
2127
2128         * decl2.c (check_classfn): Ignore cname argument, and return the
2129         matching function.
2130
2131         * decl.c (start_decl): Handle declarations of member functions
2132         outside of the class (i.e. specialization declarations).
2133
2134 Thu Jul 20 10:34:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2135
2136         * class.c (finish_struct): Don't mess with the type of bitfields.
2137
2138         * various.c: s/TYPE_POINTER_TO/build_pointer_type/.
2139
2140 Thu Jul 20 01:43:10 1995  Mike Stump  <mrs@cygnus.com>
2141
2142         * init.c (expand_aggr_init): Assume LOOKUP_ONLYCONVERTING if init
2143         is not a parameter list (TREE_LIST).
2144         (expand_default_init): If LOOKUP_ONLYCONVERTING is set, then set
2145         LOOKUP_NO_CONVERSION so that we don't allow two-level conversions,
2146         but don't set it otherwise.
2147
2148 Wed Jul 19 20:32:01 1995  Mike Stump  <mrs@cygnus.com>
2149
2150         * init.c (expand_default_init): Don't allow two-level conversions
2151         during construction.
2152
2153 Wed Jul 19 18:06:37 1995  Mike Stump  <mrs@cygnus.com>
2154
2155         * gc.c (build_headof): The type of dyncasting to a pointer to cv
2156         void, should be pointer to cv void.
2157
2158 Wed Jul 19 17:25:43 1995  Mike Stump  <mrs@cygnus.com>
2159
2160         * gc.c (build_dynamic_cast): Allow casting in const.
2161
2162 Wed Jul 19 16:34:27 1995  Mike Stump  <mrs@cygnus.com>
2163
2164         * typeck.c (build_const_cast): If we are passed error_mark_node,
2165         return it.
2166
2167 Wed Jul 19 15:24:48 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2168
2169         * class.c (push_nested_class): Make sure TYPE is non-nil.
2170
2171         * cvt.c (type_promotes_to): Watch for error_mark_node on the
2172         incoming TYPE.
2173
2174 Wed Jul 19 13:23:12 1995  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
2175
2176         * cp-tree.h (SIGTABLE_VT_OFF_NAME): Renamed from SIGTABLE_OFFSET_NAME.
2177         (SIGTABLE_VB_OFF_NAME): New macro.
2178         (vt_off_identifier): Renamed from offset_identifier.
2179         (vb_off_identifier): Added extern declaration.
2180
2181         * decl.c (vt_off_identifier): Renamed from offset identifier.
2182         (vb_off_identifier): New variable to hold the identifier for the
2183         sigtable field vb_off.
2184         (init_decl_processing): Initialize vb_off_identifier.
2185         Renamed vt_off_identifier from offset_identifier.
2186         * sig.c (build_signature_method_call): Renamed offset_identifier and
2187         local variable offset to vt_off_identifer and vt_off, respecitively.
2188         * sig.c (build_signature_table_constructor): Renamed offset to vt_off.
2189
2190         * decl.c (init_decl_processing): Add vb_off field to
2191         sigtable_entry_type.  Reorder fields so that pfn gets properly
2192         aligned at a 64 bit boundary on the Alpha.
2193         * sig.c (build_signature_table_constructor): Build the constructor
2194         according to the new layout.  Set the vb_off field to -1 for now.
2195
2196         * decl.c (init_decl_processing): Align sigtable_entry_type on word
2197         boundaries instead of double word boundaries to save space.
2198
2199 Tue Jul 18 16:58:37 1995  Mike Stump  <mrs@cygnus.com>
2200
2201         * cvt.c (cp_convert): Always call build_cplus_new for a ctor.
2202
2203 Tue Jul 18 14:24:53 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2204
2205         * parse.y (opt.component_decl_list): Only forbid private/protected
2206         in anonymous unions.  We need to make this know when the type is
2207         defined for an object, to not give the error.
2208
2209 Mon Jul 17 14:22:44 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2210
2211         * parse.y (opt.component_decl_list): Don't allow access control
2212         as private or protected for union members.
2213
2214 Sun Jul 16 14:01:00 1995  Jim Wilson  <wilson@chestnut.cygnus.com>
2215
2216         * lex.c (check_newline): For 'p' case, move goto skipline line to
2217         before end brace for 'pragma'.
2218
2219 Fri Jul  7 13:55:58 1995  Mike Stump  <mrs@cygnus.com>
2220
2221         * g++.1: Tiny updates.
2222
2223 Fri Jul  7 13:05:20 1995  Mike Stump  <mrs@cygnus.com>
2224
2225         * decl.c (cp_finish_decl): Only destruct local static variables if
2226         they are constructed, and only construct the first time control
2227         passes completely through its declaration (if not initialized with a
2228         constant-expression).
2229         (expand_static_init): Ditto.
2230
2231 Wed Jul  5 14:05:04 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2232
2233         * typeck.c (comptypes, case OFFSET_REF): If either offset basetype
2234         is a TEMPLATE_TYPE_PARM, give a match.
2235
2236 Fri Jun 30 15:42:57 1995  Mike Stump  <mrs@cygnus.com>
2237
2238         * method.c (build_overload_value): Handle encoding of null pointer
2239         constants (or any pointer with a constant numeric value) for
2240         templates.
2241
2242 Fri Jun 30 13:45:51 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2243
2244         * call.c (convert_harshness): Add QUAL_CODE when we're faced with
2245         const vs non-const for void conversions.
2246
2247 Fri Jun 30 10:19:52 1995  Mike Stump  <mrs@cygnus.com>
2248
2249         * except.c (expand_start_all_catch): Fix problem with finding an
2250         outer nested try block when there is no code to separate it from an
2251         inner try block.
2252
2253 Fri Jun 30 02:22:26 1995  Mike Stump  <mrs@cygnus.com>
2254
2255         * search.c (dfs_pushdecls): Consume 2 or 3 orders of magnitude less
2256         memory please when virtual bases are used.
2257
2258 Thu Jun 29 19:03:47 1995  Mike Stump  <mrs@cygnus.com>
2259
2260         * class.c (build_vbase_path): Avoid testing things that cannot be
2261         null to see if they are null.
2262         * cvt.c (convert_pointer_to_vbase): Remove code that doesn't work.
2263         * decl.c (finish_function): Pass a type into the new
2264         convert_pointer_to_vbase instead of a binfo.
2265         * search.c (convert_pointer_to_vbase): Rewritten to use get_vbase
2266         and convert_pointer_to_real.
2267         (expand_indirect_vtbls_init): Use convert_pointer_to_vbase instead
2268         of the more cryptic call to get_vbase.
2269
2270 Thu Jun 29 09:35:05 1995  Mike Stump  <mrs@cygnus.com>
2271
2272         * decl.c (BOOL_TYPE_SIZE): Fix broken SLOW_BYTE_ACCESS check.
2273
2274 Thu Jun 29 03:43:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2275
2276         * pt.c (instantiate_template): Don't strip 'this' twice.
2277
2278         * pt.c (coerce_template_parms): Allow null pointer constants.
2279
2280         * decl.c (revert_static_member_fn): But only if DECL_ARGUMENTS is
2281         set.
2282
2283 Wed Jun 28 18:39:03 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2284
2285         * decl.c (revert_static_member_fn): Also remove 'this' from
2286         DECL_ARGUMENTS.
2287         * decl2.c (check_classfn): Don't revert this function until we get a
2288         match.
2289
2290 Wed Jun 28 14:07:27 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2291
2292         * parse.y (component_decl): Clear PREFIX_ATTRIBUTES here.
2293
2294 Wed Jun 28 11:05:13 1995  Mike Stump  <mrs@cygnus.com>
2295
2296         * decl2.c (finish_file): Handle global vector news.
2297         * init.c (build_new): Encode vector news so that later we will know
2298         how many elements there are.
2299
2300 Mon Jun 26 13:38:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2301
2302         * expr.c (cplus_expand_expr): Don't mess with temp slots.
2303
2304         * decl2.c (warn_if_unknown_interface): Don't crash if tinst_for_decl
2305         returns null.
2306
2307         * decl2.c (check_classfn): Use revert_static_member_fn.
2308         * decl.c (revert_static_member_fn): Diagnose static member functions
2309         declared const or volatile.
2310
2311         * decl2.c (grokfield): Check for missing default args here, too.
2312         (check_default_args): Function to do the checking.
2313         * decl.c (pushdecl): Use it.
2314
2315         * decl.c (pushdecl): Don't warn about shadowing a member of `this'
2316         if there is no `this'.
2317
2318 Sun Jun 25 11:34:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2319
2320         * call.c (build_method_call): Downgrade 'called before definition'
2321         to a warning, as it ought to go away after Monterey.
2322
2323 Sat Jun 24 14:18:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2324
2325         * pt.c (coerce_template_parms): Don't do extra checking on pointer
2326         to member arguments.
2327
2328         * class.c (finish_struct): const and reference members don't prevent
2329         a class from being an aggregate.
2330
2331         * class.c (finish_struct): Signatures are always aggregates.
2332
2333 Fri Jun 23 17:20:29 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2334
2335         * decl2.c (check_classfn): Improve error message.
2336
2337         * pt.c (tsubst): Handle PROMOTE_PROTOTYPES.
2338
2339 Thu Jun 22 01:50:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2340
2341         * typeck.c (comptypes): Don't ignore method quals.
2342
2343         * class.c (finish_struct): Non-abstract virtuals are always USED.
2344
2345         * decl.c (build_ptrmemfunc_type): The underlying union type isn't
2346         IS_AGGR_TYPE, either.
2347         * class.c (finish_struct): Use CLASSTYPE_NON_AGGREGATE instead.
2348         * cp-tree.h: Ditto.
2349
2350         * cp-tree.h (lang_type): Add aggregate.
2351         (CLASSTYPE_AGGREGATE): New macro.
2352         (TYPE_NON_AGGREGATE_CLASS): Ditto.
2353         * class.c (finish_struct): Determine whether a class is an
2354         aggregate.
2355         * decl.c (cp_finish_decl): Check TYPE_NON_AGGREGATE_CLASS instead of
2356         TYPE_NEEDS_CONSTRUCTING.
2357         * typeck2.c (digest_init): Check TYPE_NON_AGGREGATE_CLASS for
2358         subobjects, too.
2359
2360         * pt.c (tsubst, PARM_TYPE): Propagate DECL_ARTIFICIAL.
2361
2362         * decl.c (start_function): For pre-parsed functions, layout all of
2363         the parm decls again.
2364         (grokvardecl): TREE_PUBLIC depends on DECL_THIS_EXTERN, not
2365         DECL_EXTERNAL.
2366
2367         * pt.c (coerce_template_parms): Improve checking for invalid
2368         template parms.
2369
2370 Wed Jun 21 12:01:16 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2371
2372         * decl.c (grokdeclarator): Forbid declaration of a static member
2373         with the same name as its enclosing class.
2374
2375 Mon Jun 19 10:28:14 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2376
2377         * decl.c (finish_function): Clear current_class_decl.
2378
2379         * typeck.c (build_conditional_expr): Use convert (boolean_type_node
2380         instead of truthvalue_conversion.
2381
2382         * class.c (finish_struct): A data member with the same name as the
2383         class doesn't suppress constructors.
2384
2385 Fri Jun 16 18:11:39 1995  Gerald Baumgartner  (gb@alexander.cs.purdue.edu)
2386
2387         * decl.c (start_function): If current_class_decl is a signature
2388         pointer, don't dereference it but set C_C_D to current_class_decl.
2389
2390 Fri Jun 16 17:06:28 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2391
2392         * decl.c (duplicate_decls): Complain about virtual functions
2393         redeclared to be inline.
2394
2395 Fri Jun 16 13:20:38 1995  Mike Stump  <mrs@cygnus.com>
2396
2397         * decl.c (get_unique_name): New routine to name unnamed namespaces.
2398         (push_namespace): Use get_unique_name for naming unnamed namespaces.
2399
2400 Thu Jun 15 15:00:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2401
2402         * parse.y: Call cplus_decl_attributes with prefix_attributes where
2403         appropriate.
2404
2405 Wed Jun 14 19:24:49 1995  Mike Stump  <mrs@cygnus.com>
2406
2407         * search.c (get_vbase): New routine to switch hierarchies from the
2408         CLASSTYPE_VBASECLASSES to the normal one.
2409         (expand_indirect_vtbls_init): Use get_vbase to figure out how we
2410         want to convert to a vbase pointer.
2411
2412 Mon Jun 12 17:50:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2413
2414         * pt.c (instantiate_class_template): Add the new instantiation to
2415         template_classes.
2416         (do_pending_expansions): Call instantiate_member_templates on all of
2417         the classes in template_classes.
2418
2419 Mon Jun 12 12:36:59 1995  Mike Stump  <mrs@cygnus.com>
2420
2421         * decl.c (complete_array_type): Fill in the TYPE_DOMAIN of our
2422         TYPE_MAIN_VARIANT if it is not filled in.
2423         * init.c (build_delete): If the TYPE_DOMAIN is not set, give an
2424         error instead of core dumping.
2425
2426 Mon Jun 12 10:41:40 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2427
2428         * call.c (can_convert): Also check for distance > 0.
2429         (can_convert_arg): Ditto.
2430         (user_harshness): Ditto.
2431
2432 Fri Jun  9 19:17:21 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2433
2434         * g++.c (MATH_LIBRARY): Provide default.
2435         (main): Always link with the math library if we link with libstdc++.
2436
2437         * decl.c (start_function): Complain about redefinition of a function
2438         even when the pending_inline version is compiled after the other
2439         version.
2440
2441 Thu Jun  8 15:44:38 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2442
2443         * gc.c (build_dynamic_cast): Build up a reference to a parameter of
2444         aggregate type.
2445
2446 Wed Jun  7 15:31:57 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
2447
2448         * init.c (build_vec_delete): Resolve an offset ref before we try to
2449         use it.
2450
2451 Wed Jun  7 14:19:32 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2452
2453         * typeck.c (build_modify_expr): If the class lacks a constructor or
2454         assignment operator, return error_mark_node.
2455         (common_type): Use build_cplus_array_type.
2456
2457 Tue Jun  6 09:41:27 1995  Mike Stump  <mrs@cygnus.com>
2458
2459         * class.c (dont_allow_type_definitions): New variable set when types
2460         cannot be defined.
2461         (finish_struct): Use it.
2462         * cp-tree.h (dont_allow_type_definitions): Define it.
2463         * parse.y (primary, handler_seq): Set it.
2464
2465 Mon Jun  5 18:49:38 1995  Mike Stump  <mrs@cygnus.com>
2466
2467         * method.c (build_opfncall): Use DECL_CHAIN, not TREE_CHAIN for
2468         results from lookup_fnfields.  Always give warning/error on bad
2469         code.
2470
2471 Mon Jun  5 11:39:37 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
2472
2473         * init.c (member_init_ok_or_else): Don't allow initialization of
2474         an ancestor's member from within a constructor.
2475
2476 Mon Jun  5 11:20:34 1995  Gerald Baumgartner  (gb@alexander.cs.purdue.edu)
2477
2478         * sig.c (build_signature_table_constructor): Use DECL_CONTEXT
2479         instead of DECL_CLASS_CONTEXT for calculating the vfield offset so
2480         abstract virtual functions are handled correctly.
2481
2482         * sig.c (build_signature_table_constructor): Store the correct
2483         delta in signature table entries.  It does not yet work for
2484         classes with virtual base classes as implementations of signatures.
2485         (build_signature_method_call): Add the delta to the object_ptr
2486         before generating the function call.
2487
2488         * call.c (build_method_call): Make instance_ptr the signature
2489         pointer itself instead of dereferencing the optr.
2490         * sig.c (build_signature_method_call): Dereference the optr for the
2491         direct and virtual calls.
2492
2493         * sig.c (build_signature_table_constructor): Make the tag for
2494         default implementations -1 instead of 2.
2495         (build_signature_method_call): Change the generated conditional
2496         expression correspondingly.
2497
2498         * sig.c (build_signature_pointer_constructor): Deleted the sorry
2499         message that said we can't handle multiple inheritance for
2500         implementations of signatures
2501         (build_signature_method_call): Use the offset from the sigtable
2502         entry instead of the vptr field from the signature pointer for
2503         building a virtual function call.
2504
2505         * class.c (build_vfn_ref): Deleted signature specific code, we don't
2506         call this function anymore from build_signature_method_call.
2507
2508         * cp-tree.h (SIGNATURE_VPTR_NAME): Deleted.  We use the right vptr
2509         field in the object now instead of in the signature pointer/ref. 
2510         (build_vptr_ref): Deleted extern declaration.
2511         * sig.c (build_vptr_ref): Deleted.
2512         (build_signature_pointer_or_reference_type): Deleted construction of
2513         the vptr field.
2514         (build_signature_pointer_constructor): Deleted initialization of/
2515         assignment to the vptr field.
2516
2517         * sig.c (build_signature_table_constructor): Convert the signature
2518         table entry fields to their correct types.
2519
2520         * sig.c (build_signature_table_constructor): Don't call digest_init
2521         for the fields of a sigtable entry, it's wasted time.
2522
2523         * sig.c (build_signature_table_constructor): Correctly set the
2524         offset and index fields of a sigtable entry.  Build the constructor
2525         the way digest_init does, digest_init can't handle initializing an
2526         anonymous union inside a struct.
2527         (build_signature_method_call): Use the index field instead of the
2528         delta field to get the vtable index.
2529
2530         * decl.c (init_decl_processing): Fix number of fields for building
2531         sigtable_entry_type.
2532
2533         * cp-tree.h (tag_identifier, offset_identifier): Added extern decls.
2534         (SIGTABLE_CODE_NAME): Renamed to SIGTABLE_TAG_NAME.
2535         (SIGTABLE_PFN_NAME): Deleted, we'll use VTABLE_PFN_NAME instead.
2536         * decl.c (tag_identifier, offset_identifier): New variables to
2537         hold the identifiers for the sigtable fields tag and offset.
2538         (init_decl_processing): Initialize these variables.
2539         (init_decl_processing): Use these variables to build the
2540         sigtable_entry_type structure.  Rename the code and offset fields
2541         to tag and delta, respectively; add offset and index fields. Changed
2542         types of fields from short_integer_type_node to delta_type_node.
2543         * sig.c (build_signature_table_constructor): Rename code and offset
2544         to tag and delta, respectively.
2545         (build_signature_method_call): Ditto.  Use above variables.
2546
2547 Thu Jun  1 17:03:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2548
2549         * decl.c (lookup_name_real): Don't try to look anything up in an
2550         erroneous object.
2551
2552 Fri Jun  2 10:30:14 1995  Mike Stump  <mrs@cygnus.com>
2553
2554         * method.c (build_overload_int): New routine.  Break out
2555         functionality from build_overload_value so we can reuse it.
2556         (build_overload_value): Handle pointer to member functions as value
2557         parameters for templates.
2558         (build_overload_identifier): Since template parameters are shared
2559         among all instantiations, we have to substitute in the real types
2560         in TREE_TYPE (parm).
2561         pt.c (coerce_template_parms): Ditto.
2562         (push_template_decls): Ditto.
2563         (grok_template_type): Deleted as template parameters are shared
2564         among all instantiations.
2565
2566 Wed May 31 19:10:32 1995  Mike Stump  <mrs@cygnus.com>
2567
2568         * decl.c (grokdeclarator): Always give errors on constant overflow
2569         for array indices.
2570
2571 Wed May 31 11:39:43 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2572
2573         * typeck.c (commonparms): Don't abort if simple_cst_equal returns < 0.
2574         (build_c_cast): Don't tack on a NON_LVALUE_EXPR when casting to
2575         reference type.
2576         (build_indirect_ref): Fix check for *&.
2577
2578 Fri Jun 16 06:54:03 1995  Mike Stump  <mrs@cygnus.com>
2579
2580         * Version 2.7.0 released.
2581
2582 Fri Jun 16 15:07:29 1995  Richard Kenner  (kenner@vlsi1.ultra.nyu.edu)
2583
2584         * Make-lang.in (DEMANGLER_PROG): Add LIBS.
2585
2586 Thu Jun 15 15:00:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2587
2588         * decl.c (define_function): Don't set DECL_INTERFACE_KNOWN.
2589
2590 Wed Jun  7 20:00:31 1995  Mike Stump  <mrs@cygnus.com>
2591
2592         * *.[chy]: Change all callers of finish_decl to cp_finish_decl.
2593         * decl.c (finish_decl): New routine to handle call backs from the
2594         mid end (declare_hidden_char_array).
2595
2596 Wed Jun  7 19:02:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2597
2598         * decl.c (start_function): Handle setting C_C_D here.
2599         (set_C_C_D): Removed.
2600         (struct saved_scope): Remove class_decl.
2601         (push_to_top_level): Don't save current_class_decl.
2602         (pop_from_top_level): Don't restore current_class_decl or C_C_D.
2603         (struct cp_function): Add C_C_D.
2604         (push_cp_function_context): Save C_C_D.
2605         (pop_cp_function_context): Restore C_C_D.
2606
2607 Fri Jun  2 11:05:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2608
2609         * decl.c (set_C_C_D): New function.  suspend_momentary before
2610         building C_C_D.
2611         (pop_from_top_level): Call it.
2612         (start_function): Ditto.
2613         (pop_cp_function_context): Ditto.
2614
2615         * class.c, cp-tree.h, decl.c, decl2.c, parse.y: Lose all references
2616         to current_vtable_decl, CLASSTYPE_INST_VAR and CLASSTYPE_VTBL_PTR.
2617
2618         * decl.c (push_cp_function_context): Save current_class_decl.
2619         (pop_cp_function_context): Restore current_class_decl and set C_C_D.
2620         (pop_from_top_level): Don't use CLASSTYPE_INST_VAR to set C_C_D.
2621         (start_function): Ditto.
2622
2623         * class.c (popclass): Don't mess with current_class_decl,
2624         current_vtable_decl, or C_C_D.
2625
2626 Mon May 29 12:45:10 1995  Paul Eggert  <eggert@twinsun.com>
2627
2628         * Make-lang.in (c++.mostlyclean): Remove $(DEMANGLER_PROG).
2629
2630 Wed May 24 15:55:18 1995  Richard Kenner  (kenner@vlsi1.ultra.nyu.edu)
2631
2632         * decl.c (duplicate_decls): Check simple_cst_equal result against 0.
2633         * decl2.c (finish_anon_union): Likewise.
2634         * method.c (largest_union_member): Likewise.
2635
2636 Wed May 24 14:41:11 1995  H.J. Lu  (hjl@nynexst.com)
2637
2638         * Make-lang.in (cxxmain.o): Replace single quotes with backslashes.
2639
2640 Mon May 22 17:38:48 1995  Richard Kenner  (kenner@vlsi1.ultra.nyu.edu)
2641
2642         * Make-lang.in (g++, g++-cross, cc1plus, DEMANGLER_PROG):
2643         Use $@ instead of output name so works even if have .exe.
2644         (cxxmain.o): Use cp if ln -s fails.
2645         (c++.install-man): Use $(exeext) in executable names.
2646         (c++.mostlyclean, stage[1-4]): Use $(objext) in object file names.
2647         * Makefile.in (../cc1plus): Use $(exeext) in name of executable.
2648
2649 Wed May 24 01:39:03 1995  Jason Merrill  <jason@deneb.cygnus.com>
2650
2651         * call.c (build_method_call): parms can be null, duh.
2652
2653 Tue May 23 01:32:09 1995  Jason Merrill  <jason@deneb.cygnus.com>
2654
2655         * call.c (build_method_call): If convert_arguments failed, just bail.
2656
2657 Fri May 19 10:31:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2658
2659         * cvt.c (convert_force): Pass LOOKUP_NORMAL to cp_convert.
2660
2661         * tree.c (copy_to_permanent): Oops.
2662
2663 Fri May 19 10:01:07 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
2664
2665         * cp-tree.h (break_out_target_exprs): Add decl.
2666
2667 Thu May 18 13:02:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2668
2669         * decl.c (start_function): Move *all* interface handling stuff after
2670         the pushdecl.
2671
2672         * tree.c (mapcar): Renamed from make_deep_copy and generalized.
2673         (perm_manip): Return t if permanent, otherwise 0.
2674         (copy_to_permanent): Use them.
2675         (bot_manip): Helper for break_out_target_exprs.
2676         (break_out_target_exprs): New function.  Uses mapcar.
2677
2678         * typeck.c (convert_arguments): Use it.
2679
2680         * method.c (hack_identifier): Use convert_from_reference to
2681         dereference a reference.
2682
2683 Wed May 17 17:54:54 1995  Mike Stump  <mrs@cygnus.com>
2684
2685         * call.c (convert_harshness): Move reference bashing before pointer
2686         to member bashing.
2687
2688 Wed May 17 16:57:53 1995  Mike Stump  <mrs@cygnus.com>
2689
2690         * cvt.c (convert_to_reference): Only complain, if complaints are
2691         wanted.
2692         * typeck.c (build_function_call_real): Ditto.  If LOOKUP_SPECULATIVELY
2693         is set and something won't work, return NULL_TREE.
2694         * cvt.c (cp_convert): Ditto.  Pass flags down to build_method_call.
2695         (convert): Pass LOOKUP_NORMAL to cp_convert.
2696         * typeck.c (convert_for_assignment): Ditto.
2697         (convert_force): Pass LOOKUP_COMPLAIN to cp_convert.
2698         (convert_arguments): Get out early if we get an error_mark_node.
2699         (convert_for_initialization): Use cp_convert instead of convert so
2700         that we can pass flags down.
2701         * cp-tree.h (LOOKUP_SPECULATIVELY): Added documentation.
2702
2703 Wed May 17 01:43:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2704
2705         * typeck2.c (store_init_value): Don't take the MAIN_VARIANT of the
2706         decl type.
2707
2708         * class.c (finish_struct): Don't complain about a class with no
2709         user-defined constructors but with a member that has no default
2710         constructor, as this is OK for aggregates.
2711
2712         * expr.c (cplus_expand_expr, NEW_EXPR): If this is an explicit
2713         constructor call, mark slot addressable.
2714
2715 Tue May 16 18:37:51 1995  Douglas Rupp  (drupp@cs.washington.edu)
2716
2717         * g++.c: Changed WINNT to _WIN32.
2718
2719 Tue May 16 12:40:16 1995  Jason Merrill  <jason@lisa.cygnus.com>
2720
2721         * lex.c (handle_sysv_pragma): Don't use token_buffer.
2722
2723 Tue May 16 12:05:26 1995  Mike Stump  <mrs@cygnus.com>
2724
2725         * call.c (resolve_scope_to_name): Add initial semantic support for
2726         namespaces.
2727         * class.c (finish_struct): Ditto.
2728         * cp-tree.h (NAMESPACE_LEVEL): Ditto.
2729         * cvt.c (build_up_reference, convert_to_reference): Ditto. 
2730         * decl.c (binding_level::namespace_p, suspend_binding_level): Ditto.
2731         (resume_binding_level, toplevel_bindings_p): Ditto
2732         (namespace_bindings_p, declare_namespace_level): Ditto.
2733         (resume_level, push_namespace, pop_namespace): Ditto.
2734         (pop_everything, pushtag, duplicate_decls, pushdecl): Ditto.
2735         (implicitly_declare, lookup_namespace_name, lookup_name_real): Ditto.
2736         (start_decl, make_temporary_for_reference), Ditto.
2737         (obscure_complex_init, finish_decl, expand_static_init): Ditto.
2738         (grokvardecl, grokdeclarator, parmlist_is_exprlist): Ditto.
2739         (store_parm_decls, hack_incomplete_structures): Ditto.
2740         * decl2.c (get_temp_name, finish_anon_union, current_namespace): Ditto.
2741         (push_namespace, pop_namespace, do_namespace_alias): Ditto.
2742         (do_toplevel_using_decl, do_class_using_decl): Ditto.
2743         * error.c (dump_decl): Ditto.
2744         * init.c (build_member_call, build_offset_ref): Ditto.
2745         * lex.c (identifier_type): Ditto.
2746         * parse.y (lang_extdef, using_decl, extdef, component_decl_1): Ditto.
2747         (nested_name_specifier_1): Ditto.
2748         * spew.c (yylex): Ditto.
2749         * tree.def (NAMESPACE_DECL): Ditto.
2750
2751 Tue May 16 11:55:35 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2752
2753         * decl.c (push_overloaded_decl): Return the new decl even if it
2754         can't be pushed.
2755
2756 Tue May 16 11:00:37 1995  Jason Merrill  <jason@lisa.cygnus.com>
2757
2758         * typeck.c (decay_conversion): Split out from default_conversion.
2759         (default_conversion): Call it.
2760         (build_binary_op): Ditto.
2761         (build_binary_op_nodefault): Use decay_conversion for truth ops.
2762
2763 Mon May 15 12:47:56 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2764
2765         * decl.c (warn_extern_redeclared_static): This is a pedwarn.
2766         (duplicate_decls): Always use the old decl's linkage info.  Don't
2767         play with linkage of consts.
2768         (pushdecl): Don't play with linkage of consts.
2769         (redeclaration_error_message): Don't complain about an old public
2770         decl and a new non-public decl here.
2771         (grokvardecl): Handle linkage of consts here.
2772         (grokdeclarator): An 'extern inline' is public.  Pass constp to
2773         grokvardecl.
2774         (start_function): Wait until after the pushdecl to do some linkage
2775         stuff.
2776
2777         * decl2.c (import_export_vtable): Make duplicates weak rather than
2778         static if supported.
2779         (import_export_inline): Ditto.
2780         * pt.c (do_pending_expansions): Ditto.
2781
2782         * class.c (build_vbase_path): flag_assume_nonnull_objects only
2783         affects reference conversion.
2784
2785         * init.c (emit_base_init): Build up an RTL_EXPR and add it to
2786         rtl_expr_chain.
2787         * decl.c, decl2.c: s/base_init_insns/base_init_expr/.
2788
2789 Tue May 16 07:06:28 1995  Paul Eggert  <eggert@twinsun.com>
2790
2791         * method.c (numeric_output_need_bar): Renamed from misspelling.
2792
2793         * typeck.c (build_ptrmemfunc): Fix misspellings in messages.
2794
2795 Sun May 14 10:26:22 1995  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2796
2797         * lang-options.h, lang-specs.h: New files.
2798
2799 Thu May 11 00:31:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2800
2801         * typeck.c (default_conversion): Don't check for BLKmode before
2802         pulling out the decl_constant_value.
2803
2804         * decl.c (start_function): Clear named_labels and shadowed_labels.
2805
2806         * typeck.c (build_function_call_real): Also synthesize methods here.
2807
2808 Wed May 10 00:55:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2809
2810         * decl2.c (finish_file): Synthesize exported methods before the
2811         reconsider loop.
2812
2813         * parse.y: Move declaration of flag_new_for_scope to file scope.
2814
2815 Tue May  9 19:10:33 1995  Mike Stump  <mrs@cygnus.com>
2816
2817         * decl2.c: Add flag_new_for_scope for new -ffor-scope flag.
2818         * parse.y (FOR): Conditionalize the pushing and poping of scope for
2819         the for-init-statement upon the new flag_new_for_scope.
2820         * parse.y (try_block): Simplify and use compstmt.
2821
2822 Mon May  8 12:41:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2823
2824         * decl.c (define_function): Mark function decl artificial.
2825
2826 Sun May  7 00:51:28 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2827
2828         * parse.y (simple_stmt, FOR): Put back push/pop for condition scope.
2829
2830         * decl2.c (grokclassfn): DECLs don't have cv-qualified types.
2831         * tree.c (build_cplus_method_type): Ditto.
2832
2833         * cp-tree.h (SET_DECL_ARTIFICIAL): Just set DECL_ARTIFICIAL to 1.
2834
2835         * typeck.c (build_function_call_real): If convert_arguments failed,
2836         just bail.
2837         (convert_arguments): If one of the arguments is error_mark_node,
2838         just bail.
2839
2840 Sat May  6 02:39:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2841
2842         * decl.c (duplicate_decls): Don't check DECL_NOT_REALLY_EXTERN for
2843         decls that don't include it.
2844
2845 Fri May  5 14:23:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2846
2847         * decl.c (duplicate_decls): Decls that have DECL_INTERFACE_KNOWN or
2848         DECL_NOT_REALLY_EXTERN set aren't extern decls.
2849
2850         * typeck.c (build_indirect_ref): Don't call default_conversion for a
2851         parameter of reference_type.
2852         * cvt.c (convert_from_reference): Just use build_indirect_ref.
2853
2854         * pt.c (do_type_instantiation): Only instantiate member functions
2855         that actually come from templates.
2856
2857 Fri May  5 09:46:05 1995  Mike Stump  <mrs@cygnus.com>
2858
2859         * parse.y: Generalized cleanup of poplevels, and compound statements
2860         and compound statements in try blocks.  Rewritten `for' rule so that
2861         the scope of variables declared in the for clause is shortened to
2862         span just to the end of the statement, instead of the whole
2863         containing block.
2864
2865 Fri May  5 00:37:14 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2866
2867         * call.c (convert_harshness): Handle pointers to members better.
2868
2869 Thu May  4 16:00:26 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2870
2871         * decl2.c (delete_sanity): Do access control here.
2872         * init.c (build_delete): Instead of here.
2873
2874         * Make-lang.in: Build c++filt.
2875
2876 Wed May  3 02:59:53 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2877
2878         * decl2.c (cplus_decl_attributes): If we just modified a TYPE_DECL,
2879         update our IDENTIFIER_TYPE_VALUE.
2880
2881 Fri Apr 28 07:58:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2882
2883         * lex.c (cons_up_default_function): Fix linkage of #pragma
2884         implemented functions.
2885
2886 Thu Apr 27 16:56:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2887
2888         * method.c (build_overload_name): Simplify and fix repeated type
2889         folding.
2890
2891         * decl.c (grokdeclarator): Prohibit pointers to void or reference
2892         members.
2893
2894 Thu Apr 27 09:49:07 1995  Mike Stump  <mrs@cygnus.com>
2895
2896         * typeck2.c (process_init_constructor): Make sure initializers are
2897         fully digested.
2898
2899 Thu Apr 27 01:11:55 1995  Jason Merrill  <jason@python.cygnus.com>
2900
2901         * lex.c (cons_up_default_function): Always defer synthesis.
2902
2903 Thu Apr 27 00:20:37 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2904
2905         * decl2.c (mark_inline_for_output): Don't play with pending_inline
2906         stuff.
2907
2908 Wed Apr 26 17:48:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2909
2910         * call.c (user_harshness): New function; like build_type_conversion,
2911         but doesn't actually build anything.
2912         (compute_conversion_costs): Use it instead of build_type_conversion.
2913
2914 Wed Apr 26 17:11:25 1995  Jason Merrill  <jason@deneb.cygnus.com>
2915
2916         * typeck.c (build_function_call_real): Improve error message for
2917         calling a non-function.
2918
2919         * method.c (hack_identifier): Lose check for calling a data member.
2920
2921 Wed Apr 26 16:59:13 1995  Mike Stump  <mrs@cygnus.com>
2922
2923         * typeck2.c (build_functional_cast): Remove very old cruft.
2924         Seems like good code is generated without it.
2925
2926 Wed Apr 26 00:47:16 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2927
2928         * method.c (do_build_assign_ref): Fix handling of anonymous unions.
2929         (do_build_copy_constructor): Ditto.
2930
2931         * parse.y (simple_stmt, SWITCH): Call {push,pop}_switch.
2932
2933         * decl.c (push_switch): New function.
2934         (pop_switch): Ditto.
2935         (define_case_label): Check for jumping over initialization.
2936
2937         * call.c (build_method_call): Check for an inline function being
2938         called before its definition has been seen.
2939         * typeck.c (build_function_call_real): Ditto.
2940
2941         * decl.c (duplicate_decls): Check for a function being redeclared
2942         inline after its address has been taken.
2943
2944         * typeck.c (build_conditional_expr): Handle related class lvalues.
2945
2946 Tue Apr 25 13:20:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2947
2948         * pt.c (do_pending_expansions): Don't expand unused templates.
2949
2950         * parse.y (component_decl): Accept a lone semicolon.
2951
2952 Tue Apr 25 00:25:56 1995  Jason Merrill  <jason@rtl.cygnus.com>
2953
2954         * call.c (build_method_call): Don't allow an RTL_EXPR to serve as the
2955         object parameter anymore.
2956
2957         * expr.c (cplus_expand_expr): Don't create RTL_EXPRs with no insns.
2958
2959 Mon Apr 24 12:35:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2960
2961         * parse.y (simple_stmt, decl case): Clear prefix_attributes.
2962         (lang_extdef): Ditto.
2963
2964         * parse.y (maybe_parmlist): New rule for use in declarators where
2965         this could either be a list of expressions or parameters.  Calls
2966         suspend_momentary before deciding which.
2967         (direct_after_type_declarator): Use it.
2968         (complex_direct_notype_declarator): Use it.
2969
2970         * pt.c (tsubst): Propagate attributes const and noreturn.
2971
2972         * typeck.c (build_modify_expr): If warn_synth, call build_opfncall
2973         before doing the default thing.
2974
2975 Thu Apr 27 21:49:36 1995  Doug Evans  <dje@cygnus.com>
2976
2977         * typeck.c (common_type): Call lookup_attribute instead of
2978         value_member.
2979
2980 Tue Apr 25 18:07:43 1995  Richard Kenner  (kenner@vlsi1.ultra.nyu.edu)
2981
2982         * Make-lang.in: Change "realclean" to "maintainer-clean".
2983
2984 Sun Apr 23 12:32:38 1995  Mike Stump  <mrs@cygnus.com>
2985
2986         * decl2.c (finish_file): Fix broken linked list handling.
2987
2988 Fri Apr 21 18:08:43 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2989
2990         * class.c (finish_base_struct): Don't set TYPE_HAS_COMPLEX_*_REF
2991         as often.
2992         (finish_struct): Ditto.
2993
2994         * various: Use TYPE_HAS_TRIVIAL_* instead of TYPE_HAS_COMPLEX_*.
2995
2996         * cp-tree.h (TYPE_HAS_TRIVIAL_INIT_REF): New macro.
2997         (TYPE_HAS_TRIVIAL_ASSIGN_REF): New macro.
2998
2999 Fri Apr 21 15:52:22 1995  Jason Merrill  <jason@python.cygnus.com>
3000
3001         * typeck.c (c_expand_return): Only expand a returned TARGET_EXPR if
3002         it is of the same type as the return value.
3003
3004 Fri Apr 21 03:01:46 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3005
3006         * decl2.c (finish_file): Reconsider if synthesizing a method wrote
3007         out its assembly.
3008
3009         * typeck.c (convert_for_initialization): Don't call a trivial copy
3010         constructor.
3011
3012         * typeck2.c (store_init_value): Only abort if the type has a
3013         non-trivial copy constructor.
3014
3015         * typeck.c (c_expand_return): If we're returning in a register and
3016         the return value is a TARGET_EXPR, expand it.  Only do
3017         expand_aggr_init if we're returning in memory.
3018         (expand_target_expr): Function to expand a TARGET_EXPR.
3019         (build_modify_expr): Use it.
3020
3021         * tree.c (build_cplus_new): Layout the slot.
3022
3023         * expr.c (cplus_expand_expr): Use expand_call to expand the call
3024         under a NEW_EXPR, so the target is not discarded.
3025
3026 Thu Apr 20 14:59:31 1995  Mike Stump  <mrs@cygnus.com>
3027
3028         * gc.c (build_dynamic_cast): Tighten error checking.
3029
3030 Thu Apr 20 11:23:54 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3031
3032         * expr.c (cplus_expand_expr): Only abort if the returned target is
3033         different from what we expected if the type has a non-trivial copy
3034         constructor.
3035
3036         * decl2.c (cplus_decl_attributes): Attributes applied to a template
3037         really apply to the template's result.
3038
3039         * tree.c (lvalue_p): Check IS_AGGR_TYPE instead of TREE_ADDRESSABLE
3040         to decide whether to consider a CALL_EXPR an lvalue.
3041
3042         * class.c (finish_struct_bits): Only set TREE_ADDRESSABLE if the
3043         type has a non-trivial copy constructor.
3044
3045         * decl.c (start_function): If interface_known, unset
3046         DECL_NOT_REALLY_EXTERN on the function.
3047
3048 Wed Apr 19 16:53:13 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3049
3050         * pt.c (do_function_instantiation): Handle explicit instantiation of
3051         member functions.
3052         (do_type_instantiation): Handle 'inline template class foo<int>',
3053         meaning just spit out the vtable.
3054
3055         * lex.c (cons_up_default_function): Set DECL_NOT_REALLY_EXTERN on
3056         the consed functions.
3057
3058         * decl2.c (import_export_inline): Set DECL_INTERFACE_KNOWN.
3059
3060 Wed Apr 19 16:28:17 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3061
3062         * call.c, class.c, decl2.c, gc.c, init.c, parse.y, pt.c, search.c,
3063         typeck.c: Include output.h.
3064
3065 Wed Apr 19 14:57:21 1995  Gerald Baumgartner  (gb@alexander.cs.purdue.edu)
3066
3067         * call.c (build_method_call): Allow a signature member functions to
3068         be called from a default implementation.
3069
3070 Wed Apr 19 10:21:17 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3071
3072         * repo.c (finish_repo): Remember what directory we are in.
3073
3074         * search.c (expand_upcast_fixups): Don't mess with abort_fndecl.
3075
3076         * repo.c: Use obstacks instead of fixed-size buffers.  Don't spit
3077         out the second copy of the symbol name.  Don't remember COLLECT_GCC.
3078
3079 Wed Apr 19 02:32:40 1995  Mike Stump  <mrs@cygnus.com>
3080
3081         * search.c (virtual_context): New function to get the virtual
3082         context of a function.
3083         (expand_upcast_fixups): New function to generate runtime vtables.
3084         (fixup_virtual_upcast_offsets): Ditto.
3085         (expand_indirect_vtbls_init): Use fixup_virtual_upcast_offsets to
3086         ensure that the this offsets for upcasts from virtual bases into
3087         other virtual bases or non-virtual bases are correct at construction
3088         time and destruction time.
3089         * class.c (fixup_vtable_deltas): Modify to fixup all offsets in all
3090         vtables in all virtual bases, instead of just one vtable in each
3091         virtual base.
3092         (fixup_vtable_deltas1): Ditto.
3093
3094 Tue Apr 18 03:57:35 1995  Michael Meissner  (meissner@cygnus.com)
3095
3096         * Makefile.in (lex.o): Add dependency on c-pragma.h.
3097
3098         * lex.c (handle_sysv_pragma): Use NULL_PTR and NULL_TREE as
3099         appropriate, instead of 0.
3100
3101 Mon Apr 17 12:28:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3102
3103         * decl.c (pushdecl): Use decls_match, not duplicate_decls, for
3104         comparing local and global decls.
3105
3106 Fri Apr 14 01:46:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3107
3108         * typeck.c (convert_arguments): Only prohibit passing to ... of
3109         types with non-trivial copy constructors.
3110
3111         * repo.c (repo_template_used): Don't try to mess with no id.
3112
3113 Fri Apr 14 23:32:50 1995  Per Bothner  <bothner@rtl.cygnus.com>
3114
3115         * decl.c (duplicate_decls):  Use cp_warning_at for redundant-decls.
3116
3117 Thu Apr 13 15:37:42 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3118
3119         * cp-tree.h (current_tinst_level): Delete declaration, since it's
3120         static inside pt.c.
3121
3122         * typeck.c (build_modify_expr): Catch incompatible array assignment.
3123
3124         * parse.y (attribute_list, attrib): Rewrite actions to feed the
3125         right stuff to decl_attributes.
3126
3127 Thu Apr 13 11:24:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3128
3129         * search.c (dfs_debug_mark): Check for magic virtual like
3130         import_export_vtable.
3131
3132         * typeck.c (build_binary_op_nodefault): Don't call cp_pedwarn with
3133         four args.
3134
3135 Wed Apr 12 12:02:57 1995  Jason Merrill  <jason@deneb.cygnus.com>
3136
3137         * decl2.c (finish_file): Move prevtable pass before needs_messing_up
3138         decision.
3139
3140 Tue Apr 11 11:20:27 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3141
3142         * decl.c (finish_decl): If we're writing out a static data member of
3143         a class, we want the debug info for that class.
3144
3145         * gc.c (build_t_desc): Check linkage of a class properly.
3146
3147         * class.c (finish_struct): Set the 'headof' offset for the main
3148         vtable properly.
3149         (prepare_fresh_vtable): Fix typeinfo pointer here.
3150         (modify_one_vtable): Instead of here.
3151
3152 Mon Apr 10 12:15:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3153
3154         * repo.c (repo_get_id): New function to return the interesting
3155         identifier for a repo entity.
3156         (repo_template_used): Use it.
3157         (repo_template_instantiated): Mark the id as chosen.
3158         (init_repo): Record whether or not the id was chosen.
3159         (finish_repo): Note if an id was newly chosen.
3160
3161         * pt.c (do_function_instantiation): Call repo_template_instantiated.
3162         (do_type_instantiation): Ditto.  Don't diagnose multiple
3163         instantiation.
3164
3165         * decl2.c (finish_file): Use DECL_NOT_REALLY_EXTERN when deciding
3166         whether or not to synthesize a method.
3167
3168         Undo these changes:
3169         * class.c (finish_vtbls): build more vtables if flag_rtti is on.
3170         * class.c (modify_all_direct_vtables): ditto.
3171         * init.c (expand_direct_vtbls_init): expand more vtables if
3172         flag_rtti is on.
3173
3174 Sat Apr  8 17:45:41 1995  Mike Stump  <mrs@cygnus.com>
3175
3176         * gc.c (build_headof): Use ptrdiff_type_node instead of
3177         integer_type_node on pointer arithmetic.
3178
3179 Sat Apr  8 11:57:04 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3180
3181         * typeck.c (build_modify_expr): Undo previous change.
3182
3183 Thu Apr  6 01:23:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3184
3185         * Makefile.in (compiler): Remove ../cc1plus before rebuilding it.
3186
3187         * repo.c (get_base_filename): Put the .rpo file in the directory
3188         with the object file, not the source.
3189
3190         * typeck.c (build_conditional_expr): Handle pmf's better.
3191
3192         * repo.c (finish_repo): Also use ASM_OUTPUT_LABELREF to print out
3193         the name of the symbol.
3194
3195 Wed Apr  5 15:24:12 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3196
3197         * repo.c (open_repo_file): Make repo filename DOS-compliant.
3198         (*): Also write a new repo file if some previously-used
3199         templates are no longer used.  Only remember the identifier.
3200
3201         * lex.c (cons_up_default_function): If this function belongs to a
3202         template class, call repo_template_used for it.
3203
3204         * repo.c (repo_template_used): Using a class means using its vtable,
3205         if any.
3206         (finish_repo): Ditto.
3207
3208         * typeck.c (build_modify_expr): Only wrap TARGET_EXPRs in RTL_EXPRs
3209         if the type has a complex copy constructor.
3210
3211         * decl2.c (lang_decode_option): -frepo implies
3212         -fno-implicit-templates.
3213
3214         * decl.c (start_function): Clear current_{base,member}_init_list.
3215
3216         * lex.c (init_lex): Also unset *_eq if ! flag_operator_names.
3217
3218 Tue Apr  4 16:11:08 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3219
3220         * decl.c (struct cp_function): Add {base,member}_init_list.
3221         (push_cp_function_context): Save current_{base,member}_init_list.
3222         (pop_cp_function_context): Restore them.
3223
3224 Mon Apr  3 16:55:08 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3225
3226         * repo.c (get_base_filename): Take filename parm, fix logic bug.
3227
3228         * typeck.c (build_compound_expr): Do not warn about a compound expr
3229         in which the first expression has no side effects.
3230         (build_x_compound_expr): Warn here instead.
3231         (build_conditional_expr): Don't warn about a conditional expression
3232         between an enum and the type it promotes to.
3233
3234         * init.c (build_new): Handle initialization of arrays of builtins
3235         properly.
3236
3237 Mon Apr  3 15:08:04 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3238
3239         * repo.c: Include config.h to get definitions of bcopy and rindex
3240         on systems that don't have them (e.g., SVR4).
3241
3242 Mon Apr  3 14:41:55 1995  Mike Stump  <mrs@cygnus.com>
3243
3244         * decl2.c (finish_table): Pass NULL_TREE instead of init to
3245         finish_decl so that it won't try and do error checking on the
3246         initializer.
3247
3248 Mon Apr  3 10:45:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3249
3250         * repo.c (get_base_filename): Analyze COLLECT_GCC_OPTIONS to
3251         determine whether this compile used -c -o.
3252         (open_repo_file): Use get_base_filename.  Remove the extension.
3253         (finish_repo): Spit out the values of main_input_filename,
3254         COLLECT_GCC and COLLECT_GCC_OPTIONS.
3255
3256         * parse.y (structsp): Add TYPENAME_KEYWORD complex_type_name.
3257
3258 Sun Apr  2 23:43:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3259
3260         * search.c (compute_access): Don't try to do access control on
3261         nested types.
3262
3263 Fri Mar 31 10:14:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3264
3265         * repo.c: New file to handle things repo.
3266
3267         * pt.c (instantiate_template): Call repo_template_used if the
3268         definition is accessible.
3269         (mark_function_instantiated): Split out from
3270         do_function_instantiation.
3271         (mark_class_instantiated): Split out from do_type_instantiation.
3272
3273         * parse.y (template_instantiate_once): Call repo_template_used.
3274
3275         * lex.c (lang_init): Call init_repo.
3276
3277         * decl2.c: Handle flag_use_repository.
3278         (finish_file): Call finish_repo.
3279
3280         * decl.c (start_method): Call repo_template_used if this is a
3281         template method.
3282
3283         * Makefile.in (CXX_OBJS): Add repo.o.
3284         (repo.o): Add dependencies.
3285
3286         * Make-lang.in (CXX_SRCS): Add repo.c.
3287
3288         * decl.c (start_function): If DECL_INTERFACE_KNOWN and
3289         DECL_NOT_REALLY_EXTERN are both set, unset DECL_EXTERNAL.
3290
3291         * typeck.c (build_binary_op_nodefault): Identify the invalid operand
3292         types used.
3293
3294         * decl.c (duplicate_decls): Propagate DECL_NOT_REALLY_EXTERN.
3295
3296 Thu Mar 30 17:54:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3297
3298         * typeck.c (build_binary_op_nodefault): Tidy up use of build_type
3299         and result_type.  When checking for comparison between signed
3300         and unsigned, use result_type rather than the (possibly shortened)
3301         type of op0.  Also, don't warn about equality comparison of a
3302         signed operand to an unsigned constant that fits in the signed
3303         type.
3304
3305         * method.c (do_build_copy_constructor): Reverse
3306         current_base_init_list after we've built it up.
3307
3308 Thu Mar 30 14:35:18 1995  Mike Stump  <mrs@cygnus.com>
3309
3310         * except.c (build_throw): Never warn about the value of throw not
3311         being used.
3312
3313 Thu Mar 30 13:16:54 1995  Mike Stump  <mrs@cygnus.com>
3314
3315         * except.c (expand_start_catch_block): Check for bad catch parameter
3316         declarations.
3317
3318 Thu Mar 30 13:06:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3319
3320         * decl.c (finish_function): Only set DECL_NOT_REALLY_EXTERN if
3321         DECL_EXTERNAL is not already set.
3322
3323 Thu Mar 30 11:26:24 1995  Mike Stump  <mrs@cygnus.com>
3324
3325         * method.c (emit_thunk): Let poplevel know that the last level is
3326         for a function so it can create a BLOCK_NODE and set DECL_INITIAL.
3327
3328 Thu Mar 30 11:15:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3329
3330         * decl2.c (import_export_inline): Don't set DECL_NOT_REALLY_EXTERN
3331         here.
3332
3333         * decl.c (grokdeclarator): OK, don't abort if we see a decl with
3334         METHOD_TYPE.
3335         (finish_function): Set DECL_EXTERNAL and DECL_NOT_REALLY_EXTERN on
3336         all deferred inlines.
3337
3338 Wed Mar 29 19:35:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3339
3340         * cp-tree.h (DECL_THIS_INLINE): New macro.
3341         (DECL_NOT_REALLY_EXTERN): New macro.
3342         (DECL_THIS_STATIC): New macro.
3343
3344         * decl.c: Lose all references to current_extern_inline.  Break
3345         inline semantics into DECL_INLINE for actual inlining and
3346         DECL_THIS_INLINE for the linkage wierdness.  Use DECL_THIS_STATIC.
3347         * decl2.c: Use DECL_NOT_REALLY_EXTERN to indicate that we want to
3348         emit an inline here.  Associated changes.
3349         * lex.c: Ditto.
3350         * pt.c: Ditto.
3351         * typeck.c: Ditto.
3352
3353         * call.c (build_method_call): Don't bother trying to handle inlines
3354         specially.
3355         * cvt.c (convert_to_aggr): Ditto.
3356
3357         * pt.c (do_function_instantiation): Handle instantiation of
3358         public inlines, too.
3359
3360 Wed Mar 29 16:04:25 1995  Mike Stump  <mrs@cygnus.com>
3361
3362         * except.c (init_exception_processing): Change the interface for
3363         __throw_type_match and add decl for new rtti matching routine
3364         __throw_type_match_rtti.
3365         (build_eh_type): New routine to build a run time descriptor for the
3366         expression given. 
3367         (expand_start_catch_block): Update to use new calling convention for
3368         the matcher.
3369         (expand_throw): Update to use build_eh_type.
3370
3371 Mon Mar 27 07:14:33 1995  Warner Losh   <imp@village.org>
3372
3373         * g++.c: Removed __NetBSD__ from conditional.
3374         Declare strerror if HAVE_STRERROR is defined; otherwise
3375         declare sys_errlist and sys_nerr.
3376         (my_strerror): New function.
3377
3378 Tue Mar 28 14:16:35 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3379
3380         * search.c (get_binfo): Don't try to be so clever.
3381
3382         * tree.c (copy_to_permanent): Also suspend_momentary().
3383
3384         * cvt.c (cp_convert_to_pointer): Hand off to convert_fn_pointer even
3385         if the types are the same.
3386
3387         * decl.c (start_function): Handle extern inlines more like C++ says
3388         we should.
3389
3390         * init.c (build_member_call): Hand constructor calls off to
3391         build_functional_cast.
3392
3393         * typeck2.c (build_functional_cast): Use DECL_NESTED_TYPENAME to get
3394         the name of the type.
3395
3396 Tue Mar 28 13:13:56 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3397
3398         * decl.c (grokdeclarator): Check for the decl returned by
3399         grokfndecl to be null before using build_decl_attribute_variant.
3400
3401 Mon Mar 27 18:04:41 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3402
3403         * init.c (build_new): Use build_pointer_type instead of
3404         TYPE_POINTER_TO.
3405
3406 Fri Mar 24 12:11:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3407
3408         * typeck.c (build_conditional_expr): Handle pmfs.
3409         (convert_for_assignment): Fix pmf support.
3410
3411         * cvt.c (convert_fn_ptr): Support !flag_vtable_thunks.
3412         (cp_convert_to_pointer): Handle pmfs.
3413         (cp_convert): Pass pmfs to cp_convert_to_pointer.
3414
3415         * typeck.c (common_type): Handle inheritance for pmfs.
3416
3417         * typeck2.c (build_m_component_ref): Do access control.
3418
3419         * typeck.c (comp_target_types): Check for conversion to void *
3420         before checking trickier conversions.
3421
3422         * decl.c (duplicate_decls): Propagate DECL_ABSTRACT_VIRTUAL_P.
3423
3424         * pt.c (push_tinst_level): Complain if template instantiation depth
3425         is greater than max_tinst_depth.
3426
3427         * typeck.c (common_type): Assume that we can call common_type to
3428         unify the target type of a pointer.
3429
3430 Thu Mar 23 00:48:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3431
3432         * decl2.c (finish_file): Don't synthesize methods at
3433         finish_vtable_prevardecl time.  Do synthesize methods that are not
3434         used, but are public and not external.
3435
3436         * cvt.c (build_type_conversion): Only give an error if for_sure.
3437
3438         * typeck.c (comp_target_types): Only support pointer conversions if
3439         nptrs > 0.
3440
3441 Wed Mar 22 19:30:15 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3442
3443         * init.c (build_new): Catch use of an initializer list where it
3444         shouldn't be.
3445
3446 Wed Mar 22 16:21:07 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3447
3448         * init.c (build_new): Wrap alloc_expr in an RTL_EXPR if nelts is
3449         non-constant.
3450
3451         * decl2.c: temp_name_counter is now public.
3452
3453         * decl.c (struct cp_function): Add temp_name_counter field.
3454         (push_cp_function_context): Save it.
3455         (pop_cp_function_context): Restore it.
3456
3457         * typeck.c (common_type): Handle unifying function types, and unify
3458         unmatched things to void* with a compiler_error, rather than
3459         silently like before.
3460
3461 Wed Mar 22 15:10:34 1995  Mike Stump  <mrs@cygnus.com>
3462
3463         * decl2.c (finish_prevtable_vardecl, finish_vtable_vardecl): Revert
3464         Brendan's last change and fix latent problem that causes TD entries
3465         to not come out when the things that need them has yet to be
3466         expanded.
3467
3468 Wed Mar 22 15:12:00 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3469
3470         * typeck.c (build_binary_op_nodefault, comparison ops): Update type0
3471         and type1, since we might have changed op0 or op1.
3472
3473 Wed Mar 22 13:33:45 1995  Jason Merrill  <jason@python.cygnus.com>
3474
3475         * typeck.c (common_type): Don't mess up templates.
3476
3477 Wed Mar 22 04:56:00 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3478
3479         * typeck.c (common_type): Handle ptms properly.  Also handle 
3480         T* -> void*.
3481         (build_binary_op_nodefault): New variable build_type controls what
3482         type is given to the expression when it is created.  Set this to
3483         boolean_type_node for comparison ops instead of using result_type.
3484         (comp_target_types): Allow T * -> void *.
3485
3486         * cvt.c (cp_convert_to_pointer): Do access control when converting
3487         ptms, too.
3488
3489 Tue Mar 21 17:25:06 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3490
3491         * parse.y (extern_lang_string): Catch use of linkage specs that
3492         aren't all naming the same language.
3493
3494         * class.c (finish_struct): Delete accidental duplicate code.
3495
3496 Tue Mar 21 14:00:57 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3497
3498         * typeck.c (build_binary_op_nodefault): Disable pedwarns about
3499         comparing functions and incomplete types.
3500
3501         * decl.c (finish_function): Only unset current_function_decl if
3502         !nested.
3503         (duplicate_decls): Last change went too far; we only want to stop
3504         checking for value/reference ambiguity.
3505
3506 Tue Mar 21 01:26:39 1995  Mike Stump  <mrs@cygnus.com>
3507
3508         * gc.c (build_generic_desc): Zap the DECL_SIZE so that we can lay it
3509         out fresh, as the new type may be larger.
3510
3511 Mon Mar 20 19:01:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3512
3513         * expr.c (extract_init): Try to expand the RTL for the
3514         initialization and figure out what it will look like so we can avoid
3515         run-time initialization.  Disabled for now.
3516         (extract_scalar_init): Helper for scalar initialization.
3517         (extract_aggr_init): Helper for aggregate initialization.
3518
3519         * decl.c (duplicate_decls): Don't complain about ambiguous
3520         declarations.
3521         (obscure_complex_init): Now returns a tree.  Call extract_init if
3522         we're optimizing and this is a toplevel decl.
3523         (finish_decl): Update accordingly.
3524
3525         * lex.c (check_newline): If we're just changing files (not pushing
3526         or popping), update input_file_stack->name.
3527
3528 Mon Mar 20 17:55:04 1995  Mike Stump  <mrs@cygnus.com>
3529
3530         * pt.c (type_unification): Only TEMPLATE_DECLs are handled right now
3531         in the transitive unification code.
3532
3533 Mon Mar 20 16:07:50 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3534
3535         * decl.c (shadow_tag): Don't allow inline, virtual, or explicit on
3536         non-functions.
3537         (grokdeclarator): Don't allow friends to be defined in local classes.
3538
3539 Sat Mar 18 04:03:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3540
3541         * decl2.c (finish_prevtable_vardecl): Use DECL_DECLARED_STATIC
3542         rather than DECL_SAVED_INSNS to decide whether or not this method
3543         was declared inline.
3544
3545         * method.c (synthesize_method): Turn off DECL_INLINE if
3546         function_cannot_inline_p thinks we're too large.
3547
3548         * typeck.c (build_indirect_ref): Use build_expr_type_conversion.
3549
3550 Fri Mar 17 17:47:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3551
3552         * class.c (instantiate_type): Handle pmfs.
3553
3554         * typeck.c (convert_for_assignment): Check types when assigning one
3555         pmf to another.
3556
3557         * decl.c (define_label): Fix logic for printing out the name of the
3558         label in an error message.
3559
3560         * error.c (dump_expr): Support ARRAY_REF.
3561
3562 Fri Mar 17 17:43:02 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3563
3564         * decl2.c (finish_vtable_vardecl): Call build_t_desc here.
3565         (finish_prevtable_vardecl): Instead of here.
3566
3567 Fri Mar 17 14:40:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3568
3569         * decl.c (expand_static_init): Also use expand_aggr_init if the
3570         initializer is a TREE_LIST.     
3571         (grokdeclarator): Only pedwarn about extra qualification if -pedantic.
3572
3573         * pt.c (unify): Fix unification of return type.
3574
3575         * expr.c (fixup_result_decl): Use store_expr, rather than
3576         emit_move_insn, to move the return value into the place where
3577         callers will expect it.
3578
3579 Thu Mar 16 22:05:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3580
3581         * init.c (build_offset_ref): Call assmble_external on functions.
3582         * typeck.c (build_component_ref): Ditto.
3583
3584 Thu Mar 16 20:28:16 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3585
3586         * decl.c (struct saved_scope): Add members base_init_list and
3587         member_init_list.
3588         (push_to_top_level): Save current_base_init_list and
3589         current_member_init_list to them.
3590         (pop_from_top_level): Put it back.
3591
3592 Thu Mar 16 19:21:14 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3593
3594         * pt.c (instantiate_template): Call assemble_external.  
3595
3596 Thu Mar 16 18:07:54 1995  Brendan Kehoe  (brendan@phydeaux.cygnus.com)
3597
3598         * class.c: Include rtl.h, to get NULL_RTX.
3599         (finish_struct): Also zero out DECL_SAVED_INSNS, to avoid problems
3600         on hosts with different sizes for each part of the union.
3601         * tree.c: Also include rtl.h.
3602         (layout_basetypes): Same change for DECL_SAVED_INSNS.
3603
3604 Thu Mar 16 13:57:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3605
3606         * pt.c (unify): Fix array domain unification for 64-bit targets.
3607
3608         * decl2.c (finish_file): Push bizarre type decl before walking the
3609         vtables the first time.
3610         (walk_vtables): OK, don't set prev to vars if the vardecl_fn messed
3611         with TREE_CHAIN (prev).
3612
3613         * init.c (emit_base_init): Use convert_pointer_to_real instead of
3614         convert_pointer_to when converting to a direct base.
3615
3616 Wed Mar 15 20:26:29 1995  Mike Stump  <mrs@cygnus.com>
3617
3618         * pt.c (type_unification): Handle transitive unification better.
3619
3620 Wed Mar 15 13:56:16 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3621
3622         * decl2.c (walk_vtables): Always set prev to vars.
3623         (mark_vtable_entries): Call assemble_external on the vtable entries.
3624
3625         * class.c (finish_struct): Set the vtable's size to NULL_TREE before
3626         calling layout_decl, so that it gets updated properly.
3627
3628         Finally re-enable dynamic synthesis.  This time it works.
3629         * method.c (synthesize_method): Pass decl_function_context (fndecl)
3630         to {push,pop}_cp_function_context.
3631         * decl.c (push_cp_function_context): Now takes a tree argument.
3632         (pop_cp_function_context): Ditto.
3633         * call.c (build_method_call): Enable synthesis.
3634         * lex.c (cons_up_default_function): Ditto.
3635
3636 Tue Mar 14 19:14:19 1995  Doug Evans  <dje@chestnut.cygnus.com>
3637
3638         * parse.y (setattrs): Chain onto prefix_attributes rather than
3639         setting it.
3640
3641 Wed Mar 15 13:00:00 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3642
3643         * decl.c (pushdecl): Check if the type of the VAR_DECL is an
3644         error_mark_node before trying to read TYPE_LANG_SPECIFIC. 
3645
3646 Mon Mar 13 21:00:28 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3647
3648         * decl.c (grokdeclarator, case ARRAY_REF): Wrap the exp with fold,
3649         and convert the size and integer_one_node to the index type.
3650
3651 Mon Mar 13 08:01:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3652
3653         * typeck.c (get_member_function_from_ptrfunc): Save the instance
3654         argument, and tack it onto the front of the COND_EXPR to make the
3655         semantics come out right.  Grab the instance argument from
3656         '*instance_ptrptr', rather than having it passed in separately.
3657         
3658         * various: Change various consed-up comparison operations to have
3659         boolean type.  Remove the instance argument in calls to
3660         get_member_function_from_ptrfunc.
3661
3662         * error.c (dump_expr): Dump true and false as "true" and "false".
3663
3664         * decl2.c (finish_file): Also set DECL_STATIC_FUNCTION_P on the
3665         global init function.
3666
3667         * decl.c (finish_function): Only set DECL_EXTERNAL here if the
3668         inline function is public.
3669
3670 Sat Mar 11 00:58:03 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3671
3672         * init.c (is_friend): Be more careful about checking
3673         DECL_CLASS_CONTEXT on non-member functions.
3674
3675         * decl2.c (finish_vtable_vardecl): Don't bother calling
3676         assemble_external here.
3677         (prune_vtable_vardecl): New function that just splices out the
3678         vtable decl from the top-level decls.
3679         (import_export_inline): Unset DECL_EXTERNAL at first.
3680         (finish_file): Don't bother calling assemble_external here.  Do
3681         splice out all of the vtables.
3682
3683 Fri Mar 10 14:42:29 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3684
3685         * decl.c (finish_function): If we're not emitting the function yet,
3686         call assemble_external for it.
3687
3688         * decl2.c (finish_prevtable_vardecl): Don't call mark_vtable_entries
3689         here.
3690         (finish_vtable_vardecl): Don't do the linkage deduction thing here.
3691         Also don't splice out the current vtable if it is unused.
3692         (finish_file): Move the second walk_vtables and the synthesis check
3693         inside the 'reconsider' loop.  Move thunk emission after the
3694         'reconsider' loop.
3695
3696 Thu Mar  9 16:28:16 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3697
3698         * pt.c (tsubst): Don't bother calling cp_build_type_variant, since it
3699         was passing bogus values for readonly and volatile from the original
3700         template decl, not the resultant type of the tsubst call.
3701
3702         * class.c (duplicate_tag_error): Use cp_error_at to point out the
3703         previous definition of the tag.
3704
3705 Thu Mar  9 10:46:17 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3706
3707         * decl.c (start_function): Clear base_init_insns and protect_list.
3708         (struct cp_function): Add base_init_insns field.
3709         (push_cp_function_context): Also save base_init_insns.
3710         (pop_cp_function_context): Also restore base_init_insns.
3711
3712 Wed Mar  8 13:31:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3713
3714         * init.c (member_init_ok_or_else): Check for initializing a static
3715         member here.
3716         (emit_base_init): Instead of here.
3717
3718 Tue Mar  7 16:03:26 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3719
3720         * call.c (build_method_call): Disable synthesis as needed.
3721         * lex.c (cons_up_default_function): Ditto.
3722
3723 Tue Mar  7 10:14:29 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3724
3725         * parse.y: New rules to allow attributes in a prefix position.
3726         (prefix_attributes): New variable.  Pass it into cplus_decl_attributes.
3727         (setattr): New rule.
3728         (reserved_declspecs, declmods): Catch attributes here.
3729         * decl2.c (cplus_decl_attributes): Add PREFIX_ATTRIBUTES argument.
3730         * decl.c (duplicate_decls): Pass DECL_MACHINE_ATTRIBUTES to
3731         descendent typedef.
3732         (grokdeclarator): Added code to support machine attributes.
3733         * Makefile.in (stamp-parse): Expect 5 shift/reduce failures.
3734
3735 Mon Mar  6 15:07:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3736
3737         * call.c (build_method_call): Don't synthesize methods outside of a
3738         function.
3739
3740         Make base initialization more re-entrant so that synthesis on the
3741         fly will work (and, eventually, template instantation on the fly).
3742         * init.c (sort_member_init): Don't bother with members that can't be
3743         initialized.  Reorganize a bit.  Don't initialize base members here.
3744         (sort_base_init): New function, like sort_member_init, but for base
3745         classes.  Steals some code from emit_base_init.
3746         (emit_base_init): Simplify.  Call sort_{member,base}_init before
3747         doing any initialization, so we don't have to save
3748         current_{member,base}_init_list in push_cp_function_context.
3749         (expand_aggr_vbase_init_1): Adjust for sort_base_init.
3750         (expand_aggr_vbase_init): Simplify.
3751         * decl.c (struct cp_function): Add protect_list field.
3752         (push_cp_function_context): Also save protect_list.
3753         (pop_cp_function_context): Also restore protect_list.
3754         * call.c (build_method_call): Enable synthesis at point of call.
3755         * lex.c (cons_up_default_function): Ditto.
3756
3757         * parse.y: Turn -ansi checks back into -pedantic checks.
3758
3759         * init.c (build_new): Fix -fcheck-new for array new.
3760
3761 Sat Mar  4 15:55:42 1995  Fergus Henderson  <fjh@cs.mu.oz.au>
3762
3763         * typeck.c (build_compound_expr): warn if left-hand operand of
3764         comma expression has no side-effects.
3765
3766 Fri Mar  3 15:16:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3767
3768         * parse.y (primary): Change 'object qualified_id *' rules to 'object
3769         overqualified_id *'.
3770
3771 Fri Mar  3 12:48:17 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3772
3773         * parse.y (unary_expr): Catch doing sizeof an overloaded function.
3774         Make the error look the same as the one we issue in c_sizeof.
3775
3776         * typeck.c (build_binary_op_nodefault): Give an error for trying
3777         to compare a pointer-to-member to `void *'.
3778
3779 Fri Mar  3 11:28:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3780
3781         * typeck.c (build_unary_op): Handle bool increment with smoke and
3782         mirrors here, rather than in expand_increment where it belongs,
3783         because Kenner doesn't agree with me.
3784
3785 Fri Mar  3 00:08:10 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3786
3787         * decl.c (grokparms): Catch a PARM_DECL being used for a default
3788         argument as well.
3789
3790 Thu Mar  2 20:05:54 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3791
3792         * init.c (build_new): Don't allow new on a function type.
3793
3794         * parse.y (primary): Avoid a crash when seeing if the arg is of
3795         the same type as that given for the typespec in an explicit dtor call.
3796
3797 Thu Mar  2 00:49:38 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3798
3799         * decl.c (finish_function): Change test for calling
3800         mark_inline_for_output.
3801
3802 Wed Mar  1 11:23:46 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3803
3804         * typeck.c (build_modify_expr): Complain if
3805         build_default_binary_type_conversion fails.
3806
3807         * init.c (expand_default_init): Handle arguments of unknown type
3808         properly.
3809
3810         * cvt.c (build_expr_type_conversion): Only complain about ambiguity
3811         if 'complain'.
3812         * various: Pass 'complain'.
3813
3814         * typeck.c (comptypes): Be more picky about comparing UPTs.
3815
3816 Wed Mar  1 11:03:41 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3817
3818         * decl.c (grokdeclarator): If declarator is null, say that the
3819         type used has an incomplete type.
3820
3821 Wed Mar  1 10:06:20 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3822
3823         * pt.c (instantiate_template): Copy the template arguments to the
3824         permanent_obstack.  Also use simple_cst_equal to compare them when
3825         looking for a previous instantiation.
3826
3827         * tree.c (make_deep_copy): Support copying INTEGER_TYPEs (assuming
3828         they are array domain types).
3829
3830 Tue Feb 28 23:24:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3831
3832         * cp-tree.h: Define WANT_* constants for passing to
3833         build_expr_type_conversion.
3834         * cvt.c (build_expr_type_conversion): New function to build
3835         conversion to one of a group of suitable types.
3836         (build_default_binary_type_conversion): Use it.
3837         * decl2.c (grok_array_decl): Ditto.
3838         * typeck.c (build_unary_op): Ditto.
3839         (build_array_ref): Tidy up a bit.
3840         (build_binary_op): Ditto.
3841
3842 Tue Feb 28 19:57:31 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3843
3844         * decl.c (grokdeclarator): Don't allow decl of an argument as `void'.
3845
3846 Tue Feb 28 17:23:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3847
3848         * parse.y (typed_declspecs1): Add 'typespec reserved_typespecquals
3849         reserved_declspecs' rule.
3850
3851         * parse.y (expr_or_declarator): Remove notype_qualified_id rule.
3852         (direct_notype_declarator): Ditto.
3853         (complex_direct_notype_declarator): Add notype_qualified_id rule.
3854
3855         * lex.c (real_yylex): Handle :> digraph properly.
3856
3857 Tue Feb 28 12:26:29 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3858
3859         * decl.c (grokdeclarator): Check if it's a friend, not if it's
3860         non-virtual, that's being initialized.  Move the check up to
3861         before FRIENDP would get cleared.  Catch an unnamed var/field
3862         being declared void.  Say just `field' instead of `structure field'
3863         in the error message.  Only go for the operator name if DECLARATOR
3864         is non-null.
3865
3866 Tue Feb 28 00:08:01 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3867
3868         * decl.c (start_function): Complain about abstract return type.
3869         (grokdeclarator): Complain about declaring constructors and
3870         destructors to be const or volatile.  Complain about declaring
3871         destructors to be static.
3872
3873         * pt.c (uses_template_parms): Handle pmfs.
3874
3875         * decl.c (grokdeclarator): Don't call variable_size for array bounds
3876         that only depend on template constant parameters.
3877
3878 Mon Feb 27 15:38:16 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3879
3880         * error.c (dump_decl): Only look to see if it's a vtable if we
3881         actually have a name to check out.
3882
3883 Mon Feb 27 13:37:53 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3884
3885         * cvt.c (convert_to_aggr): Lose misleading shortcut.
3886
3887 Sun Feb 26 17:27:32 1995  Doug Evans  <dje@canuck.cygnus.com>
3888
3889         * decl.c (set_nested_typename): Always set DECL_IGNORED_P,
3890         not just for dwarf.
3891
3892 Sun Feb 26 00:10:18 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3893
3894         * decl.c (grokdeclarator): Don't allow a static member to be
3895         declared `register'.
3896
3897         * init.c (make_friend_class): Move up to a pedwarn for the warning
3898         about a class declaring friends with itself.
3899
3900         * decl.c (grokdeclarator): You can't do `volatile friend class foo'
3901         or `inline friend class foo'.  Only try to make a friend out of
3902         TYPE if we didn't already reset it to integer_type_node.
3903
3904 Sat Feb 25 22:32:03 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3905
3906         * decl.c (grokdeclarator): Don't allow initialization of a
3907         non-virtual function.
3908
3909         * decl.c (start_function): Do a pedwarn if we're changing `main'
3910         to have an int return type.
3911
3912 Sat Feb 25 00:02:05 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3913
3914         * typeck.c (build_modify_expr): Handle simple assignment from
3915         TARGET_EXPRs by building up an RTL_EXPR to force expansion.  Whew.
3916
3917 Fri Feb 24 18:27:14 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3918
3919         * decl.c (grokdeclarator): Also don't allow virtual outside of a
3920         class decl for a scope method definition performed at global binding.
3921
3922         * init.c (build_offset_ref): Don't allow creation of an OFFSET_REF
3923         of a bitfield.
3924
3925         * decl.c (grokdeclarator): Don't allow a const to be declared mutable.
3926
3927         * typeck.c (build_binary_op): Return an error_mark_node if either
3928         one of the args turned into an error_mark_node when we tried to
3929         use default_conversion.
3930
3931         * typeck.c (build_unary_op): Forbid using postfix -- on a bool.
3932
3933         * decl.c (grokdeclarator): Allow `signed' and `unsigned' to be
3934         used on `__wchar_t'.
3935
3936 Fri Feb 24 13:59:53 1995  Mike Stump  <mrs@cygnus.com>
3937
3938         * except.c (end_protect_partials): Do it the right way.
3939
3940 Wed Feb 22 15:42:56 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3941
3942         * typeck.c (build_binary_op_nodefault): Upgrade warning about
3943         comparing distinct pointer types to pedwarn.
3944
3945         * typeck2.c (digest_init): Cope with extra braces.
3946
3947         * typeck.c (build_binary_op_nodefault): Use tree_int_cst_sgn instead
3948         of INT_CST_LT (..., interger_zero_node).
3949
3950 Wed Feb 22 14:45:52 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3951
3952         * except.c [!TRY_NEW_EH] (end_protect_partials): Define dummy
3953         function for systems that don't have EH.
3954
3955 Tue Feb 21 19:18:31 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3956
3957         * call.c (can_convert_arg): Like can_convert, but takes an arg as
3958         well.
3959
3960         * pt.c (type_unification): Allow implicit conversions for parameters
3961         that do not depend on template parameters.
3962
3963 Tue Feb 21 18:43:48 1995  Douglas Rupp  (drupp@cs.washington.edu)
3964
3965         * Make-lang.in, config-lang.in: ($exeext): New macro.
3966         * Make-lang.in: Try a "cp" if "ln" fails.
3967         * cp-tree.h (decl_attributes): Added argument.
3968         * decl2.c (cplus_decl_attribute): Add arg to decl_attributes.
3969         * cp/g++.c: Added #ifdefs for sys/file.h and process.h for NT.
3970         Modified spawnvp to have to correct number of arguments for OS/2, NT.
3971
3972 Tue Feb 21 18:36:55 1995  Mike Stump  <mrs@cygnus.com>
3973
3974         * decl.c (finish_function): Add calls to end_protect_partials to end
3975         the exception region that protects constructors so that partially
3976         constructed objects can be partially destructed when the constructor
3977         throws an exception.
3978         * init.c (perform_member_init, sort_member_init, emit_base_init):
3979         Added support for partially constructed objects.
3980         * init.c (build_partial_cleanup_for): New routine to do partial
3981         cleanups of a base class.
3982         * decl2.c (finish_file): Move the emitting of the exception table
3983         down, after we emit all code that might have exception regions in
3984         them.
3985         * except.c (end_protect_partials, might_have_exceptions_p): New
3986         routines.
3987         (emit_exception_table): Always output table if called.
3988         * cp-tree.h (protect_list, end_protect_partials,
3989         might_have_exceptions_p, emit_exception_table): Added.
3990
3991 Tue Feb 21 16:05:59 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3992
3993         * gc.c (build_typeid): Pass a NULL_TREE, not the bogus, unused
3994         address of a local variable.
3995         * class.c (build_vfn_ref): Only try to build the PLUS_EXPR if we
3996         were given a non-null PTR_TO_INSTPTR.
3997
3998 Tue Feb 21 01:53:18 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3999
4000         * decl.c (duplicate_decls): Always lay out the merged decl.
4001
4002         * decl2.c (finish_vtable_vardecl): Don't do vtable hack on templates.
4003         (finish_prevtable_vardecl): Ditto.
4004
4005         * method.c (synthesize_method): Set interface_{unknown,only}
4006         according to the settings for our class, not the file where it comes
4007         from.
4008
4009 Sat Feb 18 12:26:48 1995  Mike Stump  <mrs@cygnus.com>
4010
4011         * except.c: Handle systems that define __i386__ but not __i386.
4012
4013 Fri Feb 17 15:31:31 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4014
4015         * decl2.c (reparse_decl_as_expr): Support being called without a
4016         type argument.
4017
4018         * parse.y (primary): Add '(' expr_or_declarator ')'.  Adds 4 r/r
4019         conflicts.  Sigh.
4020
4021 Fri Feb 17 12:02:06 1995  Mike Stump  <mrs@cygnus.com>
4022
4023         * parse.y (template_def, fndef, fn.def1, return_init, condition,
4024         initdcl0, initdcl, notype_initdcl0, nomods_initdcl0,
4025         component_decl_1, after_type_component_declarator0,
4026         notype_component_declarator0, after_type_component_declarator,
4027         notype_component_declarator, after_type_component_declarator,
4028         full_parm, maybe_raises, exception_specification_opt): Fix up,
4029         include exception_specification_opt maybeasm maybe_attribute and
4030         maybe_init if missing.  Rename maybe_raises to
4031         exception_specification_opt to match draft wording.  Use maybe_init
4032         to simplify rules.
4033
4034 Fri Feb 17 01:54:46 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4035
4036         * init.c (build_new): Set TREE_NO_UNUSED_WARNING on COMPOUND_EXPRs
4037         built for news of scalar types.
4038
4039 Thu Feb 16 17:48:28 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4040
4041         * typeck.c (build_binary_op_nodefault): Update code for warning
4042         about signed/unsigned comparisons from C frontend.  Realize that the
4043         code in the C frontend is, if anything, even more bogus.  Fix it.
4044         (build_binary_op): Undo default_conversion if it wasn't useful.
4045
4046         * typeck.c (build_unary_op, ADDR_EXPR): Lose bogus special case for
4047         PRE*CREMENT_EXPR.
4048
4049         * decl2.c (import_export_vtable): Don't try the vtable hack
4050         if the class doesn't have any real non-inline virtual functions.
4051         (finish_vtable_vardecl): Don't bother trying to find a non-inline
4052         virtual function in a non-polymorphic class.
4053         (finish_prevtable_vardecl): Ditto.
4054
4055         * decl2.c (import_export_vtable): Use and set DECL_INTERFACE_KNOWN.
4056
4057         * cp-tree.h (DECL_INTERFACE_KNOWN): Use DECL_LANG_FLAG_5.
4058
4059         * init.c (expand_virtual_init): Always call assemble_external.
4060
4061         * class.c (build_vfn_ref): Always call assemble_external.
4062         (build_vtable): Always call import_export_vtable.
4063         (prepare_fresh_vtable): Ditto.
4064         (add_virtual_function): Don't bother setting TREE_ADDRESSABLE.
4065
4066 Thu Feb 16 03:28:49 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4067
4068         * class.c (finish_struct): Use TYPE_{MIN,MAX}_VALUE to determine
4069         whether an enumerated type fits in a bitfield.
4070
4071 Wed Feb 15 15:38:12 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4072
4073         * class.c (grow_method): Update method_vec after growing the class
4074         obstack.
4075
4076 Wed Feb 15 13:42:59 1995  Mike Stump  <mrs@cygnus.com>
4077
4078         * parse.y (handler_seq): Push a level for the catch parameters.
4079
4080 Wed Feb 15 12:42:57 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4081
4082         * init.c (emit_base_init): Update BINFO_INHERITANCE_CHAIN on my
4083         bases, in case they've been clobbered.
4084
4085 Wed Feb 15 12:07:29 1995  Mike Stump  <mrs@cygnus.com>
4086
4087         * class.c (finish_base_struct): Set up BINFO_INHERITANCE_CHAIN here,
4088         so that one day it will always be valid.
4089         * tree.c (propagate_binfo_offsets, layout_vbasetypes): Ditto.
4090
4091         * cp-tree.h (copy_binfo): Removed, unused.
4092         * tree.c (copy_binfo): Ditto.
4093
4094 Wed Feb 15 00:05:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4095
4096         * init.c (build_new): Save the allocation before calling
4097         expand_vec_init on it.
4098
4099         * decl.c (finish_enum): The TYPE_PRECISION of the enum type mush
4100         match the TYPE_PRECISION of the underlying type for constant folding
4101         to work.
4102
4103 Tue Feb 14 15:31:25 1995  Mike Stump  <mrs@cygnus.com>
4104
4105         * except.c (push_eh_entry, expand_start_all_catch,
4106         expand_leftover_cleanups, expand_end_catch_block): Keep track of
4107         the context in which the exception region occurs.
4108         (build_exception_table): If the region was not output, don't output
4109         the entry in the eh table for it.
4110
4111 Tue Feb 14 02:15:43 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4112
4113         * init.c (expand_default_init): Only use a previous constructor call
4114         if it's a call to our constructor.  Does the word "Duh" mean
4115         anything to you?
4116
4117         * decl.c (grokparms): Fine, just don't call
4118         convert_for_initialization at all.  OK?  Happy now?
4119
4120 Mon Feb 13 02:23:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4121
4122         * cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Make sure that the class
4123         method vector has a second element before returning it.
4124
4125         * decl.c (grokparms): Don't strip REFERENCE_TYPE before calling
4126         convert_for_initialization.
4127
4128 Sun Feb 12 03:57:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4129
4130         * typeck.c (build_modify_expr): Compare function name to
4131         constructor_name (current_class_type) instead of current_class_name.
4132
4133         * decl.c (grokparms): Don't do anything with the return value of
4134         convert_for_initialization.
4135
4136         * error.c (dump_decl): Also dump_readonly_or_volatile on the decl.
4137
4138         * decl.c (duplicate_decls): Tweak error message.
4139
4140         * typeck.c (build_const_cast): Implement checking.
4141         (build_reinterpret_cast): Implement some checking.
4142
4143         * cp-tree.h (CONV_FORCE_TEMP): Require a new temporary when
4144         converting to the same aggregate type.
4145         (CONV_STATIC_CAST): Include it.
4146         (CONV_C_CAST): Ditto.
4147         * cvt.c (convert_force): Use CONV_C_CAST instead of CONV_OLD_CONVERT.
4148         (cp_convert): Only force a new temporary if CONV_FORCE_TEMP.
4149
4150 Fri Feb 10 16:18:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4151
4152         * typeck.c (build_c_cast): Use non_lvalue to tack something on
4153         where necessary.
4154
4155         * decl.c (auto_function): Now a function.
4156         * except.c (init_exception_processing): terminate, unexpected,
4157         set_terminate, and set_unexpected have C++ linkage.
4158
4159         * typeck.c (build_unary_op, TRUTH_NOT_EXPR): Use convert instead of
4160         truthvalue_conversion for converting to bool, as it handles
4161         user-defined conversions properly.
4162         (condition_conversion): Ditto.
4163
4164         * except.c (expand_throw): Don't call convert_to_reference.
4165         Pass the correct parameters to build_new.
4166
4167         * method.c (do_build_assign_ref): Don't use access control when
4168         converting to a base reference here.
4169         (do_build_copy_constructor): Or here.
4170
4171         * init.c (build_new): Unset TREE_READONLY on the dereferenced
4172         pointer before assigning to it.
4173
4174         * decl.c (maybe_build_cleanup): Don't bother stripping const here.
4175
4176         * decl2.c (delete_sanity): You can now delete pointer to const.
4177
4178 Fri Feb 10 13:28:38 1995  Jason Merrill  <jason@python.cygnus.com>
4179
4180         * decl.c (finish_function): Don't rely on actual parameters being
4181         evaluated left-to-right.
4182         * except.c (expand_end_catch_block): Ditto.
4183
4184 Fri Feb 10 00:52:04 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4185
4186         * tree.c (real_lvalue_p): Like lvalue_p, but class temps aren't
4187         considered lvalues.
4188         * cvt.c (convert_to_reference): Use real_lvalue_p instead of
4189         lvalue_p.
4190
4191         * cvt.c (build_type_conversion_1): Don't call convert on aggregate
4192         types.
4193         (convert_to_reference): Fix erroneous text substitution.
4194
4195         * typeck2.c (initializer_constant_valid_p): Update from C frontend.
4196         Add new argument to all callers.
4197
4198         * typeck.c (convert_arguments): Check for error_mark_node before
4199         trying to do anything with the actual parameter.
4200
4201         * typeck.c (condition_conversion): Build up a CLEANUP_POINT_EXPR and
4202         fold it.
4203         (bool_truthvalue_conversion): Remove.  Fix all callers to call
4204         truthvalue_conversion instead.
4205         (various): Fold CLEANUP_POINT_EXPRs.
4206
4207         * parse.y (conditions): Call condition_conversion rather than
4208         building up a CLEANUP_POINT_EXPR.
4209
4210         * pt.c (end_template_decl): Don't warn_if_unknown_interface here
4211         under -falt-external-templates.
4212
4213 Thu Feb  9 05:24:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4214
4215         * init.c (build_new): Complain about new of const type without
4216         initializer.  Other cleanup.
4217
4218         * call.c (compute_conversion_costs): Don't call
4219         build_type_conversion with a reference type; convert to the target
4220         type and check its lvaluetude.
4221         * cvt.c (convert_to_reference): Ditto.
4222
4223         * cvt.c (build_type_conversion_1): There will never be any need to
4224         dereference references here now.
4225
4226 Thu Feb  9 00:37:47 1995  Mike Stump  <mrs@cygnus.com>
4227
4228         * except.c (expand_builtin_throw): Make sure we only `use' the
4229         value of return_val_rtx.
4230
4231 Wed Feb  8 15:45:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4232
4233         * parse.y (structsp): Don't complain about declaring a type being
4234         defined to be a friend.
4235
4236         * decl2.c (warn_if_unknown_interface): Note the template in question
4237         and the point of instantiation, for -falt-external-templates.
4238         * lex.c (reinit_parse_for_method): Pass the decl to
4239         warn_if_unknown_interface.
4240         * pt.c (instantiate_template): Ditto.
4241         (end_template_decl): Ditto.
4242
4243         * decl.c (set_nested_typename): Set IDENTIFIER_TYPE_VALUE on the
4244         nested name again, to make local classes work a bit better.
4245
4246         * typeck.c (build_function_call_real): Dereference reference after
4247         checking for incomplete type.
4248
4249         * init.c (build_new): Accept new of const and volatile types.
4250
4251 Wed Feb  8 14:04:16 1995  Jason Merrill  <jason@deneb.cygnus.com>
4252
4253         * decl.c (grokdeclarator): Fix error message.
4254
4255 Wed Feb  8 03:16:15 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4256
4257         * typeck.c (convert_for_initialization): Do bash arrays when
4258         converting to a reference to non-array.
4259
4260 Tue Feb  7 15:50:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4261
4262         * cvt.c (cp_convert): Don't call convert_to_reference, or
4263         automatically dereference references.  Do pass reference conversions
4264         to cp_convert_to_pointer.
4265         (cp_convert_to_pointer): Support references.
4266
4267         * call.c (build_method_call): Don't build up a reference to the
4268         parameter here; let build_overload_call handle that.
4269
4270         * typeck.c (build_c_cast): Call convert_to_reference directly if
4271         converting to a reference type.
4272         * method.c (do_build_copy_constructor): Ditto.
4273         * method.c (do_build_copy_constructor): Ditto.
4274         (do_build_assign_ref): Ditto.
4275
4276         * call.c (build_method_call): Dereference a returned reference.
4277         * typeck.c (build_function_call_real): Ditto.
4278
4279         * decl.c (xref_basetypes): Check for unions with basetypes here.
4280         (xref_tag): Instead of here.
4281
4282         * pt.c (process_template_parm): Template type parm decls are
4283         artificial.
4284
4285 Mon Feb  6 04:32:09 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4286
4287         * parse.y (typed_declspecs): Add missing semicolon.
4288         (do_xref_defn): Resurrect.
4289         (named_class_head_sans_basetype): Move template specialization
4290         definition cases to named_class_head_sans_basetype_defn.
4291
4292         * decl2.c (grokfield): Call pushdecl_class_level after setting the
4293         TYPE_NAME, not before.
4294
4295 Sun Feb  5 02:50:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4296
4297         * call.c (convert_harshness): Don't call sorry here.  Don't allow
4298         conversions between function pointer types if pedantic.
4299
4300         * pt.c (overload_template_name): Pass globalize=1 to xref_tag.
4301
4302         * lex.c (cons_up_default_function): Use the full name for the return
4303         type of op=.
4304
4305         * decl.c (set_nested_typename): Don't worry about anonymous types,
4306         as they already have a unique name.
4307         (pushdecl): Remove redundant set_nested_typename
4308         (xref_tag): Split out base handling into xref_basetypes.
4309
4310         * cp-tree.h (TYPE_INCOMPLETE): New macro; TEMPLATE_TYPE_PARMs are
4311         not considered incomplete even though their definition is unknown.
4312
4313         * decl.c (xref_defn_tag): Lose.
4314         (xref_tag): xref_next_defn = ! globalize.
4315         (pushdecl): Don't set DECL_NESTED_TYPENAME on artificial decls.  The
4316         ones that should have it set will have it set by pushtag.
4317         (pushdecl_class_level): Ditto.
4318         (pushtag): Tidy up a bit.
4319         (set_nested_typename): Push a decl for the nested typename from
4320         here, rather than from xref_defn_tag.
4321
4322         * parse.y (do_xref): Lose.
4323         (named_class_head): If we see 'class foo:' we know it's a
4324         definition, so don't worry about base lists for non-definitions.
4325
4326         * pt.c (push_template_decls): Template parm decls are artificial.
4327
4328         * decl.c (duplicate_decls): Restore check for qualifier
4329         disagreement for non-functions.
4330         (decls_match): Remove check for qualifier disagreement.
4331
4332 Fri Feb  3 14:58:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4333
4334         * decl.c (grok_reference_init): Convert initializer from
4335         reference.
4336         * typeck.c (convert_for_initialization): Ditto.
4337
4338         * decl.c (duplicate_decls): Propagate DECL_NESTED_TYPENAME.
4339
4340         * cvt.c (cp_convert): Don't convert to the same class type by just
4341         tacking on a NOP_EXPR.
4342         (convert_to_reference): Use comp_target_types instead of comptypes
4343         so that we don't allow conversions two levels down.
4344
4345 Thu Feb  2 15:07:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4346
4347         * class.c (build_vbase_path): Bash types to make the backend happy.
4348         * cvt.c (build_up_reference): Bash the types bashed by
4349         build_vbase_path to be reference types instead of pointer types.
4350         (convert_to_reference): Ditto.
4351
4352         * typeck.c (build_c_cast): Don't strip NOPs if we're converting to a
4353         reference type.
4354
4355         * parse.y (structsp): Put back error for 'struct B: public A;'.
4356
4357 Wed Feb  1 23:02:06 1995  Mike Stump  <mrs@cygnus.com>
4358
4359         * except.c: Add support for mips systems that don't define __mips
4360         but do define mips, like Ultrix.
4361
4362 Wed Feb  1 22:39:07 1995  Mike Stump  <mrs@cygnus.com>
4363
4364         * except.c: Add support for exception handling on the Alpha.
4365
4366 Wed Feb  1 10:12:14 1995  Mike Stump  <mrs@cygnus.com>
4367
4368         * decl2.c (finish_file): Fix bug in Jan 31st change.
4369
4370 Tue Jan 31 16:59:15 1995  Gerald Baumgartner  (gb@lorenzo.cs.purdue.edu)
4371
4372         * sig.c (build_signature_pointer_or_reference_type): Don't set
4373         IS_AGGR_TYPE for signature pointers/reference so expand_default_init
4374         doesn't expect to find a copy constructor.
4375         * call.c (build_method_call): Treat signature pointers/reference
4376         as if IS_AGGR_TYPE were set.
4377
4378 Tue Jan 31 13:28:56 1995  Mike Stump  <mrs@cygnus.com>
4379
4380         * gc.c (get_typeid): Pawn off error messages to build_t_desc.
4381         (build_t_desc): Inform the user here if they try and build
4382         with -frtti and don't include <typeinfo.h>.
4383
4384         * decl2.c (finish_prevtable_vardecl): Support rescanning.
4385         (finish_file): Move finish_prevtable_vardecl up to before the global
4386         initializers are done as tdecls are initialized in the global
4387         initializer.  Also Pick up any new tdecls or vtables needed by
4388         synthesized methods.
4389
4390         * class.c (finish_struct): Simplify.  We have to do rtti scanning at
4391         end, so we might as well do all of it there.
4392
4393 Tue Jan 31 05:35:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4394
4395         * call.c (build_method_call): Fix -fthis-is-variable for 32-bit
4396         targets, too.
4397
4398 Tue Jan 31 00:11:04 1995  Mike Stump  <mrs@cygnus.com>
4399
4400         * decl2.c (finish_prevtable_vardecl): New routine, mostly split from
4401         finish_vtable_vardecl.  It has the first half functionality from
4402         that routine.
4403         * decl2.c (finish_vtable_vardecl): Update to not include stuff not
4404         in  finish_prevtable_vardecl.
4405         * decl2.c (finish_file): Call finish_prevtable_vardecl.
4406         * gc.c (build_generic_desc): Allow it to be called when not at the
4407         global binding layer, but behave as if we were.
4408         (build_t_desc): Rearrange a bit so that it really works and is
4409         easier to follow.
4410         * class.c (finish_struct): Don't decide on tdecls here, as we have
4411         to wait until the end of the file in general to decide whether or
4412         not they come out.
4413
4414 Mon Jan 30 01:00:40 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4415
4416         * init.c (build_delete): Check access to operator delete before
4417         calling the destructor.
4418         * method.c (build_opfncall, DELETE_EXPR): build_method is allowed to
4419         return error_mark_node.
4420         * call.c (build_method_call): Use the one-argument op delete even if
4421         it's an error.
4422
4423         * init.c (build_new): Fix -fthis-is-variable support.
4424         * call.c (build_method_call): Ditto.
4425
4426         * call.c (convert_harshness): Make conversion from a pointer to bool
4427         worse than conversion to another pointer.
4428
4429 Sat Jan 28 16:46:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4430
4431         * init.c (build_new): Check new return value if -fcheck-new.
4432
4433         * lex.c (check_newline): Clear end_of_file when we're done, too.
4434
4435 Sat Jan 28 10:38:39 1995  Mike Stump  <mrs@cygnus.com>
4436
4437         * decl2.c (finish_vtable_vardecl): Make rtti TD tables follow
4438         vtables whereever they go.
4439
4440         * gc.c (build_t_desc): Remove old way of setting it up, as it wasn't
4441         right.
4442
4443 Sat Jan 28 09:10:44 1995  Mike Stump  <mrs@cygnus.com>
4444
4445         * decl2.c (finish_vtable_vardecl): Now set the
4446         interface/implementation of vtables on the first virtual function,
4447         if one exists, otherwise we use the old method.  This is a major win
4448         in terms of cutting down the size of objects and executables in
4449         terms of text space and data space.  Now most of the savings that
4450         #pragma interface/implementation gives is automatic in a fair number
4451         of cases.
4452
4453 Sat Jan 28 04:57:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4454
4455         * decl.c (grokdeclarator): Discard the template parameters in a
4456         template constructor declaration so that the function is always
4457         named constructor_name (ctype).
4458
4459         * lex.c (check_newline): Use ungetc to put back the character before
4460         calling HANDLE_PRAGMA.
4461
4462 Fri Jan 27 17:23:47 1995  Mike Stump  <mrs@cygnus.com>
4463
4464         * decl2.c (check_classfn): If the cname is T<int> and fn_name is T,
4465         make sure we still match them.
4466
4467 Fri Jan 27 16:32:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4468
4469         * parse.y: Add END_OF_LINE token.
4470
4471         * lex.c (check_newline): Set linemode when we see a # directive, and
4472         unset it when we're done.  Turn all 'return's into 'goto skipline'.
4473         Fix all uses of '\n', since we won't see it anymore.  Put back the
4474         character we read before checking for a sysv or target pragma.
4475         (real_yylex): If we see an EOF in linemode, return END_OF_LINE.
4476         (handle_sysv_pragma): Don't look at the input stream; quit when we
4477         see an END_OF_LINE token.
4478
4479         * input.c (getch): Return EOF if we're in line mode and at the end
4480         of a line.
4481         (put_back): Don't put back an EOF.
4482
4483 Thu Jan 26 19:26:34 1995  Mike Stump  <mrs@cygnus.com>
4484
4485         * except.c (expand_throw): Do the newing of the exception object
4486         before we load the type descriptor or the address so that we don't
4487         wipe any of the values out.
4488
4489 Thu Jan 26 19:20:00 1995  Mike Stump  <mrs@cygnus.com>
4490
4491         * except.c (init_exception_processing): Don't use r12 on the rs6000.
4492
4493 Tue Jan 24 16:36:31 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4494
4495         * decl.c (grokparms): Don't try to build up a reference at this point.
4496
4497         * typeck2.c (build_functional_cast): Don't assume that a NOP_EXPR
4498         will suffice to convert from integer_zero_node.
4499
4500 Wed Jan 25 15:02:09 1995  David S. Miller  (davem@nadzieja.rutgers.edu)
4501
4502         * class.c (instantiate_type): Change error message text.
4503         * typeck2.c (store_init_value): Likewise.
4504
4505 Mon Jan 23 21:57:14 1995  Mike Stump  <mrs@cygnus.com>
4506
4507         * pt.c (tsubst): When we copy a node, don't forget to copy
4508         TREE_CHAIN, we use it later.
4509
4510 Mon Jan 23 03:33:47 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4511
4512         * typeck.c (convert_for_assignment): Initialize variable before use.
4513
4514 Fri Jan 20 01:17:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4515
4516         * g++.c (main): Link with both libstdc++ and libg++ if called as
4517         something ending with "g++", otherwise only libstdc++.  Move -lm to
4518         the end of the line.
4519
4520 Thu Jan 19 15:43:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4521
4522         * call.c (build_method_call): Don't mess with 'this' before calling
4523         compute_conversion_costs.
4524
4525 Wed Jan 18 15:40:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4526
4527         * search.c (get_matching_virtual): Give line number for previous
4528         declaration.
4529
4530         * call.c (convert_harshness): Handle conversions to references
4531         better.
4532
4533         * cvt.c (build_up_reference): OK, handle {MIN,MAX}_EXPR *properly*.
4534
4535 Wed Jan 18 15:21:38 1995  Mike Stump  <mrs@cygnus.com>
4536
4537         * class.c (instantiate_type): Use DECL_CHAIN to walk lists instead,
4538         as the TREE_CHAIN for methods will take us to the next differently
4539         named function, DECL_CHAIN won't.
4540
4541 Wed Jan 18 14:26:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4542
4543         * tree.c (lvalue_p): Handle {MIN,MAX}_EXPR.
4544
4545         * decl2.c (lang_decode_option): -Wall implies -Wparentheses.
4546         warn_parentheses defaults to 0.
4547
4548         * decl.c (grokparms): Put back call to require_instantiated_type.
4549
4550 Tue Jan 17 19:56:15 1995  Mike Stump  <mrs@cygnus.com>
4551
4552         * except.c (exception_section): Use the data section on the rs6000.
4553         Change calling convention for named_section.
4554
4555 Wed Jan 17 18:20:57 1994  Fergus Henderson <fjh@munta.cs.mu.oz.au>
4556
4557         * cp-tree.h : Make if (x=0) warn with wall
4558         * parse.y : Make if (x=0) warn with wall
4559
4560 Tue Jan 17 14:12:00 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4561
4562         * decl.c (BOOL_TYPE_SIZE): BITS_PER_WORD if SLOW_BYTE_ACCESS,
4563         BITS_PER_UNIT otherwise.
4564
4565         * search.c (get_matching_virtual): Don't check the binfo if the
4566         types are the same.
4567
4568         * cvt.c (cp_convert): Just call truthvalue_conversion to convert to
4569         bool.
4570
4571 Mon Jan 16 13:28:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4572
4573         * various: Use boolean_type_node, boolean_true_node,
4574         boolean_false_node.
4575
4576         * search.c (get_matching_virtual): Allow covariant returns that
4577         don't require pointer adjustment.
4578
4579         * typeck.c (build_conditional_expr): Don't call default_conversion
4580         on ifexp.
4581
4582         * cvt.c (build_up_reference): Handle MIN_EXPR and MAX_EXPR.
4583
4584         * decl.c (grokdeclarator): Upgrade warning about &const to pedwarn.
4585
4586 Sun Jan 15 22:17:32 1995  dcb@lovat.fmrco.COM (David Binderman)
4587
4588         * pt.c (do_function_instantiation): Free targs once we're done.
4589
4590 Sun Jan 15 22:17:32 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4591
4592         * decl.c (BOOL_TYPE_SIZE): Defaults to BITS_PER_WORD.
4593         (init_decl_processing): Use BOOL_TYPE_SIZE instead of CHAR_TYPE_SIZE
4594         for bool.
4595
4596 Sat Jan 14 05:33:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4597
4598         * decl2.c (finish_file): We need to mess up if there are any
4599         variables in the list, not just if there is one with a constructor.
4600
4601 Fri Jan 13 14:42:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4602
4603         * decl.c (duplicate_decls): Propagate DECL_STATIC_{CON,DE}STRUCTOR.
4604         (finish_function): Handle DECL_STATIC_{CON,DE}STRUCTOR.
4605         (finish_function): Trust rest_of_compilation.
4606
4607         * decl2.c (finish_file): Also call functions designated as static
4608         constructors/destructors.
4609
4610         * decl.c (grokdeclarator): Allow access decls of operator functions.
4611         (grokparms): Only do convert_for_initialization if the initializer
4612         has a type.
4613         (duplicate_decls): Put back push_obstacks_nochange call.
4614
4615         * lex.c (real_yylex): Downgrade complaint about the escape sequence
4616         being too large from pedwarn to warning.
4617
4618         * decl.c (grokdeclarator): Don't complain about long long in system
4619         headers.
4620
4621         * lex.c (real_yylex): Handle digraphs.
4622
4623 Thu Jan 12 12:17:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4624
4625         * decl.c (init_decl_processing): -f{no-,}strict-prototype only
4626         affects C linkage declarations now.
4627
4628         * typeck.c (comp_target_types): Grok simple contravariant conversions.
4629         (common_type): t1 and t2 are interchangeable.
4630
4631         * various: Test return value of comp_target_types differently in
4632         different places; it now returns -1 for a contravariant conversion
4633         (which is fine in symmetric cases).
4634
4635         (common_type): Prefer long double to double even when
4636         they have the same precision.
4637
4638         * decl.c (grokparms): Call convert_for_initialization to check
4639         default arguments.
4640
4641         * init.c (build_new): void_type_node has a size (of 0).
4642
4643         * decl.c (decls_match): Also check for agreement of TREE_READONLY
4644         and TREE_THIS_VOLATILE.
4645         (push_class_level_binding): Properly handle shadowing of
4646         nested tags by fields.
4647
4648         * search.c (dfs_pushdecls): Ditto.
4649
4650         * decl2.c (finish_file): Don't second-guess self-initialization.
4651
4652         * cvt.c (convert_to_reference): Work with expr directly, rather than
4653         a copy.
4654
4655         * decl.c (push_overloaded_decl): Only shadow artificial TYPE_DECLs.
4656
4657         * init.c (add_friend): Downgrade duplicate friend message from
4658         pedwarn to warning.
4659
4660         * decl.c (duplicate_decls): Push obstacks before calling common_type.
4661
4662 Thu Jan 12 17:15:21 1995  Michael Ben-Gershon  <mybg@cs.huji.ac.il>
4663
4664         * except.c (push_eh_entry): set LABEL_PRESERVE_P flag for
4665         exception table labels.
4666         (expand_start_all_catch): Ditto.
4667         (expand_leftover_cleanups): Ditto.
4668         (expand_end_catch_block): Ditto.
4669         * except.c (make_first_label): new function.
4670         (expand_start_all_catch): add a call to make_first_label() before
4671         using a label as a jump destination.
4672         (expand_end_all_catch): Ditto.
4673         (expand_leftover_cleanups): Ditto.
4674         (expand_end_catch_block): Ditto.
4675         (expand_builtin_throw): Ditto.
4676         (expand_throw): Ditto.
4677         * except.c: Add ARM processor support for exception handling.
4678
4679 Thu Jan 12 12:17:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4680
4681         (complete_array_type): Copy code from C frontend.
4682
4683         * lex.c (real_yylex): Don't multiply the length of a wide string
4684         literal by WCHAR_BYTES.
4685
4686         * decl.c (pushdecl): Check for redeclaration of wchar_t here.
4687         (duplicate_decls): Instead of here.
4688         (define_label): Complain about a label named wchar_t.
4689         (grokdeclarator): Complain about declarations of
4690         operator-function-ids as non-functions.
4691
4692         * typeck.c (unary_complex_lvalue): Also wrap prefix -- and ++ in
4693         COMPOUND_EXPRs.
4694         (build_unary_op): Wrap unary plus in a NON_LVALUE_EXPR.
4695
4696         * lex.c (real_yylex): Don't skip whitespace when reading the next
4697         character after ->.
4698
4699 Wed Jan 11 16:32:49 1995  Mike Stump  <mrs@cygnus.com>
4700
4701         * except.c: Allow cc1plus to be built with native compiler on rs6000.
4702         (expand_start_all_catch): Add assemble_external calls for various
4703         routines we call.
4704         (expand_leftover_cleanups): Ditto.
4705         (expand_start_catch_block): Ditto.
4706         (do_unwind): Ditto.
4707         (expand_builtin_throw): Ditto.
4708
4709 Wed Jan 11 01:05:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4710
4711         * decl.c (pushtag): Only look for a previous decl in the current
4712         binding level.  Use explicit global scope in DECL_NESTED_TYPENAME.
4713
4714         * gxx.gperf: Add __signature__ and __sigof__ keywords.
4715
4716         * decl2.c (lang_decode_option): -ansi does not set flag_no_asm.  It
4717         does set flag_no_gnu_keywords and flag_operator_names.
4718
4719         * lex.c (init_lex): 'overload' is not a keyword unless -traditional.
4720         Unset extension keywords if -fno-gnu-keywords.
4721         Allow operator names ('bitand') if -foperator-names.
4722         Never unset 'asm'; -fno-asm only affects 'typeof'.
4723
4724         * decl.c (lookup_name_real): The got_object special lookup only
4725         applies to types.
4726
4727 Tue Jan 10 18:07:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4728
4729         * spew.c (yylex): Also use DECL_NESTED_TYPENAME if got_object is set.
4730
4731         * parse.y (primary): Unset got_object after all rules that use the
4732         'object' nonterminal.
4733         (object): Set got_object.
4734
4735         * lex.h: Declare got_object.
4736
4737         * decl.c (lookup_name_real): Also lookup names in the context of an
4738         object specified.
4739
4740 Tue Jan 10 14:30:30 1995  Mike Stump  <mrs@cygnus.com>
4741
4742         * typeck.c (get_member_function_from_ptrfunc): Use ptrdiff_type_node
4743         for things that have to be added to pointers, not size_type.  Cures
4744         problems with pointer to members on Alphas.
4745         (build_binary_op_nodefault): Ditto.
4746         (get_delta_difference_: Ditto.
4747         (build_ptrmemfunc): Ditto.
4748
4749 Tue Jan 10 01:49:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4750
4751         * decl.c (pushtag): Stick the new decl in TYPE_NAME before pushing
4752         it.
4753
4754         * typeck.c (build_component_ref): Don't build up a COMPONENT_REF
4755         when dealing with overloaded member functions; just act like
4756         build_offset_ref.
4757         (commonparms): Remove misleading comment.
4758
4759         * decl.c (duplicate_decls): Complain about repeated default
4760         arguments here.
4761         (redeclaration_error_message): Instead of here.
4762         (pushdecl): Complain about missing default arguments here.
4763         (grokparms): Instead of here.
4764         (lookup_name_current_level): Also match on DECL_ASSEMBLER_NAME.
4765         (grok_reference_init): Do not complain about missing initializer if
4766         declared 'extern'.
4767
4768         * search.c (lookup_field): Don't return a TYPE_DECL if there is a
4769         function alternative and want_type is not set.
4770
4771 Mon Jan  9 18:16:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4772
4773         * decl.c (pushtag): Don't set TYPE_NAME to an identifier.  Do push
4774         the decl when the type has no TYPE_NAME.
4775         (lookup_nested_type): Don't assume that type has TYPE_NAME set.
4776         (lookup_name_real): Call lookup_field with want_type =
4777         prefer_type.
4778
4779         * search.c (lookup_field): Handle want_type properly in the presence
4780         of fields with the same name.
4781
4782         * decl.c (set_nested_typename): Set nested name for file-scope types
4783         to include leading ::.
4784         (pushdecl): Set the nested typename if the decl doesn't have one,
4785         rather than if the type's canonical decl doesn't have one.
4786
4787 Mon Jan  9 03:44:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4788
4789         * typeck.c (convert_for_assignment): Complain about contravariance
4790         violation here.
4791         (comp_target_types): Instead of here.
4792         (build_unary_op): resolve_offset_ref before checking for a valid
4793         type.
4794
4795         * spew.c (yylex): Decrement looking_for_typename after we see a
4796         _DEFN.
4797
4798         * decl.c (pushdecl): Don't install an artificial TYPE_DECL in
4799         IDENTIFIER_LOCAL_VALUE if we already have a decl with that name.
4800
4801         * typeck.c (convert_for_assignment): Converting pointers to bool
4802         does not need a cast.
4803
4804 Sun Jan  8 18:16:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4805
4806         * class.c (instantiate_type): Initialize nsubsts parm.
4807
4808         * pt.c (do_function_instantiation): Ditto.
4809
4810 Sat Jan  7 14:37:05 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4811
4812         * pt.c (tsubst): Use TREE_STATIC instead of DECL_INLINE &&
4813         DECL_SAVED_INSNS to determine whether or not we've seen a definition
4814         of this function.
4815         (instantiate_template): Ditto.
4816
4817         * call.c (convert_harshness): Allow const reference binding when
4818         called from the overloading code, but not when called from
4819         can_convert (since it isn't a conversion).
4820         (convert_harshness): Put back some disabled code.
4821
4822 Fri Jan  6 14:10:57 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4823
4824         * call.c (convert_harshness): There is no implicit conversion from
4825         void* to other pointer types (unless the parameter is (void*)0).
4826         (convert_harshness): Non-lvalues do not convert to reference types.
4827
4828         * class.c (finish_struct_methods): Still set
4829         TYPE_HAS_{INT,REAL}_CONVERSION.
4830
4831         * call.c (can_convert): Don't use aggregate initialization.
4832
4833         * cp-tree.h: Declare lookup_conversions.
4834
4835 Thu Jan  5 21:08:00 1995  Mike Stump  <mrs@cygnus.com>
4836
4837         * parse.y (simple_stmt): Fix duplicate case value error messages to
4838         be more readable.
4839
4840 Wed Jan  4 16:44:19 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4841
4842         * cvt.c (build_type_conversion): Total rewrite to use
4843         convert_harshness instead of reproducing conversion logic here.  Now
4844         much shorter.
4845
4846         * call.c (convert_harshness): Support conversions to bool.
4847         (can_convert): Checks whether a conversion is less harsh
4848         than USER_CODE, for build_type_conversion.
4849
4850         * search.c (add_conversions): Function for passing to dfs_walk which
4851         adds all the type conversion operators in the current type to a list.
4852         (lookup_conversions): Calls dfs_walk with add_conversions and return
4853         the list.
4854         (dfs_walk): Don't require a qfn.
4855
4856         * cp-tree.h: Lose CLASSTYPE_CONVERSIONS hackery.
4857         (CLASSTYPE_FIRST_CONVERSION): Points to elt 1 of CLASSTYPE_METHOD_VEC.
4858
4859         * class.c (finish_struct_bits): Lose CLASSTYPE_CONVERSIONS hackery.
4860         (grow_method): A separate function for building onto the growing
4861         method vector.
4862         (finish_struct_methods): Use it.  Put all type conversion operators
4863         right after the constructors.  Perhaps we should sort the methods
4864         alphabetically?
4865
4866 Mon Jan  2 14:42:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4867
4868         * call.c (build_method_call): Lose another misleading shortcut.
4869
4870 Fri Dec 30 17:57:30 1994  Mike Stump  <mrs@cygnus.com>
4871
4872         * gc.c (build_bltn_desc): Handle bool as a built-in type.
4873
4874 Fri Dec 30 14:20:21 1994  Mike Stump  <mrs@cygnus.com>
4875
4876         * tree.c (layout_vbasetypes): Ensure that we don't loose alignment
4877         on the complete type because of small virtual bases.
4878
4879 Fri Dec 30 12:22:29 1994  Mike Stump  <mrs@cygnus.com>
4880
4881         * decl.c (n_incomplete): Bump n_incomplete up to int to match C
4882         front end.
4883         (pushdecl): Also count decls pushed that are of a type being defined
4884         as incomplete things.
4885         * class.c (finish_struct): Move hack_incomplete_structures up to
4886         just after we set it as not being defined, so that the decls we
4887         build for RTTI don't count as incomplete.
4888
4889 Thu Dec 29 18:20:57 1994  Mike Stump  <mrs@cygnus.com>
4890
4891         * pt.c (tsubst): Fix problem with defining constructors in templated
4892         classes with virtual bases.
4893
4894 Wed Dec 28 08:31:00 1994  Mike Stump  <mrs@cygnus.com>
4895
4896         * parse.y (TYPEID): Strip top-level cv-qualifiers on typeid
4897         expressions.
4898         * gc.c (build_typeid): Ditto.
4899
4900 Thu Dec 22 17:26:33 1994  Mike Stump  <mrs@cygnus.com>
4901
4902         * cvt.c (build_up_reference): Fix breakage introduced on Nov 29,
4903         don't assert on complex AGGR inits.
4904
4905 Thu Dec 22 14:32:31 1994  Mike Stump  <mrs@cygnus.com>
4906
4907         * method.c (build_overload_value): Handle pointer to members as
4908         template arguments.
4909
4910 Thu Dec 22 13:09:07 1994  Mike Stump  <mrs@cygnus.com>
4911
4912         * typeck.c (unary_complex_lvalue): Don't call sorry if we know how
4913         to do take the address of a data member for a pointer to data
4914         member.
4915
4916 Thu Dec 22 10:04:19 1994  Mike Stump  <mrs@cygnus.com>
4917
4918         * decl.c (grokdeclarator): Use the typedef name for linkage if the
4919         type doesn't otherwise have a name.
4920
4921         * decl2.c (grokfield): Ditto.
4922
4923         * class.c (finish_struct): Since we reuse the TYPE_DECL for the
4924         DECL_NAME of enums, structs and classes, we have to avoid trying to
4925         put it in the TYPE_FIELDS again.
4926
4927 Wed Dec 21 11:07:05 1994  Mike Stump  <mrs@cygnus.com>
4928
4929         * decl2.c (check_classfn): Ignore this parameter on static functions
4930         when checking to see if we match.
4931
4932 Tue Dec 20 17:47:02 1994  Mike Stump  <mrs@cygnus.com>
4933
4934         * typeck.c (unary_complex_lvalue): Handle address of non-left most
4935         pointers to members by calling get_delta_difference.
4936
4937 Mon Dec 19 22:40:53 1994  Mike Stump  <mrs@cygnus.com>
4938
4939         * decl2.c (check_classfn): Don't use decls_match yet, as it modifies
4940         static functions to early.
4941
4942 Thu Dec 19 22:37:48 1994  Mike Stump  <mrs@cygnus.com>
4943
4944         * method.c (make_thunk): Handle encoding of positive thunk offsets.
4945
4946 Sat Dec 17 13:29:50 1994  Doug Evans  <dje@canuck.cygnus.com>
4947
4948         * Make-lang.in (.PHONY): Tell GNU make C++ and c++ are phony targets.
4949
4950 Thu Dec 15 16:32:12 1994  Mike Stump  <mrs@cygnus.com>
4951
4952         * decl2.c (check_classfn): Use decls_match to check if this has
4953         already been declared, as the DECL_ASSEMBLER_NAME may have been
4954         changed via asm("new_name").
4955         * decl.c (decls_match): Make public.
4956
4957 Thu Dec 15 15:17:55 1994  Mike Stump  <mrs@cygnus.com>
4958
4959         * *.[chy] (expand_aggr_init) Add fourth argument to handle
4960         distinction between = init and (init) style of initializations.
4961         * *.[chy] (finish_decl): Add fifth argument to to handle
4962         distinction between = init and (init) style of initializations.
4963
4964 Tue Dec 13 19:16:05 1994  Mike Stump  <mrs@cygnus.com>
4965
4966         Fix some random `explicit' bugs.
4967
4968         * cvt.c (convert_to_reference): Add third parameter to
4969         convert_force.
4970         (convert_force): Ditto.
4971         * call.c (build_method_call): Ditto.
4972         * decl2.c (setup_vtbl_ptr): Ditto.
4973         * init.c (expand_virtual_init): Ditto.
4974         (build_member_call): Ditto.
4975         (build_delete): Ditto.
4976         (build_vbase_delete): Ditto.
4977         * typeck.c (build_component_addr): Ditto.
4978         (build_c_cast): Ditto.
4979         (build_modify_expr): Ditto.
4980         * cp-tree.h (CONV_NONCONVERTING): Ditto. Add so that we can
4981         distinguish the context in which the conversion appears.  Add thrid
4982         argument to build_c_cast.
4983         * cvt.c (cp_convert): Pass whether or not we want to consider
4984         non-converting constructors down to build_method_call.
4985         * decl2.c (reparse_absdcl_as_casts): Add third argument to
4986         build_c_cast.
4987         * gc.c (build_m_desc): Ditto.
4988         * init.c (build_new): Ditto.
4989         * parse.y (expr_no_commas): Ditto.
4990         (primary): Ditto.
4991         * typeck.c (build_x_function_call): Ditto.
4992         (build_static_cast): Ditto.
4993         (build_reinterpret_cast): Ditto.
4994         (build_const_cast): Ditto.
4995         (build_c_cast): Ditto.
4996         (build_ptrmemfunc): Ditto.
4997         * typeck2.c (build_functional_cast): Ditto.
4998         * init.c (expand_aggr_init): Added LOOKUP_ONLYCONVERTING to
4999         expand_aggr_init_1 as inits are converted to the destination type.
5000
5001 Tue Dec 13 16:18:57 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5002
5003         * Make-lang.in (cc1plus): Depends on c-pragma.o.
5004
5005         * Makefile.in (OBJ{DEP,}S): Add ../c-pragma.o.
5006
5007         * lex.c (check_newline): If the #pragma is not recognized by g++,
5008         try machine-specific ones too.
5009         (handle_sysv_pragma): Copied from c-lex.c.
5010
5011 Mon Dec 12 23:53:06 1994  Mike Stump  <mrs@cygnus.com>
5012
5013         * except.c (expand_throw): Fix Dec 6th change, build_new likes a
5014         reference better.
5015
5016 Mon Dec 12 18:01:00 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5017
5018         * typeck.c (build_binary_op): Lose checks on TYPE_PTRMEMFUNC_P with
5019         IS_AGGR_TYPE, since now they will not both be set on the same type.
5020
5021         * pt.c (do_pending_expansions): Don't clear TREE_PUBLIC on
5022         instantiations controlled by -fexternal-templates.
5023
5024         * decl.c (duplicate_decls): Don't complain about different values of
5025         __attribute__ ((const)) and ((noreturn)).
5026
5027 Fri Dec  9 18:17:37 1994  Doug Evans  <dje@cygnus.com>
5028
5029         * Makefile.in (BISONFLAGS): Delete --yacc.
5030         (PARSE_H): Depend on $(PARSE_C), for parallel makes.
5031         (PARSE_C): Undo last patch.
5032
5033 Fri Dec  2 10:44:36 1994  Mike Stump  <mrs@cygnus.com>
5034
5035         * Makefile.in (BISONFLAGS): Add --yacc so that output winds up in
5036         y.tab.c.
5037
5038 Thu Dec  8 17:39:46 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5039
5040         * decl.c (finish_decl): Don't call obscure_complex_init for decls
5041         of indeterminate size.
5042
5043 Wed Dec  7 16:49:22 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5044
5045         * decl.c (obscure_complex_init): Function to tweak the decl to
5046         prevent expand_decl from tring to initialize it.
5047         (finish_decl): Use it rather than writing the same code in three
5048         different places.
5049
5050         * parse.y (bad_parm): Stop trying to support parms without types.
5051
5052 Wed Dec  7 12:06:56 1994  Mike Stump  <mrs@cygnus.com>
5053
5054         * decl2.c (grokfield): Make asm specs on static member functions
5055         work.
5056
5057 Tue Dec  6 15:43:20 1994  Mike Stump  <mrs@cygnus.com>
5058
5059         * except.c (expand_throw): Make a copy of the thrown object.
5060
5061 Tue Dec  6 14:16:34 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5062
5063         * parse.y: : has lower precedence than =.
5064
5065 Tue Dec  6 12:46:17 1994  Mike Stump  <mrs@cygnus.com>
5066
5067         * decl.c (pushdecl): Use DECL_NAME of VAR_DECLs to avoid namespace
5068         manglings.
5069         (grokvardecl): Add namespace into variable name.
5070
5071 Tue Dec  6 11:26:55 1994  Mike Stump  <mrs@cygnus.com>
5072
5073         * decl2.c (current_namespace_id): New routine to transform a simple
5074         name into a name in a namespace.
5075         * decl.c (grokdeclarator): Use it.
5076         * decl2.c (get_namespace_id): Find the name of the current
5077         namespace.
5078         (push_namespace, pop_namespace): Complete out missing
5079         functionality.
5080
5081 Mon Dec  5 17:11:51 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5082
5083         * class.c (finish_struct): Don't use LONG_LONG_TYPE_SIZE, as it may
5084         not be defined.  Fix warning message for enums and restore warning
5085         for non-enums.
5086
5087         * decl2.c (push_namespace): Dummy function.
5088         (pop_namespace): Ditto.
5089         (do_namespace_alias): Ditto.
5090         (do_using_decl): Ditto.
5091         (do_using_directive): Ditto.
5092
5093         * parse.y: New token NSNAME for namespace names.
5094         (extdef): Add namespace, using definitions.
5095         (using_decl): New rule for using declarations.
5096         (any_id): New rule for identifiers with any degree of scoping.
5097         (identifier): Add NSNAME.
5098         (notype_identifier): Ditto.
5099         (component_decl): Add using_decl.
5100         (nested_name_specifier): Add NSNAME SCOPE.
5101
5102         * typeck.c (convert_for_assignment): Handle conversions between
5103         enums and bool.
5104
5105         * decl.c (duplicate_decls): Only propagate DECL_MAIN_VARIANT on
5106         FUNCTION_DECLs.
5107
5108 Mon Dec  5 13:03:16 1994  Mike Stump  <mrs@cygnus.com>
5109
5110         * class.c (finish_struct): Give an error if one tries to declare a
5111         bit-field's size greater than a long long, as the backend will dump.
5112         It is not an error to declare an enum bit-field greater than its
5113         precision.  Warn if an enum bit-field is too small to hold all
5114         its values.
5115
5116 Mon Dec  5 11:41:50 1994  Mike Stump  <mrs@cygnus.com>
5117
5118         * typeck.c (convert_for_assignment): Use cp_convert instead of
5119         convert so that we don't get static casts.
5120
5121 Sun Dec  4 11:59:01 1994  Mike Stump  <mrs@cygnus.com>
5122
5123         * cvt.c (cp_convert): Don't complain about int->enum conversion if
5124         we are doing static casts.
5125
5126 Fri Dec  2 18:32:41 1994  Mike Stump  <mrs@cygnus.com>
5127
5128         * error.c (dump_expr): Do something more intelligent with SAVE_EXPRs
5129         when dumping expressions in error messages.
5130
5131 Fri Dec  2 17:04:27 1994  Mike Stump  <mrs@cygnus.com>
5132
5133         * gc.c (build_dynamic_cast): Change interface to libg++, ensure that
5134         the return type is the right type, and make references work.
5135
5136 Fri Dec  2 16:36:43 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5137
5138         * decl.c (poplevel): Don't be confused by function-scope
5139         declarations of non-nested functions.
5140         (duplicate_decls): Propagate DECL_MAIN_VARIANT.
5141         (pushdecl): Use duplicate_decls to copy info from old decl into new
5142         function-scope one rather than doing it here.
5143
5144         * decl2.c (mark_inline_for_output): Deal with the DECL_MAIN_VARIANT
5145         of this decl, in case this is a function-scope declaration.
5146
5147         * decl.c (finish_enum): Make sure that the type has the right
5148         precision when we call fixup_*_type.
5149
5150 Tue Nov 29 19:12:07 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5151
5152         * cvt.c (build_up_reference): Strip superfluous NOP_EXPRs; we do
5153         want to build up references to rvalues if possible.
5154         (cp_convert): Stick on a NOP_EXPR when converting to the same type.
5155
5156 Tue Nov 29 11:28:59 1994  Mike Stump  <mrs@cygnus.com>
5157
5158         * parse.y (maybe_raises): Handle throw ().
5159         * parse.y (ansi_raise_identifier): grok type-ids in exception
5160         specifications.
5161         * tree.c (build_exception_variant): Use list compare to check if
5162         two exception specifications match.
5163         * decl.c (duplicate_decls, bad_specifiers): Enhance wording on error
5164         messages.
5165         * call.c (build_method_call): Remove TREE_RAISES.
5166         * cvt.c (convert_to_aggr): Ditto.
5167         * typeck.c (build_function_call_real, convert_arguments): Ditto.
5168         * init.c (expand_aggr_init_1): Ditto.
5169
5170 Tue Nov 29 09:50:39 1994  Mike Stump  <mrs@cygnus.com>
5171
5172         * except.c: Add support for m68k and mips exception handling
5173         support.
5174
5175 Tue Nov 29 08:48:33 1994  Mike Stump  <mrs@cygnus.com>
5176
5177         * except.c (expand_end_all_catch): Throw into outer context, if we
5178         fall off end of catch handlers.
5179
5180 Mon Nov 28 16:44:41 1994  Mike Stump  <mrs@cygnus.com>
5181
5182         * Makefile.in: Make is easier to decide where parse.[ch] will be
5183         built.
5184
5185 Thu Nov 17 20:11:24 1994  Doug Evans  <dje@cygnus.com>
5186
5187         * cp/Make-lang.in (CXX_INSTALL_NAME) Use program_transform_name.
5188         (GXX_INSTALL_NAME) Likewise.
5189         (CXX_CROSS_NAME) Use program_transform_cross_name.
5190         (GXX_CROSS_NAME) Likewise.
5191         (c++.install-man): Use program_transform_name on g++.1.
5192         (c++.uninstall): Likewise.
5193
5194 Mon Nov 28 13:53:03 1994  Mike Stump  <mrs@cygnus.com>
5195
5196         * parse.y (THROW): Fix precedence of throw expressions.
5197
5198 Mon Nov 28 13:15:16 1994  Mike Stump  <mrs@cygnus.com>
5199
5200         * typeck.c (build_unary_op): Allow promotions from bool to int on
5201         unary ~.
5202
5203 Sun Nov 27 00:16:21 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5204
5205         * method.c (build_overload_name): Use DECL_ASSEMBLER_NAME for
5206         classes when appropriate.
5207         (build_overload_nested_name): When dealing with a function context,
5208         use ASM_FORMAT_PRIVATE_NAME to tweak the name of the function to
5209         avoid conflicts between local classes of the same name.
5210
5211 Wed Nov 23 17:59:42 1994  Mike Stump  <mrs@cygnus.com>
5212
5213         * gxx.gperf, parse.y, lex.h, hash.h, lex.c (init_lex), delc.c
5214         (duplicate_decls, grokdeclarator), cp-tree.h: Add support for
5215         `explicit'.
5216         * cvt.c (convert_to_reference, cp_convert, build_type_conversion_1,
5217         build_type_conversion): Use LOOKUP_ONLYCONVERTING in
5218         build_method_calls so that non-converting constructors are not used.
5219         * call.c (build_method_call): If we shouldn't use a non-converting
5220         constructor, then don't.
5221
5222 Wed Nov 23 14:46:56 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5223
5224         * call.c (build_method_call): Don't try to synthesize methods yet.
5225
5226 Tue Nov 22 12:45:21 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5227
5228         * pt.c (push_template_decls): Create CONST_DECLs for template
5229         constant parameters, not VAR_DECLs.
5230
5231 Sat Nov 19 15:28:31 1994  Jim Wilson  (wilson@chestnut.cygnus.com)
5232
5233         * typeck.c (build_binary_op_nodefault): Can shorten shift only if
5234         shift count is less than size in bits of arg0.
5235
5236 Thu Nov 17 15:30:50 1994  Mike Stump  <mrs@cygnus.com>
5237
5238         * gxx.gperf, hash.h, lex.c (init_lex, real_yylex), parse.y: Add new
5239         ANSI keywords and, and_eq, bitand, bitor, explicit, namespace, not,
5240         not_eq, or, or_eq, typename, using, xor, xor_eq to g++.  Still need
5241         to add support for explicit, namespace, typename, and using, support
5242         for the rest is already in.
5243
5244 Fri Nov  4 19:04:18 1994  Mike Stump  <mrs@cygnus.com>
5245
5246         * gc.c (get_bad_cast_node): New routine to support compile time
5247         throws of bad_cast.
5248         * gc.c (build_dynamic_cast): Support throwing of bad_cast at compile
5249         time.
5250
5251 Fri Nov  4 11:12:00 1994  Mike Stump  <mrs@cygnus.com>
5252
5253         * except.c: Add hppa support.
5254
5255 Fri Nov  4 10:50:50 1994  Mike Stump  <mrs@cygnus.com>
5256
5257         * except.c: Add rs6000 support.
5258
5259 Thu Nov  3 14:24:23 1994  Mike Stump  <mrs@cygnus.com>
5260
5261         * except.c (do_unwind): Add i[34]86 support.
5262
5263 Thu Nov  3 00:10:46 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5264
5265         * pt.c (do_pending_expansions): Unset TREE_PUBLIC on implicit
5266         instantiations.
5267
5268 Wed Nov  2 15:08:24 1994  Kung Hsu  (kung@mexican.cygnus.com)
5269
5270         * decl.c (finish_function): emit types used in method parameters
5271         into symbol table.
5272
5273 Wed Nov  2 15:05:47 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5274
5275         * pt.c (process_template_parm): Allow pointer to member function
5276         template parameter types.
5277         (uses_template_parms): Handle pointer to member function
5278         CONSTRUCTORs.
5279
5280         * g++.c (main): Cast first argument of bzero to (char *).
5281         Pass -lstdc++ instead of -lg++ unless we are invoked as 'g++'.
5282
5283 Mon Oct 31 14:50:48 1994  Kung Hsu  (kung@mexican.cygnus.com)
5284
5285         * gc.c (build_dynamic_cast): rewrite to make it work.
5286         * class.c (finish_vtbls): build more vtables if flag_rtti is on.
5287         * class.c (modify_all_direct_vtables): ditto.
5288         * init.c (expand_direct_vtbls_init): expand more vtables if
5289         flag_rtti is on.
5290         * decl.c (init_type_desc): add default return.
5291
5292 Tue Oct 25 17:13:09 1994  Kung Hsu  (kung@mexican.cygnus.com)
5293
5294         * tree.c (debug_binfo): get rid of the initial size entry of
5295         vtable.
5296         * cp-tree.h: change flag_dossier to flag rtti, define type
5297         descriptor type nodes.
5298         * decl.c (init_type_desc): new function to initialize type
5299         descriptor type nodes.
5300         * decl.c (record_builtin_type): change flag_dossier to flag_rtti.
5301         * lex.c (init_lex): ditto.
5302         * decl.c : change variable flag_dossier to flag_rtti.
5303         * decl.c (duplicate_decls): get rid initial size entry of vtable.
5304         * decl.c (hack_incomplete_structures): take out assert 164.
5305         * search.c (get_abstract_virtuals_1): ditto.
5306         * search.c (dfs_init_vbase_pointers): change CLASSTYPE_DOSSIER to
5307         CLASSTYPE_RTTI.
5308         * parse.y: ditto.
5309         * class.c (prepare_fresh_vtable): for virtual bases, get right
5310         offset.
5311         * class.c (add_virtual_function): change flag_dossier to
5312         flag_rtti.
5313         * class.c (modify_one_vtable): modify the right rtti entry.
5314         * class.c (override_one_vtable): get rid of size entry.
5315         * class.c (finish_struct): change flag_dossier to flag_rtti, and
5316         build extra vtables, build type descriptors for polymorphic
5317         classes.
5318         * gc.c (build_headof): make headof() works correctly with new
5319         rtti.
5320         * gc.c (build_typeid): make this function work with new rtti.
5321         * gc.c (get_typeid): make this function work with new rtti.
5322         * gc.c (build_bltn_desc): new function for new rtti.
5323         * gc.c (build_user_desc): ditto.
5324         * gc.c (build_class_desc): ditto.
5325         * gc.c (build_ptr_desc): ditto.
5326         * gc.c (build_attr_desc): ditto.
5327         * gc.c (build_func_desc): ditto.
5328         * gc.c (build_ptmf_desc): ditto.
5329         * gc.c (build_ptmd_desc): ditto.
5330         * gc.c (build_t_desc): ditto.
5331         * gc.c : comment out old build_t_desc, build_i_desc, build_m_desc.
5332
5333 Tue Oct 25 13:37:41 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5334
5335         * call.c (convert_harshness): Check for TREE_UNSIGNED differences
5336         after checking for integral conversions.
5337
5338 Wed Nov 30 19:13:50 1994  Mike Stump  <mrs@cygnus.com>
5339
5340         * Version 2.6.3 released.
5341
5342 Thu Nov 17 10:56:50 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5343
5344         * typeck2.c (build_m_component_ref): Check the basetype of the
5345         member pointer against the main variant of the object type.
5346
5347 Mon Nov 14 14:21:52 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5348
5349         * cvt.c (convert_to_reference): Make sure that the original expr
5350         gets its type back when converting a reference.
5351
5352         * method.c (build_overload_name): Clear numeric_outputed_need_bar here.
5353         (build_decl_overload): Instead of here.
5354
5355 Tue Nov  8 17:11:24 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5356
5357         * cvt.c (cp_convert): Don't build a TARGET_EXPR if we're not in a
5358         function.
5359
5360         * typeck.c (convert_for_initialization): Handle initialization from
5361         a TARGET_EXPR.
5362
5363 Sun Nov  6 01:34:24 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5364
5365         * pt.c (lookup_nested_type_by_name): Fix list-walking logic.
5366         (tsubst): When replacing a TEMPLATE_TYPE_PARM, propagate
5367         TYPE_READONLY and TYPE_VOLATILE from the argument.
5368         (unify): When unifying with a TEMPLATE_TYPE_PARM, remove cv-quals
5369         present in parm from arg.
5370         (type_unification): Strip REFERENCE_TYPE from the argument type.
5371         (unify): Don't strip REFERENCE_TYPE from the argument type.
5372
5373 Sat Nov  5 22:42:15 1994  Greg McGary  (gkm@magilla.cichlid.com)
5374
5375         * pt.c (do_type_instantiation): Check to see if there's a
5376         IDENTIFIER_TEMPLATE on a class before calling
5377         instantiate_member_templates().
5378
5379 Sat Nov 12 06:35:42 1994  Mike Stump  <mrs@cygnus.com>
5380
5381         * Version 2.6.2 released.
5382
5383 Thu Nov  3 18:48:19 1994  Paul Eggert  <eggert@twinsun.com>
5384
5385         * Makefile.in (spew.o, lex.o, pt.o):
5386         Depend on $(srcdir)/parse.h, not parse.h.
5387
5388 Tue Nov  1 19:19:41 1994  Mike Stump  <mrs@cygnus.com>
5389
5390         * Version 2.6.1 released.
5391
5392 Sun Oct 23 13:19:55 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5393
5394         * decl2.c: Declare flag_access_control.
5395         (struct lang_f_options): Add access-control.
5396         * expr.c (cplus_expand_expr, NEW_EXPR): Unset flag_access_control
5397         for the call to expand_aggr_init to copy the object out of the
5398         pcc_struct_return slot.
5399         * search.c (compute_access): if (!flag_access_control) return
5400         access_public.
5401
5402 Fri Oct 21 00:32:54 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5403
5404         * lex.c (cons_up_default_function): Don't try to defer method
5405         synthesis now.
5406
5407         * decl.c (init_decl_processing): Use __pure_virtual for abort_fndecl
5408         instead of abort, since the OSF/1 dynamic linker doesn't like to see
5409         relocation entries for abort.
5410
5411         * tree.c (array_type_nelts_total): Use sizetype, not
5412         integer_type_node.
5413         (array_type_nelts_top): Ditto.
5414
5415 Thu Oct 20 15:48:27 1994  Mike Stump  <mrs@cygnus.com>
5416
5417         * decl.c (grokdeclarator): Added handling for catch parameters
5418         (CATCHPARM).
5419         * except.c (expand_start_catch_block): Use the new CATCHPARM context
5420         instead of NORMAL.
5421         * except.c (expand_throw): Don't let convert_to_reference complain
5422         about what we are doing.
5423
5424 Thu Oct 20 12:55:24 1994  Jim Wilson  (wilson@cygnus.com)
5425
5426         * method.c (emit_thunk): Call instantiate_virtual_regs.
5427
5428 Wed Oct 19 14:15:33 1994  Mike Stump  <mrs@cygnus.com>
5429
5430         * except.c (expand_exception_blocks): Make sure throw code doesn't
5431         get put in function that won't be output.
5432
5433 Mon Oct 17 18:03:15 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5434
5435         * decl.c (init_decl_processing): Make alloca a builtin.
5436
5437 Thu Oct 27 21:10:25 1994  Craig Burley  (craig@burley)
5438
5439         * g++.c (main): Only decrement "added" and set "library" to
5440         NULL when "library" != NULL (just like 940829 fix).
5441
5442 Mon Oct 17 15:56:11 1994  Mike Stump  <mrs@cygnus.com>
5443
5444         * except.c (expand_start_catch_block): Make sure the false label
5445         gets onto the permanent obstack, as it is used for the exception
5446         table.
5447
5448 Fri Oct 14 18:54:48 1994  Mike Stump  <mrs@cygnus.com>
5449
5450         * class.c (modify_one_vtable): Since the DECL_CONTEXT of fndecl can
5451         be set just below, use current_fndecl instead.
5452
5453 Fri Oct 14 15:12:22 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5454
5455         * init.c (expand_aggr_vbase_init_1): Don't call expand_aggr_init_1
5456         with LOOKUP_SPECULATIVELY.
5457         (expand_default_init): Abort if build_method_call returns NULL_TREE.
5458
5459         * typeck.c (build_modify_expr): Don't just build a MODIFY_EXPR if
5460         the rhs is a TARGET_EXPR.
5461
5462         * parse.y (left_curly): Anonymous types are not affected by #pragma
5463         interface/implementation.
5464
5465         * method.c (synthesize_method): Don't call setup_vtbl_ptr for the
5466         default constructor if it isn't needed.
5467
5468         * lex.c (cons_up_default_function): Do synthesize methods for
5469         anonymous types if necessary.
5470
5471 Thu Oct 13 17:44:55 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5472
5473         * method.c (build_decl_overload): Set numeric_outputed_need_bar to 0.
5474
5475 Wed Oct 12 13:27:57 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5476
5477         * typeck.c (build_modify_expr): Understand how to copy an aggregate.
5478
5479         * init.c (expand_default_init): Ditto.  Also remove some of the
5480         crufty code that assumes methods will not be synthesized properly.
5481
5482         * lex.c (cons_up_default_function): If the containing type has no
5483         name, these functions should never need to be called, so just
5484         declare them.
5485
5486         * lex.c (real_yylex): Use HOST_BITS_PER_WIDE_INT to determine the
5487         bitmask for lexing character constants.
5488
5489         * call.c (build_method_call): Disable code that tries to do tricky
5490         stuff with a default parameter that is a constructor call, but
5491         actually does other tricky stuff that breaks things.
5492
5493 Wed Oct 12 16:14:01 1994  Benoit Belley  <belley@cae.ca>
5494
5495         * decl.c (finish_enum): Disable code which forces enums to be signed,
5496         since this conflicts with their use as bitfields. type_promotes_to
5497         handles promotion of enums of underlying unsigned types to signed
5498         integer types.
5499
5500 Wed Oct 12 13:24:03 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5501
5502         * cvt.c (type_promotes_to): Also promote enums to long if
5503         appropriate.
5504
5505         * typeck.c (default_conversion): Don't expect type_promotes_to to
5506         return a main variant.
5507
5508 Wed Oct 12 12:19:45 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5509
5510         * call.c (build_scoped_method_call): Don't lose side effects in the
5511         object expression when calling a non-existent destructor.
5512
5513 Fri Sep  2 19:05:21 1994  Rohan Lenard  (rjl@iassf.easams.com.au)
5514
5515         * call.c (build_scoped_method_call): Remove erroneous error message
5516         when destructor call is written as a scoped call.
5517
5518 Tue Oct 11 23:48:31 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5519
5520         * various: Cast pointer arguments to bzero and bcopy to char *.
5521
5522 Tue Oct 11 19:34:32 1994  Mike Stump  <mrs@cygnus.com>
5523
5524         * class.c (get_derived_offset): Added a type parameter to limit how
5525         far up the CLASSTYPE_VFIELD_PARENT chain we search.
5526         * class.c (modify_one_vtable, fixup_vtable_deltas): When forming the
5527         offset to put into the vtable for the this parameter, make sure we
5528         don't offset from a parent of the DECL_CONTEXT of the function.
5529
5530 Tue Oct 11 16:10:52 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5531
5532         * pt.c (do_function_instantiation): Set DECL_EXTERNAL and
5533         TREE_STATIC when setting DECL_INTERFACE_KNOWN.
5534         (do_type_instantiation): Ditto.
5535
5536         * lex.c (cons_up_default_function): Set DECL_INTERFACE_KNOWN,
5537         DECL_EXTERNAL and TREE_STATIC as appropriate.
5538
5539         * decl2.c (finish_file): Also synthesize methods that don't have
5540         DECL_EXTERNAL set.  Set interface_unknown before doing so.
5541
5542         * decl.c (start_function): If DECL_INTERFACE_KNOWN is set on the
5543         function decl, don't muck with TREE_PUBLIC and DECL_EXTERNAL.
5544
5545 Mon Oct 10 00:56:53 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5546
5547         * lex.c (cons_up_default_function): Mark methods in a template class
5548         as template instances.  Store the values of interface_unknown and
5549         interface_only for do_pending_inlines.
5550         (do_pending_inlines): Use them.
5551
5552         * decl2.c (finish_file): If we haven't seen a definition of a
5553         function declared static, make the decl non-PUBLIC so compile_file
5554         can give an error.
5555
5556 Sun Oct  9 02:42:29 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5557
5558         * method.c (do_build_copy_constructor): Handle anonymous unions.
5559         (do_build_assign_ref): Ditto.
5560         (largest_union_member): Move from lex.c.
5561
5562 Sat Oct  8 14:59:43 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5563
5564         Re-implement g++'s vague linkage independent of TREE_PUBLIC.
5565         * pt.c (instantiate_member_templates): Lose redundant
5566         -fexternal-templates handling.
5567         (tsubst): Set TREE_PUBLIC and DECL_EXTERNAL on new decls.  Don't set
5568         TREE_STATIC or DECL_INTERFACE_KNOWN.
5569         (do_pending_expansions): Predicate on DECL_INTERFACE_KNOWN instead
5570         of DECL_EXTERNAL for explicit instantiations.
5571         (do_function_instantiation): Do the new thing.
5572         (do_type_instantiation): Ditto.
5573         (instantiate_template): Deal with member templates defined in a .cc
5574         file with -fexternal-templates.
5575         * except.c (expand_exception_blocks): Use DECL_LINKAGE_KNOWN to
5576         decide whether to stick builtin_throw here.
5577         * decl2.c (import_export_inline): Predicate on DECL_INTERFACE_KNOWN
5578         rather than TREE_PUBLIC.  Generally fix rules.
5579         (finish_file): Use DECL_INITIAL to determine whether or not a method
5580         has been synthesized, rather than TREE_ASM_WRITTEN.
5581         * decl.c (warn_extern_redeclared_static): Use DECL_PUBLIC instead of
5582         TREE_PUBLIC.
5583         (pushdecl): Ditto.
5584         (duplicate_decls): Ditto.  Deal with DECL_DECLARED_STATIC and
5585         DECL_INTERFACE_KNOWN. 
5586         (redeclaration_error_message): Fix checking for conflicting linkage.
5587         (define_function): Set DECL_INTERFACE_KNOWN.
5588         (grokfndecl): Function decls are PUBLIC until we are sure about
5589         their linkage.  Set DECL_DECLARED_STATIC as needed.
5590         (start_function): Deal with linkage.  Move pushdecl after linkage
5591         magic.
5592         (finish_function): Don't set TREE_ASM_WRITTEN on discarded inlines.
5593         * cp-tree.h (lang_decl_flags): Add interface_known and
5594         declared_static.
5595         (DECL_INTERFACE_KNOWN): New macro.
5596         (DECL_DECLARED_STATIC): New macro.
5597         (DECL_PUBLIC): New macro.
5598
5599         Clean up bogus use of TREE_PUBLIC.
5600         * class.c (alter_access): Fix mistaken use of TREE_PUBLIC (it
5601         doesn't correspond to TREE_PROTECTED and TREE_PRIVATE).
5602         * init.c (do_friend): Don't arbitrarily set TREE_PUBLIC.
5603
5604 Wed Oct  5 13:44:41 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5605
5606         * call.c (build_overload_call_real): Don't immediately do
5607         array->pointer conversion.
5608
5609         * pt.c (type_unification): If not passing to a reference, strip
5610         cv-quals.  Also handle array->pointer conversion.
5611
5612 Tue Oct  4 17:45:37 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5613
5614         * decl.c (grokdeclarator): Don't warn about applying const to a
5615         const typedef or template type parameter.
5616
5617         * decl2.c (finish_file): Also synthesize methods after walking the
5618         vtables.  Ugly ugly ugly.
5619
5620 Mon Oct  3 15:02:41 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5621
5622         * various: Remove lingering remnants of old exception handling code.
5623
5624         * decl2.c (finish_file): Synthesize methods before walking the
5625         vtables, so that the vtables get emitted as needed.
5626
5627         * decl.c (shadow_tag): Remove obsolete code for pushing tags and
5628         dealing with exceptions.
5629
5630 Mon Oct  3 13:05:27 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>
5631
5632         * Make-lang.in (g++-cross): Depend upon version.o and $(LIBDEPS).
5633
5634 Mon Oct  3 02:59:28 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5635
5636         * decl2.c (finish_file): Fix inline handling.
5637
5638 Sun Oct  2 00:21:56 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5639
5640         * decl.c (grokdeclarator): Handle redundant scope even better.
5641         ({push,pop}_cp_function_context): Take toplev parameter.
5642
5643         * method.c (synthesize_method): Pass toplev parameter to
5644         {push,pop}_cp_function_context depending on decl_function_context
5645         (fndecl).
5646
5647         * typeck.c (build_x_unary_op): Unary & on OFFSET_REFs is always the
5648         built-in version.
5649
5650         * method.c (synthesize_method): Don't be confused by __in_chrg
5651         parameter.
5652
5653         * class.c (popclass): Set C_C_D like start_function does.
5654
5655         * decl.c (grokdeclarator): Handle redundant scope better.
5656
5657         * parse.y (expr_or_declarator): Add '(' expr_or_declarator ')' rule.
5658         (direct_notype_declarator): Ditto.
5659         (complex_direct_notype_declarator): Remove it here.
5660
5661 Sat Oct  1 21:42:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
5662
5663         * init.c (resolve_offset_ref): Fix types used in resolving .*
5664         expressions.
5665
5666 Sat Oct  1 15:18:49 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
5667
5668         Beginnings of work to synthesize methods only when needed.
5669         * call.c (build_method_call): Synthesize methods as necessary
5670         (currently never necessary).
5671         * class.c (popclass): Don't try to set C_C_D here, as it'll end up
5672         on the wrong obstack.
5673         * decl.c (push_cp_function_context): Mostly copied from
5674         push_c_function_context.
5675         (pop_cp_function_context): Similarly.
5676         (finish_function): Reverse order of poplevel and pop_nested_class so
5677         that current_class_decl is restored properly.  
5678         (start_function): Ditto.
5679         (finish_function): Add parameter 'nested'.  Don't call
5680         permanent_allocation if (nested).
5681         * various: Pass extra parameter to finish_function.     
5682         * decl2.c (finish_file): Reorganize end-of-file inline handling,
5683         synthesizing methods as necessary.
5684         * lex.c (cons_up_default_function): Call mark_inline_for_output.
5685         Only synthesize methods immediately if #pragma implementation
5686         (currently disabled).
5687         (do_pending_inlines): Call synthesize_method.
5688         * method.c (synthesize_method): New function; all method synthesis
5689         goes through here.  Calls do_build_assign_ref and
5690         do_build_copy_constructor.
5691         (build_default_constructor): Remove.
5692         (build_dtor): Ditto.
5693         (build_assign_ref): Rename to do_build_assign_ref and remove stuff
5694         done by synthesize_method.
5695         (build_copy_constructor): Similarly.
5696
5697 Thu Sep 29 16:58:52 1994  Mike Stump  <mrs@cygnus.com>
5698
5699         * typeck.c (c_expand_return): Use magic so the backend can fixup the
5700         assignment into the return register, so cleanups won't clobber it.
5701
5702 Thu Sep 29 13:08:50 1994  Jason Merrill  (jason@deneb.cygnus.com)
5703
5704         * method.c (hack_identifier): Don't call assemble_external for
5705         template decls.
5706
5707         * decl.c (finish_decl): Also end temporary allocation if the decl in
5708         question has a type of error_mark_node.
5709
5710 Wed Sep 28 21:45:00 1994  Mike Stump  <mrs@cygnus.com>
5711
5712         * typeck.c (build_modify_expr): When optimizing ?: on lhs, make sure
5713         that if the ?: was a reference type, that the subparts will be also.
5714
5715 Wed Sep 28 16:14:04 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
5716
5717         * except.c (register_exception_table): Use Pmode, not PTRmode.
5718
5719 Fri Sep 23 13:54:27 1994  Jason Merrill  (jason@deneb.cygnus.com)
5720
5721         * lex.c (do_pending_inlines): Do method synthesis after the
5722         pending_inlines have been reversed.
5723
5724 Thu Sep 22 12:53:03 1994  Per Bothner  (bothner@kalessin.cygnus.com)
5725
5726         * decl2.c (finish_file):  Fix Brendan's fix:  Only call
5727         register_exception_table if there is a non-empty exception table.
5728
5729 Thu Sep 22 12:03:46 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
5730
5731         * decl2.c (finish_file): Only do register_exception_table if
5732         -fhandle-exceptions is being used.
5733
5734 Wed Sep 21 19:01:51 1994  Per Bothner  (bothner@kalessin.cygnus.com)
5735
5736         * except.c (output_exception_table_entry):  Simplify
5737         by using assemble_integer.
5738         (build_exception_table):  Change to return a count.
5739         Cleanup to use standard macros, instead of hard-wired
5740         sparc asm format.  Don't make __EXCEPTION_TABLE__ global.
5741         (register_exception_table):  New function.  Generate call to builtin.
5742         * decl2.c (finish_file):  Call register_exception_table.
5743         * cp-tree.h (build_exception_table):  Fix prototype.
5744
5745 Wed Sep 21 13:20:42 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
5746
5747         * tree.c (break_out_calls): Don't try to duplicate the DECL_INITIAL.
5748
5749         * decl2.c (delete_sanity): Give an error at trying to delete a
5750         function.
5751
5752 Wed Sep 21 11:47:10 1994  Jason Merrill  (jason@deneb.cygnus.com)
5753
5754         * lex.c (cons_up_default_function): Mark synthesized destructors
5755         inline.
5756
5757         * decl.c (duplicate_decls): Ignore redeclarations of wchar_t as
5758         something other than __wchar_t, complaining if -pedantic and not in
5759         a system header.
5760
5761 Tue Sep 20 09:43:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
5762
5763         * decl.c (xref_tag): Set up BINFO_INHERITANCE_CHAIN on base binfos
5764         here.
5765
5766         * typeck.c (build_modify_expr): Require complete type after checking
5767         for error_mark_node.
5768
5769         * call.c (build_method_call): Print parmtypes when complaining of
5770         ambiguous call.
5771
5772         * typeck.c (build_modify_expr): Handle assignment to array from
5773         non-array.
5774
5775         * decl.c (lookup_name_real): Deal with got_scope == error_mark_node.
5776
5777         * call.c (build_method_call): Don't bother with the exact match.
5778
5779 Mon Sep 19 00:51:39 1994  Jason Merrill  (jason@deneb.cygnus.com)
5780
5781         * init.c (expand_aggr_init): If we munge the type of the variable,
5782         also munge the type of the initializer.
5783
5784         * decl.c (grokdeclarator): Use <= when comparing to RID_LAST_MODIFIER.
5785         (init_decl_processing): Push artificial declaration of wchar_t so
5786         people don't have to declare it before they can use it.
5787
5788         * error.c (cp_line_of): return lineno in lieu of 0.
5789
5790         * typeck.c (convert_for_assignment): Handle conversion of pmfs to
5791         int and bool.
5792         (build_component_ref): Fold the COMPONENT_REF in case it can be
5793         reduced.
5794
5795         * typeck2.c (store_init_value): Don't pedwarn about non-constant
5796         bracketed initializers for automatic variables.
5797
5798 Sun Sep 18 10:12:12 1994  Jason Merrill  (jason@deneb.cygnus.com)
5799
5800         * error.c (dump_decl): Don't say `typedef enum foo foo'.
5801
5802         * decl.c (start_decl): Don't set TREE_PUBLIC on template decls just
5803         because they're affected by #pragma i/i.  We'll deal with that when
5804         they get instantiated.
5805
5806         * typeck.c (build_unary_op): Clean up cruft in ADDR_EXPR case.
5807
5808         * class.c (instantiate_type): Set TREE_CONSTANT on instantiated
5809         ADDR_EXPRs if appropriate.
5810
5811         * decl.c (build_ptrmemfunc_type): Unset IS_AGGR_TYPE on pmf types.
5812
5813         * typeck.c (build_ptrmemfunc): Handle &overloaded_method as an
5814         initializer properly.
5815         * typeck2.c (digest_init): Ditto.
5816
5817         * tree.c (cp_build_type_variant): Like c_build_type_variant, except
5818         it uses build_cplus_array_type.
5819         * *.c: Use cp_build_type_variant instead of c_build_type_variant.
5820
5821         * pt.c (do_type_instantiation): Don't try to instantiate nested
5822         enums.
5823
5824 Tue Sep 13 10:56:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
5825
5826         * cvt.c (build_up_reference): Handle preincrement and predecrement
5827         properly.
5828
5829 Tue Sep 13 09:51:59 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
5830
5831         * decl.c (finish_decl): Only lay out the rtl for DECL if it is, in
5832         fact, static.
5833
5834 Mon Sep 12 14:40:30 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
5835
5836         * decl.c (finish_decl): Lay out the rtl for DECL before doing
5837         grok_reference_init, in case it's static.
5838
5839 Mon Sep 12 12:45:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
5840
5841         * class.c (finish_struct): Don't synthesize constructors if the
5842         class has a field with the same name as the class.  Don't die on
5843         classes with no constructors or destructors.  Don't die if the head
5844         and tail of the class are in different files.
5845
5846         * decl.c (grokdeclarator): Don't treat a function pointer field
5847         with the same name as the class as a constructor.
5848
5849 Fri Sep  9 13:17:00 1994  Jason Merrill  (jason@deneb.cygnus.com)
5850
5851         * typeck.c (build_c_cast): Pull constant values out of their
5852         variables here.
5853
5854         * decl.c (duplicate_decls): Only propagate DECL_CHAIN in
5855         FUNCTION_DECLs and TEMPLATE_DECLs.
5856
5857 Thu Sep  8 10:07:48 1994  Jason Merrill  (jason@deneb.cygnus.com)
5858
5859         * decl.c (duplicate_decls): Propagate DECL_CHAIN in all DECLs that
5860         have it.
5861
5862         * pt.c (unify): REALs and INTEGERs only unify with their own genus.
5863         (instantiate_member_templates): Don't muck with DECL_EXTERNAL and
5864         TREE_PUBLIC unless -fexternal-templates.
5865
5866 Wed Sep  7 13:17:10 1994  Jason Merrill  (jason@deneb.cygnus.com)
5867
5868         * pt.c (do_type_instantiation): Call instantiate_member_templates.
5869         Deal with specializations.
5870         (tsubst): Don't stick the mangled name in DECL_NAME for function
5871         instantiations.  Don't push them, either.
5872
5873         * decl2.c (grokfield): Move code for generating the
5874         DECL_ASSEMBLER_NAME for static members from here.
5875         * method.c (build_static_name): To here.
5876         * decl.c (grokvardecl): Call build_static_name.
5877         (duplicate_decls): Keep old DECL_ASSEMBLER_NAME.
5878
5879 Mon Sep  5 12:49:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
5880
5881         * call.c (build_method_call): if -Wsynth, warn when selecting
5882         synthesized op= over user-supplied one cfront would select.
5883         * decl2.c (lang_decode_option): Handle -Wsynth.
5884
5885 Fri Sep  2 15:11:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
5886
5887         * decl.c (finish_enum): Overhaul to fix several bugs.
5888         (start_enum): Disable useless code.
5889
5890 Thu Sep  1 16:04:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
5891
5892         * typeck.c (c_expand_return): Warn about returning a reference to a
5893         temporary.
5894         (convert_arguments): Increment argument counter when using default
5895         arguments, too.
5896
5897 Wed Aug 31 14:29:22 1994  Jason Merrill  (jason@deneb.cygnus.com)
5898
5899         * decl.c (finish_decl): If the type of decl is error_mark_node,
5900         don't bother trying to do anything.
5901
5902         * typeck.c (convert_for_initialization): If the rhs contains a
5903         constructor call, pretend the lhs type needs to be constructed.
5904
5905         * init.c (expand_default_init): If we stick the object inside the
5906         initializer, mark the initializer used.
5907
5908 Tue Aug 30 13:50:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
5909
5910         * method.c (build_assign_ref): return *this;
5911         (build_assign_ref): Fix base assignment order.
5912         (build_copy_constructor): Fix member init order.
5913
5914 Mon Aug 29 13:54:39 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
5915
5916         * g++.c (main): Remember to clear out SAW_SPECLANG after we see
5917         its argument.
5918
5919 Sat Aug 27 09:36:03 1994  Jason Merrill  (jason@deneb.cygnus.com)
5920
5921         * method.c (build_copy_constructor): Also copy virtual bases.
5922
5923 Fri Aug 26 17:05:15 1994  Jason Merrill  (jason@deneb.cygnus.com)
5924
5925         * lex.c (do_pending_inlines): Clear out pending_inlines before doing
5926         any synthesis.  Also first set deja_vu on all pending_inlines.
5927
5928         * method.c (build_assign_ref): Use build_member_call to invoke base
5929         operator=, rather than build_modify_expr.  And use
5930         build_reference_type instead of TYPE_REFERENCE_TO.
5931         (build_copy_constructor): Use TYPE_NESTED_NAME to identify the
5932         basetype.
5933
5934         * decl2.c (grokfield): Don't complain about undefined local class
5935         methods.
5936
5937         * class.c (finish_struct): Don't try to synthesize methods here.
5938         * lex.c (do_pending_inlines): Instead, synthesize them here.
5939         (init_lex): Initialize synth_obstack.
5940         (cons_up_default_function): Stick synthesis request on
5941         pending_inlines.
5942
5943 Fri Aug 26 12:24:14 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
5944
5945         * call.c (build_method_call) [PCC_STATIC_STRUCT_RETURN]: Also
5946         accept an RTL_EXPR in what we're about to use for the instance,
5947         since anything which would end up with pcc_struct_return set
5948         inside cplus_expand_expr.
5949
5950         * cp-tree.h (cons_up_default_function): Note change of prototype.
5951
5952 Thu Aug 25 23:05:30 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
5953
5954         * class.c (finish_struct): Undid change from Aug 21 testing
5955         CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING.
5956         * parse.y (left_curly): Ditto, undid change from Aug 21.
5957         * decl.c (xref_tag): Undid change from Aug 21, set
5958         CLASSTYPE_INTERFACE correctly, and added comments.
5959
5960 Thu Aug 25 00:36:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
5961
5962         Rework approach to synthesized methods; don't go through the parser
5963         anymore.
5964         * class.c (finish_struct): Use new synthesis approach.
5965         * lex.c (cons_up_default_function): Now just creates declaration,
5966         not code.
5967         (largest_union_member): #if 0 out.
5968         (default_assign_ref_body): Ditto.
5969         (default_copy_constructor_body): Ditto.
5970         * method.c (build_default_constructor): New function to synthesize X().
5971         (build_copy_constructor): Synthesize X(X&).
5972         (build_assign_ref): Synthesize X::operator=(X&).
5973         (build_dtor): Synthesize ~X().
5974
5975         * error.c (cp_line_of): If we're dealing with an artificial
5976         TYPE_DECL, look at the type instead.
5977
5978 Wed Aug 24 11:11:50 1994  Jason Merrill  (jason@deneb.cygnus.com)
5979
5980         * init.c (sort_member_init): Check warn_reorder.
5981         * decl2.c (lang_decode_option): Handle -W{no-,}reorder.
5982
5983         * cp-tree.h (CLASSTYPE_SOURCE_LINE): New macro.
5984         * error.c (cp_line_of): Use CLASSTYPE_SOURCE_LINE for aggregates.
5985         * class.c (finish_struct): Set CLASSTYPE_SOURCE_LINE.
5986
5987 Tue Aug 23 09:28:35 1994  Mike Stump  <mrs@cygnus.com>
5988
5989         * error.c (dump_decl): Improve wording, so that error messages
5990         dont't read template<, class foo>...
5991
5992 Mon Aug 22 15:30:51 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
5993
5994         * parse.y (label_colon): Also match a TYPENAME as a label name,
5995         since they may have declared a class by that name but have also
5996         tried to have a local label under the same name.
5997
5998         * pt.c (coerce_template_parms): Call cp_error, not cp_error_at,
5999         for the message so they know at what point it was instantiated.
6000
6001 Sun Aug 21 23:07:35 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
6002
6003         * class.c (finish_struct): Move setting of CLASSTYPE_INTERFACE and
6004         CLASSTYPE_VTABLE_NEEDS_WRITING for signatures up to left_curly time.
6005         * decl.c (xref_tag): Move setting of CLASSTYPE_INTERFACE and
6006         CLASSTYPE_VTABLE_NEEDS_WRITING for signatures down to left_curly time.
6007         * parse.y (left_curly): New final resting place for setting
6008         CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING for signatures.
6009
6010         * class.c (finish_struct): Don't test for function/field name
6011         conflicts in signatures, since all the fields are compiler-constructed.
6012
6013 Fri Aug 19 14:04:47 1994  Kung Hsu  (kung@mexican.cygnus.com)
6014
6015         * method.c (build_overload_nested_name): in qualified name
6016         mangling, the template with value instantiation will have numeric
6017         at end and may mixed with the name length of next nested level.
6018         Add a '_' in between.
6019         * method.c (build_overload_name): ditto.
6020         * method.c (build_overload_identifier): ditto.
6021
6022 Thu Aug 18 16:24:43 1994  Mike Stump  <mrs@cygnus.com>
6023
6024         * error.c (dump_decl): Handle NULL args.
6025
6026 Thu Sep 29 16:15:36 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>
6027
6028         * g++.c: Rework last change so it's done like collect.c (and 
6029         gcc.c).
6030
6031 Wed Sep 14 10:17:27 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>
6032
6033         * g++.c: Include <sys/errno.h> in case `errno' is a macro
6034         as permitted by ANSI C.
6035
6036 Thu Aug 18 12:48:09 1994  Mike Stump  <mrs@cygnus.com>
6037
6038         * class.c (finish_struct): Move setting of CLASSTYPE_INTERFACE and
6039         CLASSTYPE_VTABLE_NEEDS_WRITING up to left_curly time.
6040         * decl.c (xref_tag): Move setting of CLASSTYPE_INTERFACE and
6041         CLASSTYPE_VTABLE_NEEDS_WRITING down to left_curly time.
6042         * parse.y (left_curly): New final resting place for setting
6043         CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING.
6044
6045 Thu Aug 11 11:32:42 1994  H.J. Lu  (hjl@nynexst.com)
6046
6047         * g++.c (main): Only decrement "added" and set "library" to
6048           NULL when "library" != NULL.
6049
6050 Sat Aug 13 00:14:52 1994  Jason Merrill  (jason@deneb.cygnus.com)
6051
6052         * decl.c (grokdeclarator): Don't set TREE_PUBLIC on a function decl
6053         just because its class has a known interface.
6054         (decls_match): Deal with new format of template parms.
6055
6056         * lex.c (cons_up_default_function): Don't play with TREE_PUBLIC and
6057         DECL_EXTERNAL here.
6058
6059 Fri Aug 12 01:55:15 1994  Jason Merrill  (jason@deneb.cygnus.com)
6060
6061         * decl.c (pushtag): SET_DECL_ARTIFICIAL on gratuitous typedefs.
6062         (xref_defn_tag): Ditto.
6063         (pushdecl): Only allow artificial typedefs to be shadowed.
6064
6065         * init.c (emit_base_init): Pass the right binfos to
6066         expand_aggr_init_1.
6067
6068         * class.c (delete_duplicate_fields_1): Make it work right.
6069         (finish_struct): Catch function/field name conflict.
6070
6071         * decl2.c (check_classfn): Pass the function to cp_error, not just
6072         the name.
6073
6074         * init.c (sort_member_init): Warn when order of member initializers
6075         does not match order of member declarations.
6076         (emit_base_init): Call expand_aggr_init_1 with LOOKUP_PROTECT.
6077
6078         * error.c (dump_expr): Handle lists of functions.
6079
6080         * decl.c (start_function): #pragma interface only affects functions
6081         that would otherwise be static.
6082         (finish_decl): Don't warn about an unused variable if it has both
6083         constructor and destructor, since the 'resource allocation is
6084         initialization' idiom is relatively common.
6085
6086         * typeck.c (comp_target_types): Don't handle TEMPLATE_TYPE_PARMs.
6087         (comp_target_parms): Ditto.
6088         (compparms): Never consider default parms.
6089         (common_base_type): Don't choose a virtual baseclass if there is a
6090         more derived class in common.
6091         (build_conditional_expr): If pedantic, pedwarn about conversion to
6092         common base in conditional expr.
6093
6094         * class.c (instantiate_type): Handle template instantiation better.
6095
6096         * typeck.c (convert_arguments): Don't try to get tricky and convert
6097         to int directly when PROMOTE_PROTOTYPES is set, as it breaks
6098         user-defined conversions.
6099
6100         * lex.c (check_for_missing_semicolon): Also give error at end of
6101         file.
6102
6103         * call.c (build_method_call): Don't promote arrays to pointers here.
6104
6105         * typeck.c (convert_arguments): Don't require the actual parameter
6106         to be of a complete type if the formal parameter is a reference.
6107
6108 Thu Aug 11 15:21:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
6109
6110         * decl.c (grokdeclarator): Soften 'static' on member function error
6111         to pedwarn.
6112
6113         * init.c (build_new): Don't automatically save rval.
6114         (build_offset_ref): Do field lookup with proper basetype_path.
6115
6116 Thu Aug 11 12:46:54 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
6117
6118         * errfn.c (cp_silent): Declare to mark when we should avoid
6119         emitting warnings and errors.
6120         (cp_error): Check it.
6121         (cp_warning): Likewise.
6122         (cp_pedwarn): Likewise.
6123         (cp_compiler_error): Likewise.
6124         (cp_error_at): Likewise.
6125         (cp_warning_at): Likewise.
6126         (cp_pedwarn_at): Likewise.
6127         * call.c (compute_conversion_costs): Set CP_SILENT when we start
6128         out, and make sure we turn it off before we leave.
6129
6130 Thu Aug 11 00:02:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
6131
6132         * decl2.c (grok_array_decl): Try computing *(A+B) if neither
6133         argument is obviously an array.
6134
6135 Wed Aug 10 15:32:04 1994  Jason Merrill  (jason@deneb.cygnus.com)
6136
6137         * typeck.c (c_expand_start_case): Do cleanups here.
6138
6139         * parse.y (xcond): Do bool conversion here, too.
6140         (simple_stmt, SWITCH case): Don't do cleanups here.
6141
6142         * decl.c (duplicate_decls): Don't treat builtins that have been
6143         explicitly declared specially.
6144
6145 Tue Aug  9 01:16:09 1994  Jason Merrill  (jason@deneb.cygnus.com)
6146
6147         * tree.c (make_deep_copy): Support copying pointer, reference,
6148         function, array, offset and method types.
6149
6150         * decl.c (init_decl_processing): Mark exit and abort as
6151         BUILT_IN_NONANSI so that duplicate_decls is kinder about
6152         redeclaration.
6153         (duplicate_decls): Don't give two errors for redeclaring a C
6154         function with the same parms but a different return type.
6155
6156         * parse.y (paren_cond_or_null): Do cleanup and bool conversion here.
6157         (condition): Instead of here.
6158         (simple_stmt, SWITCH case): Also do cleanup here.
6159
6160         * decl2.c (finish_anon_union): Only break out FIELD_DECLs.
6161
6162         * call.c (build_method_call): Don't throw away the side effects of
6163         the object in a call to a non-existent constructor.
6164         * parse.y (primary): Ditto.
6165
6166         * method.c (build_decl_overload): Oop.
6167
6168         * decl2.c (lang_decode_option): Deal with flag_no_nonansi_builtin,
6169         warn about uselessness of specifying -fansi-overloading.
6170
6171         * method.c (build_decl_overload): Treat any non-member new with one
6172         parameter as __builtin_new.
6173
6174         * decl.c (init_decl_processing): Setup built-in meanings of exit,
6175         _exit and abort.
6176
6177 Mon Aug  8 15:03:30 1994  Jason Merrill  (jason@deneb.cygnus.com)
6178
6179         * error.c (dump_readonly_or_volatile): Put a space between const and
6180         volatile if both apply.
6181
6182         * init.c (perform_member_init): Clean up after this initialization.
6183         (emit_base_init): Clean up after each base init, not after all have
6184         been done.
6185         (expand_aggr_vbase_init_1): Clean up after this init.
6186
6187 Sun Aug  7 14:55:05 1994  Jason Merrill  (jason@deneb.cygnus.com)
6188
6189         * call.c (build_method_call): Deal with destroying references.
6190
6191         * parse.y (condition): Do bool_truthvalue_conversion here.
6192         (paren_expr_or_null): And here.
6193         (simple_if): Not here.
6194         (simple_stmt): Or here.
6195
6196 Sat Aug  6 22:29:45 1994  Jason Merrill  (jason@deneb.cygnus.com)
6197
6198         * parse.y (paren_expr_or_null): Wrap the expression in a
6199         CLEANUP_POINT_EXPR.
6200         (condition): Ditto.
6201
6202 Sat Aug  6 19:46:37 1994  Rohan Lenard  (rjl@easams.com.au)
6203
6204         * call.c (build_scoped_method_call): Fix error message when
6205         destructor call refers to a nonexistent type.
6206
6207 Sat Apr 16 22:43:30 1993  Gerald Baumgartner  (gb@cs.purdue.edu)
6208
6209         * lex.h (rid): Deleted RID_RAISES, it's never used.
6210         Moved RID_PUBLIC, RID_PRIVATE, RID_PROTECTED, RID_EXCEPTION,
6211         RID_TEMPLATE and RID_SIGNATURE to the end of the enumeration,
6212         they don't need to be touched in `grokdeclarator.'
6213         (RID_LAST_MODIFIER): Defined macro to be RID_MUTABLE.
6214
6215         * decl.c (grokdeclarator): Use RID_LAST_MODIFIER instead of
6216         RID_MAX as loop limit for finding declaration specifiers.
6217
6218 Sat Apr  3 21:59:07 1993  Gerald Baumgartner  (gb@cs.purdue.edu)
6219
6220         * lex.c (debug_yytranslate): Moved to parse.y since it needs to
6221         access `yytname,' which is static in parse.c.
6222
6223 Fri Apr  2 23:36:57 1993  Gerald Baumgarnter  (gb@cs.purdue.edu)
6224
6225         * cp-tree.h (GNU_xref_ref): Fixed typo in extern declaration, it
6226         was `GNU_xref_def' instead of `GNU_xref_ref.'
6227
6228 Fri Aug  5 14:20:16 1994  Jason Merrill  (jason@deneb.cygnus.com)
6229
6230         * pt.c (do_function_instantiation): Don't set TREE_PUBLIC and
6231         DECL_EXTERNAL on 'extern' instantiations; wait until EOF to do that.
6232         (do_type_instantiation): Ditto.
6233
6234         * decl2.c (import_export_inline): Decides at EOF what an inline's
6235         linkage should be.
6236         (finish_file): Call it.
6237
6238         * decl.c (start_function): Don't rely on the settings of TREE_PUBLIC
6239         and DECL_EXTERNAL from do_*_instantiation.  Only set
6240         DECL_DEFER_OUTPUT on inlines whose linkage might actually change.
6241         (finish_function): Use DECL_DEFER_OUTPUT to decide which inlines to
6242         mark for later consideration, rather than DECL_FUNCTION_MEMBER_P.
6243
6244 Fri Aug  5 01:12:20 1994  Mike Stump  <mrs@cygnus.com>
6245
6246         * class.c (get_class_offset_1, get_class_offset): New routine to
6247         find the offset of the class where a virtual function is defined,
6248         from the complete type.
6249         * class.c (modify_one_vtable, fixup_vtable_deltas): Use
6250         get_class_offset instead of virtual_offset as get_class_offset will
6251         always provide the right answer.
6252         * tree.c (virtual_offset): Remove.  It only ever worked some of the
6253         time.
6254
6255 Tue Aug  2 12:44:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
6256
6257         * call.c (build_method_call): Put back unary_complex_lvalue call
6258         that I thought was redundant.
6259
6260         * typeck.c (c_expand_return): Fix a case I missed before.
6261
6262 Sun Jul 31 17:54:02 1994  Jason Merrill  (jason@deneb.cygnus.com)
6263
6264         * pt.c (unify): Strip cv-quals from template type arguments (when
6265         'const T*' is matched to 'const char*', that does not mean that T is
6266         'const char').
6267
6268 Fri Jul 29 01:03:06 1994  Jason Merrill  (jason@deneb.cygnus.com)
6269
6270         * pt.c (do_type_instantiation): Instantiate nested TAGS, not
6271         typedefs.  Third time's the charm?
6272
6273         * parse.y (template_parm): Support default template parms.
6274         * pt.c (process_template_parm): Ditto.
6275         (end_template_parm_list): Ditto.
6276         (coerce_template_parms): Ditto.
6277         (mangle_class_name_for_template): Ditto.
6278         (push_template_decls): Ditto.
6279         (unify): Ditto.
6280         * method.c (build_overload_identifier): Ditto.
6281         * error.c (dump_decl): Ditto.
6282
6283 Wed Jul 27 17:47:00 1994  Jason Merrill  (jason@deneb.cygnus.com)
6284
6285         * pt.c (do_type_instantiation): Only instantiate nested *classes*.
6286
6287 Tue Jul 26 13:22:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
6288
6289         * search.c (note_debug_info_needed): Also emit debugging information
6290         for the types of fields.
6291
6292 Mon Jul 25 00:34:44 1994  Jason Merrill  (jason@deneb.cygnus.com)
6293
6294         * pt.c (lookup_template_class): Pass 'template' to
6295         coerce_template_parms instead of 'in_decl', since it's a more
6296         meaningful context.
6297
6298         * typeck.c (c_expand_return): Make sure any cleanups for the return
6299         expression get run.
6300         (build_c_cast): Use CONVERT_EXPR for conversion to void.
6301
6302         * pt.c (do_type_instantiation): Also instantiate nested types.
6303
6304         * typeck.c (convert_for_assignment): Don't die when comparing
6305         pointers with different levels of indirection.
6306
6307         * decl.c (grokdeclarator): The sub-call to grokdeclarator for
6308         class-local typedefs sets DECL_ARGUMENTS, so we need to clear it
6309         out.
6310
6311         * decl2.c (finish_anon_union): Don't die if the union has no
6312         members.
6313
6314         * decl.c (grokdeclarator): Undo changes to declspecs when we're done
6315         so that 'typedef int foo, bar;' will work.
6316
6317         * decl2.c (finish_file): Don't call expand_aggr_init for
6318         non-aggregates.
6319
6320 Mon Jul 25 00:03:10 1994  Teemu Torma  (tot@trema.fi)
6321
6322         * decl.c (finish_function): We can't inline constructors and
6323         destructors under some conditions with -fpic, but don't unset
6324         DECL_INLINE.
6325
6326 Mon Jul 25 00:03:10 1994  Jason Merrill  (jason@deneb.cygnus.com)
6327
6328         * typeck.c (build_object_ref): Make sure 'datum' is a valid object.
6329
6330 Sun Jul 24 14:19:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
6331
6332         * class.c (finish_struct): Don't set DECL_FIELD_BITPOS on
6333         non-fields.
6334         (finish_struct_methods): Use copy_assignment_arg_p.
6335
6336         * cvt.c (cp_convert): If expr is an OFFSET_REF, resolve it instead
6337         of giving an error.
6338
6339         * typeck.c (build_binary_op_nodefault): Don't set result_type if we
6340         don't know how to compare the operands.
6341
6342         * decl.c (grokdeclarator): Avoid seg fault when someone uses '__op'
6343         as a declarator-id in their program.  Like the Linux headers do.
6344         Arrgh.
6345
6346         * tree.c (lvalue_p): Treat calls to functions returning objects by
6347         value as lvalues again.
6348
6349         * typeck.c (build_component_addr): Use convert_force to convert the
6350         pointer in case the component type is also a private base class.
6351
6352         * search.c (get_matching_virtual): Fix bogus warning of overloaded
6353         virtual.
6354
6355         * pt.c (overload_template_name): Set DECL_ARTIFICIAL on the created
6356         TYPE_DECL to fix bogus shadowing warnings.
6357
6358 Fri Jul 22 01:15:32 1994  Jason Merrill  (jason@deneb.cygnus.com)
6359
6360         * init.c (expand_aggr_init_1): const and volatile mismatches do not
6361         prevent a TARGET_EXPR from initializing an object directly.
6362
6363 Tue Jul 19 17:55:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
6364
6365         * cvt.c (build_up_reference): Allow building up references to
6366         `this', don't warn about making references to artificial variables
6367         (like `this').
6368
6369         * tree.c (lvalue_p): `this' is not an lvalue.
6370
6371         * call.c (build_method_call): Accept using a typedef name (or
6372         template type parameter) for explicit destructor calls.
6373
6374 Thu Jul 14 09:42:23 1994  Mike Stump  <mrs@cygnus.com>
6375
6376         * Version 2.6.0 released.
6377
6378 Wed Jul 13 03:57:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
6379
6380         * method.c (hack_identifier): Put back old code so lists of
6381         non-functions will be handled properly.
6382
6383         * cp-tree.h (TYPE_NEEDS_CONSTRUCTING): #if 0 out; this macro is now
6384         defined in the language-independent tree.h.
6385
6386         * tree.c (count_functions): Avoid bogus warning when compiling this
6387         function.
6388
6389 Mon Jul 11 18:37:20 1994  Jason Merrill  (jason@deneb.cygnus.com)
6390
6391         * decl.c (grok_reference_init): Always save the initializer of a
6392         reference.
6393
6394 Fri Jul  8 17:41:46 1994  Mike Stump  <mrs@cygnus.com>
6395
6396         * decl.c (cplus_expand_expr_stmt): Wrap statement expressions inside
6397         CLEANUP_POINT_EXPRs so that the stack slots can be reused.
6398         (disabled for now)
6399
6400 Fri Jul  8 12:59:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
6401
6402         * method.c (hack_identifier): Fix for new overloading.
6403
6404         * typeck.c (build_binary_op_nodefault): Don't mess with division by
6405         zero.
6406
6407 Fri Jul  8 13:20:28 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
6408
6409         * decl2.c (finish_file): Only call walk_sigtables, if
6410         flag_handle_signatures is turned on, don't waste time otherwise.
6411
6412 Fri Jul  8 02:27:41 1994  Jason Merrill  (jason@deneb.cygnus.com)
6413
6414         * decl.c (push_overloaded_decl): Don't create overloads of one when
6415         shadowing a class type.
6416         * typeck.c (build_x_function_call): Complain about overloads of one.
6417
6418         * decl.c (grokdeclarator): Don't try to treat a char* as a tree.
6419         (grokdeclarator): Fix setting of TREE_STATIC.
6420         (start_decl): Clear DECL_IN_AGGR_P after calling duplicate_decls.
6421
6422 Thu Jul  7 22:20:46 1994  Gerald Baumgartner  (gb@andros.cygnus.com)
6423
6424         * cp-tree.h (walk_sigtables): Created extern declaration.
6425         * decl2.c (walk_sigtables): Created function, patterned after
6426         walk_vtables, even though we only need it to write out sigtables.
6427         (finish_sigtable_vardecl): Created function.
6428         (finish_vtable_vardecl): Changed 0 to NULL_PTR.
6429         (finish_file): Call walk_sigtables.
6430
6431         * sig.c (build_signature_table_constructor): Mark class member
6432         function pointed to from signature table entry as addressable.
6433
6434 Thu Jul  7 13:39:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
6435
6436         * decl.c (start_decl): Check new decl of static member variable
6437         against the declaration in the class here.
6438         (grokvardecl): Instead of here.
6439
6440         * class.c (prepare_fresh_vtable): Call import_export_vtable if not
6441         -fvtable-thunks.
6442         (build_vtable): Ditto.
6443
6444         * decl2.c (import_export_vtable): Move logic for deciding the
6445         interface of a template class from here.
6446         (import_export_template): To here.
6447         (finish_vtable_vardecl): Call import_export_template before
6448         import_export_vtable.
6449
6450 Wed Jul  6 20:25:48 1994  Mike Stump  <mrs@cygnus.com>
6451
6452         * except.c (init_exception_processing): Setup interim_eh_hook to
6453         call lang_interim_eh. 
6454         * except.c (do_unwind): Propagate throw object value across
6455         stack unwinding.
6456         * except.c (saved_throw_value): Used to hold the value of the object
6457         being thrown.  It is always a reference to the real value.
6458         * except.c (expand_start_catch_block): Add handling for the
6459         value of the exception object.
6460         * except.c (expand_start_catch_block): Add handler for the handler,
6461         so that throws inside the handler go to the outer block.
6462         * except.c (expand_end_catch_block): Ditto.
6463         * parse.y (handler_args): Use parm instead, as the other doesn't yet
6464         handle references correctly.
6465
6466 Wed Jul  6 17:55:32 1994  Per Bothner  (bothner@kalessin.cygnus.com)
6467
6468         * decl2.c (mark_vtable_entries):  If -ftable-thunks, set the
6469         vtable entry properly to abort.
6470
6471 Tue Jul  5 14:07:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
6472
6473         * typeck.c (build_binary_op_nodefault): Downgrade division by zero
6474         errors to warnings.
6475
6476         * call.c (build_overload_call_real): Handle fnname being a list of
6477         functions.
6478         * typeck.c (build_x_function_call): Pass list of functions to
6479         build_overload_call, not just the name.
6480         * tree.c (count_functions): Complain when called for invalid
6481         argument.
6482
6483         * decl.c (grokdeclarator): Fix settings of TREE_STATIC, TREE_PUBLIC
6484         and DECL_EXTERNAL on static members and initialized const members.
6485         * decl2.c (grokfield): Reflect this change.
6486
6487 Fri Jul  1 09:35:51 1994  Jason Merrill  (jason@deneb.cygnus.com)
6488
6489         * parse.y (init): ANSI C++ does not forbid { }.
6490
6491 Thu Jun 30 00:35:22 1994  Jason Merrill  (jason@deneb.cygnus.com)
6492
6493         * decl2.c (lang_decode_option): Set warn_nonvdtor along with -Wall.
6494         warn_nonvdtor defaults to off.
6495
6496         * class.c (instantiate_type): Use comptypes rather than relying on 
6497         types to satisfy ==.
6498
6499         * decl.c (start_function): Set DECL_DEFER_OUTPUT on all inlines that
6500         might be static.
6501
6502         * tree.c (build_cplus_new): Never build WITH_CLEANUP_EXPRs.
6503
6504         * decl.c (grok_reference_init): Deal with ADDR_EXPRs of TARGET_EXPRs.
6505
6506         * cvt.c (cp_convert): Pass 0 to with_cleanup_p arg of
6507         build_cplus_new.
6508
6509 Wed Jun 29 22:31:09 1994  Jason Merrill  (jason@deneb.cygnus.com)
6510
6511         * decl2.c (finish_file): Maybe consider static inlines multiple
6512         times, in case they reference each other.
6513
6514 Tue Jun 28 11:58:38 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
6515
6516         * class.c (finish_struct): Don't `cons_up_default_function's
6517         for signatures.
6518         (finish_struct): Handle an empty method_vec correctly.
6519
6520         * decl.c (grokdeclarator): Don't warn about a signature being
6521         empty in a signature pointer declaration if we only saw a
6522         forward declaration of the signature.  Changed `warning's into
6523         `cp_warning's.
6524
6525         * sig.c (build_sigtable): Don't die if a null signature table
6526         constructor is returned.
6527         (build_signature_pointer_constructor): If the signature table
6528         constructor is null, the _sptr field is set to a null pointer
6529         and cast to the appropriate type.  Make copies of all null
6530         pointers so that the type null_pointer_node doesn't get changed.
6531         (build_signature_table_constructor): Added comments.
6532
6533         * sig.c (build_signature_pointer_constructor): Complain if we
6534         try to assign to/initialize a signature pointer/reference of
6535         an undefined signature.
6536
6537 Mon Jun 27 14:05:16 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
6538
6539         * typeck2.c (store_init_value): Don't be pedantic about
6540         non-constant initializers of signature tables/pointers/references.
6541
6542 Fri Jun 24 16:49:41 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
6543
6544         * decl.c (grokdeclarator): If we are grokking an opaque typedef
6545         in a signature, don't complain about it begin static.
6546
6547 Wed Jun 29 16:44:45 1994  Mike Stump  <mrs@cygnus.com>
6548
6549         Fixes a problem of the this pointer being wrong in virtual calls to
6550         methods that are not overridden in more derived classes.
6551
6552         * class.c (fixup_vtable_delta): New routine.  It will fixup the
6553         delta entries in vtables, wheever they need updating.
6554         * class.c (finish_struct): Call the new routine for all virtual
6555         bases, as they can have different offsets, than those used in base
6556         classes that we derive our vtable from.
6557
6558 Tue Jun 28 23:49:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
6559
6560         * typeck.c (build_binary_op): Use the types before default
6561         conversions in the error message.
6562
6563         * *.c: Use c_build_type_variant instead of build_type_variant where
6564         the type might be an array.
6565
6566         * call.c (build_method_call): Call build_type_variant and
6567         build_reference_type in the right order.
6568         * decl.c (record_builtin_type): Ditto.
6569
6570 Wed Jun 29 16:58:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
6571
6572         * call.c (build_method_call): Call build_type_variant and
6573         build_reference_type in the right order.
6574         * decl.c (record_builtin_type): Ditto.
6575
6576 Tue Jun 28 23:49:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
6577
6578         * typeck.c (build_binary_op): Use the types before default
6579         conversions in the error message.
6580
6581         * *.c: Use c_build_type_variant instead of build_type_variant where
6582         the type might be an array.
6583
6584 Sat Jun 25 11:50:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
6585
6586         * cvt.c (convert_to_reference): Try UDC's before doing the
6587         reinterpret_cast thang, though.
6588
6589 Fri Jun 24 01:24:01 1994  Jason Merrill  (jason@deneb.cygnus.com)
6590
6591         * typeck.c (c_expand_return): Don't USE the return value location
6592         after we've expanded the jump.
6593
6594         * decl2.c (finish_file): Make sure DECL_SAVED_INSNS is not 0 before
6595         trying to write out an inline.
6596
6597         * cvt.c (build_up_reference): Also do address adjustment when the
6598         target type uses MI.
6599         (convert_to_reference): Try UDCs only after built-in conversions.
6600         (build_type_conversion_1): Don't play games with the argument to the
6601         method.
6602         (build_type_conversion): #if 0 out code for binding to reference.
6603
6604 Thu Jun 23 00:22:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
6605
6606         * decl2.c (finish_file): Use TREE_SYMBOL_REFERENCED to decide
6607         whether to emit inlines.
6608
6609         * decl.c (grokdeclarator): Set explicit_int for decls that just
6610         specify, say, 'long'.
6611
6612         * init.c (do_friend): Do overload C functions (or call pushdecl,
6613         anyaway).
6614
6615 Wed Jun 22 13:40:49 1994  Jason Merrill  (jason@deneb.cygnus.com)
6616
6617         * cvt.c (build_up_reference): Don't call readonly_error.
6618         (convert_to_reference): Propagate const and volatile from expr to
6619         its type.
6620
6621         * tree.c (lvalue_p): Random CALL_EXPRs are not lvalues.
6622
6623         * cvt.c (build_up_reference): Break out WITH_CLEANUP_EXPR when
6624         creating a temporary.
6625         (convert_to_reference): Lose excessive and incorrect trickiness.
6626         (cp_convert): Call build_cplus_new with with_cleanup_p set.
6627
6628         * typeck2.c (build_functional_cast): Ditto.
6629
6630 Tue Jun 21 17:38:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
6631
6632         * decl.c (grokdeclarator): signed, unsigned, long and short all
6633         imply 'int'.
6634
6635         * decl.c (grokdeclarator): Allow "this is a type" syntax.
6636         (grok_reference_init): Simplify and fix.
6637
6638 Sun Jun 19 17:08:48 1994  Jason Merrill  (jason@deneb.cygnus.com)
6639
6640         * decl.c (grokdeclarator): pedwarn about a typedef that specifies no
6641         type.
6642
6643 Sat Jun 18 04:16:50 1994  Jason Merrill  (jason@deneb.cygnus.com)
6644
6645         * decl.c (start_function): Move TREE_PUBLIC and DECL_EXTERNAL
6646         tinkering to after call to pushdecl.
6647
6648 Fri Jun 17 14:48:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
6649
6650         * call.c (build_method_call): Handle destructors for non-aggregate
6651         types properly.
6652
6653 Thu Jun 16 16:48:05 1994  Jason Merrill  (jason@deneb.cygnus.com)
6654
6655         * call.c (build_method_call): Make sure that the name given for the
6656         destructor matches the constructor_name of the instance.
6657
6658         * pt.c (do_function_instantiation): A non-extern instantiation
6659         overrides a later extern one.
6660         (do_type_instantiation): Ditto.
6661
6662 Wed Jun 15 19:34:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
6663
6664         * init.c (expand_aggr_init): Use TYPE_MAIN_VARIANT to get the
6665         unqualified array type.
6666
6667         * cp-tree.h (EMPTY_CONSTRUCTOR_P): Tests whether NODE is a
6668         CONSTRUCTOR with no elements.
6669
6670         * decl.c (various): Lose empty_init_node.
6671         (finish_decl): Use EMPTY_CONSTRUCTOR_P, do the empty CONSTRUCTOR
6672         thing depending on the value of DECL_COMMON instead of
6673         flag_conserve_space, do the empty CONSTRUCTOR thing for types that
6674         don't have constructors, don't treat a real empty CONSTRUCTOR
6675         specially.
6676
6677         * typeck2.c (process_init_constructor): Don't treat empty_init_node
6678         specially.
6679
6680 Wed Jun 15 19:05:25 1994  Mike Stump  <mrs@cygnus.com>
6681
6682         * class.c (override_one_vtable): Don't forget to merge in an old
6683         overrider when we wanted to reuse a vtable, but couldn't.
6684
6685 Wed Jun 15 15:03:16 1994  Jason Merrill  (jason@deneb.cygnus.com)
6686
6687         * decl.c (start_decl): Put statics in common again.
6688
6689         * decl.c (grokdeclarator): Return NULL_TREE for an error rather than
6690         setting the type to error_mark_node.
6691
6692         * typeck.c (build_modify_expr): Build up a COMPOUND_EXPR for enum
6693         bitfield assignments.
6694
6695 Tue Jun 14 12:23:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
6696
6697         * decl.c (grok_op_properties): Const objects can be passed by value.
6698
6699 Mon Jun 13 03:10:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
6700
6701         * decl2.c (import_export_vtable): Force implicit instantiations to
6702         be interface_only when -fno-implicit-templates.
6703
6704         * decl.c (duplicate_decls): Redeclaring a class template name is an
6705         error.
6706
6707         * pt.c (end_template_decl): Call GNU_xref_decl for class templates.
6708         * xref.c (GNU_xref_decl): Support templates.
6709
6710 Sat Jun 11 17:09:05 1994  Jason Merrill  (jason@deneb.cygnus.com)
6711
6712         * decl.c (grok_op_properties): Split out checking for whether this
6713         function should suppress the default assignment operator.
6714         * decl2.c (grok_function_init): Ditto.
6715         (copy_assignment_arg_p): New function do do just that.
6716         Now considers virtual assignment operators that take a base as an
6717         argument to count as copy assignment operators.
6718
6719         * search.c (dfs_debug_mark): Lose checks for DWARF_DEBUG and
6720         TREE_ASM_WRITTEN, as they are redundant.
6721
6722         * pt.c (end_template_decl): Don't try to set DECL_CLASS_CONTEXT on a
6723         decl that has no LANG_SPECIFIC part.
6724         (do_type_instantiation): Force the debugging information for this
6725         type to be emitted.
6726
6727         * decl.c (start_decl): Clear up uses of various types of templates
6728         (say sorry for static data members, rather than "invalid template"). 
6729         (expand_static_init): Fix initialization of static data members of
6730         template classes.
6731
6732 Fri Jun 10 00:41:19 1994  Jason Merrill  (jason@deneb.cygnus.com)
6733
6734         * decl.c (grokdeclarator): Set DECL_CONTEXT on static data members.
6735
6736         * g++.c (main): Use -xc++-cpp-output for .i files.
6737
6738         * pt.c (tsubst): Give meaningful error about declaring template for
6739         a copy constructor which was not declared in the class template.
6740         (do_type_instantiation): Explicit instantiation before the class
6741         template is an error.
6742         (instantiate_template): Don't die if tsubst returns error_mark_node.
6743
6744 Thu Jun  9 19:04:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
6745
6746         Don't synthesize the copy assignment operator if the one in a base
6747         class is pure virtual.
6748         * cp-tree.h (TYPE_HAS_ABSTRACT_ASSIGN_REF): New macro to indicate
6749         whether the type has a pure virtual copy assignment operator.
6750         * class.c (finish_base_struct): Don't generate the copy assignment
6751         operator if a base class has a pure virtual one.
6752         * decl.c (grok_op_properties): Add disabled code to set
6753         TYPE_HAS_ABSTRACT_ASSIGN_REF with comment pointing to where it is
6754         actually set.
6755         * decl2.c (grok_function_init): Set TYPE_HAS_ABSTRACT_ASSIGN_REF.
6756
6757         * decl2.c (import_export_vtable): Always treat template
6758         instantiations as if write_virtuals >= 2, and treat implicit
6759         instantiations as external if -fno-implicit-templates.
6760         (finish_file): Output all pending inlines if
6761         flag_keep_inline_functions.
6762
6763 Wed Jun  8 20:48:02 1994  Mike Stump  <mrs@cygnus.com>
6764
6765         * tree.c (layout_vbasetypes): Align virtual base classes inside
6766         complete objects, so that we don't core dump on machines such as
6767         SPARCs when we access members that require larger than normal
6768         alignments, such as a double.  Also, we bump up the total alignment
6769         on the complete type, as necessary.
6770
6771 Wed Jun  8 16:18:14 1994  Jason Merrill  (jason@deneb.cygnus.com)
6772
6773         * gxxint.texi (Free Store): New section with code for examining
6774         cookie.
6775         (Limitations of g++): Remove operator delete entry, since it is no
6776         longer accurate.  Fix access control entry.
6777
6778         * typeck.c (build_unary_op): Pedwarn about taking the address of or
6779         incrementing a cast to non-reference type.
6780         (build_modify_expr): Use convert instead of convert_force again.
6781
6782         * search.c (get_base_distance): Use IS_AGGR_TYPE_CODE to check for
6783         class type, not == RECORD_TYPE.
6784
6785         * decl.c (grokdeclarator): Cope with grokfndecl returning NULL_TREE.
6786
6787         * typeck2.c (report_case_error): #if 0 out.
6788         * lex.c (real_yylex): Lose RANGE.
6789         * parse.y: Ditto.
6790
6791 Tue Jun  7 18:17:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
6792
6793         * parse.y (simple_stmt, case ranges): Use ELLIPSIS instead of RANGE.
6794
6795 Mon Jun  6 19:39:57 1994  Jason Merrill  (jason@deneb.cygnus.com)
6796
6797         * typeck.c (build_c_cast): Don't shortcut conversions to the same
6798         type.  Don't replace consts with their values here, since that's now
6799         done in cp_convert.
6800
6801         * cvt.c (cp_convert): When converting to bool, take
6802         integer_zero_node to false_node and all other INTEGER_CSTs to
6803         true_node.
6804         (build_type_conversion): Don't complain about multiple conversions
6805         to float if we're not really converting.
6806
6807 Fri Jun  3 02:10:56 1994  Jason Merrill  (jason@deneb.cygnus.com)
6808
6809         Implement 'extern template class A<int>;' syntax for suppressing
6810         specific implicit instantiations.
6811         * cp-tree.h: Update prototypes for do_*_instantiation.
6812         * pt.c (do_pending_expansions): Don't compile 'extern' explicit
6813         instantiations.
6814         (do_function_instantiation): Set DECL_EXTERNAL on 'extern' explicit
6815         instantiations.
6816         (do_type_instantiation): Ditto.
6817         * parse.y (explicit_instantiation): Support 'extern template class
6818         A<int>;' syntax.
6819         * decl.c (start_function): Don't modify the settings of TREE_PUBLIC
6820         and DECL_EXTERNAL on explicit instantiations.
6821
6822         * cvt.c (cp_convert): Replace constants with their values before
6823         converting.
6824         (cp_convert): Consistently use 'e' instead of 'expr'.
6825
6826 Thu Jun  2 03:53:30 1994  Jason Merrill  (jason@deneb.cygnus.com)
6827
6828         * typeck2.c (build_x_arrow): Resolve OFFSET_REFs first.
6829
6830 Wed Jun  1 18:57:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
6831
6832         * typeck2.c (digest_init): Handle initializing a pmf with an
6833         overloaded method.
6834         * typeck.c (build_ptrmemfunc): Handle overloaded methods.
6835
6836         * decl.c (pushtag): Use build_decl to make TYPE_DECLs.
6837         (xref_defn_tag): Ditto.
6838         * pt.c (process_template_parm): Ditto.
6839         (lookup_template_class): Ditto.
6840         (push_template_decls): Ditto.
6841         (instantiate_class_template): Ditto.
6842         (create_nested_upt): Ditto.
6843         * class.c (finish_struct): Don't try to set DECL_CLASS_CONTEXT on
6844         TYPE_DECLs.
6845
6846         * typeck.c (convert_arguments): Make sure type is not NULL before
6847         checking its TREE_CODE.
6848
6849 Wed Jun  1 17:40:39 1994  Mike Stump  <mrs@cygnus.com>
6850
6851         * class.c (get_derived_offset): New routine.
6852         * class.c (finish_base_struct): Make sure we set BINFO_VTABLE and
6853         BINFO_VIRTUALS when we choose a new base class to inherit from.
6854         * class.c (modify_one_vtable): Use get_derived_offset to get the
6855         offset to the most base class subobject that we derived this binfo
6856         from.
6857         * class.c (finish_struct): Move code to calculate the
6858         DECL_FIELD_BITPOS of the vfield up, as we need might need it for
6859         new calls to get_derived_offset in modify_one_vtable.
6860
6861 Wed Jun  1 16:50:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
6862
6863         * init.c (build_member_call): Use build_pointer_type instead of
6864         TYPE_POINTER_TO.
6865
6866 Wed Jun  1 11:11:15 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
6867
6868         * decl.c (grokdeclarator): Make sure we have a DNAME set before we
6869         try to use it in an error.
6870
6871 Wed Jun  1 09:48:49 1994  Mike Stump  <mrs@cygnus.com>
6872
6873         * typeck.c (convert_arguments, convert_for_initialization): Don't
6874         strip NOP_EXPRs, when we are converting to a reference.
6875
6876 Wed Jun  1 01:11:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
6877
6878         * typeck.c (build_modify_expr): Don't dereference references when
6879         initializing them.
6880
6881         * decl2.c (grokfield): Don't check for grokdeclarator returning
6882         error_mark_node any more.
6883
6884         * decl.c (grokfndecl): Return NULL_TREE instead of error_mark_node.
6885         (start_method): Return void_type_node instead of error_mark_node.
6886
6887         * typeck.c (build_modify_expr): Resolve offset refs earlier.
6888
6889 Tue May 31 16:06:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
6890
6891         * call.c (build_method_call): Resolve OFFSET_REFs in the object.
6892
6893         * typeck.c (build_modify_expr): Dereference references before trying
6894         to assign to them.
6895
6896         * call.c (build_method_call): Don't confuse type conversion
6897         operators with constructors.
6898         * typeck2.c (build_functional_cast): Just call build_c_cast if there
6899         was only one parameter.
6900         * method.c (build_typename_overload): Don't set
6901         IDENTIFIER_GLOBAL_VALUE on these identifiers.
6902         * decl.c (grok_op_properties): Warn about defining a type conversion
6903         operator that converts to a base class (or reference to it).
6904         * cvt.c (cp_convert): Don't try to use a type conversion operator
6905         when converting to a base class.
6906         (build_type_conversion_1): Don't call constructor_name_full on an
6907         identifier.
6908         * cp-tree.h (DERIVED_FROM_P): Should be self-explanatory.
6909
6910         * decl.c (start_decl): Don't complain that error_mark_node is an
6911         incomplete type.
6912         (finish_decl): Check for type == error_mark_node.
6913
6914 Mon May 30 23:38:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
6915
6916         * decl.c (start_function): Set DECL_DEFER_OUTPUT on implicit
6917         instantiations and inline members.
6918
6919         * spew.c (yylex): Set looking_for_template if the next token is a '<'.
6920
6921         * lex.h: Declare looking_for_template.
6922
6923         * decl.c (lookup_name_real): Use looking_for_template to arbitrate
6924         between type and template interpretations of an identifier.
6925
6926 Sat May 28 04:07:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
6927
6928         * pt.c (instantiate_template): Zero out p if we found a
6929         specialization.
6930
6931         * decl.c (grokdeclarator): Elucidate warning.
6932         (grokdeclarator): If pedantic AND -ansi, complain about long long.
6933
6934         Make explicit instantiation work reasonably.  It is now appropriate
6935         to deprecate the use of -fexternal-templates.
6936         * pt.c (instantiate_template): Set DECL_TEMPLATE_SPECIALIZATION or
6937         DECL_IMPLICIT_INSTANTIATION on fndecl as appropriate.
6938         (end_template_instantiation): Reflect changes in USE_TEMPLATE
6939         semantics.
6940         (do_pending_expansions): if (!flag_implicit_templates) DECIDE(0);
6941         (do_function_instantiation): Don't set EXPLICIT_INST if
6942         flag_external_templates is set.  Do set TREE_PUBLIC and DECL_EXTERN
6943         appropriately otherwise.
6944         (do_type_instantiation): Set interface info for class.  Set
6945         TREE_PUBLIC and DECL_EXTERN for methods.  Do none of this if
6946         flag_external_templates is set.
6947         * parse.y: Reflect changes in USE_TEMPLATE semantics.
6948         * decl2.c: New flag flag_implicit_templates determines whether or
6949         not implicit instantiations get emitted.  This flag currently
6950         defaults to true, and must be true for -fexternal-templates to work.
6951         (finish_file): Consider flag_implement_inlines when
6952         setting DECL_EXTERNAL.  Consider flag_implicit_templates when
6953         deciding whether or not to emit a static copy.
6954         * decl.c (start_function): Set TREE_PUBLIC and DECL_EXTERNAL
6955         properly for template instantiations.
6956         (start_method): Set DECL_IMPLICIT_INSTANTIATION on methods of a
6957         template class.
6958         * cp-tree.h (CLASSTYPE_USE_TEMPLATE): Change semantics.
6959         (DECL_USE_TEMPLATE): Parallel macro for FUNCTION and VAR_DECLs.
6960         (various others): Accessor macros for the above.
6961
6962 Fri May 27 13:57:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
6963
6964         * typeck.c (build_binary_op_nodefault): Division by constant zero is
6965         an error.
6966
6967 Fri May 27 13:50:15 1994  Mike Stump  <mrs@cygnus.com>
6968
6969         * class.c (override_one_vtable): Don't modify things we don't own.
6970
6971 Fri May 27 01:42:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
6972
6973         * decl.c (finish_decl): Don't postpone processing the initializer of
6974         a decl with DECL_EXTERNAL set, and do call rest_of_compilation for a
6975         PUBLIC const at toplevel.
6976         (grokdeclarator): pedwarn about initializing non-const or
6977         non-integral statics in the class body.
6978
6979         * decl.c (pushtag): Don't try to set DECL_CLASS_CONTEXT on a
6980         TYPE_DECL.
6981
6982         * call.c (convert_harshness): Dereference reference on rhs before
6983         proceeding, properly grok passing const things to non-const
6984         references.
6985
6986         * typeck.c (build_unary_op): Soften error about taking the address
6987         of main() to a pedwarn.
6988
6989         * lex.c (default_copy_constructor_body): Unambiguously specify base
6990         classes (i.e. A((const class ::A&)_ctor_arg) ).
6991         (default_assign_ref_body): Ditto.
6992
6993 Thu May 26 13:13:55 1994  Gerald Baumgartner  (gb@mexican.cygnus.com)
6994
6995         * decl2.c (grokfield): Don't complain about local signature
6996         method declaration without definition.
6997
6998         * call.c (convert_harshness): If `type' is a signature pointer
6999         and `parmtype' is a pointer to a signature, just return 0.  We
7000         don't really convert in this case; it's a result of making the
7001         `this' parameter of a signature method a signature pointer.
7002
7003         * call.c (build_method_call): Distinguish calling the default copy
7004         constructor of a signature pointer/reference from a signature
7005         member function call.
7006
7007 Thu May 26 12:56:25 1994  Jason Merrill  (jason@deneb.cygnus.com)
7008
7009         * decl2.c (grokfield): Don't set TREE_PUBLIC on member function
7010         declarations.
7011
7012         * decl.c (duplicate_decls): A previous function declaration as
7013         static overrides a subsequent non-static definition.
7014         (grokdeclarator): Don't set TREE_PUBLIC on inline method
7015         declarations.
7016
7017 Wed May 25 14:36:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
7018
7019         * decl.c (grokdeclarator): Handle initialization of static const
7020         members.
7021         (finish_decl): Ditto.
7022
7023         * decl2.c (grokfield): Allow initialization of static const members
7024         even when pedantic.
7025
7026         * decl2.c (grokfield): Deal with grokdeclarator returning
7027         error_mark_node.
7028
7029         * decl.c (grok_ctor_properties): Return 0 for A(A) constructor.
7030         (grokfndecl): Check the return value of grok_ctor_properties.
7031         (start_method): Ditto.
7032
7033         * parse.y (absdcl): Expand type_quals inline.
7034
7035 Tue May 24 19:10:32 1994  Jason Merrill  (jason@deneb.cygnus.com)
7036
7037         * decl.c (pushtag): Use IS_AGGR_TYPE rather than checking for a
7038         RECORD_TYPE.
7039
7040 Tue May 24 18:09:16 1994  Per Bothner  (bothner@kalessin.cygnus.com)
7041
7042         * cp-tree.h (VTABLE_NAME_FORMAT):  If flag_vtable_thunks,
7043         always use "__vt_%s".
7044         * decl2.c (finish_vtable_vardecl):  Don't consider abstract virtuals
7045         when looking for a "sentinal" method (to decide on emitting vtables).
7046         * decl2.c (finish_file):  Scan all decls for thunks that need
7047         to be emitted.
7048         * decl2.c (finish_vtable_vardecl):  Don't bother calling emit_thunk.
7049         * method.c (make_thunk):  Use a more meaningful label.  If there
7050         exists a matching top-level THUNK_DECL re-use it;  otherwise
7051         create a new THUNK_DECL (and declare it).
7052         * method.c (emit_thunk):  Make thunk external/public depending
7053         on the underlying method.
7054
7055 Tue May 24 00:22:04 1994  Jason Merrill  (jason@deneb.cygnus.com)
7056
7057         * pt.c (tsubst): Use lookup_name_nonclass to find guiding decls, not
7058         lookup_name.
7059
7060         * call.c (build_overload_call_real): Don't immediately pick a
7061         function which matches perfectly.
7062
7063         * decl.c (grokdeclarator): Use c_build_type_variant for arrays.
7064         (grokdeclarator): Warn about, and throw away, cv-quals attached to a
7065         reference (like 'int &const j').
7066
7067         * typeck.c (convert_arguments): Don't mess with i for methods.
7068         * call.c (build_method_call): Pass the function decl to
7069         convert_arguments.
7070
7071         * typeck.c (comp_ptr_ttypes_real): New function.  Implements the
7072         checking for which multi-level pointer conversions are allowed.
7073         (comp_target_types): Call it.
7074         (convert_for_assignment): Check const parity on the ultimate target
7075         type, too.  And make those warnings pedwarns.
7076
7077 Mon May 23 14:11:24 1994  Jason Merrill  (jason@deneb.cygnus.com)
7078
7079         * error.c (dump_char): Use TARGET_* for character constants.
7080
7081 Mon May 23 13:03:03 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
7082
7083         * tree.c (debug_no_list_hash): Make static.
7084
7085         * decl.c (decls_match): Say the types don't match if newdecl ends up
7086         with a null type, after we've checked if olddecl does.
7087         (pushdecl): Check if the decls themselves match before looking for
7088         an extern redeclared as static, to avoid inappropriate and incorrect
7089         warnings.
7090
7091 Fri May 20 14:04:34 1994  Jason Merrill  (jason@deneb.cygnus.com)
7092
7093         * decl.c (grokdeclarator): Make warning about duplicate short, etc.
7094         a pedwarn.
7095
7096         * typeck.c (build_c_cast): Casting to function or method type is an
7097         error.
7098
7099         * class.c (finish_struct): Make warning for anonymous class with no
7100         instances a pedwarn.
7101
7102         * Makefile.in (stamp-parse): Expect a s/r conflict.
7103
7104         * typeck.c (build_modify_expr): pedwarn about using a non-lvalue
7105         cast as an lvalue.
7106
7107 Thu May 19 12:08:48 1994  Jason Merrill  (jason@deneb.cygnus.com)
7108
7109         * cvt.c (type_promotes_to): Make sure bool promotes to int rather
7110         than unsigned on platforms where sizeof(char)==sizeof(int).
7111
7112 Wed May 18 14:27:06 1994  Jason Merrill  (jason@deneb.cygnus.com)
7113
7114         * typeck.c (build_c_cast): Tack on a NOP_EXPR when casting to
7115         another variant.
7116         (build_modify_expr): Don't strip NOP_EXPRs, and don't get tricky
7117         and treat them as lvalues.
7118
7119         * decl.c (shadow_tag): Do complain about forward declarations of
7120         enums and empty declarations.
7121         * parse.y: Don't complain about forward declarations of enums and
7122         empty declarations.
7123
7124         * typeck.c (convert_for_assignment): Complain about changing
7125         the signedness of a pointer's target type.
7126
7127         * parse.y (stmt): Move duplicated code for checking case values from
7128         here.
7129         * decl2.c (check_cp_case_value): To here.  And add a call to
7130         constant_expression_warning.
7131
7132         * typeck.c (convert_for_assignment): Don't complain about assigning
7133         a negative value to bool.
7134
7135         * decl.c (init_decl_processing): Make bool unsigned.
7136
7137         * class.c (finish_struct): Allow bool bitfields.
7138
7139 Wed May 18 12:35:27 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
7140
7141         * Make-lang.in (c++.install-man): Get g++.1 from $(srcdir)/cp.
7142
7143 Wed May 18 03:28:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
7144
7145         * cvt.c (build_type_conversion): Lose special handling of
7146         truthvalues.
7147
7148         * search.c (dfs_pushdecls): Improve shadowing warning.
7149
7150 Tue May 17 13:34:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
7151
7152         * init.c (build_delete): Throw away const and volatile on `this'.
7153
7154         * decl.c (finish_enum): Put the constants in TYPE_VALUES again,
7155         rather than the enumerators.
7156         (pushtag): s/cdecl/c_decl/g
7157
7158 Mon May 16 23:04:01 1994  Stephen R. van den Berg  (berg@pool.informatik.rwth-aachen.de)
7159
7160         * cp/typeck.c (common_type): Attribute merging.
7161         (comp_types): Utilise COMP_TYPE_ATTRIBUTES macro.
7162
7163         * cp/parse.y: Revamp attribute parsing.
7164
7165 Mon May 16 01:40:34 1994  Jason Merrill  (jason@deneb.cygnus.com)
7166
7167         * decl.c (shadow_tag): Also check for inappropriate use of auto and
7168         register.
7169
7170         * method.c (build_overload_name): Clarify that the illegal case is a
7171         pointer or reference to array of unknown bound.
7172
7173         * error.c (dump_type_prefix): Print references to arrays properly.
7174
7175         * typeck.c (various): Be more helpful in pointer
7176         comparison diagnostics.
7177
7178         * tree.c (lvalue_p): MODIFY_EXPRs are lvalues again.  Isn't this
7179         fun?
7180
7181         * parse.y: Also catch an error after valid stmts.
7182
7183         * search.c (dfs_init_vbase_pointers): Don't abort because `this' is
7184         const.
7185
7186         * typeck.c (convert_for_initialization): If call to
7187         convert_to_reference generated a diagnostic, print out the parm
7188         number and function decl if any.
7189
7190         * errfn.c (cp_thing): Check atarg1 to determine whether or not we're
7191         specifying a line, not atarg.
7192
7193         * tree.c (build_cplus_method_type): Always make `this' const.
7194
7195         * decl2.c (grokclassfn): If -fthis-is-variable and this function is
7196         a constructor or destructor, make `this' non-const.
7197
7198         * typeck.c (build_modify_expr): Don't warn specially about
7199         assignment to `this' here anymore, since it will be caught by the
7200         usual machinery.
7201
7202         * various: Disallow specific GNU extensions (variable-size arrays,
7203         etc.) when flag_ansi is set, not necessarily when pedantic is set,
7204         so that people can compile with -pedantic-errors for tighter const
7205         checking and such without losing desirable extensions.
7206
7207         * typeck2.c (build_functional_cast): Call build_method_call with
7208         LOOKUP_PROTECT.
7209         (process_init_constructor): Only process FIELD_DECLs.
7210
7211         * decl.c (finish_decl): Also force static consts with no explicit
7212         initializer that need constructing into the data segment.
7213
7214         * init.c (build_delete): Undo last patch, as it interferes with
7215         automatic cleanups.
7216
7217 Sat May 14 01:59:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
7218
7219         * call.c, class.h, cp-tree.h, cvt.c, decl2.c: Lose old overloading
7220         code.
7221
7222         * init.c (build_delete): pedwarn about using plain delete to delete
7223         an array.
7224
7225 Fri May 13 16:45:07 1994  Jason Merrill  (jason@deneb.cygnus.com)
7226
7227         * typeck.c (comp_target_types): Be more helpful in contravariance
7228         warnings, and make them pedwarns.
7229
7230         * decl.c (grokdeclarator): Use decl_context to decide whether or not
7231         this is an access declaration.
7232
7233         * class.c (finish_struct_bits): Set TYPE_HAS_INT_CONVERSION if it
7234         has a conversion to enum or bool, too.
7235
7236 Fri May 13 16:31:27 1994  Mike Stump  <mrs@cygnus.com>
7237
7238         * method.c (emit_thunk):  Make declaration for
7239         current_call_is_indirect local (needed for hppa).
7240
7241 Fri May 13 16:16:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
7242
7243         * pt.c (uses_template_parms): Grok BOOLEAN_TYPE.
7244         (tsubst): Ditto.
7245
7246 Fri May 13 16:23:32 1994  Mike Stump  <mrs@cygnus.com>
7247
7248         * pt.c (tsubst): If there is already a function for this expansion,
7249         use it.
7250         * pt.c (instantiate_template): Ditto.
7251
7252 Fri May 13 10:30:42 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
7253
7254         * parse.y (implicitly_scoped_stmt, simple_stmt case): Use
7255         kept_level_p for MARK_ENDS argument to expand_end_bindings, to avoid
7256         generating debug info for unemitted symbols on some systems.
7257
7258         * cp-tree.h (build_static_cast, build_reinterpret_cast,
7259         build_const_cast): Add declarations.
7260
7261 Fri May 13 09:50:31 1994  Mike Stump  <mrs@cygnus.com>
7262
7263         * search.c (expand_indirect_vtbls_init): Fix breakage from Apr 27
7264         fix.  We now try get_binfo, and if that doesn't find what we want,
7265         we go back to the old method, which still sometimes fails.
7266
7267 Fri May 13 01:43:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
7268
7269         * parse.y (initdcl): Call cplus_decl_attributes on the right
7270         variable.
7271         * decl2.c (cplus_decl_attributes): Don't call decl_attributes for
7272         void_type_node.
7273
7274         * typeck.c (build_binary_op_nodefault): Change result_type for
7275         comparison ops to bool.
7276         (build_binary_op): Convert args of && and || to bool.
7277         * cvt.c (build_default_binary_type_conversion): Convert args of &&
7278         and || to bool.
7279         (build_default_unary_type_conversion): Convert arg of ! to bool.
7280         (type_promotes_to): bool promotes to int.
7281
7282 Fri May 13 01:43:18 1994  Mike Stump  <mrs@cygnus.com>
7283
7284         Implement the new builtin `bool' type.
7285         * typeck.c (build_binary_op_nodefault): Convert args of && and || to
7286         bool.
7287         (build_unary_op): Convert arg of ! to bool.
7288         * parse.y: Know true and false.  Use bool_truthvalue_conversion.
7289         * method.c (build_overload_value): Know bool.
7290         (build_overload_name): Ditto.
7291         * lex.c (init_lex): Set up RID_BOOL.
7292         * gxx.gperf: Add bool, true, false.
7293         * error.c (*): Know bool.
7294         * decl.c (init_decl_processing): Set up bool, true, false.
7295         * cvt.c (cp_convert): Handle conversion to bool.
7296         (build_type_conversion): Ditto.
7297         * *.c: Accept bool where integers and enums are accepted (use
7298         INTEGRAL_CODE_P macro).
7299
7300 Thu May 12 19:13:54 1994  Richard Earnshaw  (rwe11@cl.cam.ac.uk)
7301
7302         * g++.c: Use #ifdef for __MSDOS__, not #if.
7303
7304 Thu May 12 18:05:18 1994  Mike Stump  <mrs@cygnus.com>
7305
7306         * decl2.c (lang_f_options): Handle -fshort-temps.  -fshort-temps
7307         gives old behavior , and destroys temporaries earlier.  Default
7308         behavior now conforms to the ANSI working paper.
7309
7310 Thu May 12 14:45:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
7311
7312         * typeck.c (build_modify_expr): Understand MODIFY_EXPR as an lvalue.
7313         Use convert_force to convert the result of a recursive call when we
7314         are dealing with a NOP_EXPR.  Don't automatically wrap MODIFY_EXPRs
7315         in COMPOUND_EXPRs any more.
7316         (various): Lose pedantic_lvalue_warning.
7317         (unary_complex_lvalue): Understand MODIFY_EXPR.
7318
7319         * cvt.c (convert_to_reference): Allow DECL to be error_mark_node if
7320         we don't know what we're initializing.
7321
7322 Wed May 11 01:59:36 1994  Jason Merrill  (jason@deneb.cygnus.com)
7323
7324         * cvt.c (convert_to_reference): Modify to use convtype parameter.
7325         Only create temporaries when initializing a reference, not when
7326         casting.
7327         (cp_convert): New main function.
7328         (convert): Call cp_convert.
7329         * cvt.c, decl.c, typeck.c: Fix calls to convert_to_reference.
7330         * cp-tree.h (CONV_*): New constants used by conversion code for
7331         selecting conversions to perform.
7332
7333         * tree.c (lvalue_p): MODIFY_EXPRs are no longer lvalues.
7334
7335         * typeck.c (build_{static,reinterpret,const_cast): Stubs that just
7336         call build_c_cast.
7337         * parse.y: Add {static,reinterpret,const}_cast.
7338         * gxx.gperf: Ditto.
7339
7340         * typeck.c (common_type): Allow methods with basetypes of different
7341         UPTs.
7342         (comptypes): Deal with UPTs.
7343         (build_modify_expr): Wrap all MODIFY_EXPRs in a COMPOUND_EXPR.
7344
7345         * pt.c (end_template_decl): Check for multiple definitions of member
7346         templates.
7347
7348         * call.c (build_method_call): Complain about calling an abstract
7349         virtual from a constructor.
7350
7351         * typeck.c (pointer_int_sum): Check for the integer operand being 0
7352         after checking the validity of the pointer operand.
7353
7354         * typeck2.c (digest_init): Pedwarn about string initializer being
7355         too long.
7356
7357 Tue May 10 12:10:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
7358
7359         * decl.c (push_overloaded_decl): Only throw away a builtin if the
7360         decl in question is the artificial one.
7361
7362         * parse.y (simple_stmt, switch): Use implicitly_scoped_stmt because
7363         expand_{start,end}_case cannot happen in the middle of a block.
7364
7365         * cvt.c (build_type_conversion_1): Use convert again.
7366
7367 Tue May 10 11:52:04 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
7368
7369         * typeck2.c (digest_init): Make sure we check for signed and
7370         unsigned chars as well when warning about string initializers.
7371
7372         * init.c (emit_base_init): Check if there's a DECL_NAME on the
7373         member before trying to do an initialization for it.
7374
7375 Tue May 10 11:34:37 1994  Mike Stump  <mrs@cygnus.com>
7376
7377         * except.c: Don't do anything useful when cross compiling.
7378
7379 Tue May 10 03:04:13 1994  Jason Merrill  (jason@deneb.cygnus.com)
7380
7381         * decl.c (duplicate_decls): Fix up handling of builtins yet again.
7382         (push_overloaded_decl): Ditto.
7383
7384         * cvt.c (convert): Don't look for void type conversion.
7385
7386 Mon May  9 18:05:41 1994  Jason Merrill  (jason@deneb.cygnus.com)
7387
7388         * init.c (do_friend): Only do a pushdecl for friends, not
7389         pushdecl_top_level.
7390
7391 Mon May  9 13:36:34 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)
7392
7393         * decl.c (lookup_name_current_level): Put empty statement after
7394         the label OUT to make the code valid C.
7395
7396 Mon May  9 12:20:57 1994  Jason Merrill  (jason@deneb.cygnus.com)
7397
7398         * typeck.c (build_binary_op_nodefault): Only complain about
7399         comparing void * and a function pointer if void * is smaller.
7400
7401 Sun May  8 01:29:13 1994  Jason Merrill  (jason@deneb.cygnus.com)
7402
7403         * decl.c (lookup_name_current_level): Move through temporary binding
7404         levels.
7405
7406         * parse.y (already_scoped_stmt): Revive.
7407         (simple_stmt): Use it again.
7408
7409         * decl.c (poplevel): Always call poplevel recursively if we're
7410         dealing with a temporary binding level.
7411
7412 Sat May  7 10:52:28 1994  Mike Stump  <mrs@cygnus.com>
7413
7414         * decl.c (finish_decl): Make sure we run cleanups for initial values
7415         of decls.  Cures memory leak.
7416         * decl.c (expand_static_init): Ditto for static variables.
7417         * decl2.c (finish_file): Ditto for globals.
7418
7419 Sat May  7 03:57:44 1994  Jason Merrill  (jason@deneb.cygnus.com)
7420
7421         * typeck.c (commonparms): Don't complain about redefining default
7422         args.
7423
7424         * decl.c (duplicate_decls): Don't complain twice about conflicting
7425         function decls.
7426         (decls_match): Don't look at default args.
7427         (redeclaration_error_message): Complain about redefining default
7428         args.
7429
7430         * call.c (build_overload_call_real): Also deal with guiding
7431         declarations coming BEFORE the template decl.
7432
7433         * pt.c (unify): Allow different parms to have different
7434         cv-qualifiers.
7435         (unify): Allow trivial conversions on non-template parms.
7436
7437 Fri May  6 03:53:23 1994  Jason Merrill  (jason@deneb.cygnus.com)
7438
7439         * pt.c (tsubst): Support OFFSET_TYPEs.
7440         (unify): Ditto.
7441
7442         * decl2.c (finish_decl_parsing): Call push_nested_class with a type.
7443
7444         * init.c (build_offset_ref): Fix error message.
7445         * search.c (lookup_field): Ditto.
7446
7447         * call.c (build_scoped_method_call): Pass binfo to
7448         build_method_call.
7449         * typeck.c (build_object_ref): Ditto.
7450
7451         * typeck2.c (binfo_or_else): Don't return a _TYPE.
7452
7453         * class.c (finish_struct): Don't complain about re-use of inherited
7454         names or shadowing of type decls.
7455         * decl.c (pushdecl_class_level): Ditto.
7456
7457         * decl.c (finish_enum): Set the type of all the enums.
7458
7459         * class.c (finish_struct): Don't get confused by access decls.
7460
7461         * cp-tree.h (TYPE_MAIN_DECL): New macro to get the _DECL for a
7462         _TYPE.  You can stop using TYPE_NAME for that now.
7463
7464         * parse.y: Lose doing_explicit (check $0 instead).
7465         * gxx.gperf: 'template' now has a RID.
7466         * lex.h (rid): Ditto.
7467         * lex.c (init_lex): Set up the RID for 'template'.
7468
7469         * parse.y (type_specifier_seq): typed_typespecs or
7470         nonempty_type_quals.  Use it.
7471         (handler_args): Fix bogus syntax.
7472         (raise_identifier{,s}, optional_identifier): Lose.
7473         * except.c (expand_start_catch_block): Use grokdeclarator to parse
7474         the catch variable.
7475         (init_exception_processing): The second argument to
7476         __throw_type_match is ptr_type_node.
7477
7478         Fri May  6 07:18:54 1994  Chip Salzenberg  (chip@fin)
7479
7480         [ change propagated from c-decl.c of snapshot 940429 ]
7481         * cp/decl.c (finish_decl): Setting asmspec_tree should not
7482         zero out the old RTL.
7483
7484 Fri May  6 01:25:38 1994  Mike Stump  <mrs@cygnus.com>
7485
7486         Add alpha exception handling support to the compiler.
7487         Quick and dirty backend in except.c.
7488
7489         * cp/*:  Remove most remnants of old exception handling support.
7490         * decl.c (finish_function): Call expand_exception_blocks to put
7491         the exception hanlding blocks at the end of the function.
7492         * dec.c (hack_incomplete_structures): Make sure expand_decl_cleanup
7493         comes after expand_decl_init.
7494         * except.c: Reimplementation.
7495         * expr.c (cplus_expand_expr): Handle THROW_EXPRs.
7496         * lex.c (init_lex): Always have catch, try and throw be reserved
7497         words, so that we may always parse exception handling.
7498         * parse.y: Cleanup to support new interface into exception handling.
7499         * tree.def (THROW_EXPR): Add.
7500
7501 Thu May  5 17:35:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
7502
7503         * parse.y (simple_stmt, for loops): Use implicitly_scoped_stmt.
7504         (various): Lose .kindof_pushlevel and partially_scoped_stmt.
7505
7506 Thu May  5 16:17:27 1994  Kung Hsu  (kung@mexican.cygnus.com)
7507
7508         * parse.y (already_scoped_stmt): move expand_end_binding() to
7509         fix the unmatched LBB/LBE in stabs.
7510
7511 Thu May  5 14:36:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
7512
7513         * decl.c (set_nested_typename): Set TREE_MANGLED on the new
7514         identifiers.
7515         (pushdecl): Check TREE_MANGLED.
7516         (xref_tag): Ditto.
7517         * cp-tree.h (TREE_MANGLED): This identifier is a
7518         DECL_NESTED_TYPENAME (named to allow for future use to denote
7519         mangled function names as well).
7520
7521         Implement inconsistency checking specified in [class.scope0].
7522         * decl.c (lookup_name_real): Don't set ICV here after all.
7523         (finish_enum): Also set the type of the enumerators themselves.
7524         (build_enumerator): Put the CONST_DECL in the list instead of its
7525         initial value.
7526         (pushdecl_class_level): Check inconsistent use of a name in the
7527         class body.
7528         * class.c (finish_struct): Check inconsistent use of a name in the
7529         class body.  Don't set DECL_CONTEXT on types here anymore.
7530         * parse.y (qualified_type_name): Note that the identifier has now
7531         been used (as a type) in the class body.
7532         * lex.c (do_identifier): Note that the identifier has now been used
7533         (as a constant) in the class body.
7534         * error.c (dump_decl): Print type and enum decls better.
7535
7536 Thu May  5 09:35:35 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
7537
7538         * typeck.c (build_modify_expr): Warn about assignment to `this'.
7539
7540 Wed May  4 15:55:49 1994  Jason Merrill  (jason@deneb.cygnus.com)
7541
7542         * init.c (build_delete): Use the global operator delete when
7543         requested.
7544
7545         * decl.c (lookup_name_real): If we find the type we're looking in a
7546         base class while defining a class, set IDENTIFIER_CLASS_VALUE for
7547         the type.
7548
7549         * class.c (finish_struct): Remove a couple of dependencies on
7550         language linkage.
7551
7552         * decl.c (pushtag): Classes do nest in extern "C" blocks.
7553         (pushdecl): Only set DECL_NESTED_TYPENAME on the canonical one for
7554         the type.
7555         (pushtag): Remove another dependency on the language linkage.
7556
7557         * lex.c (cons_up_default_function): Don't set DECL_CLASS_CONTEXT to
7558         a const-qualified type.
7559
7560         * decl.c (push_overloaded_decl): Throw away built-in decls here.
7561         (duplicate_decls): Instead of here.
7562
7563 Wed May  4 15:27:40 1994  Per Bothner  (bothner@kalessin.cygnus.com)
7564
7565         * typeck.c (get_member_function_from_ptrfunc):  Do The Right
7566         Thing (I hope) if we're using thunks.
7567
7568 Wed May  4 13:52:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
7569
7570         * parse.y (specialization): aggr template_type_name ';'.
7571         (named_class_head_sans_basetype): Use it.
7572         (explicit_instantiation): Ditto.
7573         (tmpl.2): Revert.
7574
7575         * cvt.c (build_type_conversion_1): Use convert_for_initialization,
7576         rather than convert, to do conversions after the UDC.
7577
7578         * cp-tree.h (SHARED_MEMBER_P): This member is shared between all
7579         instances of the class.
7580
7581         * search.c (lookup_field): If the entity found by two routes is the
7582         same, it's not ambiguous.
7583
7584 Wed May  4 12:10:00 1994  Per Bothner  (bothner@kalessin.cygnus.com)
7585
7586         * decl.c (lookup_name_real):  Check for a NULL TREE_VALUE,
7587         to prevent the compiler from crashing ...
7588
7589 Wed May  4 11:19:45 1994  Jason Merrill  (jason@deneb.cygnus.com)
7590
7591         * call.c (build_method_call): If we don't have an object, check
7592         basetype_path to figure out where to look up the function.
7593
7594         * typeck.c (convert_for_initialization): Pass TYPE_BINFO (type) to
7595         build_method_call in case exp is NULL_TREE.
7596
7597 Tue May  3 16:02:53 1994  Per Bothner  (bothner@kalessin.cygnus.com)
7598
7599         Give a vtable entries a unique named type, for the sake of gdb.
7600         * class.c (build_vtable_entry):  The addres of a thunk now has
7601         type vtable_entry_type, not ptr_type_node.
7602         * method.c (make_thunk):  Fix type of THUNK_DECL.
7603         * class.c (add_virtual_function, override_one_vtable):  Use
7604         vfunc_ptr_type_node, instead of ptr_type_node.
7605         * cp-tree.h (vfunc_ptr_type_node):  New macro.
7606         * decl.c (init_decl_processing):  Make vtable_entry_type
7607         be a unique type of pointer to a unique function type.
7608
7609 Tue May  3 09:20:44 1994  Jason Merrill  (jason@deneb.cygnus.com)
7610
7611         * parse.y (do_explicit): Sets doing_explicit to 1.
7612         (explicit_instantiation): Use do_explicit rather than TEMPLATE
7613         directly, add "do_explicit error" rule.
7614         (datadef): Set doing_explicit to 0 after an explicit instantiation.
7615         (tmpl.2): Don't instantiate if we see a ';' unless we're doing an
7616         explicit instantiation.
7617         (named_class_head_sans_basetype): Remove aggr template_type_name
7618         ';' again.
7619
7620 Mon May  2 23:17:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
7621
7622         * search.c (lookup_nested_tag): Lose.
7623
7624         * decl2.c (grokfield): Set DECL_CONTEXT on TYPE_DECLs.
7625         (lookup_name_nonclass): Lose.
7626
7627         * decl.c (poplevel_class): Add force parameter.
7628         (lookup_name_real): Fix handling of explicit scoping which specifies
7629         a class currently being defined.  Add 'nonclass' argument.
7630         (lookup_name, lookup_name_nonclass): Shells for lookup_name_real.
7631
7632         * class.c (finish_struct): Don't unset IDENTIFIER_CLASS_VALUEs here.
7633         (popclass): Force clearing of IDENTIFIER_CLASS_VALUEs if we're being
7634         called from finish_struct.
7635
7636 Mon May  2 19:06:21 1994  Per Bothner  (bothner@kalessin.cygnus.com)
7637
7638         * decl.c (init_decl_processing), cp-tree.h:  Removed memptr_type.
7639         (It seeems redundant, given build_ptrmemfunc_type.)
7640         * typeck.c (get_member_function_from_ptrfunc), gc.c (build_headof,
7641         build_classof):  Use vtable_entry_type instead of memptr_type.
7642         * method.c (emit_thunk):  Call poplevel with functionbody==0
7643         to prevent DECL_INITIAL being set to a BLOCK.
7644
7645 Mon May  2 15:02:11 1994  Jason Merrill  (jason@deneb.cygnus.com)
7646
7647         * parse.y (named_class_head_sans_basetype): Add "aggr
7648         template_type_name ';'" rule for forward declaration of
7649         specializations.
7650
7651 Mon May  2 15:02:11 1994  Jason Merrill  (jason@deneb.cygnus.com)
7652
7653         * class.c (instantiate_type): Deal with pmf's.
7654
7655         * Make-lang.in (cc1plus): Don't depend on OBJS or BC_OBJS, since
7656         stamp-objlist does.
7657
7658         * Makefile.in (../cc1plus): Depend on OBJDEPS.
7659         (OBJDEPS): Dependency version of OBJS.
7660
7661 Mon May  2 12:51:31 1994  Kung Hsu  (kung@mexican.cygnus.com)
7662
7663         * search.c (dfs_debug_mark): unmark TYPE_DECL_SUPPRESS_DEBUG, not
7664         DECL_IGNORED_P.
7665
7666 Fri Apr 29 12:29:56 1994  Jason Merrill  (jason@deneb.cygnus.com)
7667
7668         * class.c (finish_struct): Clear out memory of local tags.  And
7669         typedefs.
7670
7671         * decl2.c (grokclassfn): Don't set DECL_CONTEXT to a cv-qualified
7672         type.
7673         * search.c (get_matching_virtual): Be more helpful in error message.
7674
7675         * *: Use DECL_ARTIFICIAL (renamed from DECL_SYNTHESIZED).
7676
7677         * lex.c (default_assign_ref_body): Expect TYPE_NESTED_NAME to work.
7678         (default_copy_constructor_body): Ditto.
7679
7680         * class.c (finish_struct): Don't gratuitously create multiple decls
7681         for nested classes.
7682
7683 Thu Apr 28 23:39:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
7684
7685         Avoid clobbering the arg types of other functions when reverting
7686         static member functions.
7687         * decl.c (revert_static_member_fn): Rearrange arguments, don't
7688         require values for 'fn' and 'argtypes', add warning to comment
7689         above.
7690         (decls_match): Rearrange arguments in call to rsmf.
7691         (grok_op_properties): Don't pass values for fn and argtypes.
7692         * pt.c (instantiate_template): Don't pass values for fn and argtypes.
7693
7694 Thu Apr 28 16:29:11 1994  Doug Evans  (dje@canuck.cygnus.com)
7695
7696         * Make-lang.in (cc1plus): Depend on stamp-objlist.
7697         * Makefile.in (BC_OBJS): Delete.
7698         (OBJS): Cat ../stamp-objlist to get language independent files.
7699         Include ../c-common.o.
7700         (../cc1plus): Delete reference to BC_OBJS.
7701
7702 Thu Apr 28 02:12:08 1994  Jason Merrill  (jason@deneb.cygnus.com)
7703
7704         * search.c (compute_access): No really, deal with static members
7705         properly.  Would I lie to you?
7706
7707         Implement lexical hiding of function declarations.
7708         * pt.c (tsubst): Use lookup_name to look for function decls to guide
7709         instantiation.
7710         * method.c (build_opfncall): Use lookup_name_nonclass to look for
7711         non-member functions.
7712         * init.c (do_friend): Use lookup_name_nonclass to look for
7713         functions.
7714         * error.c (ident_fndecl): Use lookup_name to look for functions.
7715         * decl2.c (lookup_name_nonclass): New function, skips over
7716         CLASS_VALUE.
7717         * decl.c (struct binding_level): Lose overloads_shadowed field.
7718         (poplevel): Don't deal with overloads_shadowed.
7719         (push_overloaded_decl): Do lexical hiding for functions.
7720         * class.c (instantiate_type): Don't check non-members if we have
7721         members with the same name.
7722         * call.c (build_method_call): Use lookup_name_nonclass instead of
7723         IDENTIFIER_GLOBAL_VALUE to check for non-member functions.
7724         (build_overload_call_real): Ditto.
7725
7726         * decl.c (duplicate_decls): Check for ambiguous overloads here.
7727         (push_overloaded_decl): Instead of here.
7728         
7729         * decl.c (pushdecl): Back out Chip's last change.
7730
7731         * decl.c (grok_op_properties): operators cannot be static members.
7732
7733         * cp-tree.h (DECL_SYNTHESIZED): DECL_SOURCE_LINE == 0
7734         (SET_DECL_SYNTHESIZED): DECL_SOURCE_LINE = 0
7735         * lex.c (cons_up_default_function): Use SET_DECL_SYNTHESIZED.
7736
7737         * method.c (do_inline_function_hair): Don't put friends of local
7738         classes into global scope, either.
7739
7740         * typeck2.c (build_functional_cast): Don't look for a function call
7741         interpretation.
7742
7743 Thu Apr 28 15:19:46 1994  Mike Stump  <mrs@cygnus.com>
7744
7745         * cp-tree.h: disable use of backend EH.
7746
7747 Wed Apr 27 21:01:24 1994  Doug Evans  (dje@canuck.cygnus.com)
7748
7749         * Make-lang.in (c++.distdir): mkdir tmp/cp first.
7750         * Makefile.in (INCLUDES): Move definition to same place as
7751         parent makefile.
7752         (ALLOCA): Define.
7753         (OLDAR_FLAGS): Delete.
7754         (OLDCC): Define.
7755         (DIR): Delete.
7756         (CLIB): Define.
7757         (####site): Delete.
7758         (SUBDIR_USE_ALLOCA): Don't use ALLOCA if compiling with gcc.
7759
7760 Wed Apr 27 19:10:04 1994  Kung Hsu  (kung@mexican.cygnus.com)
7761
7762         * decl.c (xref_tag): not to use strstr(), it's not available on
7763         all platforms.
7764
7765 Wed Apr 27 18:10:12 1994  Jason Merrill  (jason@deneb.cygnus.com)
7766
7767         * class.c (finish_struct): Resolve yet another class/pmf confusion.
7768
7769         * call.c (build_overload_call_real): Don't take the single-function
7770         shortcut if we're dealing with an overloaded operator.
7771
7772 Wed Apr 27 17:35:37 1994  Mike Stump  <mrs@cygnus.com>
7773
7774         * search.c (get_base_distance): Search the virtual base class
7775         binfos, incase someone wants to convert to a real virtual base
7776         class.
7777         * search.c (expand_indirect_vtbls_init): Use convert_pointer_to_real
7778         instead of convert_pointer_to, as it now will work.
7779
7780 Wed Apr 27 15:36:49 1994  Jason Merrill  (jason@deneb.cygnus.com)
7781
7782         * cvt.c (convert_to_reference): Don't complain about casting away
7783         const and volatile.
7784
7785         * typeck.c (build_unary_op): References are too lvalues.
7786
7787 Wed Apr 27 13:58:05 1994  Mike Stump  <mrs@cygnus.com>
7788
7789         * class.c (override_one_vtable): We have to prepare_fresh_vtable
7790         before we modify it, not after, also, we cannot reuse an old vtable,
7791         once we commit to a new vtable.  Implement ambiguous overrides in
7792         virtual bases as abstract.  Hack until we make the class
7793         ill-formed.
7794
7795 Wed Apr 27 01:17:08 1994  Jason Merrill  (jason@deneb.cygnus.com)
7796
7797         * parse.y (unary_expr): Expand new_placement[opt] and
7798         new_initializer[opt] inline.
7799
7800         * search.c (lookup_fnfields): Don't throw away the inheritance
7801         information here, either.
7802         (compute_access): Handle static members properly.
7803
7804         * init.c (build_member_call): Always set basetype_path, and pass it
7805         to lookup_fnfields.
7806
7807         * search.c (lookup_field): Deal properly with the case where
7808         xbasetype is a chain of binfos; don't throw away the inheritance
7809         information.
7810         (compute_access): protected_ok always starts out at 0.
7811
7812         * init.c (resolve_offset_ref): Don't cast `this' to the base type
7813         until we've got our basetype_path.
7814
7815         * cp-tree.h (IS_OVERLOAD_TYPE): aggregate or enum.
7816
7817         * cvt.c (build_up_reference): Use build_pointer_type rather than
7818         TYPE_POINTER_TO.
7819
7820         * call.c (convert_harshness_ansi): Call type_promotes_to for reals
7821         as well.
7822
7823         * cvt.c (type_promotes_to): Retain const and volatile, add
7824         float->double promotion.
7825
7826         * decl.c (grokdeclarator): Don't bash references to arrays into
7827         references to pointers in function parms.  Use type_promotes_to.
7828
7829 Tue Apr 26 23:44:36 1994  Mike Stump  <mrs@cygnus.com>
7830
7831         Finish off Apr 19th work.
7832
7833         * class.c (finish_struct_bits): Rename has_abstract_virtuals to
7834         might_have_abstract_virtuals.
7835         * class.c (strictly_overrides, override_one_vtable,
7836         merge_overrides): New routines to handle virtual base overrides.
7837         * class.c (finish_struct): Call merge_overrides to handle overrides
7838         in virtual bases.
7839
7840 Tue Apr 26 12:45:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
7841
7842         * typeck.c (build_function_call): Call build_function_call_real with
7843         LOOKUP_NORMAL.
7844
7845         * *: Don't deal with TYPE_EXPRs.
7846
7847         * tree.c (lvalue_p): If the type of the expression is a reference,
7848         it's an lvalue.
7849
7850         * cvt.c (convert_to_reference): Complain about passing const
7851         lvalues to non-const references.
7852         (convert_from_reference): Don't arbitrarily throw away const and
7853         volatile on the target type.
7854
7855         * parse.y: Simplify and fix rules for `new'.
7856
7857         * decl.c (grok_op_properties): operator void is illegal.
7858
7859 Mon Apr 25 02:36:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
7860
7861         * parse.y (components): Anonymous bitfields can still have declspecs.
7862
7863         * decl.c (pushdecl): Postpone handling of function templates like we
7864         do C functions.
7865
7866         * search.c (expand_indirect_vtbls_init): Fix infinite loop when
7867         convert_pointer_to fails.
7868
7869         * call.c (compute_conversion_costs_ansi): A user-defined conversion
7870         by itself is better than that UDC followed by standard conversions.
7871         Don't treat integers and reals specially.
7872
7873         * cp-tree.h: Declare flag_ansi.
7874
7875         * typeck.c (c_expand_return): pedwarn on return in void function
7876         even if the expression is of type void.
7877         (build_c_cast): Don't do as much checking for casts to void.
7878         (build_modify_expr): pedwarn about array assignment if this code
7879         wasn't generated by the compiler.
7880
7881         * tree.c (lvalue_p): A comma expression is an lvalue if its second
7882         operand is.
7883
7884         * typeck.c (default_conversion): Move code for promoting enums and
7885         ints from here.
7886         * cvt.c (type_promotes_to): To here.
7887         * call.c (convert_harshness_ansi): Use type_promotes_to.  Also fix
7888         promotion semantics for reals.
7889
7890 Sun Apr 24 16:52:51 1994  Doug Evans  (dje@canuck.cygnus.com)
7891
7892         * Make-lang.in (c++.install-common): Check for g++-cross.
7893         * Makefile.in: Remove Cygnus cruft.
7894         (config.status): Delete.
7895         (RTL_H): Define.
7896         (TREE_H): Use complete pathname, some native makes have minimal
7897         VPATH support.
7898         (*.o): Use complete pathname to headers in parent dir.
7899         (doc, info, dvi): Delete.
7900
7901 Sun Apr 24 16:52:51 1994  Doug Evans  (dje@canuck.cygnus.com)
7902
7903         * Make-lang.in (c++.install-common): Check for g++-cross.
7904         * Makefile.in: Remove Cygnus cruft.
7905         (config.status): Delete.
7906         (RTL_H): Define.
7907         (TREE_H): Use complete pathname, some native makes have minimal
7908         VPATH support.
7909         (*.o): Use complete pathname to headers in parent dir.
7910         (doc, info, dvi): Delete.
7911
7912 Sun Apr 24 00:47:49 1994  Jason Merrill  (jason@deneb.cygnus.com)
7913
7914         * decl.c (pushdecl): Avoid redundant warning on redeclaring function
7915         with different return type.
7916         (decls_match): Compare return types strictly.
7917
7918 Fri Apr 22 12:55:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
7919
7920         * cvt.c (build_type_conversion): Do try to convert through other
7921         pointers.  This will fail if the class defines multiple pointer
7922         conversions.
7923
7924         * error.c (dump_type_prefix): Print out pointers to arrays properly.
7925         (dump_type_suffix): Ditto.  (was 'int *[]', now 'int (*)[]')
7926
7927         * typeck.c (build_unary_op): Disallow ++/-- on pointers to
7928         incomplete type.
7929
7930         * decl.c (duplicate_decls): Check mismatched TREE_CODES after
7931         checking for shadowing a builtin.  If we're redeclaring a builtin
7932         function, bash the old decl to avoid an ambiguous overload.
7933
7934         * cvt.c (convert_to_reference): Don't force arrays to decay here.
7935
7936         * tree.c (lvalue_p): A MODIFY_EXPR is an lvalue.
7937
7938         * decl.c (duplicate_decls): Don't assume that the decls will have
7939         types.
7940
7941         Mon Apr 18 11:35:32 1994  Chip Salzenberg  (chip@fin.uucp)
7942
7943         [ cp/* changes propagated from c-* changes in 940318 snapshot ]
7944         * c-decl.c (pushdecl): Warn if type mismatch with another external decl
7945         in a global scope.
7946
7947         Fri Apr 22 06:38:56 1994  Chip Salzenberg  (chip@fin.uucp)
7948
7949         * cp/typeck2.c (signature_error): Use cp_error for "%T".
7950
7951         Mon Apr 18 11:59:59 1994  Chip Salzenberg  (chip@fin.uucp)
7952
7953         [ cp/* changes propagated from c-* changes in 940415 snapshot ]
7954         * cp/decl.c (duplicate_decls, pushdecl, builtin_function):
7955         Use DECL_FUNCTION_CODE instead of DECL_SET_FUNCTION_CODE.
7956
7957         Mon Apr 18 11:55:18 1994  Chip Salzenberg  (chip@fin.uucp)
7958
7959         [ cp/* changes propagated from c-* changes in 940409 snapshot ]
7960         * cp/decl.c (duplicate_decls): Put new type in same obstack as
7961         old ones, or permanent if old ones in different obstacks.
7962
7963         Mon Apr 18 11:48:49 1994  Chip Salzenberg  (chip@fin.uucp)
7964
7965         [ cp/* changes propagated from c-* changes in 940401 snapshot ]
7966         * cp/parse.y (attrib): Handle string args as expressions,
7967         merging the two rules.  `mode' attribute now takes a string arg.
7968         Delete the rule for an identifier as arg.
7969
7970         Mon Apr 18 11:24:00 1994  Chip Salzenberg  (chip@fin.uucp)
7971
7972         [ cp/* changes propagated from c-* changes in 940312 snapshot ]
7973         * cp/typeck.c (pointer_int_sum): Multiplication should be done signed.
7974         (pointer_diff): Likewise the division.
7975
7976         Sun Mar  6 19:43:39 1994  Chip Salzenberg  (chip@fin.uucp)
7977
7978         [ cp/* changes propagated from c-* changes in 940304 snapshot ]
7979         * cp/decl.c (finish_decl): Issue warning for large objects,
7980         if requested.
7981
7982         Sat Feb 19 22:20:32 1994  Chip Salzenberg  (chip@fin.uucp)
7983
7984         [ cp/* changes propagated from c-* changes in 940218 snapshot ]
7985         * cp/parse.y (attrib): Handle attribute ((section ("string"))).
7986         * cp/decl.c (duplicate_decls): Merge section name into new decl.
7987
7988         Tue Feb  8 09:49:17 1994  Chip Salzenberg  (chip@fin.uucp)
7989
7990         [ cp/* changes propagated from c-* changes in 940206 snapshot ]
7991         * cp/typeck.c (signed_or_unsigned_type): Check for any
7992         INTEGRAL_TYPE_P not just INTEGER_TYPE.
7993
7994         Mon Dec  6 13:35:31 1993  Norbert Kiesel  (norbert@i3.INformatik.rwth-aachen.DE)
7995
7996         * cp/decl.c (finish_enum): Start from 0 when determining precision
7997         for short enums.
7998
7999         Fri Dec  3 17:07:58 1993  Ralph Campbell  (ralphc@pyramid.COM)
8000
8001         * cp/parse.y (unary_expr): Look at $1 for tree_code rather than
8002         casting $$.
8003
8004         Wed Nov 17 19:22:09 1993  Chip Salzenberg  (chip@fin.uucp)
8005
8006         * cp/typeck.c (build_binary_op_nodefault): Propagate code
8007         from C front-end to optimize unsigned short division.
8008         (build_conditional_expr): Fix bug in "1 ? 42 : (void *) 8".
8009
8010         Wed Nov 17 19:17:18 1993  Chip Salzenberg  (chip@fin.uucp)
8011
8012         * cp/call.c (convert_harshness_ansi): Given an (e.g.) char
8013         constant, prefer 'const char &' to 'int'.
8014
8015         Wed Feb  3 13:11:48 1993  Chip Salzenberg  (chip@fin.uucp)
8016
8017         * cp/class.c (finish_struct_methods):  Handle multiple
8018         constructors in fn_fields list.
8019
8020 Fri Apr 22 12:48:10 1994  Kung Hsu  (kung@mexican.cygnus.com)
8021
8022         * class.c (finish_struct): use TYPE_DECL_SUPPRESS_DEBUG to flag
8023         types not to be dumped in stabs, like types in #pragma interface.
8024         * decl.c (init_decl_processing): use TYPE_DECL_SUPPRESS_DEBUG to
8025         mark unknown type.
8026
8027 Fri Apr 22 03:27:26 1994  Doug Evans  (dje@cygnus.com)
8028
8029         * Language directory reorganization.
8030         See parent makefile.
8031
8032 Thu Apr 21 18:27:57 1994  Per Bothner  (bothner@kalessin.cygnus.com)
8033
8034         * cp-tree.h (THUNK_DELTA):  It is normally negative, so
8035         use signed .i variant of frame_size rather than unsigned .u.
8036         * cp-tree.h (VTABLE_NAME_FORMAT):  If flag_vtable_thunks,
8037         use "VT" rather than "vt" due to binary incompatibility.
8038         * class.c (get_vtable_name):  Use strlen of VTABLE_NAME_FORMAT,
8039         rather than sizeof, since it is now an expression.
8040         * class.c (modify_one_vtable):  Modify to skip initial element
8041         containing a count of the vtable.
8042
8043 Thu Apr 21 00:09:02 1994  Jason Merrill  (jason@deneb.cygnus.com)
8044
8045         * lex.c (check_newline): Force interface_unknown on main input file.
8046
8047         * pt.c (do_pending_expansions): Always emit functions that have been
8048         explicitly instantiated.
8049         (do_function_instantiation): Set DECL_EXPLICITLY_INSTANTIATED.
8050         (do_type_instantiation): Set CLASSTYPE_VTABLE_NEEDS_WRITING and
8051         DECL_EXPLICITLY_INSTANTIATED on all my methods.
8052         * parse.y (explicit_instantiation): Call do_type_instantiation for
8053         types.
8054         * decl2.c (finish_vtable_vardecl): Call import_export_vtable.
8055         * decl.c (start_function): Don't set DECL_EXTERNAL on a function
8056         that has been explicitly instantiated.
8057         * cp-tree.h (DECL_EXPLICITLY_INSTANTIATED): Alias for
8058         DECL_LANG_FLAG_4.
8059         * class.c: Move import_export_vtable to decl2.c, and comment out all
8060         uses.
8061
8062 Wed Apr 20 16:51:06 1994  Jason Merrill  (jason@deneb.cygnus.com)
8063
8064         * lex.c (process_next_inline): Don't muck with DECL_INLINE.
8065         (do_pending_inlines): Ditto.
8066
8067 Tue Apr 19 22:25:41 1994  Mike Stump  <mrs@cygnus.com>
8068
8069         Reimplement vtable building, and most vtable pointer setting.
8070         Allows for earier maintenance, easier understandability, and most
8071         importantly, correct semantics.
8072
8073         * class.c (build_vtable): Removed unneeded
8074         SET_BINFO_VTABLE_PATH_MARKED.
8075         * class.c (prepare_fresh_vtable): Ditto.  Added argument.
8076         * class.c (modify_vtable_entry): General cleanup.
8077         * class.c (related_vslot, is_normal, modify_other_vtable_entries,
8078         modify_vtable_entries): Removed.
8079         * class.c (add_virtual_function): General cleanup.
8080         * class.c (finish_base_struct): Setup BINFO_VTABLE and
8081         BINFO_VIRTUALS as early as we can, so that modify_all_vtables can
8082         work.
8083         * class.c (finish_vtbls): New routine, mostly from
8084         unmark_finished_struct.
8085         * class.c (overrides): New routine.
8086         * class.c (modify_one_vtable): New routine, mostly from
8087         modify_other_vtable_entries and modify_vtable_entries.
8088         * class.c (modify_all_direct_vtables, modify_all_indirect_vtables,
8089         modify_all_vtables): New routines.
8090         * class.c (finish_struct): Added arguemnt to prepare_fresh_vtable
8091         call.  General cleanup on how pending_hard_virtuals are handled.
8092         General cleanup on modifying vtables.  Use finish_vtbls, instead of
8093         unmark_finished_struct.
8094         * cp-tree.h (init_vtbl_ptrs, expand_direct_vtbls_init,
8095         get_first_matching_virtual, get_matching_virtual,
8096         expand_vbase_vtables_init,  expand_indirect_vtbls_init): Update.
8097         * cvt.c (convert_pointer_to_real): cleanup error message.
8098         * decl.c (grokfndecl): General cleanup.
8099         * decl.c (finish_function): Change init_vtbl_ptrs call to
8100         expand_direct_vtbls_init.  Change expand_vbase_vtables_init call to
8101         expand_indirect_vtbls_init.
8102         * init.c (expand_virtual_init): Remove unneeded argument.
8103         * init.c (init_vtbl_ptrs): Rename to expand_direct_vtbls_init, added
8104         two arguments to make more general.  Made more general.  Now can be
8105         used for vtable pointer initialization from virtual bases.
8106         * init.c (emit_base_init): Change expand_vbase_vtables_init call to
8107         expand_indirect_vtbls_init.  Change init_vtbl_ptrs call to
8108         expand_direct_vtbls_init.
8109         * init.c (expand_virtual_init): General cleanup.
8110         * init.c (expand_default_init): Change expand_vbase_vtables_init
8111         call to expand_indirect_vtbls_init.
8112         * init.c (expand_recursive_init_1): Change expand_vbase_vtables_init
8113         call to expand_indirect_vtbls_init.
8114         * init.c (expand_recursive_init): Change expand_vbase_vtables_init
8115         call to expand_indirect_vtbls_init.
8116         * search.c (get_first_matching_virtual): Rename to
8117         get_matching_virtual.  General cleanup and remove setting of
8118         DECL_CONTEXT.  That is now done in a cleaner way in
8119         modify_vtable_entry and add_virtual_function.
8120         * search.c (expand_vbase_vtables_init): Rename to
8121         expand_indirect_vtbls_init.  General cleanup.  Use
8122         expand_direct_vtbls_init to do hard work.  Ensures that _all_ vtable
8123         pointers from virtual bases are set up.
8124         * search.c (bfs_unmark_finished_struct, unmark_finished_struct):
8125         Removed.
8126
8127         * *.[chy]: Remove support for VTABLE_USES_MASK.
8128
8129 Tue Apr 19 12:51:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
8130
8131         * cvt.c (convert_to_reference): Use NOP_EXPRs to switch between
8132         reference and pointer types instead of bashing the types directly.
8133
8134         * call.c (build_overload_call_real): Use the TREE_CODE to determine
8135         whether the function is overloaded or not, rather than
8136         TREE_OVERLOADED.
8137         * *: Remove all uses of TREE_OVERLOADED.
8138
8139         * decl.c (grokdeclarator): Only complain about initializing const
8140         fields when -ansi or -pedantic.
8141
8142 Tue Apr 19 12:42:42 1994  Doug Evans  (dje@canuck.cygnus.com)
8143
8144         * cp-tree.h (THUNK_DELTA): frame_size is now a union.
8145
8146 Mon Apr 18 00:17:13 1994  Jason Merrill  (jason@deneb.cygnus.com)
8147
8148         Do overloading on a block-by-block basis, not function-by-function.
8149         * decl.c: Lose overloads_to_forget.
8150         (struct binding_level): Add overloads_shadowed field.
8151         (poplevel): Restore overloads_shadowed.
8152         (push_overloaded_decl): Use overloads_shadowed instead of
8153         overloads_to_forget.
8154         (finish_function): Don't look at overloads_to_forget.
8155
8156         Copy enum_overflow logic from c-decl.c.
8157         * decl.c (start_enum): Initialize enum_overflow.
8158         (build_enumerator): Use enum_overflow.  Also use current_scope().
8159
8160         * search.c (current_scope): Move Brendan's comment from
8161         build_enumerator here.
8162
8163         * typeck.c (convert_for_assignment): Change warnings to pedwarns for
8164         discarding const/volatile.
8165
8166 Sat Apr 16 01:18:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
8167
8168         * typeck.c (comp_target_parms): Accept TEMPLATE_TYPE_PARMs on the rhs.
8169         (comp_target_types): Ditto.
8170
8171         * decl.c (lookup_name): Don't unset got_scope here.
8172
8173         * spew.c (yylex): Only replace yylval with the TYPE_NESTED_NAME if
8174         got_scope != NULL_TREE.
8175
8176 Fri Apr 15 16:36:33 1994  Jason Merrill  (jason@deneb.cygnus.com)
8177
8178         Horrible kludge to prevent templates from being instantiated by
8179         their base classes.
8180         * parse.y (template_instantiate_once): Unset TYPE_BEING_DEFINED
8181         before we get to left_curly.
8182         * pt.c (instantiate_class_template): Set TYPE_BEING_DEFINED.
8183
8184         * error.c (dump_decl): If it's a typedef, print out the name of the
8185         decl, not just the underlying type.
8186
8187         * decl.c (pushdecl): If the old duplicate decl was a TYPE_DECL,
8188         update the IDENTIFIER_TYPE_VALUE of its name.
8189
8190         * decl2.c (finish_file): When processing the initializer for a
8191         static member, pretend that the dummy function is a member of the
8192         same class.
8193
8194 Fri Apr 15 15:56:35 1994  Kung Hsu  (kung@mexican.cygnus.com)
8195
8196         * class.c (build_vtable_entry): revert Apr 4 change.
8197         * decl2.c (mark_vtable_entries): replace pure virtual function
8198         decl with abort's.
8199
8200 Fri Apr 15 13:49:33 1994  Jason Merrill  (jason@deneb.cygnus.com)
8201
8202         * typeck.c (build_conditional_expr): Pedwarn on pointer/integer
8203         mismatch, and don't pedwarn on 0/function pointer mismatch.
8204
8205         * typeck2.c (digest_init): Lose code for special handling of unions.
8206         (process_init_constructor): Since they're handled just fine here.
8207         Pedwarn on excess elements.
8208
8209         * decl2.c (grokfield): Complain about local class method declaration
8210         without definition.
8211
8212 Fri Apr 15 13:19:40 1994  Per Bothner  (bothner@kalessin.cygnus.com)
8213
8214         * method.c (emit_thunk):  Add extern declaration for
8215         current_call_is_indirect (needed for hppa).
8216
8217 Thu Apr 14 16:12:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
8218
8219         Improve local class support; allow classes in different blocks to
8220         have the same name.
8221         * decl.c (pushtag): Support local classes better.
8222         (pushdecl_nonclass_level): New function for pushing mangled decls of
8223         nested types into the appropriate scope.
8224         (xref_defn_tag): Use pushdecl_nonclass_level instead of
8225         pushdecl_top_level. 
8226         (grokfndecl): Don't mess with IDENTIFIER_GLOBAL_VALUE for local
8227         class methods.
8228         * method.c (do_inline_function_hair): Ditto.
8229
8230         * class.c (finish_struct): It is legal for a class with no
8231         constructors to have nonstatic const and reference members.
8232
8233 Thu Apr 14 07:15:11 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
8234
8235         * decl.c (push_overloaded_decl): Avoid giving errors about
8236         built-ins, since duplicate_decls will have given warnings/errors
8237         for them.
8238
8239 Thu Apr 14 03:45:12 1994  Jason Merrill  (jason@deneb.cygnus.com)
8240
8241         * cvt.c (convert_to_reference): Warn about casting pointer type to
8242         reference type when this is probably not what they wanted.
8243
8244 Wed Apr 13 13:12:35 1994  Per Bothner  (bothner@kalessin.cygnus.com)
8245
8246         * decl.c (finish_decl):  Don't mindlessly set TREE_USED for
8247         static consts any more (toplev.c has now been modified to
8248         not emit warnings if they are unused).
8249
8250 Wed Apr 13 00:22:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
8251
8252         * decl.c (grok_op_properties): If op new/delete get here with
8253         METHOD_TYPEs, do a revert_static_member_fn.
8254
8255         * cp-tree.h (IDENTIFIER_CLASS_TYPE_VALUE): Lose.
8256         * init.c (is_aggr_typedef): Don't look at
8257         IDENTIFIER_CLASS_TYPE_VALUE.
8258         (get_aggr_from_typedef): Ditto.
8259         (get_type_value): Ditto.
8260         * call.c (build_scoped_method_call): Don't rely on overloaded
8261         template names having IDENTIFIER_CLASS_VALUE set.
8262
8263         * parse.y (component_decl_1, fn.def2): Revert rules for
8264         constructors.
8265         (component_decl_1, fn.def2): Use $1 instead of $$, since $$ is being
8266         clobbered.
8267
8268         * decl.c (start_function): Only warn about `void main()' if pedantic
8269         || warn_return_type.
8270
8271 Tue Apr 12 02:14:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
8272
8273         Clean up overloading of the template name.
8274         * class.c (pushclass): overload the template name whenever pushing
8275         into the scope of a template class, not just if it is
8276         uninstantiated.
8277         (popclass): Correspondingly.
8278         * search.c (push_class_decls): Don't overload_template_name.
8279         * pt.c (overload_template_name): Don't set IDENTIFIER_LOCAL_VALUE or
8280         DECL_CONTEXT on things.
8281         * parse.y (left_curly): Don't overload_template_name.
8282         * class.c (finish_struct): Don't undo_template_name_overload.
8283
8284         * method.c (build_opfncall): Only pass one argument to global op
8285         delete.
8286
8287         * call.c (build_method_call): Use TYPE_VEC_DELETE_TAKES_SIZE to
8288         decide how many arguments to use for vec delete.
8289
8290         * decl.c (grok_op_properties): Be consistent in modifying
8291         current_class_type.
8292         (grokdeclarator): Only complain about function decls with no return
8293         type if we're being pedantic.
8294
8295 Mon Apr 11 00:10:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
8296
8297         Add support for operator new [] and operator delete [].
8298
8299         * tree.def: Add VEC_NEW_EXPR and VEC_DELETE_EXPR.
8300         * ptree.c (print_lang_type): Indicate vec new/delete.
8301         * parse.y: Support vec new/delete.
8302         * method.c (build_decl_overload): Deal with vec new/delete.
8303         (build_opfncall): Ditto.
8304         * lex.c (init_lex): Set up values of ansi_opname and opname_tab for
8305         vec new/delete.  vec new uses "__vn", and vec delete uses "__vd".
8306         * init.c (init_init_processing): Set up BIVN and BIVD.
8307         (do_friend): Don't clean up after mistaken setting of TREE_GETS_NEW,
8308         since it doesn't happen any more.
8309         (build_new): Support vec new.  Always call something.
8310         (build_x_delete): Support vec delete.
8311         (build_vec_delete): Lose dtor_dummy argument, add use_global_delete,
8312         and pass it to build_x_delete.
8313         * decl2.c (delete_sanity): Don't change behavior by whether or not
8314         the type has a destructor.  Pass use_global_delete to
8315         build_vec_delete.
8316         (coerce_delete_type): Make sure that the type returned has a first
8317         argument of ptr_type_node.
8318         * decl.c (init_decl_processing): Also declare the global vec
8319         new/delete.
8320         (grokdeclarator): Also force vec new/delete to be static.
8321         (grok_op_properties): Note presence of vec new/delete, and play with
8322         their args.  If vec delete takes the optional size_t argument, set
8323         TYPE_VEC_DELETE_TAKES_SIZE.
8324         * cp-tree.h (TYPE_GETS_{REG,VEC}_DELETE): New macros to simplify
8325         checking for one delete or the other.
8326         (lang_type): gets_new and gets_delete are now two bits long.  The
8327         low bit is for the non-array version.  Lose gets_placed_new.
8328         (TYPE_VEC_DELETE_TAKES_SIZE): New macro indicating that the vec
8329         delete defined by this class wants to know how much space it is
8330         deleting.
8331         (TYPE_VEC_NEW_USES_COOKIE): New macro to indicate when vec new must
8332         add a header containing the number of elements in the vector; i.e.
8333         when the elements need to be destroyed or vec delete wants to know
8334         the size.
8335         * class.c (finish_struct_methods): Also check for overloading vec
8336         delete.
8337         * call.c (build_method_call): Also delete second argument for vec
8338         delete.
8339
8340         * decl.c (grokdeclarator): Correct complaints again.
8341         (grokdeclarator): Fix segfault on null declarator.
8342         (decls_match): Also accept redeclaration with no arguments if both
8343         declarations were in C context.  Bash TREE_TYPE (newdecl) here.
8344         (duplicate_decls): Instead of here.
8345
8346         * parse.y (nested_name_specifier_1): Lose rules for dealing with
8347         syntax errors nicely, since they break parsing of 'const i;'.
8348
8349         * decl.c (lookup_name): if (got_scope == current_class_type)
8350         val = IDENTIFIER_CLASS_VALUE (name).
8351
8352         * search.c (lookup_nested_tag): Look in enclosing classes, too.
8353
8354         * spew.c (yylex): Only look one character ahead when checking for a
8355         SCOPE.
8356
8357         * lex.c (check_newline): Read first nonwhite char before
8358         incrementing lineno.
8359
8360         * decl.c (grokdeclarator): Don't claim that typedefs are variables
8361         in warning.
8362
8363         * parse.y: Divide up uses of unqualified_id into
8364         notype_unqualified_id and unqualified_id, so that TYPENAME can be
8365         used as an identifier after an object.
8366
8367         * class.c (push_nested_class): Don't push into non-class scope.
8368
8369         * decl.c (grokdeclarator): If an identifier could be a type
8370         conversion operator, but has no associated type, it's not a type
8371         conversion operator.
8372
8373         * pt.c (unify): Check for equality of constants better.
8374
8375         * decl.c (grokdeclarator): Don't complain about access decls.
8376
8377 Sun Apr 10 02:39:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
8378
8379         * decl.c (grokdeclarator): pedwarn about data definitions without
8380         types here.
8381
8382         * parse.y (datadef): Don't pedwarn about decls without types here,
8383         since that is valid for functions.
8384         (fn.def2, component_decl): Support constructors with declmods again.
8385         (nomods_initdecls): For decls without any mods, so that we don't try
8386         to get declspecs from some arbitrary $0.
8387
8388         * search.c (lookup_field): Use cp_error.
8389
8390         * parse.y (nested_name_specifier_1): Don't check aggr/non-aggr type
8391         here; it breaks destructors for non-aggr types.
8392
8393         * decl.c (lookup_name): Only look for TYPE_DECLs in base classes of
8394         a type being defined, like the comment says.
8395         If got_scope is not an aggregate, just return NULL_TREE.
8396
8397         * pt.c (create_nested_upt): Kung's code for creating types nested
8398         within uninstantiated templates now lives here (it used to live in
8399         hack_more_ids).  It needs to be expanded.
8400
8401         * parse.y: Stop calling see_typename so much.
8402
8403         * decl.c (lookup_name): Deal with TTPs and UPTs.
8404
8405         * lex.c (real_yylex): Don't set looking_for_typename just because we
8406         saw a 'new'.
8407         (dont_see_typename): #if 0 out.
8408
8409         * spew.c (yylex): Increment looking_for_typename if the next
8410         character is SCOPE, rather than setting it to 1; this way, the value
8411         from seeing an aggr specifier will not be lost.  This kinda relies
8412         on looking_for_typename never being < 0, which is now true.
8413
8414         * parse.y (nested_name_specifier_1): Accept TEMPLATE_TYPE_PARMs,
8415         too.
8416         (named_class_head_sans_basetype): Accept template types, too.  Oops.
8417
8418 Fri Apr  8 16:39:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
8419
8420         * decl2.c (reparse_decl_as_expr1): Handle SCOPE_REFs.
8421
8422         * parse.y: Lose START_DECLARATOR.
8423
8424         * search.c (lookup_nested_tag): New function to scan CLASSTYPE_TAGS
8425         for a class.
8426
8427         * parse.y: Simplify fn.def2 and component_decl.  Support 'enum
8428         A::foo' syntax.  Catch invalid scopes better.
8429
8430         * parse.y, lex.c: lose TYPENAME_COLON.
8431
8432         * decl2.c (groktypefield): #if 0 out.
8433
8434         * decl.c (lookup_name): If the type denoted by got_scope is
8435         currently being defined, look in CLASSTYPE_TAGS rather than FIELDS.
8436
8437         * class.c (push_nested_class): Don't try to push into
8438         error_mark_node.
8439
8440 Fri Apr  8 07:26:36 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
8441
8442         * Makefile.in (stamp-parse): Update count of conflicts to 33.
8443
8444 Thu Apr  7 17:47:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
8445
8446         A saner implementation of nested types that treats template types
8447         no differently from non-template types.  There are still some
8448         shortcomings of our system; most notably, it is difficult to look
8449         for a nested type that is hidden by another name, because of the way
8450         we keep track of hidden types.  But this shouldn't be a problem for
8451         just about anyone.  Perhaps lookup_field should be fixed up a bit.
8452
8453         * spew.c: Moved handling of nested types/scoping from the lexer
8454         into the parser.  Removed variable template_type_seen_before_scope.
8455         Removed functions frob_identifier, hack_more_ids, and various cruft
8456         that was #if 0'd out in the past, reducing the size of the file from
8457         1146 lines to 450 lines.  We can't quite do away with spew.c yet,
8458         though; we still need it for do_aggr () and checking for SCOPE after
8459         the current identifier.  And setting lastiddecl.
8460
8461         * parse.y: Moved handling of nested types/scoping from the lexer
8462         into the parser, using a new global variable `got_scope'.  Reduced
8463         the number of states by 53.  Implemented all uses of explicit global
8464         scope.  Removed terminals SCOPED_TYPENAME and SCOPED_NAME.  Removed
8465         nonterminals tmpl.1, scoped_base_class, id_scope, typename_scope,
8466         scoped_typename.  Added nonterminals nested_type,
8467         qualified_type_name, complete_type_name, qualified_id, ptr_to_mem,
8468         nested_name_specifier, global_scope, overqualified_id, type_name.
8469         Changed many others.  Added 9 new reduce/reduce conflicts, which are
8470         nested type parallels of 9 that were already in the grammar for
8471         non-nested types.  Eight of the now 33 conflicts should be removed
8472         in the process of resolving the late binding between variable and
8473         function decls.
8474
8475         * gxxint.texi (Parser): Update.
8476
8477         * cp-tree.h (IS_AGGR_TYPE_CODE): Add UNINSTANTIATED_P_TYPE.
8478
8479         * lex.h: Add decl for got_scope.
8480
8481         * lex.c (see_typename): Claim to be the lexer when calling
8482         lookup_name.
8483
8484         * decl.c (lookup_name): When called from the lexer, look at
8485         got_scope and looking_at_typename; otherwise don't.
8486
8487 Thu Apr  7 22:05:47 1994  Mike Stump  <mrs@cygnus.com>
8488
8489         31th Cygnus<->FSF merge.
8490
8491 Thu Apr  7 17:47:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
8492
8493         * decl2.c (mark_vtable_entries): Call this to mark all the
8494         entries in the vtable addressable.
8495         (finish_decl_parsing): Handle SCOPE_REFs.
8496
8497         * decl.c (decls_match): Always call compparms with strict == 1.
8498         Handle the special case of C function redecl here.
8499         (duplicate_decls): Only keep the old type if the new decl takes no
8500         arguments.
8501
8502         * typeck.c (compparms): Also allow t1 to be ... if strict == 0.
8503
8504 Thu Apr  7 16:17:50 1994  Mike Stump  <mrs@cygnus.com>
8505
8506         * class.c (build_vtable_entry): Fix breakage introduced Apr 5
8507         17:48:41.
8508
8509 Wed Apr  6 16:05:10 1994  Per Bothner  (bothner@kalessin.cygnus.com)
8510
8511         * init.c (build_virtual_init), search.c (build_vbase_vtables_init),
8512         ch-tree.h:  Every place these functions were called, the result was
8513         immediately passed to expand_expr_stmt.  Reduce redundancy by
8514         calling expand_expr_init *inside* these functions.  These
8515         makes for a simpler interface, and we don't have to build
8516         compound expressions.  Hence, rename these function to:
8517         expand_virtual_init and expand_vbase_vtables_init respectively.
8518         * init.c, decl.c:  Change callers of these functions.
8519         * init.c, cp-tree.h (expand_virtual_init):  Make static.
8520
8521         * decl2.c (finish_file): Check TREE_PUBLIC||TREE_ADDRESSABLE
8522         rather than DECL_SAVED_INSNS before emitting inlines.
8523
8524 Wed Apr  6 13:06:39 1994  Jason Merrill  (jason@deneb.cygnus.com)
8525
8526         * spew.c (init_spew): #if 0 out stuff used by arbitrate_lookup.
8527
8528         * decl.c (duplicate_decls): If this is a new declaration of an
8529         extern "C" function, keep the type (for the argtypes).
8530         (redeclaration_error_message): Don't check DECL_LANGUAGE here.
8531         (decls_match): Call compparms with a value of strict dependent on
8532         the value of strict_prototypes for DECL_LANGUAGE (oldecl).
8533
8534         * typeck.c (compparms): ... is only equivalent to non-promoting
8535         parms if we're not being strict.
8536
8537         * parse.y (empty_parms): Don't check flag_ansi || pedantic here.
8538
8539         * decl.c (init_decl_processing): if (flag_ansi || pedantic)
8540         strict_prototypes_lang_c = strict_prototypes_lang_cplusplus;
8541
8542         * decl2.c (grok_function_init): Don't set DECL_INITIAL on pure
8543         virtuals.
8544
8545 Tue Apr  5 17:48:41 1994  Per Bothner  (bothner@kalessin.cygnus.com)
8546
8547         Support for implementing vtables with thunks.
8548         * tree.def (THUNK_DECL):  New TREE_CODE.
8549         * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY), tree.c
8550         (fnaddr_from_vtable_entry):  Handle flag_vtable_thunks case.
8551         * cp-tree.h (memptr_type):  New variable.
8552         * class.c (build_vtable_entry):  Build thunk if necessary.
8553         * class.c (build_vfn_ref):  If using thunks, don't need
8554         to add delta field from vtable (there is none!).
8555         * decl.c: Add memptr_type as well as vtable_entry_type.
8556         If using thunks, the latter is just ptr_type_node.
8557         * gc.c, typeck.c:  Use memptr_typeChange, not vtable_entry_type.
8558         * decl2.c (finish_vtable_vardecl):  Handle thunks.
8559         * expr.c (cplus_expand_expr):  Support THUNK_DECL.
8560
8561         * decl.c (grokdeclarator):  Set DECL_THIS_EXTERN if "extern".
8562         * decl.c (start_function):  Set current_extern_inline based on
8563         DECL_THIS_EXTERN, not TREE_PUBLIC.
8564         * decl.c (finish_function):  Call mark_inline_for_output if needed,
8565
8566         Improve intelligence about when to emit inlines.
8567         * cp-tree.h (lang_decl_flags):  New field saved_inline.
8568         * cp-tree.h (DECL_SAVED_INLINE):  New macro.
8569         * class.c (add_virtual_function):  Don't set TREE_ADDRESSABLE.
8570         * decl.h, decl.c (pending_addressable_inlines):  Removed.
8571         * decl2.c (pending_addressable_inlines):  Renamed to saved_inlines.
8572         * decl2.c (mark_inline_for_output):  Do nothing if
8573         DECL_SAVED_INLINE;  otherwise set it (and add to saved_inlines list).
8574         * decl2.c (finish_vtable_vardecl):  SET_CLASSTYPE_INTERFACE_KNOWN
8575         and set CLASSTYPE_INTERFACE_ONLY if there is a non-inline virtual.
8576         * decl2.c (finish_file):  Writing out inlines later, so we can
8577         also handle the ones needed for vtbales.
8578         * decl2.c (write_vtable_entries, finish_vtable_typedecl):  Removed.
8579
8580         * cp-tree.h, class.c, decl2.c, search.c:  Remove -fvtable-hack
8581         and flag_vtable_hack.   Use -fvtable-thunks and flag_vtable_thunks
8582         instead.  (The rationale is that these optimizations both break binary
8583         compatibility, but should become the default in a future release.)
8584
8585 Wed Apr  6 10:53:56 1994  Mike Stump  <mrs@cygnus.com>
8586
8587         * class.c (modify_vtable_entries): Never reset the DECL_CONTEXT
8588         of a fndecl, as we might not be from that vfield.
8589
8590 Tue Apr  5 17:43:35 1994  Kung Hsu  (kung@mexican.cygnus.com)
8591
8592         * class.c (add_virtual_function): fix bug for pure virtual, so
8593         that DECL_VINDEX of the dummy decl copied won't be error.
8594         (see also Apr 4 change)
8595
8596 Tue Apr  5 17:23:45 1994  Per Bothner  (bothner@kalessin.cygnus.com)
8597
8598         * typeck.c (c_expand_return):  Before checking that we're not
8599         returning the address of a local, make sure it's a VAR_DECL.
8600         (And don't worry about it being a TREE_LIST.)
8601
8602 Tue Apr  5 13:26:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
8603
8604         * parse.y (YYDEBUG): Always define.
8605         * lex.c (YYDEBUG): Ditto.
8606
8607 Mon Apr  4 11:28:17 1994  Kung Hsu  (kung@mexican.cygnus.com)
8608
8609         * class.c (finish_struct): backup out the change below, put the
8610         new change for the same purpose. The change below breaks code.
8611
8612         * class.c (finish_struct): if pure virtual, copy node and make
8613         RTL point to abort, then put in virtual table.
8614         * decl2.c (grok_function_iit): reinstate Mar 31 change.
8615
8616 Sat Apr  2 03:12:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
8617
8618         * init.c (build_new): pedwarn about newing const and volatile
8619         types.
8620
8621         * tree.c (get_identifier_list): Only do the special handling
8622         thing if we're dealing with the main variant of the record type.
8623
8624         * cvt.c (convert_to_reference): When converting between
8625         compatible reference types, use the pointer conversion machinery.
8626         Don't just blindly overwrite the old type.
8627
8628 Fri Apr  1 17:14:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
8629
8630         * call.c (build_method_call): When looking at global functions,
8631         be sure to use instance_ptr for the first argument, not some version
8632         of it that has been cast to a base class.  Also do this before
8633         comparing candidates.
8634
8635 Thu Mar 31 19:50:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
8636
8637         * call.c (build_method_call): Constructors can be called for
8638         const objects.
8639
8640 Thu Mar 31 16:20:16 1994  Kung Hsu  (kung@mexican.cygnus.com)
8641
8642         * decl2.c (grok_func_init): do not abort as rtl for pur virtual
8643         fucntions. They can be defined somewhere else.
8644
8645 Sat Jan 23 23:23:26 1994  Stephen R. van den Berg  (berg@pool.informatik.rwth-aachen.de)
8646
8647         * decl.c (init_decl_processing): Declare __builtin_return_address
8648         and __builtin_frame_address for C++ as well.
8649
8650 Thu Mar 31 12:35:49 1994  Mike Stump  <mrs@cygnus.com>
8651
8652         * typeck2.c (store_init_value): Integral constant variables are
8653         always constant, even when doing -fpic.
8654
8655 Sat Jan 23 23:23:26 1994  Stephen R. van den Berg  (berg@pool.informatik.rwth-aachen.de)
8656
8657         * decl.c (redeclaration_error_message): Pass the types to
8658         comptypes.
8659
8660 Wed Mar 30 21:29:25 1994  Mike Stump  <mrs@cygnus.com>
8661
8662         Cures incorrect errors about pure virtuals in a class, when they
8663         have been overridden in a derived class.
8664
8665         * search.c (get_abstract_virtuals): Reimplement.
8666         * search.c (get_abstract_virtuals_1): New routine.
8667
8668 Wed Mar 30 14:10:04 1994  Jason Merrill  (jason@deneb.cygnus.com)
8669
8670         * pt.c (push_template_decls): Make the pushed level pseudo
8671         global.
8672
8673         * parse.y (extdefs): Don't pop everything if the current binding
8674         level is pseudo_global.
8675
8676         * decl.c (pop_everything): Stop on reaching a pseudo-global
8677         binding level.
8678
8679         * cp-tree.h (DECL_FUNCTION_MEMBER_P): Change to more reliable test.
8680
8681         * decl.c (duplicate_decls): Only copy DECL_SOURCE_{FILE_LINE} if
8682         the old decl actually had an initializer.
8683
8684         * {various}: Clean up gcc -W complaints.
8685
8686         * cp-tree.h (DECL_FUNCTION_MEMBER_P): Currently defined to be
8687         (DECL_CONTEXT (NODE) != NULL_TREE).
8688
8689         * parse.y (lang_extdef): Call pop_everything if necessary.
8690
8691         * decl.c (pop_everything): New function for popping binding
8692         levels left over after a syntax error.
8693         (pushdecl): Use DECL_FUNCTION_MEMBER_P to decide whether or not
8694         a function is a member.
8695
8696 Wed Mar 30 14:20:50 1994  Mike Stump  <mrs@cygnus.com>
8697
8698         Cures calling a more base base class function, when a more derived
8699         base class member should be called in some MI situations.
8700
8701         * search.c (make_binfo): Use more the more specialized base
8702         binfos from the binfo given as the second argument to make_binfo,
8703         instead of the unspecialized ones from the TYPE_BINFO.
8704         * class.c (finish_base_struct): Ditto, update callers.
8705         * search.c (dfs_get_vbase_types): Ditto.
8706         * tree.c (propagate_binfo_offsets, layout_vbasetypes): Ditto.
8707         * decl.c (xref_tag): Use NULL_TREE instead of 0.
8708         * lex.c (make_lang_type): Ditto.
8709
8710 Wed Mar 30 14:10:04 1994  Jason Merrill  (jason@deneb.cygnus.com)
8711
8712         * decl.c (pushdecl): If pushing a C-linkage function, only do a
8713         push_overloaded_decl.
8714         (duplicate_decls): Standard overloading does not shadow built-ins.
8715
8716 Tue Mar 29 00:54:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
8717
8718         * pt.c (end_template_decl): Don't call push_overloaded_decl.
8719
8720         * init.c (do_friend): Don't call push_overloaded_decl.
8721
8722         * decl.c (pushdecl): Call push_overloaded_decl for functions and
8723         function templates.
8724         (duplicate_decls): functions and function templates are not
8725         duplicates, but don't complain about calling this function to
8726         compare them.
8727         (push_overloaded_decl): Don't deal with linkage.  Call
8728         duplicate_decls.
8729         (redeclaration_error_message): Deal with linkage.
8730
8731         * decl.c (start_function): If push_overloaded_decl returns an
8732         older version of the function, deal with it.
8733
8734         * decl.c (start_function): Be sure only to push_overloaded_decl
8735         for non-members.
8736
8737         * decl.c (grokfndecl): Put back clearing of DECL_CHAIN for
8738         methods.
8739         (start_function): Lose broken and redundant code for checking old
8740         decl.
8741
8742         * init.c (add_friend): Give line numbers of both friend decls
8743         when warning about re-friending.
8744
8745         * pt.c (tsubst): Use comptypes rather than == to compare the
8746         types of the method as declared and as defined, since default
8747         parameters may be different.
8748
8749         * call.c (build_method_call): Use brendan's candidate printing
8750         routine.
8751
8752         * decl.c (start_method): Methods defined in the class body are
8753         inline whether or not it's a template class.
8754
8755 Mon Mar 28 16:39:26 1994  Jason Merrill  (jason@deneb.cygnus.com)
8756
8757         * parse.y (initdcl0): Add "extern" to current_declspecs if
8758         have_extern_spec && ! used_extern_spcec.
8759
8760         * tree.c (really_overloaded_fn): A fn with more than one
8761         overload.
8762
8763         * pt.c (end_template_decl): Use really_overloaded_fn.
8764
8765         * decl.c (duplicate_decls): When smashing a decl into a previous
8766         definition, keep the old file and line.
8767         Don't deal with overloaded functions.
8768         Lose old code for checking arg types of functions.
8769         Check for overloaded C functions.
8770         (pushdecl): Deal with overloaded functions.
8771         (start_decl): Expect pushdecl to return an appropriate function decl.
8772         (start_function): Ditto.
8773         (push_overloaded_decl): Don't check for overloaded C functions.
8774
8775         * *.c: Stop using DECL_OVERLOADED, it being archaic.
8776         TREE_OVERLOADED should probably go, too.
8777
8778 Mon Mar 28 14:00:45 1994  Ron Guilmette  (rfg@netcom.com)
8779
8780         * typeck.c (comp_target_types): Call comp_target_parms with
8781         strict == 1.
8782
8783 Sun Mar 27 00:07:45 1994  Jason Merrill  (jason@deneb.cygnus.com)
8784
8785         * parse.y (empty_parms): Don't parse () as (...) in extern "C"
8786         sections if we're compiling with -ansi or -pedantic.
8787
8788         * decl.c (decls_match): Don't treat (int) and (int&) as matching.
8789
8790         * decl2.c (grokfield): Don't pedwarn twice about initializing
8791         field.
8792
8793         * decl.c (push_overloaded_decl): Warn about shadowing
8794         constructor.
8795         (redeclaration_error_message): Don't allow 'int a; int a;'
8796
8797         * cvt.c (build_up_reference): Only check for valid upcast if
8798         LOOKUP_PROTECT is set, not just any flag.
8799
8800 Fri Mar 25 01:22:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
8801
8802         * lex.c (check_newline): When we see a #pragma implementation,
8803         also set it for the main input file.
8804
8805         * init.c (build_new): Convert array size argument to size_t.
8806
8807         * parse.y (primary): If we're doing a parenthesized type-id, call
8808         groktypename before passing it to build_new.
8809
8810         * call.c (build_method_call): Deal properly with const and
8811         volatile for instances of reference type.
8812
8813         * decl.c (store_return_init): Change 'if (pedantic) error' to 'if
8814         (pedantic) pedwarn'.
8815
8816         * decl.c (grokdeclarator): Don't complain about putting `static'
8817         and `inline' on template function decls.
8818
8819 Thu Mar 24 23:18:19 1994  Jason Merrill  (jason@deneb.cygnus.com)
8820
8821         * call.c (build_method_call): Preserve const & volatile on
8822         `this'.
8823
8824 Thu Mar 24 16:21:52 1994  Mike Stump  <mrs@cygnus.com>
8825
8826         * init.c (build_new, build_vec_delete): Use global new and delete
8827         for arrays. 
8828         * decl2.c (delete_sanity): Ditto.
8829
8830 Thu Mar 24 02:10:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
8831
8832         * cvt.c (convert_to_reference): If i is an lvalue,
8833         (int &)i -> *(int*)&i, as per 5.2.8p9 of the latest WP.
8834         (convert_force): Call convert_to_reference with LOOKUP_COMPLAIN.
8835
8836 Wed Mar 23 17:45:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
8837
8838         * decl.c (duplicate_decls): Also propagate DECL_TEMPLATE_MEMBERS
8839         and DECL_TEMPLATE_INSTANTIATIONS.
8840
8841         * init.c (build_new): Handle array typedefs properly.
8842
8843 Wed Mar 23 18:23:33 1994  Mike Stump  <mrs@cygnus.com>
8844
8845         30th Cygnus<->FSF merge.
8846
8847 Wed Mar 23 00:46:24 1994  Mike Stump  <mrs@cygnus.com>
8848
8849         * class.c (modify_vtable_entries): Avoid running off the end of the
8850         virtuals list when processing a virtual destructor.
8851         * class.c (get_vtable_entry): Ditto.
8852
8853 Wed Mar 23 00:23:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
8854
8855         * decl.c (duplicate_decls): If two template decls don't match,
8856         just return 0.
8857
8858 Tue Mar 22 23:49:41 1994  Jason Merrill  (jason@deneb.cygnus.com)
8859
8860         * typeck.c (convert_for_assignment): Don't pedwarn about
8861         converting function pointer to void *.
8862
8863 Tue Mar 22 22:23:19 1994  Mike Stump  <mrs@cygnus.com>
8864
8865         Major revamp of pointer to member functions.  Cures major
8866         nonfunctionality when used in casts, and MI situations.
8867
8868         * cvt.c (convert_force): Update call site of build_ptrmemfunc.
8869         * typeck.c (convert_for_assignment): Ditto.
8870         * typeck2.c (digest_init): Ditto.
8871         * typeck2.c (process_init_constructor): Simplify by moving code into
8872         digest_init.
8873         * typeck2.c (digest_init): Do default_conversions on init value, if
8874         we are processing pointer to member functions.
8875         * class.c (get_vfield_offset): Now non-static.  Convert bit offset
8876         into byte offset.
8877         * cp-tree.h (get_vfield_offset): Ditto.
8878         * typeck.c (get_member_function_from_ptrfunc): Convert down to right
8879         instance, before fetching vtable pointer.
8880         * typeck.c (get_delta_difference): New routine.
8881         * typeck.c (build_ptrmemfunc): Revamp to handle casting better, also
8882         get vtable pointer out of right subobject.
8883
8884 Tue Mar 22 17:56:48 1994  Mike Stump  <mrs@cygnus.com>
8885
8886         * search.c (get_binfo): Return NULL instead of aborting, when
8887         passed a UNION_TYPE.
8888
8889 Tue Mar 22 12:44:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
8890
8891         These patches implement handling of redefinition/redeclaration of
8892         templates.
8893
8894         * typeck.c (comptypes): Simplify.  All TEMPLATE_TYPE_PARMs are
8895         considered compatible.
8896
8897         * parse.y (template_def): Pass defn argument to end_template_decl.
8898
8899         * pt.c (end_template_decl): Add defn argument.  Check for
8900         redefinition.  Simplify.
8901
8902         * error.c (OB_UNPUT): New macro, to remove mistakes.
8903         (aggr_variety): Subroutine of dump_aggr_type.
8904
8905         * decl.c (decls_match): Support templates.
8906         (duplicate_decls): No longer static.  Don't try to lay out template
8907         decls.
8908         (pushdecl): Simplify.
8909
8910         * cp-tree.h (DECL_TEMPLATE_MEMBERS): Use DECL_SIZE instead of
8911         DECL_INITIAL.
8912
8913 Mon Mar 21 11:46:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
8914
8915         * error.c (dump_decl): Support class template decls.
8916         (dump_type): Don't adorn template type parms.
8917
8918         * decl.c (duplicate_decls): Save DECL_TEMPLATE_INFO from old decl
8919         if it was a definition.
8920         (redeclaration_error_message): Do the cp_error thang, and reject
8921         redefinition of templates.
8922
8923 Mon Mar 21 19:36:06 1994  Per Bothner  (bothner@kalessin.cygnus.com)
8924
8925         * decl.c (grokdeclarator):  Set TREE_PUBLIC for METHOD_TYPE
8926         in FIELD context, when appropriate.  Also,
8927         CLASSTYPE_INTERFACE_ONLY is irrelevant to setting TREE_PUBLIC.
8928         Also, simplify check for bogus return specifiers.
8929
8930 Mon Mar 21 11:46:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
8931
8932         * parse.y (after_type_declarator1): Expand type_quals.
8933         (notype_declarator1): Ditto.
8934         (absdcl1): Ditto.
8935
8936 Sat Mar 19 01:05:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
8937
8938         * decl.c (grokdeclarator): Treat class-local typedefs like static
8939         members; i.e. 'typedef int f();' means that f is a function type,
8940         not a method type.
8941
8942         * parse.y (decl): Change direct_* back to *.
8943         (type_id): Change direct_abstract_declarator to absdcl.
8944         (direct_declarator, direct_initdecls, direct_initdcl0): Remove again.
8945
8946 Fri Mar 18 12:47:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
8947
8948         These two patches fix crashes on instantiating a template inside a
8949         function with C linkage or containing labels.
8950
8951         * class.c (current_lang_stacksize): No longer static.
8952
8953         * decl.c (struct saved_scope): Add lang_base, lang_stack,
8954         lang_name, lang_stacksize, and named_labels.
8955         (push_to_top_level): Save them.
8956         (pop_from_top_level): Restore them.
8957
8958         * gxxint.texi (Parser): Update.
8959
8960         These two patches finish moving the task of expr/declarator
8961         ambiguity resolution from the lexer to the parser, and add one more
8962         r/r conflict.  START_DECLARATOR can now be nuked.
8963
8964         * parse.y (decl): Add "direct_" in typespec X rules.
8965         (direct_declarator): New nonterminal for
8966         direct_after_type_declarator and direct_notype_declarator.
8967         (direct_initdecls): Like initdecls, but uses direct_initdcl0.
8968         (direct_initdcl0): Like initdcl0, but uses direct_declarator.
8969         (named_parm): Add typespec direct_declarator rule.
8970
8971         * spew.c (yylex): #if 0 out START_DECLARATOR insertion.
8972
8973         These two patches disable some excessive cleverness on the part of
8974         g++; a non-class declaration always hides a class declaration in the
8975         same scope, and g++ was trying to unhide it depending on the
8976         enclosing expression.
8977
8978         * spew.c (arbitrate_lookup): #if 0 out.
8979
8980         * decl.c (lookup_name): Never call arbitrate_lookup.
8981
8982         * parse.y (complex_notype_declarator1): Add '*'
8983         complex_notype_declarator1 and '&' complex_notype_declarator1 rules.
8984
8985         * parse.y (complex_direct_notype_declarator): Restore id_scope
8986         see_typename TYPENAME rule, remove all other rules beginning with
8987         those tokens.
8988         (notype_unqualified_id): Add '~' see_typename IDENTIFIER rule.
8989
8990 Thu Mar 17 17:30:01 1994  Jason Merrill  (jason@deneb.cygnus.com)
8991
8992         These changes fix the compiler's handling of the functional cast/
8993         object declaration ambiguities in section 6.8 of the ARM.  They also
8994         add 11 reduce/reduce conflicts.  Sigh.
8995
8996         * parse.y: Add precedence decls for OPERATOR and '~'.
8997         (notype_unqualified_id): New nonterminal, encompasses all of the
8998         ANSI unqualified-id nonterminal except TYPENAMEs.
8999         (expr_or_declarator): New nonterminal to delay parsing of code like
9000         `int (*a)'.
9001         (primary): Use notype_unqualified_id.
9002         (decl): Add typespec initdecls ';' and typespec declarator ';'
9003         rules.
9004         (initdcl0): Deal with the above.
9005         (complex_notype_declarator1): A notype_declarator that is not also
9006         an expr_or_declarator.
9007         (complex_direct_notype_declarator): A direct_notype_declarator that
9008         doesn't conflict with expr_or_declarator.  Use
9009         notype_unqualified_id.  Remove id_scope see_typename TYPENAME rule.
9010         (functional_cast): New nonterminal, for the three functional cast
9011         rules.  So that they can be moved after
9012         complex_direct_notype_declarator.
9013         (see_typename): Don't accept type_quals any more.
9014
9015         * decl2.c (reparse_decl_as_expr): New function to deal with parse
9016         nodes for code like `int (*a)++;'.      
9017         (reparse_decl_as_expr1): Recursive subroutine of the above.
9018         (finish_decl_parsing): New function to deal with parse nodes for
9019         code like `int (*a);'.  See the difference?
9020
9021 Thu Mar 17 12:16:10 1994  Mike Stump  <mrs@cygnus.com>
9022
9023         These changes break binary compatibility in code with classes
9024         that use virtual bases.
9025
9026         * search.c (dfs_get_vbase_types): Simplify and correct to make
9027         sure virtual bases are initialized in dfs ordering.
9028         * search.c (get_vbase_types): Simplify and make readable.
9029
9030 Thu Mar 17 12:01:10 1994  Jason Merrill  (jason@deneb.cygnus.com)
9031
9032         * parse.y: s/ typename / type_id /g
9033
9034 Wed Mar 16 17:42:52 1994  Kung Hsu  (kung@mexican.cygnus.com)
9035
9036         * parse.y (typespec): add SCOPE TYPENAME for global scoped 
9037         type. e.g. ::B x.
9038
9039         * decl.c (complete_array_type): fix a bug that in -pendantic
9040         mode even there's no initializer, it will continue to build
9041         default index.
9042
9043 Wed Mar 16 17:43:07 1994  Jason Merrill  (jason@deneb.cygnus.com)
9044
9045         * parse.y (direct_notype_declarator): Add PTYPENAME rule, remove
9046         all of the scoped PTYPENAME rules.
9047
9048 Wed Mar 16 16:39:02 1994  Mike Stump  <mrs@cygnus.com>
9049
9050         * init.c (build_offset_ref): The value of A::typedef_name is
9051         always the TYPE_DECL, and never an error.
9052
9053 Tue Mar 15 20:02:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
9054
9055         * search.c (get_base_distance_recursive): Two binfos can only
9056         represent the same object if they are both via_virtual.
9057
9058         * class.c (finish_base_struct): Check vbases for ambiguity, too.
9059
9060         * search.c (get_vbase_types): Accept binfo argument, too.
9061
9062 Tue Mar 15 19:22:05 1994  Kung Hsu  (kung@mexican.cygnus.com)
9063
9064         * decl.c (complete_array_type): complete TYPE_DOMAIN of the 
9065         initializer also, because back-end requires it.
9066
9067 Tue Mar 15 15:33:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
9068
9069         * error.c (dump_expr): Support member functions (which show up as
9070         OFFSET_REFs).
9071
9072 Mon Mar 14 16:24:36 1994  Mike Stump  <mrs@cygnus.com>
9073
9074         * init.c (build_new): Set the return type of multidimensional
9075         news correctly.
9076
9077 Fri Mar 11 15:35:39 1994  Kung Hsu  (kung@mexican.cygnus.com)
9078
9079         * call.c (build_method_call): if basetype not equal to type
9080         of the instance, use the type of the instance in building
9081         destructor.
9082
9083 Thu Mar 10 17:07:10 1994  Kung Hsu  (kung@mexican.cygnus.com)
9084
9085         * parse.y (direct_notype_declarator): add push_nested_type for
9086         'template_type SCOPED_NAME' rule.
9087
9088 Tue Mar  8 00:19:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
9089
9090         * parse.y (parm): Add typed_declspec1 {absdcl, epsilon} rules.
9091
9092 Sat Mar  5 04:47:48 1994  Jason Merrill  (jason@deneb.cygnus.com)
9093
9094         * parse.y (regcast_or_absdcl): New nonterminal to implement late
9095         reduction of constructs like `int ((int)(int)(int))'.
9096         (cast_expr): Use it.
9097         (sub_cast_expr): Everything that can come after a cast.
9098         (typed_declspecs1): typed_declspecs that are not typed_typespecs.
9099         (direct_after_type_declarator): Lose PAREN_STAR_PAREN rule.
9100         (direct_abstract_declarator): Replace '(' parmlist ')' rule with
9101         '(' complex_parmlist ')' and regcast_or_absdcl.
9102         (parmlist): Split
9103         (complex_parmlist): Parmlists that are not also typenames.
9104         (parms_comma): Enabler.
9105         (named_parm): A parm that is not also a typename.  Use declarator
9106         rather than dont_see_typename abs_or_notype_decl.  Expand
9107         typed_declspecs inline.
9108         (abs_or_notype_decl): Lose.
9109         (dont_see_typename): Comment out.
9110         (bad_parm): Break out abs_or_notype_decl into two rules.
9111
9112 Fri Mar  4 18:22:39 1994  Jason Merrill  (jason@deneb.cygnus.com)
9113
9114         * decl2.c (reparse_decl_as_casts): New function to change parse
9115         nodes for `(int)(int)(int)' from "function taking int and returning
9116         function taking int and returning function taking int" to "... cast
9117         to int, cast to int, cast to int".
9118
9119         * decl2.c (reparse_decl_as_expr): Recursive function to change
9120         parse nodes for `A()()' from "function returning function returning
9121         A" to "A().operator()".
9122
9123         * parse.y (primary): Replace `typespec LEFT_RIGHT' rule with
9124         `typespec fcast_or_absdcl' rule.
9125         (fcast_or_absdcl): New nonterminal to implement late reduction of
9126         constructs like `A()()()()'.
9127         (typename): Replace `typespec absdcl1' rule with
9128         `typespec direct_abstract_declarator' rule.
9129         (direct_abstract_declarator): Replace `LEFT_RIGHT type_quals' rule
9130         with `fcast_or_absdcl type_quals' rule.
9131
9132 Fri Mar  4 16:18:03 1994  Mike Stump  <mrs@cygnus.com>
9133
9134         * tree.c (lvalue_p): Improve OFFSET_REF handling, so that it
9135         matches Section 5.5.
9136
9137 Fri Mar  4 14:01:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
9138
9139         * error.c (dump_type_prefix): Don't print basetype twice for
9140         pmfs.
9141
9142 Fri Mar  4 13:24:33 1994  Mike Stump  <mrs@cygnus.com>
9143
9144         * typeck.c (convert_arguments): Handle setHandler(A::handlerFn)
9145         so that it is like setHandler(&A::handlerFn).  Cures an `invalid
9146         lvalue in unary `&''.
9147
9148 Fri Mar  4 11:15:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
9149
9150         * gxxint.texi (Copying Objects): New section discussing default
9151         op= problems with virtual inheritance.
9152
9153         * decl2.c (grokoptypename): Just does grokdeclarator and
9154         build_typename_overload, since the parser can't call grokdeclarator
9155         directly.
9156
9157         * method.c (build_typename_overload): Set IDENTIFIER_GLOBAL_VALUE
9158         and TREE_TYPE on generated identifiers.
9159
9160         * decl.c (grokdeclarator): Don't deal with TYPE_EXPRs anymore.
9161
9162         * parse.y (parm): Convert `const char *' to `__opPCc' here.
9163
9164         * error.c (dump_decl): Say sorry rather than my_friendly_aborting
9165         if we can't figure out what to do.
9166         (dump_type*): Ditto.
9167
9168         * typeck2.c (build_m_component_ref): 'component' is an expr, not
9169         a decl.  Also move the IS_AGGR_TYPE check after the stripping of
9170         REFERENCE_TYPE.
9171
9172 Fri Mar  4 04:46:05 1994  Mike Stump  <mrs@cygnus.com>
9173
9174         * call.c (build_method_call): Handle b->setHandler(A::handlerFn)
9175         so that it is like b->setHandler(&A::handlerFn).  Cures an `invalid
9176         lvalue in unary `&''.
9177
9178 Thu Mar  3 12:38:15 1994  Jason Merrill  (jason@deneb.cygnus.com)
9179
9180         * parse.y: Add precedence specification for START_DECLARATOR.
9181         (type_quals): Move before primary.
9182         (typename): Move before typed_declspecs, add 'typespec absdcl1' rule.
9183
9184         * decl2.c (grokoptypename): Lose.
9185
9186         * decl.c (grokdeclarator): Parse TYPE_EXPRs in the initial scan,
9187         rather than waiting until later.
9188
9189 Wed Mar  2 14:12:23 1994  Jason Merrill  (jason@deneb.cygnus.com)
9190
9191         * parse.y (unary_expr): Use 'typename' in 'new' rules, rather
9192         than expanding it inline.
9193         (typename): Expand empty option of (former) absdcl inline.
9194         (abs_or_notype_decl): Ditto.
9195         (absdcl): Lose empty rule.
9196         (conversion_declarator): New nonterminal for 'typename' of 'operator
9197         typename'.
9198         (operator_name): Use it instead of absdcl.
9199
9200         * parse.y: Add precedence declarations for SCOPED_TYPENAME,
9201         TYPEOF, and SIGOF.
9202         (typed_declspecs): Accept typed_typespecs, rather than typespec
9203         directly.  Add rules with reserved_typespecquals.
9204         (reserved_declspecs): Don't accept typespecqual_reserved at the
9205         beginning of the list.  The typed_declspecs rule will deal with this
9206         omission.
9207         (declmods): Accept nonempty_type_quals, rather than TYPE_QUAL
9208         directly.
9209
9210         * parse.y (direct_notype_declarator,
9211         direct_after_type_declarator, direct_abstract_declarator): Split up
9212         the declarator1 nonterminals to match the draft standard and avoid
9213         ambiguities.
9214         (new_type_id, new_declarator, direct_new_declarator,
9215         new_member_declarator): New nonterminals to implement the subset of
9216         'typename' allowed in new expressions.
9217         (unary_expr): Use new_type_id instead of typename.
9218         (after_type_declarator1, absdcl1): Fix semantics of member pointers.
9219         (abs_member_declarator, after_type_member_declarator): Lose.
9220
9221         * parse.y (absdcl1): Don't require parens around
9222         abs_member_declarator.
9223         (abs_member_declarator): Lose see_typename from rules.
9224         (after_type_member_declarator): Ditto.
9225
9226         * tree.c (get_identifier_list): New function, containing code
9227         previously duplicated in get_decl_list and list_hash_lookup_or_cons.
9228         (get_decl_list): Use it.
9229         (list_hash_lookup_or_cons): Ditto.
9230
9231         * parse.y (typed_declspecs, declmods): It's not necessary to hash
9232         the declspecs on class_obstack, so don't.  This way typed_typespecs
9233         can reduce to typed_declspecs.
9234
9235 Wed Mar  2 14:29:18 1994  Jason Merrill (jason@cygnus.com)
9236
9237         * cvt.c (build_up_reference): If we aren't checking visibility,
9238         also allow base->derived conversions.
9239
9240 Mon Feb 28 15:14:29 1994  Per Bothner  (bothner@kalessin.cygnus.com)
9241
9242         * typeck.c (build_c_cast): Remove bogus hack when converting
9243         to a reference type.
9244
9245         * cp-tree.h (lang_decl::vbase_init_list, DECL_VBASE_INIT_LIST):
9246         Removed, not used.
9247         (lang_stype::methods, lang_decl::next_method): New fields.
9248         (CLASSTYPE_METHODS, DECL_NEXT_METHOD):  New macros.
9249         * decl.c (duplicate_decls):  Preserve DECL_NEXT_METHOD.
9250
9251         * cp-tree.h, decl2.c (flag_vtable_hack):  New flag.
9252         * decl2.c (finish_vtable_vardecl):  If flag_vtable_hack,
9253         and  !CLASSTYPE_INTERFACE_KNOWN, try to use the presence of
9254         a non-inline virtual function to control emitting of vtables.
9255         * class.c (finish_struct):  Build CLASSTYPE_METHODS list.
9256         * search.c (build_vbase_vtables_init):  Don't assemble_external
9257         (yet) if flag_vtable_hack.
9258         * class.c (build_vfn_ref):  Ditto.
9259
9260 Mon Feb 28 14:54:13 1994  Jason Merrill  (jason@deneb.cygnus.com)
9261
9262         * parse.y (component_decl): Don't include "typed_declspecs
9263         declarator ';'" speedup, since it breaks enums.
9264
9265 Fri Feb 25 15:43:44 1994  Per Bothner  (bothner@kalessin.cygnus.com)
9266
9267         * class.c (finish_struct):  Minor optimization for building
9268         fn_fields list.
9269
9270 Fri Feb 25 15:23:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
9271
9272         * decl.c (start_function): Fix detection of function overloading.
9273
9274 Thu Feb 24 22:26:19 1994  Mike Stump  <mrs@cygnus.com>
9275
9276         * lex.c (check_newline): #pragma interface can take a string
9277         argument, just like #pragma implementation.  #pragma implementation
9278         checks for garbage on the line, line #pragma interface does.  Main
9279         input files do not auto implement like named files, #pragma
9280         implementation must be used explicitly.
9281
9282 Thu Feb 24 17:09:01 1994  Jason Merrill  (jason@deneb.cygnus.com)
9283
9284         * parse.y (components): Handle list of one again.
9285         (notype_components): Ditto.
9286         (after_type_declarator1): Take maybe_raises out again.
9287
9288         * gxxint.texi (Parser): Document additional r/r conflict.
9289
9290 Wed Feb 23 14:42:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
9291
9292         * gxxint.texi (Parser): Add node.
9293
9294         * Makefile.in (stamp-parse): Update expected conflict count.
9295
9296         * parse.y (various): Replace "declmods declarator" with "declmods
9297         notype_declarator".  The comment saying that "declmods declarator ';'"
9298         corresponds to "int i;" was wrong; it corresponds to "const i;".
9299         (component_decl): Add "typed_declspecs declarator ';'" rule; this
9300         *does* correspond to "int i;".  Change "declmods components" to
9301         "declmods notype_components".
9302         (components): Don't deal with a list of one anymore.
9303         (notype_components): New nonterminal, corresponds to notype_declarator.
9304         ({after_,no}type_component_decl{,0}): More new nonterminals.
9305         ({after_,no}type_declarator): Fold in START_DECLARATOR token.
9306         Eliminates four reduce/reduce conflicts.
9307
9308         (expr): Depend on nontrivial_exprlist instead of nonnull_exprlist.
9309         (nontrivial_exprlist): New nonterminal: A list of at least two
9310         expr_no_commas's.
9311         (nonnull_exprlist): Depend on nontrival_exprlist.
9312         Eliminates four reduce/reduce conflicts.
9313
9314         (named_class_head): Move intermediate code block into separate
9315         nonterminal so that we can stick %prec EMPTY on it.
9316
9317         Add more %prec EMPTY's to eliminate remaining shift/reduce
9318         conflicts.
9319
9320         (after_type_declarator): Add maybe_raises to fndecl rules.
9321         (after_type_declarator_no_typename): Remove.
9322         For correctness.
9323
9324         Document remaining reduce/reduce conflicts.
9325
9326 Tue Feb 22 12:10:32 1994  Jason Merrill  (jason@deneb.cygnus.com)
9327
9328         * search.c (get_base_distance): Only bash BINFO_INHERITANCE_CHAIN
9329         (TYPE_BINFO (type)) if we care about the path.
9330
9331         * tree.c (lvalue_p): A COND_EXPR is an lvalue if both of the
9332         options are.
9333
9334 Mon Feb 21 19:59:40 1994  Mike Stump  <mrs@cygnus.com>
9335
9336         * Makefile.in (mostlyclean): lex.c is a source file, don't
9337         remove.
9338
9339 Sat Feb 19 01:27:14 1994  Jason Merrill  (jason@deneb.cygnus.com)
9340
9341         * parse.y: Eliminate 20 shift/reduce conflicts.
9342
9343 Fri Feb 18 11:49:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
9344
9345         * pt.c (type_unification): Add subr argument; if set, it means
9346         that we are calling ourselves recursively, so a partial match is OK.
9347         (unify): Support pointers to methods and functions.
9348         (tsubst): Support method pointers.
9349         * decl.c (build_ptrmemfunc_type): No longer static, so that
9350         tsubst can get at it.
9351
9352         * init.c (is_aggr_typedef): Pretend template type parms are
9353         aggregates.
9354         * decl2.c (build_push_scope): If cname refers to a template type
9355         parm, just grin and nod.        
9356
9357         * call.c (build_overload_call_real): Pass subr argument to
9358         type_unification.
9359         * pt.c (do_function_instantiation): Ditto.
9360         * class.c (instantiate_type): Ditto.
9361
9362         * search.c (get_base_distance): If BINFO is a binfo, use it and
9363         don't mess with its BINFO_INHERITANCE_CHAIN.
9364
9365         * cvt.c (convert_to_reference): Fix temporary generation.
9366         If ambiguous, return error_mark_node.
9367
9368         * init.c (build_new): Put back some necessary code.
9369
9370 Thu Feb 17 15:39:47 1994  Jason Merrill  (jason@deneb.cygnus.com)
9371
9372         * init.c (build_new): Deal with array types properly.
9373
9374         * search.c (get_binfo): Become a shell for get_base_distance.
9375         (get_binfo_recursive): Lose.
9376         (get_base_distance_recursive): Find the path to the via_virtual base
9377         that provides the most access.
9378         (get_base_distance): Ditto.
9379
9380         * parse.y (explicit_instantiation): Syntax is 'template class
9381         A<int>', not 'template A<int>'.
9382
9383         * typeck.c (convert_for_initialization): Remove bogus warning.
9384
9385         * parse.y (datadef): Revert patch of Oct 27.
9386
9387 Thu Feb 17 15:12:29 1994  Per Bothner  (bothner@kalessin.cygnus.com)
9388
9389         * class.c (build_vfn_ref):  Cast delta field to ptrdiff_type_node,
9390         rather than integer_type_node.  Does wonders for the Alpha.
9391
9392 Thu Feb 17 13:36:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
9393
9394         * decl.c (build_ptrmemfunc_type): Make sure that the pmf type
9395         goes onto the same obstack as its target type.
9396
9397 Wed Feb 16 00:34:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
9398
9399         * cvt.c (convert_to_reference): If converting via constructor
9400         on local level, go back to build_cplus_new approach.
9401
9402         * tree.c (build_cplus_new): If with_cleanup_p, set cleanup slot
9403         to error_mark_node to prevent expand_expr from building a cleanup
9404         for this variable.
9405
9406         * lex.c (default_assign_ref_body): Return *this from the memcpy
9407         version, too.
9408
9409         * decl.c (grok_reference_init): Just return if called with
9410         error_mark_node, don't worry about initializing non-const reference
9411         with temporary.
9412
9413         * cvt.c (convert_to_reference): Do the right thing for
9414         non-aggregate reference conversions, pedwarn when generating a
9415         non-const reference to a temporary.
9416
9417         * class.c (finish_struct): TYPE_HAS_COMPLEX_{INIT,ASSIGN}_REF and
9418         TYPE_NEEDS_CONSTRUCTING all depend on TYPE_USES_VIRTUAL_BASECLASSES
9419         again.
9420
9421 Tue Feb 15 19:47:19 1994  Jason Merrill  (jason@deneb.cygnus.com)
9422
9423         * decl.c (grok_reference_init): Pawn off a lot of the work on
9424         convert_to_reference.  Generally do the right thing.
9425
9426         * cvt.c (convert_to_reference): Conform to the initial comment;
9427         i.e. don't create temps if decl != error_mark_node.  Handle
9428         cleanups better for temps that do get created.  Don't pretend
9429         that we can use an 'A' to initialize a 'const double &' just by
9430         tacking on a NOP_EXPR.  Support LOOKUP_SPECULATIVELY.
9431
9432         * call.c (build_method_call): Set TREE_HAS_CONSTRUCTOR on
9433         constructor calls.      
9434
9435 Mon Feb 14 14:50:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
9436
9437         * decl.c (grok_reference_init): Make a temporary for initializing
9438         const reference from constant expression.
9439
9440 Mon Feb 14 11:31:31 1994  Per Bothner  (bothner@kalessin.cygnus.com)
9441
9442         * cp-tree.h, decl.c (set_identifier_local_value):  Deleted function.
9443         * decl.c (pushdecl):  Define decl in correct binding_level
9444         (which isn't always the inner_binding_level).
9445
9446         * cvt.c (build_up_reference):  Don't ever call expand_aggr_init.
9447         It's ugly, and I don't think it's the right thing to do.
9448
9449         * cp-tree.h, class.c, decl.c, decl2.c, sp/search.c: 
9450         Remove NEW_CLASS_SCOPING, assuming it is always 1.
9451         * decl.c (pop_decl_level):  Removed; manually inlined.
9452
9453 Sun Feb 13 19:04:56 1994  Jason Merrill  (jason@deneb.cygnus.com)
9454
9455         * class.h (candidate): Add basetypes field.
9456
9457         * call.c (build_method_call): Do access checking after choosing a
9458         function, not before.
9459
9460         * Makefile.in (cvt.o, call.o, method.o): Depend on class.h.
9461         (mostlyclean): Remove ../cc1plus.
9462
9463 Fri Feb 11 11:52:26 1994  Jason Merrill  (jason@deneb.cygnus.com)
9464
9465         * class.c (finish_struct): Don't allow adjusting access to a field
9466         of a base class if a local field has the same name.
9467
9468         * error.c (dump_type_prefix): Output basetype for METHOD_TYPEs.
9469
9470 hu Jan 13 17:55:51 EST 1994 Gnanasekaran Swaminathan (gs4t@virginia.edu)
9471
9472             * cp-tree.h (DESTRUCTOR_NAME_P): do not confuse AUTO_TEMP names
9473             with destructor names when either NO_DOLLAR_IN_LABEL or
9474             NO_DOT_IN_LABEL are not defined.
9475
9476             Now `template <class T, T f(T&), const T*> class A {...}' works.
9477
9478             * pt.c (grok_template_type): substitute template parm types
9479             with actual types in complex type as well.
9480             (coerce_template_parms): update the grok_template_type ()
9481             function call.
9482
9483         * pt.c (tsubst): Traverse method list using DECL_CHAIN.
9484
9485         * decl.c (grok_op_properties): Allow operator++/-- to have
9486         default arguments.
9487
9488         * typeck2.c (store_init_value): Don't abort when called to
9489         initialize a type that needs constructing with a CONSTRUCTOR.
9490
9491         * init.c (expand_aggr_init_1, CONSTRUCTOR case): If
9492         store_init_value fails, build and expand an INIT_EXPR.  If
9493         store_init_value succeeds, call expand_decl_init.
9494
9495 Fri Feb 11 02:49:23 1994  Mike Stump  <mrs@cygnus.com>
9496
9497         * class.c (build_vbase_path): Use complete_type_p instead of
9498         resolves_to_fixed_type_p to determine if the virtual bases are in
9499         their right place for the type of expr.  Cures problem of thinking a
9500         virtual base class is one place, when it is in fact someplace else.
9501
9502 Fri Feb 11 00:26:46 1994  Mike Stump  <mrs@cygnus.com>
9503
9504         * init.c (resolve_offset_ref): Make sure we first convert to
9505         intermediate type, if given, when dealing with members off `this'.
9506         Solves an incorrrect `type `foo' is not a base type for type
9507         `multiple'' when it is infact, a base type.
9508
9509 Thu Feb 10 21:49:35 1994  Mike Stump  <mrs@cygnus.com>
9510
9511         * class.c (modify_other_vtable_entries): Use get_binfo, instead
9512         of binfo_value.  Solves problem with compiler giving a `base class
9513         `B' ambiguous in binfo_value (compiler error)' on complex MI
9514         herarchies, when a virtual function is first defied in a virtual
9515         base class.
9516
9517 Thu Feb 10 17:19:32 1994  Mike Stump  <mrs@cygnus.com>
9518
9519         * class.c (build_vbase_path): Don't complain about ambiguous
9520         intermediate conversion when converting down to a virtual base
9521         class, even if they might seem to be ambiguous.
9522
9523 Thu Feb 10 12:18:26 1994  Jason Merrill  (jason@deneb.cygnus.com)
9524
9525         * typeck2.c (build_functional_cast): #if 0 out constructor
9526         inheritance code, improve error messages.
9527
9528         * class.c (finish_base_struct): Complain about base with only
9529         non-default constructors in derived class with no constructors.
9530
9531         * decl.c (grokdeclarator): Fix detection of virtual new/delete.
9532
9533 Wed Feb  9 22:02:32 1994  Mike Stump  <mrs@cygnus.com>
9534
9535         * search.c (build_mi_virtuals, add_mi_virtuals,
9536         report_ambiguous_mi_virtuals): Removed unneeded code.
9537         * class.c (finish_struct_bits): Ditto.
9538
9539 Wed Feb  9 11:27:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
9540
9541         * pt.c (end_template_instantiation): Push decl before
9542         pop_from_top_level.
9543
9544         * typeck2.c (build_m_component_ref): Make sure datum is of
9545         aggregate type.
9546
9547         * init.c (get_type_value): New function, returns
9548         IDENTIFIER_TYPE_VALUE or IDENTIFIER_CLASS_TYPE_VALUE or NULL_TREE.
9549
9550         * call.c (build_method_call): Don't die on call to destructor for
9551         non-type.
9552
9553         * decl.c (grokdeclarator): Complain about virtual op new and op
9554         delete, make static virtuals unvirtual instead of unstatic.
9555
9556         * typeck.c (build_c_cast): Also call default_conversion on
9557         methods.
9558
9559         * decl.c (grokdeclarator): Don't complain about anonymous
9560         bitfields.
9561
9562         * parse.y (simple_stmt, for loops): Move the continue point after
9563         the cleanups.
9564
9565         * class.c (finish_struct): Fix setting of
9566         TYPE_HAS_COMPLEX_INIT_REF.
9567
9568 Tue Feb  8 13:21:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
9569
9570         * init.c (build_new): Deal with `new double (1)'.
9571
9572         * class.c (finish_struct): TYPE_HAS_COMPLEX_*_REF are supersets of
9573         TYPE_HAS_REAL_*_REF, but TYPE_HAS_COMPLEX_INIT_REF is independent of
9574         TYPE_NEEDS_CONSTRUCTING.
9575
9576         * decl.c (duplicate_decls): Propagate access decls.
9577
9578         * typeck2.c (process_init_constructor): Accept empty_init_node
9579         for initializing unions.
9580
9581         * class.c, lex.c, cp-tree.h: Use
9582         TYPE_HAS_COMPLEX_ASSIGN_REF where TYPE_HAS_REAL_ASSIGN_REF was used
9583         before, use TYPE_HAS_COMPLEX_INIT_REF for TYPE_NEEDS_CONSTRUCTING in
9584         some places.
9585
9586         * decl.c (finish_decl): Don't complain about uninitialized const
9587         if it was initialized before.
9588
9589 Mon Feb  7 18:12:34 1994  Jason Merrill  (jason@deneb.cygnus.com)
9590
9591         * lex.c (default_assign_ref_body): Don't deal with vbases for
9592         now.
9593
9594         * decl.c (finish_decl): Fix reversed logic for objects and other
9595         things that need to be constructed but have no initializer.
9596
9597         * class.c (finish_struct): Don't set TYPE_HAS_* flags that are
9598         set by grok_op_properties or finish_decl.
9599
9600         * decl.c: Don't warn about extern redeclared inline unless
9601         -Wextern-inline is given.
9602         * decl2.c (lang_decode_option): Ditto.
9603         * cp-tree.h: Ditto.
9604
9605 Mon Feb  7 17:29:24 1994  Per Bothner  (bothner@kalessin.cygnus.com)
9606
9607         * decl.c (pushdecl_with_scope): Fix thinko.  Add forward
9608         declaration.
9609
9610         * decl.c (pushdecl_with_scope):  New function.
9611         * decl.c (pushdecl_top_level):  Use new function.
9612         * decl.c (pushtag):  Initialize newdecl.
9613         * decl.c (pushtag):  Push new type decl into correct scope.
9614
9615 Mon Feb  7 14:42:03 1994  Jason Merrill  (jason@deneb.cygnus.com)
9616
9617         * call.c, cvt.c, init.c, search.c, cp-tree.h:
9618         Eradicate LOOKUP_PROTECTED_OK.
9619
9620 Mon Feb  7 13:57:19 1994  Per Bothner  (bothner@kalessin.cygnus.com)
9621
9622         * decl.c (pushtag, xref_tag), cp-tree.h:  Add extra parameter
9623          'globalize' to signify implicit declarations.
9624         * decl.c (globalize_nested_type, maybe_globalize_type):  Removed.
9625         * decl.c (set_identifier_type_value_with_scope):  New function.
9626         * decl.c (set_identifier_local_value):  Simplify.
9627         * spew.c (yylex, do_addr):  Modify to return a _DEFN if a
9628         forward declaration (followed by ';' and not preceded by 'friend').
9629         * class.c, decl.c, except.c, init.c, parse.y,
9630         pt.c, search.c: Add new argument to calls to xref_tag and
9631         pushtag.
9632
9633 Mon Feb  7 00:22:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
9634
9635         * cp-tree.h (ACCESSIBLY_UNIQUELY_DERIVED_P): New macro, means what
9636         ACCESSIBLY_DERIVED_FROM_P meant before.
9637         (ACCESSIBLY_DERIVED_FROM_P): Now disregards ambiguity.
9638
9639         * cvt.c (build_up_reference): Call get_binfo with PROTECT == 1.
9640
9641         * search.c (get_base_distance_recursive): Members and friends of
9642         a class X can implicitly convert an X* to a pointer to a private or
9643         protected immediate base class of X.
9644         (get_binfo_recursive): Ditto.
9645         (get_base_distance): Ignore ambiguity if PROTECT < 0.
9646         (get_binfo): Lose multiple values of PROTECT.
9647         (compute_access): Protected is OK if the start of the
9648         search is an accessible base class of current_class_type.
9649
9650         * method.c (build_opfncall): Do check access on operator new here.
9651
9652         * decl.c (finish_function): Don't check access on operator new
9653         here.
9654
9655 Sun Feb  6 14:06:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
9656
9657         * decl.c (xref_tag): The base of a derived struct is NOT always
9658         public.  Duh.
9659
9660         * pt.c (do_explicit_instantiation): New function, called from
9661         parser to do explicit function instantiation.
9662         (type_unification): Allow the args list to be terminated with
9663         void_list_node.
9664         (do_pending_expansions): Look at i->interface for non-member
9665         templates.
9666
9667         * parse.y (datadef): Move explicit_instantiation here.
9668         (structsp): From here.
9669         (datadef): Complain about `int;'.
9670
9671 Sun Feb  6 12:33:18 1994  Per Bothner  (bothner@kalessin.cygnus.com)
9672
9673         * pt.c (end_template_instantiation), cp-tree.h:  Remove unused
9674         second parameter, and simplify first from a TREE_LIST where
9675         we only care about its TREE_VALUE to just the value (an IDENTIFIER).
9676         * pt.c (instantiate_member_templates):  Simplify argument list
9677         from a TREE_LIST to just an IDENTIFIER.
9678         * lex.c (yyprint):  PRE_PARSED_CLASS_DECL is now just an IDENTIFIER.
9679         * parse.y (template_instantiate_once):  Simplify accordingly.
9680         * decl.c (inner_binding_level): New.  Use various places to
9681         simplify.
9682
9683 Sun Feb  6 02:49:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
9684
9685         * typeck2.c (build_functional_cast): int() -> int(0).
9686
9687 Sat Feb  5 00:53:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
9688
9689         * class.c (finish_struct): Don't do a bitwise copy for op= if the
9690         class has a virtual function table.
9691
9692         * typeck.c (convert_for_initialization): Restore warnings about
9693         not using defined op=.  Should really be my_friendly_aborts, I
9694         s'pose.
9695
9696 Fri Feb  4 14:21:00 1994  Jason Merrill  (jason@deneb.cygnus.com)
9697
9698         * class.c (finish_struct): Tidy up conditions for doing bitwise
9699         copies of objects.
9700
9701         * decl.c (build_default_constructor): #if 0 out.
9702
9703         * *: Eradicate TYPE_GETS_{ASSIGNMENT,ASSIGN_REF,CONST_ASSIGN_REF,
9704         CONST_INIT_REF}, TYPE_HAS_REAL_CONSTRUCTOR.
9705
9706         * decl.c (grokdeclarator): Don't return void_type_node for
9707         friends being defined here.
9708
9709         * init.c (perform_member_init): Only do the init if it's useful.
9710
9711         * lex.c (default_copy_constructor_body): If we don't need to do
9712         memberwise init, just call __builtin_memcpy.
9713         (default_assign_ref_body): Ditto.
9714
9715         * decl.c (grokdeclarator): If friendp && virtualp, friendp = 0.
9716
9717 Fri Feb  4 13:02:56 1994  Mike Stump  <mrs@cygnus.com>
9718
9719         * lex.c (reinit_parse_for_method, cons_up_default_function):
9720         Don't give warn_if_unknown_interface warning when it came from a
9721         system header file.
9722         * pt.c (end_template_decl, instantiate_template): Ditto.
9723         * decl.c (start_decl): Ditto.
9724
9725 Fri Feb  4 00:41:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
9726
9727         * decl.c (grokdeclarator): Don't try to set TYPE_WAS_ANONYMOUS on
9728         enums.
9729
9730         * decl2.c (constructor_name_full): Use IS_AGGR_TYPE_CODE instead of
9731         IS_AGGR_TYPE, since we don't know it's a type.
9732
9733 Thu Feb  3 11:36:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
9734
9735         * decl.c (grokdeclarator): Don't complain about anonymous unions.
9736
9737         * cp-tree.h (TYPE_WAS_ANONYMOUS): This struct was originally
9738         anonymous, but had a name given to it by a typedef.
9739
9740         * decl.c (grokdeclarator): When renaming an anonymous struct, set
9741         TYPE_WAS_ANONYMOUS.
9742
9743         * decl2.c (constructor_name_full): Use TYPE_WAS_ANONYMOUS.
9744
9745         * cp-tree.h (DECL_UNDEFINED_FRIENDS): #if 0 out.
9746
9747         * init.c (xref_friend): Don't set up DECL_UNDEFINED_FRIENDS.
9748         (embrace_waiting_friends): Don't use DECL_UNDEFINED_FRIENDS.
9749         
9750         * decl.c (grokdeclarator): Set TYPE_NESTED_NAME properly on nested
9751         anonymous structs that get typedef'd.
9752
9753         * decl.c (grokdeclarator): Always return void_type_node for
9754         friends.
9755
9756         * error.c (dump_function_decl): Don't use DECL_CLASS_CONTEXT for
9757         friends.
9758         (dump_function_decl): Don't print out default args for
9759         a function used in an expression.
9760
9761         * decl.c (grokdeclarator): Give error on abstract declarator used
9762         in an invalid context (i.e. `void (*)();').
9763
9764         * error.c (cp_line_of): Support _TYPE nodes.
9765         (cp_file_of): Ditto.
9766
9767         * cvt.c (build_up_reference): Don't abort if passed a SAVE_EXPR;
9768         it can happen for the RHS of an assignment stmt where the LHS is
9769         a COND_EXPR.
9770
9771         * init.c (expand_aggr_init_1): Deal with bracketed initializer
9772         lists properly.
9773
9774         * class.c (finish_struct): Deal with enumerators and typedefs
9775         again.
9776
9777 Wed Feb  2 11:30:22 1994  Jason Merrill  (jason@deneb.cygnus.com)
9778
9779         * class.c (finish_struct): Tidy up loop over fields.
9780
9781         * errfn.c (cp_thing): Don't advance twice after a format.
9782
9783         * class.c (finish_struct): Complain about needing a constructor
9784         if a member has only non-default constructors, and don't try to
9785         generate a default constructor.
9786
9787         * decl.c (finish_decl): Also do the constructor thing if
9788         TYPE_NEEDS_CONSTRUCTING is set (for arrays).
9789
9790         * search.c (unuse_fields): New function: mark all fields in this
9791         type unused.
9792         (dfs_unuse_fields): Helper function.
9793
9794         * class.c (pushclass): If the new class is the same as the old
9795         class, still unuse the fields.
9796         (unuse_fields): Move to search.c.
9797
9798         * decl.c (grok_op_properties): Add friendp argument.
9799         (grokfndecl): Pass it.
9800         (start_method): Ditto.
9801
9802         * decl2.c (delete_sanity): Add use_global_delete parameter to catch
9803         ::delete calls.
9804
9805         * parse.y (unary_expr): Pass new parameter to delete_sanity.
9806
9807         * lex.c (default_copy_constructor_body): Don't choke if the union
9808         has no fields.
9809         (default_assign_ref_body): Ditto.
9810
9811         * call.c (compute_conversion_costs_ansi): Do the right thing for
9812         ellipsis matches.
9813
9814         * decl.c (push_to_top_level): Optimize.
9815
9816         * decl.c (start_function): Look for the lexical scope of a friend
9817         in DECL_CLASS_CONTEXT.
9818
9819         * init.c (do_friend): Set DECL_CLASS_CONTEXT on global friends.
9820
9821 Tue Feb  1 15:59:24 1994  Jason Merrill  (jason@deneb.cygnus.com)
9822
9823         * cp-tree.h (TREE_GETS_PLACED_NEW): New macro.
9824
9825         * init.c (init_init_processing): Don't assign BIN/BID to the
9826         IDENTIFIER_GLOBAL_VALUEs of their respective operators.
9827         (build_new): Check TREE_GETS_PLACED_NEW.
9828
9829         * decl.c (grok_op_properties): Don't set TREE_GETS_NEW for a decl of
9830         op new with placement, set TREE_GETS_PLACED_NEW.
9831
9832         * cp-tree.h (ANON_UNION_P): New macro.  Applies to decls.
9833
9834         * class.c (finish_struct): Don't treat anonymous unions like
9835         other aggregate members.  Do synthesize methods for unions without
9836         a name, since they may or may not be "anonymous unions".
9837
9838         * decl2.c (grok_x_components): Wipe out memory of synthesized methods
9839         in anonymous unions.
9840
9841         * lex.c (default_copy_constructor_body): Support unions.
9842         (default_assign_ref_body): Ditto.
9843
9844 Mon Jan 31 12:07:30 1994  Jason Merrill  (jason@deneb.cygnus.com)
9845
9846         * cp-tree.h: Fix documentation of LOOKUP_GLOBAL, add prototypes.
9847
9848         * error.c (args_as_string): New function (%A), like type_as_string
9849         except NULL_TREE -> "..."
9850
9851         * call.c (build_overload_call_real): Fix for new overloading.
9852
9853         * decl.c (grok_op_properties): Set all of the TYPE_OVERLOADS_* flags
9854         here.
9855
9856         * parse.y (operator_name): Instead of here.
9857
9858         * typeck2.c (build_functional_cast): Treat a TREE_LIST as a list
9859         of functions.
9860
9861         * call.c (build_overload_call_real): Support LOOKUP_SPECULATIVELY.
9862
9863         * method.c (build_opfncall): Don't need to massage return value
9864         any more, call build_overload_call with all flags.
9865
9866         * typeck.c (build_x_binary_op): Put back speculative call to
9867         build_opfncall.
9868         (build_x_unary_op): Ditto.
9869         (build_x_conditional_expr): Ditto.
9870
9871 Mon Jan 31 10:00:30 1994  Mike Stump  <mrs@cygnus.com>
9872
9873         * cvt.c (build_type_conversion_1): Change call to pedwarn into
9874         warning, and conditionalize upon warn_cast_qual.
9875
9876 Fri Jan 28 11:48:15 1994  Jason Merrill  (jason@deneb.cygnus.com)
9877
9878         * search.c (lookup_field): If xbasetype is a binfo, copy it to
9879         avoid clobbering its inheritance info.
9880
9881         * call.c (build_method_call): Don't overwrite basetype_path with
9882         TYPE_BINFO (inst_ptr_basetype) if they have the same type.
9883
9884         * search.c (compute_access): Fix handling of protected inheritance
9885         and friendship with the enclosing class.
9886
9887         * typeck2.c (store_init_value): Allow passing of TREE_CHAIN for
9888         initialization of arbitrary variable.
9889
9890         * typeck2.c (build_functional_cast): Only try calling a method if
9891         one exists.
9892
9893         * decl.c (grokdeclarator): Move handling of constructor syntax
9894         initialization into first loop for generality.
9895         (parmlist_is_random): Lose.
9896
9897         * lex.c (cons_up_default_function): Set TREE_PARMLIST on arguments
9898         to default function.
9899
9900 Thu Jan 27 19:26:51 1994  Jason Merrill  (jason@deneb.cygnus.com)
9901
9902         * decl.c (grokparms): Abort if we get called with something we don't
9903         expect.
9904
9905 Thu Jan 27 17:37:25 1994  Mike Stump  <mrs@cygnus.com>
9906
9907         * call.c (build_overload_call_real): Change argument complain to
9908         flags to match style of rest of code.  Pass it down to
9909         build_function_call_real as necessary.
9910         * call.c (build_overload_call, build_overload_call_maybe): Change
9911         argument complain to flags to match style of rest of code.
9912         * cp-tree.h (build_function_call_real): Added fourth flags
9913         argument.
9914         * cvt.c (convert_to_reference): Only give warning messages, if
9915         LOOKUP_COMPLAIN is set.
9916         * typeck.c (build_x_function_call): Change simple complain
9917         argument to build_overload_call_maybe and build_overload_call, to
9918         LOOKUP_COMPLAIN to match style of rest of code.
9919         * typeck2.c (build_functional_cast): Ditto.
9920         * typeck.c (build_function_call_real): Add flags, so that we can
9921         not complain, if we don't want to complain.  Complain about
9922         arguments, if we are complaining, otherwise don't.
9923         * typeck.c (build_function_call, build_function_call_maybe):
9924         Stick in flags argument.
9925         * typeck.c (build_x_binary_op, build_x_unary_op,
9926         build_x_conditional_expr, build_x_compound_expr): Follow style of
9927         build_x_indirect_ref, as it is more correct and more common.
9928
9929 Thu Jan 27 14:36:20 1994  Jason Merrill  (jason@deneb.cygnus.com)
9930
9931         * call.c (build_method_call): Don't check for being called with
9932         a pointer.
9933
9934         * decl2.c (finish_file): Don't play with DECL_CLASS_CONTEXT for the
9935         static initializer function.
9936
9937         * init.c (build_member_call): Use convert_force here, too.
9938
9939         * search.c (compute_access): Only treat static members specially
9940         if they are referenced directly.
9941
9942 Wed Jan 26 18:28:14 1994  Jason Merrill  (jason@deneb.cygnus.com)
9943
9944         * gxxint.texi (Access Control): New node.
9945
9946         * search.c (current_scope): New function; returns whichever of
9947         current_class_type and current_function_decl is the most nested.
9948         (compute_access): Total overhaul to make it clearer and more
9949         correct.  Don't use the cache for now; in the only situation where
9950         it was used before, it gained nothing.  This frees up three of the
9951         DECL_LANG_FLAGs for possible other use!
9952
9953         * cp-tree.h: #if 0 out DECL_PUBLIC & friends.
9954
9955         * typeck.c (build_component_ref_1): Don't check DECL_PUBLIC.
9956
9957         * call.c (build_method_call): Use convert_force to cast `this' --
9958         rely on the access checking for the method itself.
9959
9960         * init.c (is_friend): Do the nesting thing, handle types.  I am
9961         my own friend.
9962         (is_friend_type): Become a shell for is_friend.
9963         (add_friend): Never stick in ctype.
9964         Why are the friendship functions in init.c, anyway?
9965
9966 Wed Jan 26 17:50:00 1994  Mike Stump  <mrs@cygnus.com>
9967
9968         * cvt.c (build_type_conversion_1): Don't conditionalize call to
9969         pedwarn upon pedantic.
9970
9971 Wed Jan 26 17:20:46 1994  Mike Stump  <mrs@cygnus.com>
9972
9973         * cvt.c (convert_to_reference): Add 8.4.3 checking so that one
9974         gets a warning if one tries to initialize a non-const & from a
9975         non-lvalue.
9976         * cvt.c (convert_to_reference): Use %P format for argument
9977         numbers in warnings.
9978
9979 Wed Jan 26 14:35:06 1994  Mike Stump  <mrs@cygnus.com>
9980
9981         * init.c (build_delete): Follow style in call.c to construct the
9982         virtual call to the desctructor, as that code is right.  Fixes a
9983         problem of the compiler saying a pointer conversion is ambiguous.
9984
9985 Wed Jan 26 11:28:14 1994  Jason Merrill  (jason@deneb.cygnus.com)
9986
9987         * cp-tree.h (VTABLE_NAME_P): Change other occurrence of
9988         VTABLE_NAME_FORMAT to VTABLE_NAME.
9989
9990         * *: s/visibility/access/g
9991
9992 Tue Jan 25 18:39:12 1994  Jason Merrill  (jason@deneb.cygnus.com)
9993
9994         * typeck.c (build_modify_expr): Don't smash references if INIT_EXPR.
9995
9996 Tue Jan 25 13:54:29 1994  Mike Stump  <mrs@cygnus.com>
9997
9998         * init.c (build_delete): Back out Jan 17th & 18th pacthes, as
9999         they break libg++.
10000
10001 Tue Jan 25 13:11:45 1994  Jason Merrill  (jason@deneb.cygnus.com)
10002
10003         * decl.c (duplicate_decls): Fix pointer arithmetic.
10004
10005 Mon Jan 24 15:50:06 1994  Chip Salzenberg  (chip@fin.uucp)
10006
10007             [ cp-* changes propagated from c-* changes in 940114 snapshot ]
10008             * cp-parse.y (maybe_attribute): Allow multiple __attribute__
10009             clauses on a declaration.
10010
10011 Mon Jan 24 17:06:23 1994  Jason Merrill  (jason@deneb.cygnus.com)
10012
10013         * class.c (finish_struct): Do synthesize methods for anon
10014         structs, just not unions.
10015
10016 Mon Jan 24 13:50:13 1994  Kung Hsu  (kung@mexican.cygnus.com)
10017
10018         * decl.c (xref_tag): handle anonymous nested type.
10019         * decl.c (globalize_nested_type): add no globalize bit check.
10020         * spew.c (hack_more_ids) : templated nested decl not push top
10021         level.
10022
10023         * parse.y : get rid of 'goto do_components'. It is much better
10024         for debugging.
10025
10026         * decl.c (is_anon_name): get rid of the function and use the
10027         macro ANON_AGGRNAME_P.
10028         * pt.c : ditto.
10029
10030 Fri Jan 21 14:06:02 1994  Jason Merrill  (jason@deneb.cygnus.com)
10031
10032         * class.c (finish_struct): Don't synthesize any methods for
10033         anonymous structs/unions.
10034
10035         * typeck.c (build_modify_expr): Don't treat pmf's as class objects.
10036
10037 Thu Jan 20 18:56:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
10038
10039         * method.c (build_opfncall): Call build_indirect_ref on
10040         synthesized instance for operator delete.
10041
10042         * pt.c (type_unification): Don't abort if called with a list of
10043         types in ARGS.
10044
10045         * class.c (instantiate_type): Deal with function templates.
10046
10047 Thu Jan 20 16:55:35 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)
10048
10049         * Makefile.in (CC): Default to cc not gcc.
10050
10051 Thu Jan 20 13:47:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
10052
10053         * typeck.c (build_modify_expr): Call constructor if appropriate.
10054
10055         * decl.c (push_to_top_level): Clear out class-level bindings cache.
10056
10057 Wed Jan 19 13:51:22 1994  Jason Merrill  (jason@deneb.cygnus.com)
10058
10059         * call.c (resolve_scope_to_name): Work recursively (previously only
10060         looked down one level).
10061
10062         * lex.c (do_pending_inlines): If we're still dealing with the last
10063         batch of inlines, don't start working on a new one.
10064
10065         * Makefile.in (stamp-parse): Update conflict count.
10066         (TAGS): Fix.
10067
10068         * parse.y (explicit_instantiation): New rule; implements
10069         'template A<int>' syntax (though not 'template foo(int)' yet).
10070         (structsp): Add explicit_instantiation.
10071
10072 Tue Jan 18 13:53:05 1994  Jason Merrill  (jason@deneb.cygnus.com)
10073
10074         * class.c (finish_struct, etc.): Simplify decision to synthesize
10075         a destructor.
10076
10077         * call.c, class.c, cp-tree.h, decl.c, init.c,
10078         ptree.c, search.c, typeck.c, typeck2.c: Nuke
10079         TYPE_NEEDS_CONSTRUCTOR (change all calls to TYPE_NEEDS_CONSTRUCTING).
10080         * init.c (expand_aggr_init_1): Don't try non-constructor methods
10081         of initializing objects.
10082         (build_new): Don't try other methods if the constructor lookup fails.
10083
10084         * class.c (finish_base_struct): Set cant_have_default_ctor and
10085         cant_synth_copy_ctor properly.
10086         (finish_struct): Ditto.
10087
10088 Mon Jan 17 13:58:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
10089
10090         * typeck.c (build_modify_expr_1): #if 0 out again.
10091         (build_modify_expr): #if 0 out memberwise init code again.
10092
10093         * lex.c (default_copy_constructor_body): Be const-correct.
10094         (default_assign_ref_body): Ditto.
10095
10096         * init.c (perform_member_init): Use TYPE_HAS_CONSTRUCTOR to decide
10097         whether or not to use it, rather than TYPE_NEEDS_CONSTRUCTING.
10098         (expand_aggr_init): Disable silent conversion from initializer list
10099         to list of args for a constructor.
10100
10101         * class.c (base_info): Lose needs_default_ctor.
10102         (finish_base_struct): Ditto.
10103         (finish_struct): Ditto.
10104
10105         * decl.c (init_decl_processing): Don't turn off flag_default_inline
10106         just because flag_no_inline is on.
10107         (finish_decl): Use TYPE_HAS_CONSTRUCTOR to decide to use
10108         constructor.
10109
10110         * class.c (finish_struct): Synthesize default ctor whenever
10111         allowed.
10112
10113         * Makefile.in (TAGS): Don't try to run etags on cp-parse.y.
10114
10115 Sat Jan 15 18:34:33 1994  Mike Stump  <mrs@cygnus.com>
10116
10117         * Makefile.in, configure: Handle the C++ front-end in a
10118         subdirectory.
10119         * cp-*: Move C++ front-end to cp/*.
10120
10121 Fri Jan 14 14:09:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
10122
10123         * cp-typeck.c (build_function_call_real): Modify to match other
10124         instances of taking the address of the function.
10125
10126         * cp-class.c (finish_struct): Set TYPE_HAS_REAL_CONSTRUCTOR to 1 if
10127         there are non-synthesized constructors.
10128         Only set TYPE_NEEDS_CONSTRUCTOR if TYPE_HAS_REAL_CONSTRUCTOR.
10129         Always generate copy constructor if possible.
10130
10131         * cp-tree.h (lang_type): Add has_real_constructor bitfield.
10132         (TYPE_HAS_REAL_CONSTRUCTOR): Define.
10133
10134         * cp-lex.c (default_copy_constructor_body): Use init syntax
10135         for all bases.
10136
10137         * cp-type2.c (store_init_value): Only give error for initializer list
10138         if TYPE_HAS_REAL_CONSTRUCTOR.
10139
10140 Thu Jan 13 15:38:29 1994  Jason Merrill  (jason@deneb.cygnus.com)
10141
10142         * cp-tree.h (DECL_SYNTHESIZED): Add defn.
10143         (lang_decl): Add synthesized bitfield to decl_flags.
10144
10145         * cp-lex.c (cons_up_default_function): Use DECL_SYNTHESIZED to mark
10146         artificial methods, rather than a line # of 0.
10147
10148 Fri Jan 14 18:25:29 1994  Kung Hsu  (kung@mexican.cygnus.com)
10149
10150         * cp-decl (xref_tag): fix a bug in conflict type.
10151         * cp-parse.y : add SCOPED_NAME for uninstantiated template nested
10152         type reference.
10153         * cp-spew.c (yylex) : generated SCOPED_NAME token.
10154         * cp-lex.c (yyprint): handle SCOPED_NAME.
10155
10156 Fri Jan 14 17:00:29 1994  Mike Stump  <mrs@cygnus.com>
10157
10158         * cp-decl.c (pushdecl): Revert patch from Jan 11 19:33:03, as it is
10159         not right.
10160
10161 Thu Jan 13 14:00:35 1994  Kung Hsu  (kung@mexican.cygnus.com)
10162
10163         * cp-decl2.c (grok_x_components): fix a bug that enum type does not
10164         have type_flags.
10165
10166 Thu Jan 13 11:39:34 1994  Mike Stump  <mrs@cygnus.com>
10167
10168         Ensure that all vtable pointers are initialized with all the right
10169         values.
10170
10171         * cp-class.c (is_normal): Changed to reflect new meaning of
10172         CLASSTYPE_VFIELD_PARENT.
10173         * cp-class.c (maybe_fixup_vptrs): Use of
10174         CLASSTYPE_NEEDS_VIRTUAL_REINIT here is misguided.  Use
10175         BINFO_MODIFIED instead.
10176         * cp-class.c (finish_struct): Changed to reflect new meaning of
10177         CLASSTYPE_VFIELD_PARENT.
10178         * cp-decl.c (get_binfo_from_vfield): Removed, unneeded now.
10179         * cp-decl.c (finish_function): Use init_vtbl_ptrs, instead of open
10180         coding it here.
10181         * cp-init.c (init_vfields): Changed name to init_vtbl_ptrs, and
10182         re-implement.
10183         * cp-init.c (emit_base_init): Use new name init_vtbl_ptrs.
10184         * cp-tree.h (vfield_parent): Changed to integer.
10185         * cp-tree.h (CLASSTYPE_VFIELD_PARENT): Changed docs to reflect new
10186         meaning.
10187         * cp-tree.h (init_vtbl_ptrs): Added init_vtbl_ptrs.
10188
10189 Wed Jan 12 18:24:16 1994  Kung Hsu  (kung@mexican.cygnus.com)
10190
10191         * cp-decl.c (xref_tag): re-implement globalize nested type.
10192         * cp-decl2.c (grok_x_components): ditto.
10193         * cp-parse.y: ditto.
10194         * cp-tree.h (lang_type): add no_globalize bit in type_flags.
10195
10196 Wed Jan 12 14:08:09 1994  Jason Merrill  (jason@deneb.cygnus.com)
10197
10198         * cp-decl.c (grokdeclarator): Don't set TREE_PUBLIC on friend
10199         decls with a definition attached.
10200
10201         * cp-typeck.c (build_modify_expr): Undo previous change in the case
10202         of INIT_EXPRs.
10203
10204 Tue Jan 11 19:33:03 1994  Jason Merrill  (jason@deneb.cygnus.com)
10205
10206         * cp-typeck.c (build_modify_expr): Replace code for generating
10207         assignment semantics for classes with an error.
10208         (build_modify_expr_1): #if 0 out.
10209
10210         * cp-decl.c (pushdecl): Patch bogus design of pushdecl
10211         behavior for overloaded functions (it doesn't push anything).
10212
10213         * cp-class.c (finish_struct): When generating default op=,
10214         set TYPE_HAS_ASSIGNMENT.
10215
10216 Mon Jan 10 18:48:06 1994  Mike Stump  <mrs@cygnus.com>
10217
10218         * cp-cvt.c (convert): Make {double, clashing enum} -> enum
10219         invalid.
10220         * cp-typeck.c (convert_for_assignment): Simplify.
10221         * cp-decl2.c (warn_enum_clash): Removed.
10222         * invoke.texi (-Wenum-clash): Removed.
10223         * toplev.c (-Wenum-clash): Removed.
10224
10225 Mon Jan 10 17:48:37 1994  Kung Hsu  (kung@mexican.cygnus.com)
10226
10227         * cp-decl.c (finish_decl): fix incorrect popclass call.
10228
10229         * cp-decl.c (is_anon_name): new function, check whether the name
10230         is anonymous name generated by compiler.
10231         * cp-decl.c (grokdeclarator): allow nested SCOPE_REF
10232         * cp-spew.c (hack_more_ids): handle nested type in template.
10233         * cp-parse.y : handle nested type reference in uninstantiated
10234         template.
10235         * cp-call.c (build_method_call): handle uninstantiated template
10236         case.
10237         * cp-pt.c (search_nested_type_in_tmpl): new function, search nested 
10238         type in template.
10239         * cp-pt.c (lookup_nested_type_by_name): new function, lookup nested 
10240         type by name.
10241         * cp-pt.c (tsubst): handle nested type search by name.
10242
10243 Mon Jan 10 14:32:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
10244
10245         * cp-init.c (build_member_call): Propagate qualifiers to new type.
10246
10247         * cp-call.c (build_method_call): Count functions the new way.
10248
10249 Fri Jan  7 19:03:26 1994  Jason Merrill  (jason@deneb.cygnus.com)
10250
10251         * cp-decl.c (pushtag): Set DECL_ASSEMBLER_NAME for nested classes,
10252         too.
10253
10254 Tue Jan  4 16:45:51 1994  Kung Hsu  (kung@cirdan.cygnus.com)
10255
10256         * cp-parse.y: change to handle whether to globalize nested class.
10257         * cp-decl.c(xref_tag, maybe_globalize_type): Ditto.
10258
10259 Mon Jan  3 22:22:32 1994  Gerald Baumgartner  (gb@cygnus.com)
10260
10261         * Makefile.in cp-call.c cp-class.c cp-cvt.c cp-decl.c cp-decl2.c
10262         cp-error.c cp-init.c cp-lex.c cp-lex.h cp-method.c cp-parse.y
10263         cp-spew.c cp-tree.c cp-tree.h cp-type2.c cp-typeck.c cp-xref.c
10264         gplus.gperf toplev.c: Incorporated C++ signature extension.
10265         * cp-sig.c: New file, contains most of signature processing.
10266         * cp-hash.h: Regenerated from gplus.gperf.
10267
10268         * gcc.1 g++.1: Added explanation for  the `-fhandle-signatures'
10269         and `-fno-handle-signatures' command line flags.
10270
10271         * gcc.texi: Changed the last-modification date.
10272         * invoke.texi: Added `-fhandle-signatures' in the list of
10273         C++ language options.  Added explanation for this option.
10274
10275 Tue Dec 28 21:10:03 1993  Mike Stump  <mrs@cygnus.com>
10276
10277         * cp-init.c (expand_vec_init): Remove comptypes test, as it is too
10278         harsh here.
10279
10280 Tue Dec 28 13:42:22 1993  Mike Stump  <mrs@cygnus.com>
10281
10282         * cp-pt.c (do_pending_expansions): Decide to expand a template
10283         member function, based upon it's class type, not the class type of
10284         the first place it was declared.
10285
10286 Tue Dec 28 05:42:31 1993  Mike Stump  <mrs@cygnus.com>
10287
10288         * cp-class.c (is_normal): New routine, use to determine when the
10289         given binfo is the normal one.  (The one that should have the simple
10290         vtable name.)
10291         * cp-class.c (modify_other_vtable_entries): Use DECL_ASSEMBLER_NAME
10292         to check if two fndecls are `the same'.  Sometimes this routine can
10293         modify the main vtable, and normal should be 1, in that case, so use
10294         is_normal() to determine if this is the main vtable for the class.
10295         Don't recurse down virtual bases, as they are shared, and we take
10296         care of them elsewhere.
10297         * cp-class.c (modify_vtable_entries): If we have already updated the
10298         vtable with the new virtual, don't do it again.
10299         * cp-class.c (finish_struct): Set CLASSTYPE_VFIELD_PARENT as
10300         appropriate.  Do virtual function overriding in virtual bases, after
10301         normal overriding, so that the base function list in DECL_VINDEX is
10302         not overridden, before we have a chance to run through the list.
10303         Use DECL_ASSEMBLER_NAME to check if two fndecls are `the same'.
10304         Make sure we pass the right address into modify_vtable_entries.
10305         * cp-tree.h (CLASSTYPE_VFIELD_PARENT): New field to indicate which
10306         binfo is the one that has the vtable that we based our vtable on.
10307
10308 Fri Dec 24 09:40:52 1993  Michael Tiemann  (tiemann@blues.cygnus.com)
10309
10310         * cp-typeck.c (c_expand_start_case): Use default_conversion to
10311         convert expression from reference type if necessary.
10312
10313 Wed Dec 22 17:58:43 1993  Jason Merrill  (jason@deneb.cygnus.com)
10314
10315         * cp-typeck.c (build_unary_op): Make sure that it's a TREE_LIST before
10316         trying to read its TREE_VALUE.
10317
10318         * cp-class.c (finish_struct_methods): Clear DECL_IN_AGGR_P here.
10319         (finish_struct): Instead of here.
10320
10321 Tue Dec 21 14:34:25 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
10322
10323         * cp-tree.c (list_hash_lookup_or_cons): Make sure the type doesn't
10324         have TYPE_PTRMEMFUNC_P set before we try to build its
10325         CLASSTYPE_ID_AS_LIST.
10326         (get_decl_list): Likewise, when trying to read it.
10327
10328         * cp-tree.h (VTABLE_NAME): No def with NO_{DOLLAR,DOT} defined.
10329         (VTABLE_NAME_P): Use it instead of VTABLE_NAME_FORMAT.
10330
10331 Mon Dec 20 13:35:03 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
10332
10333         * cp-typeck.c (rationalize_conditional_expr): New function.
10334         (unary_complex_lvalue): Use it.
10335         (build_modify_expr): Use it, since trying to do an ADDR_EXPR of it
10336         with build_unary_op won't cut it.  Don't wrap the COND_EXPR with a
10337         SAVE_EXPR either.
10338
10339         * cp-decl2.c (explicit_warn_return_type): Deleted variable.
10340         (lang_decode_option): Set warn_return_type, not explicit_*, for
10341         -Wreturn-type and -Wall.  This is what rest_of_compilation uses to
10342         decide if it should go into jump_optimize or not.
10343         * cp-tree.h (explicit_warn_return_type): Deleted.
10344         * cp-decl.c (grokdeclarator): Use warn_return_type, not explicit_*.
10345         (finish_function): Also complain about no return in a non-void fn if
10346         we're being pedantic (don't rely on use of -Wreturn-type).
10347
10348 Fri Dec 17 15:45:46 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
10349
10350         * cp-decl.c (grokdeclarator): Forbid declaration of a function as
10351         static if it's being done inside another function.
10352
10353         * cp-search.c (compute_visibility): Check for friendship both ways.
10354
10355 Fri Dec 17 14:28:25 1993  Jason Merrill  (jason@deneb.cygnus.com)
10356
10357         * cp-cvt.c (build_default_binary_type_conversion): Make error
10358         messages more helpful.
10359
10360         * cp-error.c (op_as_string): New function, returns "operator =="
10361         given EQ_EXPR or suchlike.
10362
10363 Fri Dec 17 13:28:11 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
10364
10365         * cp-call.c (print_n_candidates): New function.
10366         (build_overload_call_real): Use it when we complain about a call
10367         being ambiguous.
10368
10369 Fri Dec 17 12:41:17 1993  Jason Merrill  (jason@deneb.cygnus.com)
10370
10371         * cp-call.c (build_method_call): Fix checking for static call
10372         context.
10373
10374         * cp-method.c (build_opfncall): Call build_indirect_ref on argument
10375         to operator new.
10376
10377         * cp-init.c (build_new): Don't mess with rval when building
10378         indirect ref.
10379
10380 Thu Dec 16 16:48:05 1993  Kung Hsu  (kung@cirdan.cygnus.com)
10381
10382         * cp-lex.c (default_assign_ref_body): add check when TYPE_NESTED_
10383         NAME(type) may not be exist. It's not a problem for old compiler.
10384
10385 Thu Dec 16 14:46:06 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
10386
10387         * cp-tree.h (CLASSTYPE_ALTERS_VISIBILITIES_P): Delete macro, it's
10388         never used for anything.
10389         (struct lang_type, member type_flags): Delete field
10390         `alters_visibility', and up `dummy' by 1.
10391         * cp-class.c (finish_base_struct): Delete code that copies the
10392         setting of CLASSTYPE_ALTERS_VISIBILITIES_P.
10393         (finish_struct): Delete code that sets it.
10394
10395 Thu Dec 16 14:44:39 1993  Jason Merrill  (jason@deneb.cygnus.com)
10396
10397         * cp-decl.c, cp-init.c, cp-typeck.c: Fix arguments to
10398         build_method_call that I messed up before.
10399
10400         * cp-search.c (get_base_distance): If protect > 1, allow immediate
10401         private base.
10402
10403         * cp-class.c (finish_base_struct): Set cant_synth_* correctly.
10404         (finish_struct): Ditto.  Well, nigh-correctly; it won't deal
10405         properly with the case where a class contains an object of an
10406         ambiguous base class which has a protected op=.  Should be fixed
10407         when the access control code gets overhauled.
10408         (finish_struct_methods): Set TYPE_HAS_NONPUBLIC_* correctly.
10409
10410 Thu Dec 16 12:17:06 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
10411
10412         * cp-lex.c (real_yylex): Turn the code back on that deals with
10413         __FUNCTION__ and __PRETTY_FUNCTION__.  Don't use lookup_name, to
10414         avoid the ambiguity problems that led to it being turned off in the
10415         first place.
10416
10417         * cp-method.c (hack_identifier): Also check for a TYPE_PTRMEMFUNC_P
10418         to see if something is a method.
10419
10420 Wed Dec 15 18:35:58 1993  Mike Stump  <mrs@cygnus.com>
10421
10422         * cp-typeck.c (build_modify_expr): Avoid error messages on small
10423         enum bit fields.
10424         * cp-typeck.c (convert_for_assignment): Add missing argument to
10425         cp_warning and cp_pedwarn calls.
10426
10427 Wed Dec 15 18:25:32 1993  Jason Merrill  (jason@deneb.cygnus.com)
10428
10429         * cp-parse.y (member_init): ANSI C++ doesn't forbid old-style base
10430         initializers; it's just anachronistic.
10431
10432         * cp-decl.c (finish_decl): Don't require external-linkage arrays
10433         to have a complete type at declaration time when pedantic.
10434
10435 Tue Dec 14 11:37:23 1993  Jason Merrill  (jason@deneb.cygnus.com)
10436
10437         * cp-decl.c (pushdecl): Don't set DECL_CONTEXT if it's already set.
10438
10439         * cp-call.c (build_method_call): Don't dereference pointer given
10440         as instance.
10441
10442         * cp-decl.c (finish_function): Don't pass pointer to
10443         build_method_call.
10444         (finish_function): Ditto.
10445
10446         * cp-typeck.c (build_x_function_call): Ditto.
10447
10448         * cp-method.c (build_component_type_expr): Ditto.
10449
10450         * cp-init.c (build_member_call): Ditto.
10451         (build_new): Ditto.
10452
10453 Mon Dec 13 18:04:33 1993  Kung Hsu  (kung@cirdan.cygnus.com)
10454
10455         * cp-decl.c (xref_tag): fix regression created by changes made 
10456         in Dec. 7 1993.
10457         * cp-decl.c (xref_defn_tag): fix parallel nested class problem.
10458
10459 Fri Dec 10 12:40:25 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
10460
10461         * cp-call.c (compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print
10462         out the final evaluation of the function, so we can see if ELLIPSIS,
10463         USER, and EVIL were set at the end.
10464
10465         * cp-call.c (convert_harshness_ansi): When the parm isn't an lvalue,
10466         only go for setting TRIVIAL_CODE if we are dealing with types that
10467         are compatible.
10468
10469 Thu Dec  9 18:27:22 1993  Mike Stump  <mrs@cygnus.com>
10470
10471         * cp-decl.c (flag_huge_objects): New flag to allow large objects.
10472         * toplev.c (lang_options): Ditto.
10473         * cp-decl2.c (flag_huge_objects, lang_f_options): Ditto.
10474         * cp-decl.c (delta_type_node): New type for delta entries.
10475         * cp-tree.h (delta_type_node): Ditto.
10476         * cp-decl.c (init_decl_processing): Setup delta_type_node.
10477         * cp-decl.c (init_decl_processing, build_ptrmemfunc_type): Use
10478         delta_type_node instead of short_integer_type_node. 
10479         * cp-class.c (build_vtable_entry): Ditto.
10480
10481 Thu Dec  9 16:19:05 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
10482
10483         * cp-tree.h (OPERATOR_TYPENAME_P): Define outside of
10484         NO_{DOLLAR,DOT} macro checks, so it always gets defined.
10485         (VTABLE_NAME_P): Define for NO_DOT && NO_DOLLAR_IN_LABEL.
10486
10487 Wed Dec  8 17:38:06 1993  Mike Stump  <mrs@cygnus.com>
10488
10489         * cp-decl.c (finish_decl): Make sure things that can go into
10490         "common", do go into common, if -fcommon is given.
10491
10492 Wed Dec  8 13:01:54 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
10493
10494         * cp-call.c (print_harshness) [DEBUG_MATCHING]: New function.
10495         (compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print out
10496         argument matching diagnostics to make instantly clear what the
10497         compiler is doing.
10498
10499         * cp-call.c (convert_harshness_ansi): If the parm isn't an lvalue,
10500         then check to see if the penalty was increased due to
10501         signed/unsigned mismatch, and use a TRIVIAL_CODE if it wasn't.
10502
10503 Tue Dec  7 18:29:14 1993  Kung Hsu  (kung@cirdan.cygnus.com)
10504
10505         * cp-decl.c (xref_tag, pushtag): Fix nested class search/resolution
10506         problem.
10507
10508 Tue Dec  7 16:09:34 1993  Jason Merrill  (jason@deneb.cygnus.com)
10509
10510         * cp-class.c (finish_struct): Before synthesizing methods, if no
10511         methods have yet been declared then set nonprivate_method.  Don't
10512         set non_private method after synthesizing a method.
10513
10514         * cp-lex.c (extract_interface_info): If flag_alt_external_templates
10515         is set, tie emitted code to the location of template instantiation,
10516         rather than definition.
10517
10518         * cp-tree.h: Declare flag_alt_external_templates.
10519
10520         * cp-decl2.c (lang_decode_option): Support -falt-external-templates.
10521
10522         * toplev.c (lang_options): Ditto.
10523
10524 Mon Oct  4 12:50:02 1993  Chip Salzenberg  (chip@fin.uucp)
10525
10526         [changes propagated from 930810 snapshot]
10527         * cp-decl.c (init_decl_processing): Make long long available for use
10528         as SIZE_TYPE and PTRDIFF_TYPE.
10529         (finish_decl): Allow file-scope static incomplete array.
10530         (grokdeclarator): Don't pass on const and volatile fron function
10531         value type to function type.
10532         Warn here for volatile fn returning non-void type.
10533         * cp-parse.y (attrib): Accept attributes `volatile' with alias
10534         `noreturn', and `const'.
10535         * cp-typeck.c (default_conversion): Don't lose const and volatile.
10536         (build_binary_op_nodefault): Generate pedantic warning for comparison
10537         of complete pointer type with incomplete pointer type.
10538         (build_c_cast): Be careful that null pointer constant be INTEGER_CST.
10539
10540 Tue Dec  7 10:46:48 1993  Jason Merrill  (jason@deneb.cygnus.com)
10541
10542         * cp-init.c (expand_vec_init): When creating a temporary for copying
10543         arrays, use the type of the source, not the target.
10544
10545         * cp-cvt.c (convert): Pass an argument for errtype to
10546         convert_to_reference.
10547
10548         * cp-error.c (dump_expr, COMPONENT_REF & CALL_EXPR): Deal with
10549         methods, -> and `this'.
10550
10551 Mon Dec  6 17:12:33 1993  Jason Merrill  (jason@deneb.cygnus.com)
10552
10553         * cp-error.c (parm_as_string): New function; returns `this' or arg
10554         number.  Corresponds to %P.
10555         (dump_expr): Deal with method calls.
10556
10557         * cp-cvt.c (convert_to_reference): Stop using warn_for_assignment.
10558         * cp-typeck.c (convert_for_assignment): Ditto.
10559         (warn_for_assignment): Lose.
10560
10561 Mon Dec  6 11:33:35 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
10562
10563         * cp-call.c (ideal_candidate_ansi): Delete code that was never
10564         doing anything useful.  Instead, sort once, and DO NOT wipe
10565         out any codes with EVIL_CODE, since that's what we use as a
10566         marker for the end of the list of candidates.
10567
10568         * cp-cvt.c (convert_to_aggr): Make sure to always set H_LEN.
10569
10570 Mon Dec  6 12:49:17 1993  Jason Merrill  (jason@deneb.cygnus.com)
10571
10572         * cp-init.c (get_aggr_from_typedef): New function, like
10573         is_aggr_typedef but returns the _TYPE.
10574
10575         * cp-call.c, cp-init.c, cp-method.c: Eradicate err_name.
10576
10577 Sun Dec  5 18:12:48 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
10578
10579         * cp-lex.c (readescape): Pedwarn when a hex escape is out of range.
10580
10581 Thu Nov 25 23:50:19 1993  Chip Salzenberg  (chip@fin.uucp)
10582
10583         Delay language context change until beginning of next decl.
10584
10585         * cp-lex.h (c_header_level): Removed.
10586         (pending_lang_change): Declared.
10587         * cp-lex.c (c_header_level): Renamed from in_c_header, made static.
10588         (pending_lang_change): Defined.
10589         (check_newline): Rework code that recognizes line number and
10590         filename changes.  Instead of pushing and popping lang context,
10591         increment and decrement pending_lang_change.
10592         (do_pending_lang_change):  Push and pop lang context according
10593         to value of pending_lang_change.
10594         * cp-parse.y (extdefs): Use lang_extdef instead of extdef.
10595         (extdef): Same as extdef, but call do_pending_lang_change() first.
10596
10597 Mon Nov 15 15:39:15 1993  Chip Salzenberg  (chip@fin.uucp)
10598
10599         * cp-typeck.c (build_binary_op_nodefault): Warn for ordered
10600         compare of ptr with 0 only if pedantic in both cases.
10601
10602 Thu Nov 25 13:31:37 1993  Chip Salzenberg  (chip@fin.uucp)
10603
10604         Reinstate the below patch, which got lost in the Cygnus merge:
10605         Tue Nov 23 13:59:24 1993  Hallvard B Furuseth  (hbf@durin.uio.no)
10606         * cp-parse.y (maybe_type_qual): Don't fail to set $$.
10607
10608 Wed Nov 17 19:03:30 1993  Chip Salzenberg  (chip@fin.uucp)
10609
10610         * cp-parse.y (attrib): Allow "ident(ident)" like the C front end.
10611
10612 Fri Oct 22 20:43:37 1993  Paul Eggert  (eggert@twinsun.com)
10613
10614         * cp-lex.c (real_yylex): Diagnose floating point constants
10615         that are too large.
10616
10617 Wed Nov 17 19:10:37 1993  Chip Salzenberg  (chip@fin.uucp)
10618
10619         * cp-type2.c (build_functional_cast): ARM page 16: When a class
10620         and an object, function or enumerator are declared in the same
10621         scope with the same name, the class name is hidden.
10622
10623 Wed Nov 17 19:07:18 1993  Chip Salzenberg  (chip@fin.uucp)
10624
10625         * cp-call.c (convert_harshness_ansi): Distinguish float, double,
10626         and long double from each other when overloading.
10627         (compute_conversion_costs_{ansi,old}, build_method_call,
10628         build_overlay_call_real, convert_to_aggr): Always set and
10629         always use H_LEN member of candidate structure.
10630
10631 Mon Oct 11 23:10:53 1993  Chip Salzenberg  (chip@fin.uucp)
10632
10633         * cp-decl.c (duplicate_decls): Note redeclarations of library
10634         functions, and generate distinct warnings for them.
10635
10636 Mon Oct  4 12:26:49 1993  Chip Salzenberg  (chip@fin.uucp)
10637
10638         Support format warnings in G++.
10639
10640         * cp-tree.h: Protect against multiple inclusion.
10641         Declare all public functions in c-common.c (copy from c-tree.h).
10642         (STDIO_PROTO): Define.
10643         (warn_format): Declare.
10644         (record_format_info): Remove declaration.
10645         * cp-decl.c (init_decl_processing): Call init_function_format_info.
10646         * cp-decl2.c (lang_decode_option): Make "-Wall" include warn_format.
10647         * cp-typeck.c (build_function_call_real): Call check_function_format.
10648         (record_format_info): Remove -- obsolete stub.
10649
10650 Sat Jul 24 12:04:29 1993  Chip Salzenberg  (chip@fin.uucp)
10651
10652         * cp-decl.c (duplicate_decls): Don't warn for non-extern var decl
10653         following an extern one (for -Wredundant-decls).
10654         * cp-parse.y (primary): In statement expression case, if compstmt
10655         returns something other than a BLOCK, return it unchanged.
10656
10657 Thu Dec  2 20:44:58 1993  Chip Salzenberg  (chip@fin.uucp)
10658
10659         * cp-decl.c (warn_extern_redeclared_static): New function made
10660         from code extracted from pushdecl.
10661         (duplicate_decls, pushdecl): Call new function.
10662         (lookup_name_current_level): Allow for IDENTIFIER_GLOBAL_VALUE
10663         to be a TREE_LIST when function is declared in 'extern "C" {}'.
10664
10665 Fri Dec  3 16:01:10 1993  Jason Merrill  (jason@deneb.cygnus.com)
10666
10667         * cp-class.c (duplicate_tag_error): Use cp_error.
10668         (finish_base_struct): Check for ambiguity with direct base, and don't
10669         generate op= or copy ctor if it exists.
10670
10671 Fri Dec  3 15:32:34 1993  Kung Hsu  (kung@cirdan.cygnus.com)
10672
10673         * cp-init.c (expand_member_init): when initializer name is null,
10674         don't try to build it now because emit_base_init will handle it.
10675
10676 Fri Dec  3 12:28:59 1993  Jason Merrill  (jason@deneb.cygnus.com)
10677
10678         * cp-lex.c (init_lex): Initialize input_filename to "<internal>" for
10679         code such as ExceptionHandler::operator=.
10680
10681 Fri Dec  3 10:32:08 1993  Jason Merrill  (jason@deneb.cygnus.com)
10682
10683         * cp-decl.c (grokdeclarator): Don't try to print out dname when
10684         complaining about arrays of references if decl_context==TYPENAME,
10685         since it will be null.
10686
10687         * cp-decl2.c: Default to flag_ansi_overloading.
10688
10689 Thu Dec  2 18:05:56 1993  Kung Hsu  (kung@cirdan.cygnus.com)
10690
10691         * cp-call.c (build_method_call): use binfo from instance if it's
10692         different from binfo (basetype_path) passed from above.
10693
10694 Thu Dec  2 12:48:36 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
10695
10696 Wed Nov 17 19:14:29 1993  Chip Salzenberg  (chip@fin.uucp)
10697
10698         cp-error.c (dump_expr): Use unsigned chars to output a
10699         TREE_REAL_CST in hex.
10700
10701 Thu Dec  2 11:05:48 1993  Jason Merrill  (jason@deneb.cygnus.com)
10702
10703         * cp-class.c (finish_struct): Fix typo in setting
10704         cant_synth_asn_ref.
10705
10706         * cp-tree.h (TYPE_NESTED_NAME): New macro, does
10707         DECL_NESTED_TYPENAME (TYPE_NAME (NODE)).
10708
10709         * cp-lex.c (default_copy_constructor_body): Change
10710         DECL_NAME (TYPE_NAME (btype)) to TYPE_NESTED_NAME (btype).
10711         (default_assign_ref_body): Ditto.
10712         (default_copy_constructor_body): Call operator= explicitly for
10713         base classes that have no constructor.
10714
10715 Thu Dec  2 10:47:15 1993  Michael Tiemann  (tiemann@blues.cygnus.com)
10716
10717         * cp-call.c (build_method_call): If the instance variable is
10718         converted to error_mark_node when we're trying to convert it to the
10719         base type of a method we're looking up, return error_mark_node.
10720
10721 Thu Dec  2 10:41:16 1993  Torbjorn Granlund  (tege@cygnus.com)
10722
10723         * cp-typeck.c (build_binary_op_nodefault): In *_DIV_EXPR *_MOD_EXPR
10724         cases, tests for unsigned operands by peeking inside a NOP_EXPR.
10725
10726 Wed Dec  1 13:33:34 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
10727
10728         * cp-call.c (compute_conversion_costs_ansi): Use the size of struct
10729         harshness_code, not the size of short, for clearing out the
10730         ansi_harshness.
10731
10732         * cp-call.c (print_candidates): New function.
10733         (build_method_call): When we had some candidates, but didn't get a
10734         usable match, don't report that we got an error with the first
10735         candidate.  Instead, say there were no matches, and list the
10736         candidates with print_candidates.  In the second pass, make sure we
10737         clear out ever_seen, so we can accurately count the number of
10738         functions that qualified.
10739
10740 Wed Dec  1 09:53:59 1993  Torbjorn Granlund  (tege@cygnus.com)
10741
10742         * cp-typeck.c (build_binary_op_nodefault): Shorten for *_MOD_EXPR
10743         only if op1 is known to be != -1.
10744         (build_binary_op_nodefault): Handle *_DIV_EXPR likewise.
10745
10746 Tue Nov 30 14:07:26 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
10747
10748         * cp-method.c (hack_identifier): If the field itself is private, and
10749         not from a private base class, say so.
10750
10751 Mon Nov 29 03:00:56 1993  Jason Merrill  (jason@deneb.cygnus.com)
10752
10753         * cp-decl.c (grokdeclarator): Always warn on initialization of
10754         const member.
10755
10756 Wed Nov 24 00:49:35 1993  Jason Merrill  (jason@deneb.cygnus.com)
10757
10758         * cp-class.c (finish_struct): Set TYPE_GETS_CONST_* properly.
10759         (finish_base_struct): Set cant_synth_asn_ref properly.
10760
10761         * cp-lex.c (cons_up_default_function): Add section for operator=.
10762         (default_assign_ref_body): New function, mostly cribbed from
10763         default_copy_constructor_body.
10764
10765         * cp-class.c (base_info): Add members cant_synth_copy_ctor,
10766         cant_synth_asn_ref, no_const_asn_ref.
10767         (finish_base_struct): Update no_const_asn_ref, note that you should
10768         update cant_synth_*, propagate TYPE_GETS_ASSIGN_REF.
10769         (finish_struct): Add decls for cant_synth_*, no_const_asn_ref, and
10770         initialize them properly.  Set no_const_asn_ref properly.  Set
10771         cant_synth_* in some of the situations where they should be set.
10772         Propagate TYPE_GETS_ASSIGN_REF.  Use cant_synth_copy_ctor.  Add call
10773         to cons_up_default_function for operator=.
10774
10775 Tue Nov 23 20:24:58 1993  Mike Stump  <mrs@cygnus.com>
10776
10777         * cp-cvt.c (convert_force): Add code to perform casting of pointer
10778         to member function types.
10779         * cp-typeck.c (build_ptrmemfunc): Add FORCE parameter to indicate
10780         when the conversion should be done, regardless.
10781         * cp-tree.h (build_ptrmemfunc): Ditto.
10782         * cp-type2.c (digest_init): Ditto.
10783         * cp-typeck.c (convert_for_assignment): Ditto.
10784
10785 Tue Nov 23 18:06:58 1993  Jason Merrill  (jason@deneb.cygnus.com)
10786
10787         * cp-error.c (dump_expr): Do the right thing for variables of
10788         reference type.
10789
10790         * cp-decl.c (grok_op_properties): Set TYPE_HAS_ASSIGN_REF
10791         and its kin properly.
10792         (xref_tag): Propagate TYPE_GETS_ASSIGN_REF.
10793
10794 Tue Nov 23 12:26:13 1993  Mike Stump  <mrs@cygnus.com>
10795
10796         * cp-method.c (build_opfncall): Don't count pointer to member
10797         functions as aggregates here, as we don't want to look up methods in
10798         them.  The compiler would core dump if we did, as they don't have
10799         normal names.
10800         * cp-typeck.c (build_indirect_ref): Improve wording on error
10801         message.
10802
10803 Mon Nov 22 14:22:23 1993  Jason Merrill  (jason@deneb.cygnus.com)
10804
10805         * cp-decl.c (grok_op_properties): Allow operator?: with pedwarn
10806         (since it's supported in other compiler bits).
10807
10808         * cp-method.c (report_type_mismatch): Use cp_error; ignore err_name
10809         argument.
10810
10811         * cp-error.c (dump_function_decl): Don't print return type for
10812         constructors and destructors.
10813
10814         * cp-cvt.c (cp_convert_to_pointer): Import code from
10815         convert_to_pointer so we can return error_mark_node in the case of an
10816         error, and to allow more meaningful error messages.
10817         (build_type_conversion): Don't go through void* when trying
10818         to convert to a pointer type.
10819
10820         * cp-decl.c (grokfndecl): Move call to grok_op_properties back
10821         after grokclassfn so that it's dealing with the right decl.
10822         (grok_op_properties): Don't assert !methodp for op new and op delete.
10823
10824         * cp-init.c (build_delete): Don't use TYPE_BUILT_IN (there are now
10825         no uses of it in the compiler).
10826
10827         * cp-call.c (build_scoped_method_call): Fix for destructors of simple
10828         types.
10829         (build_method_call): Ditto.
10830
10831 Fri Nov 19 12:59:38 1993  Jason Merrill  (jason@deneb.cygnus.com)
10832
10833         * cp-tree.c (count_functions): Abstraction function.
10834
10835         * cp-call.c (build_overload_call_real): Deal with new overloading
10836         properly, remove dead code.
10837
10838         * gcc.c (default_compilers): Generate and use .ii files in the
10839         intermediate stage of compiling C++ source.
10840
10841 Fri Nov 19 11:26:09 1993  Jim Wilson  (wilson@sphagnum.cygnus.com)
10842
10843         * cp-expr.c (cplus_expand_expr): Make call_target a valid memory
10844         address before using it, so it can be later safely compared.
10845
10846 Fri Nov 12 15:30:27 1993  Jason Merrill  (jason@deneb.cygnus.com)
10847
10848         * cp-pt.c (tsubst): Deal with new overloading.
10849
10850         * cp-typeck.c (fntype_p): is the arg function type?
10851         (comp_target_parms): pedwarn on conversion from (anything) to (...).
10852         (build_x_function_call): Deal with new overloading.
10853
10854         * cp-tree.c (decl_list_length): Deal with new overloading.
10855         (decl_value_member): Like value_member, but for DECL_CHAINs.
10856
10857         * cp-decl.c (duplicate_decls): Deal with new overloading.
10858         (start_decl): Ditto.
10859
10860         * cp-class.c (instantiate_type): Deal with new overloading.
10861
10862         * cp-call.c (convert_harshness_ansi): Deal with new overloading.
10863         (convert_harshness_old): Deal with new overloading.
10864         (build_overload_call_real): Ditto.
10865
10866 Mon Nov  8 13:50:49 1993  Jason Merrill  (jason@deneb.cygnus.com)
10867
10868         * cp-tree.c (get_unique_fn): New function; returns FUNCTION_DECL
10869         if unambiguous, NULL_TREE otherwise.
10870         (get_first_fn): Returns the first appropriate FUNCTION_DECL.
10871         (is_overloaded_fn): Returns whether or not the passed tree is
10872         a function or list of functions.
10873
10874         * cp-init.c (init_init_processing): use `get_first_fn' to find
10875         the FUNCTION_DEFN for new and delete.
10876
10877         * cp-decl.c (push_overloaded_decl): Use new overloading strategy, cut
10878         code size in half (I spit on special cases).
10879
10880 Tue Sep  7 20:03:33 1993  Jason Merrill  (jason@deneb.cygnus.com)
10881
10882         * cp-decl.c: Allow references and template type parameters as well