OSDN Git Service

86th Cygnus<->FSF quick merge
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 Wed Apr 24 00:36:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
2
3         * pt.c (tsubst_expr, DECL_STMT): If we don't have an initializer,
4         don't pass LOOKUP_ONLYCONVERTING.
5
6 Tue Apr 23 17:18:47 1996  Bob Manson  <manson@charmed.cygnus.com>
7
8         * typeck.c (common_type): Fix the ARRAY_TYPE case so it
9         properly keeps track of const and volatile type modifiers.
10
11 Tue Apr 23 10:52:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
12
13         * tree.c (cp_tree_equal): C++ version of simple_cst_equal.
14         * pt.c (comp_template_args): Use it.
15
16         * rtti.c (get_tinfo_fn, build_dynamic_cast, expand_*_desc): Call
17         assemble_external for artificial function decls.
18
19         * decl.c (cp_finish_decl): Oops.
20
21 Mon Apr 22 17:28:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
22
23         * decl2.c (import_export_decl): Put static data member templates
24         into common storage, or make them weak, depending on whether they
25         are dynamically or statically initialized.
26         (get_sentry): New function.
27         (finish_file): Do import_export_decl for static data members before
28         building the init/fini functions.  Don't init/fini a variable that's
29         EXTERNAL.  Use a sentry for variables in common.  Fix mismatching
30         push/pop_temp_slots.
31         * decl.c (cp_finish_decl): If DECL_NOT_REALLY_EXTERN, do the
32         expand_static_init thang.
33         * method.c (get_id_2): New function.
34
35 Mon Apr 22 15:32:45 1996  Bob Manson  <manson@charmed.cygnus.com>
36
37         * parse.y (empty_parms): Make sure we use C++-style prototypes
38         when we're declaring member functions.
39
40 Sun Apr 21 10:08:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
41
42         * Makefile.in (CONFLICTS): 16 s/r conflicts.
43         * parse.y (self_template_type): New nonterminal.
44
45 Thu Apr 18 08:56:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
46
47         * decl.c (make_typename_type): Handle getting a TYPE_DECL for a
48         name.
49         * parse.y (base_class.1): Allow 'typename foo::bar'.
50
51         * lex.c (check_newline): Remove #pragma code that plays with the
52         input stream, since we now deal with tokens.  Clear nextchar when
53         we're done.
54         (handle_cp_pragma): Use real_yylex.
55         (handle_sysv_pragma): Don't do skipline here.  Only call real_yylex
56         in one place.
57
58         * lex.c (check_for_missing_semicolon): Handle SELFNAME.
59
60         * lex.c (handle_cp_pragma): Fix "#pragma implementation".
61
62 Wed Apr 17 16:51:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
63
64         * parse.y: New token SELFNAME for potential constructor.
65         * spew.c (yylex): Handle it.
66         * lex.c (identifier_type): Produce it.
67
68         * parse.y (complete_type_name): In :: case, don't push class binding.
69         (complex_type_name): Ditto.
70
71 Wed Apr 17 15:02:40 1996  Mike Stump  <mrs@cygnus.com>
72
73         * typeck.c (build_reinterpret_cast): Handle pointer to member
74         functions.
75
76 Wed Apr 17 12:28:26 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
77
78         * lex.c (handle_cp_pragma): New function, with decl, doing the cc1plus
79         pragmas.
80         (check_newline): Put the vtable/unit/implementation/interface pragma
81         code into handle_cp_pragma, replacing it with a call.
82         (handle_sysv_pragma): Give int return type, and take FINPUT and TOKEN
83         args.  Get the next token after handling the pragma token.
84
85 Wed Apr 17 10:28:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
86
87         * cvt.c (cp_convert_to_pointer): Avoid doing base analysis on pmfs.
88         (convert_to_pointer_force): Ditto.
89
90         * init.c (build_new): Fix array new without -fcheck-new.
91
92 Tue Apr 16 13:44:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
93
94         * cp-tree.h, call.c, class.c, decl.c, parse.y, pt.c, rtti.c,
95         tree.c: Lose TYPE_NESTED_NAME.
96
97         * parse.y (nested_name_specifier_1): Don't treat non-identifiers
98         as identifiers.
99
100         * tree.def: Add VEC_INIT_EXPR.
101         * expr.c (cplus_expand_expr): Handle it.
102         * init.c (build_new): Use it instead of the RTL_EXPR nastiness and
103         the extra file-scope symbol nastiness.
104
105 Mon Apr 15 16:21:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
106
107         * method.c (make_thunk): Thunks are static.
108         (emit_thunk): Use ASM_OUTPUT_MI_THUNK if it's defined.
109
110         * decl2.c (mark_vtable_entries): Emit thunks as needed.
111         (finish_file): Don't emit them here.
112
113 Sun Apr 14 11:34:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
114
115         * rtti.c (build_dynamic_cast): Handle null pointers.
116         (ifnonnull): New function.
117
118 Fri Apr 12 09:08:27 1996  Bob Manson  <manson@charmed.cygnus.com>
119
120         * call.c (build_method_call): Remember the original basetype we
121         were called with. Give an error message instead of trying
122         (incorrectly) to call a non-static member function through a
123         non-inherited class.
124
125         * search.c (expand_upcast_fixups): Mark the new fixup as
126         DECL_ARTIFICIAL.
127
128 Thu Apr 11 03:57:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
129
130         * init.c (build_new): Use a TARGET_EXPR for alloc_expr.
131
132         * class.c (set_rtti_entry): Fix for thunks.
133
134         * decl2.c (import_export_decl): Still emit typeinfo fns for
135         cv-variants of builtin types.
136
137         * rtti.c (expand_class_desc): Set up base_info_type_node here.
138         (init_rtti_processing): Instead of here.
139
140 Wed Apr 10 14:17:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
141
142         * rtti.c (init_rtti_processing): Do init regardless of -frtti.
143         (build_typeid): Only complain about taking dynamic typeid without
144         -frtti.
145
146         * decl2.c: flag_rtti defaults to 1.
147
148         * rtti.c (get_tinfo_var): The general class case is now smaller.
149         (init_rtti_processing): Pack the latter three fields of base_info
150         into 32 bits.
151
152 Wed Apr 10 13:50:14 1996  Mike Stump  <mrs@cygnus.com>
153
154         * init.c (expand_member_init): Don't dump if name is NULL_TREE.
155
156 Wed Apr 10 12:56:02 1996  Mike Stump  <mrs@cygnus.com>
157
158         * search.c (make_memoized_table_entry): Undefer the pop, if necessary.
159         (push_memoized_context): Split out code to undefer pop_type_level to
160         (clear_memoized_cache): here.
161         (pop_memoized_context): We can only handle one layer of deferral of
162         pop_type_level so clear the cache, if there was a previous level.
163
164 Tue Apr  9 23:06:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
165
166         * rtti.c (init_rtti_processing): Build up base_info_type_node.
167         (expand_class_desc): Use one pointer to an array of base_info
168         structs, passed using a CONSTRUCTOR.
169
170 Tue Apr  9 14:20:57 1996  Mike Stump  <mrs@cygnus.com>
171
172         * class.c (build_vbase_path): Remove block extern for
173         flag_assume_nonnull_objects here.
174         (build_vfn_ref): Split out functionality into build_vtbl_ref.
175         (build_vtbl_ref): New routine.
176         (build_vtable): Set up rtti info here.
177         (add_virtual_function): Note in CLASSTYPE_RTTI the best
178         place where we can get the rtti pointers from to avoid having to
179         search around for a place.
180         (finish_base_struct): Ditto.
181         (finish_struct_1): Ditto.  Never create totally new vtables with totally
182         new vtable pointers for rtti.  Disable code to layout vtable pointers
183         better until we want to break binary compatibility.
184         * rtti.c (build_headof_sub): New routine to convert down to a
185         sub-object that has an rtti pointer in the vtable.
186         (build_headof): Use it.  Also, use build_vtbl_ref now to be more
187         maintainable.
188         (build_dynamic_cast): Make sure we have saved it, if we need to.
189         * search.c (dfs_init_vbase_pointers): Disable code that deals with
190         a more efficient vtable layout, enable later.
191         * call.c (flag_assume_nonnull_objects): Moved declaration to
192         * cp-tree.h: here.  Declare build_vtbl_ref.
193         * pt.c (instantiate_class_template): Use NULL_TREE instead of 0 in
194         function calls that want a tree.
195
196 Tue Apr  9 12:10:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
197
198         * rtti.c (build_dynamic_cast): Handle downcasting to X* given
199         other X subobjects in the most derived type.  Ack.
200
201         * rtti.c (build_dynamic_cast): No need to strip cv-quals here,
202         get_typeid will do it for us.
203         (get_typeid_1): Break out call-building for expand_*_desc to use.
204         (get_typeid): Call it.
205         (expand_*_desc): Ditto.
206         * decl.c (init_decl_processing): Don't set TYPE_BUILT_IN on char *
207         and void *.
208         (init_decl_processing): Lose builtin_type_tdescs lossage.
209         * decl2.c (finish_vtable_vardecl): Remove obsolete code.
210
211 Mon Apr  8 17:23:23 1996  Bob Manson  <manson@charmed.cygnus.com>
212
213         * pt.c (tsubst): When calling set_nested_typename, use
214         TYPE_NESTED_NAME (current_class_type) instead of
215         current_class_name.
216
217         * decl.c (pushdecl): Ditto.
218         (pushdecl_class_level): Ditto.
219         (grokdeclarator): Use NULL_TREE instead of 0 in the call to
220         set_nested_typename.
221
222 Sun Apr  7 10:44:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
223
224         * rtti.c (synthesize_tinfo_fn): Handle arrays.
225
226         * cp-tree.h (DECL_REALLY_EXTERN): New macro.
227
228 Sat Apr  6 13:56:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
229
230         * rtti.c (throw_bad_cast): Use entry point __throw_bad_cast.
231         (init_rtti_processing): Lose bad_cast_type.
232         (build_dynamic_cast): Use throw_bad_cast.
233
234         * rtti.c (synthesize_tinfo_fn): Handle enums and pmfs.
235
236         * decl2.c (finish_file): Don't synthesize artificial functions
237         that are external and not inline.
238
239         * rtti.c (get_tinfo_fn): If at_eof, call import_export_decl.
240
241         * decl2.c (finish_file): Handle having new inlines added to
242         saved_inlines by synthesis.
243
244         * rtti.c (get_bad_cast_node): Don't require <typeinfo>.
245
246 Fri Apr  5 17:02:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
247
248         RTTI rewrite to initialize nodes as needed, not require that
249         users #include <typeinfo>, complete functionality and reduce wasted 
250         space.
251         * rtti.c (init_rtti_processing): New fn.
252         (build_typeid): The vtable entry is now a function.
253         (get_tinfo_var): New fn.
254         (get_tinfo_fn): Ditto.
255         (get_typeid): Use it.
256         (build_dynamic_cast): Declare and use entry point __dynamic_cast.
257         (build_*_desc): Rename to expand_*_desc and rewrite to use entry
258         points __rtti_*.
259         (add_uninstantiated_desc, get_def_to_follow, build_t_desc): Lose.
260         (synthesize_tinfo_fn): New fn.
261         * method.c (build_t_desc_overload): Lose.
262         (build_overload_with_type): More generic.
263         * decl.c (init_decl_processing): Call init_rtti_processing.
264         * class.c (set_rtti_entry): Use get_tinfo_fn.
265         * decl2.c (mark_vtable_entries): Mark the rtti function.
266         (finish_prevtable_vardecl): Don't build_t_desc.
267         (import_export_decl): Handle tinfo functions.
268         (finish_file): Ditto.
269         * typeck.c (inline_conversion): New fn.
270         (build_function_call_real): Use it.
271         * cp-tree.h: Add decls.
272
273         * method.c (hack_identifier): Also convert component_refs from
274         references.
275
276         * lex.c (cons_up_default_function): Use the type, not the name, in
277         declspecs.
278
279         * decl2.c (import_export_vtable): Fix weak vtables.
280
281 Fri Apr  5 13:30:17 1996  Bob Manson  <manson@charmed.cygnus.com>
282
283         * search.c (get_base_distance_recursive): Fix access checks for
284         protected bases.
285
286 Fri Apr  5 11:02:06 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
287
288         * call.c (unary_complex_lvalue): Delete unneeded decl, it's in
289         cp-tree.h.
290         (convert_harshness): Add prototypes wrapped by PROTO.
291         * decl2.c (grok_function_init): Likewise.
292         (do_toplevel_using_decl): Change to void return type.
293         * class.c (build_vtable_entry): Remove decl of make_thunk.
294         (merge_overrides): Fix order of arg definitions.
295         (finish_vtbls): Likewise.
296         (fixup_vtable_deltas): Likewise.
297         (modify_all_direct_vtables): Likewise.
298         (modify_all_indirect_vtables): Likewise.
299         * search.c (get_base_distance_recursive): Likewise.
300         (get_abstract_virtuals_1): Likewise.
301         (fixup_virtual_upcast_offsets): Likewise.
302         (lookup_fnfields_1): Add prototypes wrapped by PROTO.
303         * init.c (perform_member_init): Fix order of arg definitions.
304         (expand_aggr_init_1): Add prototypes wrapped by PROTO.
305         * cp-tree.h (make_thunk): Add decl.
306         (overload_template_name, push_template_decl): Add decls.
307         (do_toplevel_using_decl): Change to void return type.
308         (vec_binfo_member): Add decl.
309
310 Thu Apr  4 13:33:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
311
312         * typeck.c (mark_addressable, convert_for_assignment,
313         convert_for_initialization, pointer_int_sum, pointer_diff,
314         unary_complex_lvalue): Add prototypes wrapped by PROTO.
315         (convert_sequence): #if 0 fn decl, since definition also is.
316
317 Thu Apr  4 11:00:53 1996  Mike Stump  <mrs@cygnus.com>
318
319         * rtti.c (build_dynamic_cast): Make sure we strip qualifiers on
320         cast to pointer types for type searching.
321
322 Wed Apr  3 17:10:57 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
323
324         * typeck.c (get_delta_difference): Use cp_error, not error, in the
325         case where BINFO == 0.
326
327 Wed Apr  3 12:01:02 1996  Mike Stump  <mrs@cygnus.com>
328
329         * call.c (build_method_call): Fix wording of error messages so
330         constructors come out right.
331
332 Tue Apr  2 16:06:59 1996  Bob Manson  <manson@charmed.cygnus.com>
333
334         * decl.c (push_overloaded_decl): Don't warn about hidden
335         constructors when both the type and the function are declared
336         in a system header file.
337
338 Mon Apr  1 09:03:13 1996  Bob Manson  <manson@charmed.cygnus.com>
339
340         * class.c (finish_struct_1): Propagate the TYPE_PACKED
341         flag for the type to the type's fields.
342
343 Sat Mar 30 12:14:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
344
345         * parse.y (complex_parmlist, ELLIPSES): Take out ARM-based warning.
346
347 Fri Mar 29 15:51:36 1996  Bob Manson  <manson@charmed.cygnus.com>
348
349         * class.c (base_info, finish_base_struct): Replace 
350         needs_virtual_dtor with base_has_virtual.
351
352         (finish_struct_1): Remove the old code that tried to make default
353         destructors virtual. Use base_has_virtual when checking if we need
354         to add a vtable entry for the rtti code.
355
356 Fri Mar 29 14:02:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
357
358         * pt.c (push_template_decl): Complain about template decl with
359         inappropriate declaration.
360
361 Fri Mar 29 12:15:35 1996  Bob Manson  <manson@charmed.cygnus.com>
362
363         * typeck.c (build_x_unary_op): Remove bogus check for taking
364         the address of a member function.
365
366 Fri Mar 29 11:56:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
367
368         * parse.y (constructor_declarator): Only push the class if
369         we are not already in the class.
370
371 Fri Mar 29 09:41:02 1996  Jeffrey A. Law  <law@cygnus.com>
372
373         * method.c (emit_thunk): Remove current_call_is_indirect nonsense.
374         Add additional argument to INIT_CUMULATIVE_ARGS.
375
376 Thu Mar 28 16:41:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
377
378         * decl.c (shadow_tag): Fix error about anon union with methods.
379
380         * parse.y (self_reference): Only generate a self-reference if this
381         is a non-template class.
382         (opt.component_decl_list): Only use it if it was generated.
383
384         * parse.y (component_decl_1): Use constructor_declarator.
385         (fn.def2): Ditto.
386         (notype_component_declarator0): Ditto.
387
388 Thu Mar 28 15:11:35 1996  Bob Manson  <manson@charmed.cygnus.com>
389
390         * typeck.c (build_x_unary_op): Add checks for taking the address
391         of a TARGET_EXPR or of a member function, and give appropriate
392         warnings.
393
394 Thu Mar 28 14:49:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
395
396         * pt.c (process_template_parm): Allow template type parms to be
397         used as types for template const parms.
398
399 Wed Mar 27 15:51:19 1996  Mike Stump  <mrs@cygnus.com>
400
401         * init.c (expand_vec_init): Ensure the eh cleanups are on the
402         function_obstack.
403
404 Wed Mar 27 10:14:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
405
406         * decl.c (lookup_name_real): Be even more picky about the
407         ambiguous lookup warning.
408         (grokdeclarator): Tweak SCOPE_REF constructor declarators here.
409         * parse.y (constructor_declarator): Rather than here.
410
411         * parse.y (constructor_declarator): New nonterminal.
412         (fn.def1): Use it.
413         (explicit_instantiation): Ditto.
414
415 Tue Mar 26 13:41:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
416
417         Add implicit declaration of class name at class scope.
418         * decl.c (lookup_name_real): Restrict pedwarn about ambiguous lookup.
419         * parse.y (self_reference): New nonterminal.
420         (opt.component_decl_list): Use it.
421         (fn.def1): Add nested_name_specifier type_name cases.
422         * class.c (build_self_reference): New function.
423         (finish_struct): Handle access_default later, move self-reference
424         decl to the end.
425         * pt.c (lookup_template_class): Handle getting a TYPE_DECL.
426         * cp-tree.h: Adjust.
427
428         * pt.c (do_function_instantiation): Separate handling of member
429         functions and non-member functions properly.
430
431 Mon Mar 25 14:23:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
432
433         * pt.c (process_template_parm): Improve error for 'volatile class K'.
434
435         * class.c (finish_struct_1): Check the right slot for destructors.
436
437         * decl.c (start_enum): Complain about enum templates.
438
439 Mon Mar 25 13:25:31 1996  Mike Stump  <mrs@cygnus.com>
440
441         * init.c (resolve_offset_ref): Offset pointers to member data by one.
442         * typeck.c (unary_complex_lvalue): Ditto.
443
444 Mon Mar 25 13:30:42 1996  Bob Manson  <manson@charmed.cygnus.com>
445
446         * typeck.c (c_expand_return): Check for a returned local
447         array name, similar to the check for an ADDR_EXPR.
448
449 Mon Mar 25 13:07:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
450
451         * decl.c (cp_finish_decl): Don't build cleanups for static
452         variables here.
453
454 Fri Mar 22 17:57:55 1996  Mike Stump  <mrs@cygnus.com>
455
456         * typeck.c (build_modify_expr): Fix error messages to be more
457         accurate.
458         * cp-tree.h (assop_as_string): Parallel to op_as_string, but for
459         assignment operators.
460         * error.c (assop_as_string): Ditto.  Add support for `%Q' for
461         assignment operators.
462
463 Fri Mar 22 13:48:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
464
465         * decl.c (grokdeclarator): Call bad_specifiers for typedefs.  Also
466         give an error if initialized.  Pedwarn about nested type with the
467         same name as its enclosing class.
468
469         * pt.c (tsubst, case TYPE_DECL): Set DECL_CONTEXT.
470
471         * typeck.c (require_complete_type): Be sure to instantiate the
472         MAIN_VARIANT of the type.
473
474         * decl2.c (finish_file): Instantiate pending templates before
475         processing static constructors and destructors.
476
477         * pt.c (instantiate_decl): Don't instantiate functions at toplevel
478         unless at_eof.
479
480 Fri Mar 22 09:30:17 1996  Bob Manson  <manson@beauty.cygnus.com>
481
482         * decl2.c (delete_sanity): If error_mark_node is passed
483         in as an expression, quit while we're ahead.
484
485         * decl.c (grokdeclarator): Give an error message if `friend'
486         is combined with any storage class specifiers.
487
488 Wed Mar 20 14:51:55 1996  Jason Merrill  <jason@yorick.cygnus.com>
489
490         * parse.y (named_complex_class_head_sans_basetype): Don't crash on
491         definition of nonexistent nested type.
492
493         * error.c (dump_decl, case TYPE_DECL): Fix decision for whether or
494         not to say 'typedef'.
495
496 Wed Mar 20 00:11:47 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
497
498         * cp-tree.h (struct lang_type): Make search_slot a tree, not a char*.
499         * search.c (dfs_walk, dfs_init_vbase_pointers,
500         expand_upcast_fixups): Remove cast of CLASSTYPE_SEARCH_SLOT.
501         (dfs_find_vbases): Remove cast for CLASSTYPE_SEARCH_SLOT init.
502
503 Tue Mar 19 17:56:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
504
505         * except.c (build_throw): Support minimal parse.
506         * pt.c (tsubst_copy): Support THROW_EXPR.
507         * decl2.c (build_expr_from_tree): Ditto.
508
509         * pt.c (mangle_class_name_for_template): Always allocate
510         scratch_firstobj.
511
512 Tue Mar 19 16:34:31 1996  Bob Manson  <manson@beauty.cygnus.com>
513
514         * cvt.c (cp_convert_to_pointer): Give an appropriate error
515         when trying to cast from an incomplete type.
516
517 Tue Mar 19 16:00:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
518
519         * pt.c (instantiate_class_template): Don't bother setting up
520         CLASSTYPE_TAGS explicitly, as the nested types will add
521         themselves.
522
523 Tue Mar 19 15:48:43 1996  Bob Manson  <manson@beauty.cygnus.com>
524
525         * decl.c (shadow_tag): Remove old error check for usage of
526         an enum without a previous declaration.
527         (xref_tag): Add error message about usage of enums without a
528         previous declaration.
529
530 Tue Mar 19 09:21:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
531
532         * lex.c (do_identifier): Only do name consistency check if we're
533         parsing.
534
535         * pt.c (push_template_decl): Don't crash if we get a member defn
536         that doesn't match.
537
538         * decl.c (xref_tag_from_type): New function to do an xref without
539         always having to figure out code_type_node.
540         * cp-tree.h: Declare it.
541         * pt.c (instantiate_class_template): Use it for friend classes.
542         (lookup_template_class): Use it.
543
544         * typeck2.c (build_functional_cast): Pull out a single parm before
545         passing it to build_c_cast.
546
547 Tue Mar 19 09:07:15 1996  Bob Manson  <manson@beauty.cygnus.com>
548
549         * expr.c (do_case): Give an error message if a pointer is
550         given as a case value.
551
552 Mon Mar 18 21:57:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
553
554         * typeck.c (build_c_cast): Don't pull single TEMPLATE_DECL out of
555         an overload list.
556
557         * lex.c (cons_up_default_function): Really, now, interface hackery
558         does not apply to synthesized methods.
559
560 Mon Mar 18 18:20:57 1996  Mike Stump  <mrs@cygnus.com>
561
562         * call.c (build_method_call): Ctors and dtors now have special names
563         with respect to lookups.
564         * class.c (add_method): Ditto.
565         (grow_method): Ditto.
566         (finish_struct_methods): Ditto.
567         (warn_hidden): Ditto.
568         (finish_struct_1): Ditto.
569         * cvt.c (convert_to_reference): Ditto.
570         (convert_to_aggr): Ditto.
571         (cp_convert): Ditto.
572         * decl2.c (check_classfn): Ditto.
573         * init.c (expand_member_init): Ditto.
574         (expand_default_init): Ditto.
575         (expand_aggr_init_1): Ditto.
576         (build_offset_ref): Ditto.
577         (build_new): Ditto.
578         (build_delete): Ditto.
579         * lex.c (do_inline_function_hair): Ditto.
580         * search.c (lookup_field_1): Ditto.
581         (lookup_fnfields_here): Ditto.
582         (lookup_field): Ditto.
583         (lookup_fnfields): Ditto.
584         (get_virtual_destructor): Ditto.
585         (dfs_debug_mark): Ditto.
586         (dfs_pushdecls): Ditto.
587         (dfs_compress_decls): Ditto.
588         * tree.c (layout_basetypes): Ditto.
589         * typeck.c (build_component_ref): Ditto.
590         (build_x_function_call): Ditto.
591         (build_modify_expr): Ditto.
592         (convert_for_initialization): Ditto.
593         (build_functional_cast): Ditto.
594         * cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Ditto.
595         (CTOR_NAME): New.
596         (DTOR_NAME): New.
597         * decl.c (ctor_identifier): New.
598         (dtor_identifier): New.
599         (init_decl_processing): Set them.
600
601 Mon Mar 18 18:00:51 1996  Mike Stump  <mrs@cygnus.com>
602
603         * typeck.c (build_component_ref): Don't get confused by fields whose
604         context has no type name, like pointer to member functions.
605
606 Mon Mar 18 13:19:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
607
608         * decl.c (grokdeclarator): Handle typedef without declarator.
609
610         * pt.c (tsubst): Handle SCOPE_REF in declarator.
611
612         * parse.y (bad_parm): Catch another case of missing `typename'.
613
614         * lex.c (yyprint): Handle TYPE_DECLs.
615
616         * decl.c (start_function): Don't try to be clever.
617
618         * lex.c: Lose compiler_error_with_decl.
619         * typeck2.c: Lose error_with_aggr_type.
620         (incomplete_type_error): Use cp_* instead of old functions.
621         (readonly_error): Ditto.
622         * typeck.c (convert_arguments): Ditto.
623         * search.c (lookup_nested_field): Ditto.
624         * method.c (make_thunk): Ditto.
625         * decl.c (grokparms): Ditto.
626         * cp-tree.h: Update.
627
628         * tree.c (min_tree_cons): Call copy_to_permanent for the purpose
629         and value.
630
631 Mon Mar 18 11:25:52 1996  Bob Manson  <manson@beauty.cygnus.com>
632
633         * method.c (build_opfncall): When deleting a pointer to an
634         array, build a new pointer to the tree past any ARRAY_TYPE
635         nodes.
636
637 Mon Mar 18 10:11:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
638
639         * decl.c (lookup_name_real): Initialize local var TYPE to NULL_TREE.
640
641 Fri Mar 15 11:03:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
642
643         * pt.c (instantiate_decl): Only call import_export_decl if at_eof
644         and ! DECL_INLINE.
645
646         * decl.c (finish_function): Don't set nested based on
647         hack_decl_function_context.
648         * parse.y (function_try_block): Check for nested function.
649         (pending_inlines): Ditto.
650
651         * decl2.c (build_expr_from_tree): If a unary op already has a
652         type, just return it.
653
654         * decl2.c (finish_prevtable_vardecl): Use ADJUST_VTABLE_LINKAGE.
655
656         * decl2.c (walk_vtables): vardecl_fn returns int; return 1 if it does.
657         (finish_file): Check the return value of walk_vtables.
658         (finish_prevtable_vardecl): Return int.
659         (finish_vtable_vardecl): Ditto.
660         (prune_vtable_vardecl): Ditto.
661         * lex.c (set_vardecl_interface_info): Ditto.
662         * cp-tree.h: Adjust return types.
663
664         * class.c (delete_duplicate_fields_1): Don't complain about
665         duplicate nested types if they're the same type.
666         (finish_struct): Remove check for duplicate.
667         * decl2.c (grokfield): Don't check for typedef of anonymous type.
668
669 Thu Mar 14 10:00:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
670
671         * cp-tree.h: Lose SIGNATURE_GROKKING_TYPEDEF.
672
673         * decl.c (grokdeclarator): Lose special handling of class-level
674         typedef.  Lose SIGNATURE_GROKKING_TYPEDEF.  Set
675         SIGNATURE_HAS_OPAQUE_TYPEDECLS later.
676
677         * cvt.c (convert_pointer_to_real): Retain cv-quals in conversion.
678
679         * pt.c (tsubst_copy): Strip cv-quals from destructor name types.
680
681         * search.c (compute_access): Fix handling of anonymous union
682         members.
683         * class.c (finish_struct_anon): Propagate TREE_{PRIVATE,PROTECTED}
684         from anonymous unions to their members.
685
686         * typeck.c (build_x_function_call): For static member functions,
687         hand off to build_member_call.
688
689 Wed Mar 13 14:03:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
690
691         * typeck.c (build_component_ref): Handle OFFSET_REFs.
692
693         * init.c (expand_vec_init): Fix init == 0 case.
694
695 Tue Mar 12 14:36:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
696
697         * init.c (build_new): Pedwarn about init and array new.
698         (expand_vec_init): Handle lists, use convert_for_initialization
699
700         * typeck.c (convert_for_initialization): Pass LOOKUP_NO_CONVERSION
701         when converting to an aggregate type.
702         * cvt.c (cp_convert): Pass it through.
703
704         * typeck.c (build_conditional_expr): Handle user-defined
705         conversions to slightly different types.
706
707         * decl.c (grokdeclarator): Force an array type in a parm to be
708         permanent.
709
710         * decl2.c (do_using_directive): Sorry.
711         (do_namespace_alias): Ditto.
712         * lex.c (real_yylex): Warn about using the `namespace' keyword.
713
714 Sun Mar 10 22:26:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
715
716         * parse.y (datadef): Move call to note_list_got_semicolon up.
717
718 Fri Mar  8 11:47:26 1996  Mike Stump  <mrs@cygnus.com>
719
720         * tree.c (unsave_expr): Don't unsave, UNSAVE_EXPRs.
721
722 Fri Mar  8 11:29:06 1996  Mike Stump  <mrs@cygnus.com>
723
724         * decl.c (cp_finish_decl): The exception regions have to be
725         nested, not overlapping.  We start the exception region for a
726         decl, after it has been fully built, and all temporaries for it
727         have been cleaned up.
728
729 Thu Mar  7 17:46:06 1996  Mike Stump  <mrs@cygnus.com>
730
731         * tree.c (vec_binfo_member): Don't core dump if we have no bases.
732
733 Thu Mar  7 14:11:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
734
735         * tree.def: Add RETURN_INIT.
736         * pt.c (instantiate_decl): Handle RETURN_INIT.
737         * decl.c (store_return_init): Handle minimal_parse_mode.
738
739         * tree.c (cp_build_type_variant): Just return an error_mark_node.
740         * decl.c (make_typename_type): Don't try to get the file and line
741         of an identifier.
742         * typeck.c (comptypes): Handle TYPENAME_TYPE.
743
744 Wed Mar  6 18:47:50 1996  Per Bothner  <bothner@kalessin.cygnus.com>
745
746         * decl.c (poplevel): Make sure we clear out and restore old local
747         non-VAR_DECL values by default when they go out of scope.
748
749 Wed Mar  6 09:57:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
750
751         * method.c (build_overload_value): Use DECL_ASSEMBLER_NAME in
752         referring to addresses of variables and functions.
753
754         * error.c (dump_expr): Support SIZEOF_EXPR.
755
756         * init.c (do_friend): Use the return value of check_classfn.
757
758         * typeck.c (convert_arguments): Call complete_type.
759
760         * method.c (hack_identifier): After giving an error, set value to
761         error_mark_node.
762
763 Tue Mar  5 16:00:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
764
765         * tree.c (hack_decl_function_context): Kludge around DECL_CONTEXT
766         lossage for local classes.
767         * cp-tree.h: Declare it.
768         * decl.c (lookup_name_real): Evil, painful hack for local classes.
769         (grokfndecl): Set DECL_CLASS_CONTEXT and DECL_NO_STATIC_CHAIN here.
770         Use hack_decl_function_context.
771         (grokdeclarator): Don't set DECL_NO_STATIC_CHAIN here.
772         (start_function): Use hack_decl_function_context.
773         (finish_function): Ditto.
774         * method.c (synthesize_method): Ditto.
775         * lex.c (process_next_inline): Ditto.
776         (do_pending_inlines): Ditto.
777         * decl2.c (finish_file): Unset DECL_STATIC_FUNCTION_P when we're
778         done with it.
779
780 Mon Mar  4 22:38:39 1996  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
781
782         * sig.c (build_signature_pointer_or_reference_type): Align
783         signature pointers/references on 8-byte boundaries so they can be
784         grabbed 2 words at a time on a Sparc.
785
786 Tue Mar  5 10:21:01 1996  Jason Merrill  <jason@yorick.cygnus.com>
787
788         * method.c (hack_identifier): Requiring a static chain is now a
789         hard error.
790         * decl.c (grokdeclarator): Set DECL_NO_STATIC_CHAIN on nested
791         functions.
792
793 Mon Mar  4 20:03:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
794
795         * init.c (build_offset_ref): Call complete_type.
796
797         * decl.c (pop_from_top_level): Always pop previous_class_type.
798
799         * parse.y: Handle multiple decls in a for-init-statement.
800         * pt.c (tsubst_expr): Ditto.
801
802         * pt.c (tsubst): Use tsubst_expr for the second operand of an
803         ARRAY_REF.
804
805         * decl.c (maybe_push_to_top_level): Don't save previous_class_type.
806         (poplevel_class): Set it here.
807         (pop_from_top_level): Pop it here if we're returning to class scope.
808         * class.c (pushclass): Don't set it here.
809
810         * decl.c (maybe_push_to_top_level): Save current_template_parms,
811         and clear it if !pseudo.
812         (pop_from_top_level): Restore it.
813
814         * decl2.c (finish_file): Push the dummy each time we walk the list
815         of vtables.
816
817         * error.c (dump_expr): Support LOOKUP_EXPR and actually do
818         something for CAST_EXPR.
819         
820 Mon Feb 19 14:49:18 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
821
822         * cvt.c (cp_convert): Warn about implicit conversion of the
823         address of a function to bool, as it is always true.
824
825 Fri Feb 23 23:06:01 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
826
827         * typeck.c (c_expand_return): Fix warning for local externs returned.
828
829 Mon Mar  4 15:03:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
830
831         * tree.c (mapcar): Propagate const and volatile properly.
832
833         * typeck.c (complete_type): Be sure to instantiate the
834         MAIN_VARIANT of the type.
835
836         * method.c (synthesize_method): Class interface hackery does not
837         apply to synthesized methods.
838
839 Mon Mar  4 14:05:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
840
841         * pt.c (comp_template_args): Use comptypes rather than just
842         checking for TEMPLATE_TYPE_PARM equivalence.
843
844         * typeck.c (build_x_function_call): Call complete_type before
845         checking TYPE_OVERLOADS_CALL_EXPR.
846
847 Mon Mar  4 18:48:30 1996  Manfred Hollstein   <manfred@lts.sel.alcatel.de>
848
849         * g++.c (main): Check also for new define ALT_LIBM.
850
851 Fri Mar  1 13:09:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
852
853         * pt.c (instantiate_class_template): If we don't have a pattern
854         yet, that's OK.
855         (coerce_template_parms): If we see a local class, bail.
856
857         * decl.c (grok_reference_init): Make sure there's a type before
858         checking its code.
859
860         * pt.c (do_function_instantiation): Avoid crashing on invalid decls.
861         (push_template_decl): Ditto.
862
863         * parse.y (named_class_head): Set
864         CLASSTYPE_TEMPLATE_SPECIALIZATION here if we have basetypes.
865
866         * decl.c (xref_tag): Diagnose redeclaration of template
867         type-parameter name.
868
869         * error.c (dump_type): Handle anonymous template type parms.
870
871         * pt.c (instantiate_template): Use TYPE_MAIN_DECL instead of
872         TYPE_STUB_DECL.
873         (coerce_template_parms): Ditto.
874
875 Thu Feb 29 16:26:01 1996  Mike Stump  <mrs@cygnus.com>
876
877         * class.c (instantiate_type, case {ARRAY,INDIRECT}_REF,
878         case ADDR_EXPR): Don't modify rhs if a subinstantiation fails.
879
880 Thu Feb 29 08:20:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
881
882         * pt.c (instantiate_template): Take the MAIN_VARIANT of the type
883         before trying to get its STUB_DECL.
884         (coerce_template_parms): Ditto.
885
886         * parse.y (template_type_parm): If they didn't use 'class',
887         pretend they did after giving an error.
888
889         * pt.c (coerce_template_parms): Diagnose use of local class.
890
891         * decl.c (grok_reference_init): Use instantiate_type.
892
893         * error.c (dump_expr): Handle TEMPLATE_DECLs.
894
895         * parse.y (named_class_head): Diagnose mismatching types and tags.
896
897         * decl.c (pushdecl): Type decls and class templates clash with
898         artificial type decls, not hide them.
899
900         * decl.c (redeclaration_error_message): Diagnose redefinition of
901         templates properly.
902         (duplicate_decls): Diagnose disallowed overloads for template
903         functions, too.
904
905         * decl.c (start_decl): Call complete_type before checking for a
906         destructor.
907
908         * pt.c (tsubst): Use tsubst_expr on the elts of a VEC.
909
910         * decl.c (xref_tag): A TEMPLATE_TYPE_PARM is a match.
911
912 Wed Feb 28 09:28:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
913
914         * decl.c (grok_op_properties): Don't check for operator++(int) in
915         a template.
916
917         * tree.c (perm_manip): Return a copy of variable and function
918         decls with external linkage.
919
920         * tree.def: Change some of the min tree codes to type "1".
921         * pt.c (uses_template_parms): Handle 'e's, return 1 for LOOKUP_EXPRs.
922         * method.c (build_overload_int): Emit something arbitrary for
923         anything but an INTEGER_CST if we're in a template.
924
925         * decl.c (cp_finish_decl): Call complete_type before deciding
926         whether or not to lay out the decl.
927
928         * lex.c (do_identifier): Check for DECL_INITIAL before using it.
929
930 Tue Feb 27 16:35:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
931
932         * typeck2.c (build_x_arrow): Call complete_type.
933
934         * pt.c (add_pending_template): Broken out.
935         (lookup_template_class): If -fexternal-templates, call it for all
936         the methods of implemented types.
937         (instantiate_class_template): Instead of instantiating them here.
938         (instantiate_decl): Handle -fexternal-templates earlier.
939
940 Tue Feb 27 15:51:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
941
942         * search.c, lex.c, decl.c, class.c, cp-tree.h: Don't wrap the
943         memoized lookup stuff inside GATHER_STATISTICS.
944
945 Tue Feb 27 10:38:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
946
947         * decl.c (start_decl): Complain about array of incomplete type
948         here.
949         (grokdeclarator): Not here.
950
951         * parse.y (template_parm): Expand full_parm inline so we can set
952         the rule's precedence.
953
954         * pt.c (tsubst_expr): If we're in a template, just do tsubst_copy.
955         (tsubst): tsubst_expr the DECL_INITIAL of FIELD_DECLs.
956         * decl2.c (grokbitfield): Don't check for integer constant here.
957         * class.c (finish_struct_1): Check here.
958
959         * decl.c (define_label): Make the min decl go on permanent_obstack.
960
961         * pt.c (unify): Don't handle CONST_DECLs.
962         (uses_template_parms): Don't check DECL_INITIAL on a CONST_DECL.
963         (tsubst_copy): Ditto.
964
965         * lex.c (do_identifier): Do pull the DECL_INITIAL out of a
966         CONST_DECL for a template parm.
967
968 Mon Feb 26 12:48:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
969
970         * decl.c (grokdeclarator): Complain about array of incomplete type
971         here.
972         (start_decl_1): Not here.
973
974         * pt.c (tsubst): Handle pointer-to-function declarators.
975
976         * method.c (hack_identifier): If pedantic, diagnose local class
977         methods that require a static chain.
978
979         * decl.c (grok_op_properties): No longer static.
980         * cp-tree.h: Declare it.
981         * pt.c (tsubst): Call it for operators.
982         Use tsubst_copy for TREE_VECs.
983
984         * parse.y (template_arg): The expr has precedence like '>'.
985
986 Fri Feb 23 14:51:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
987
988         * pt.c (coerce_template_parms): Don't coerce an expression using
989         template parms.
990         (uses_template_parms): Also check DECL_INITIAL in CONST_DECLs.
991         (tsubst): Don't use build_index_2_type if the max_value uses template
992         parms.
993         * method.c (build_overload_int): Emit something arbitrary for an
994         expression using template parms.
995
996         * parse.y (template_close_bracket): New non-terminal to catch use
997         of '>>' instead of '> >' in template class names.
998         (template_type): Use it.
999         * Makefile.in (CONFLICTS): Causes one more r/r conflict.
1000
1001         * tree.def: Add CAST_EXPR.
1002         * typeck2.c (build_functional_cast): Use CAST_EXPR instead of
1003         CONVERT_EXPR for minimal_parse_mode.
1004         * typeck.c (build_c_cast): Ditto.
1005         * pt.c (tsubst_copy): Ditto.
1006         * decl2.c (build_expr_from_tree): Ditto.
1007         * error.c (dump_expr): Ditto.
1008
1009 Fri Feb 23 10:36:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1010
1011         * except.c (SetTerminate, SetUnexpected): Put back global vars.
1012         (init_exception_processing): Put back decl/init of
1013         set_unexpected_fndecl and set_terminate_fndecl, needed to get the
1014         fns from libstdc++.
1015
1016         * decl.c (struct binding_level): Delete ACCEPT_ANY bitfield.
1017         (declare_uninstantiated_type_level, uninstantiated_type_level_p):
1018         Delete unused fns.
1019         * cp-tree.h (declare_uninstantiated_type_level,
1020         uninstantiated_type_level_p): Delete prototypes.
1021
1022 Thu Feb 22 19:36:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
1023
1024         * pt.c (tsubst_expr): Add default return.
1025
1026 Thu Feb 22 16:47:24 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1027
1028         * error.c (fndecl_as_string): Delete unused arg CNAME.
1029         * sig.c (build_signature_table_constructor,
1030         build_signature_method_call): Fix calls.
1031
1032         * class.c (the_null_vtable_entry): Delete var definition.
1033         (init_class_processing): Delete tree the_null_vtable_entry init.
1034         * decl.c (no_print_{functions, builtins}): Declare as static.
1035         (__tp_desc_type_node): #if 0 var definition.
1036         (init_type_desc): #if 0 init of __tp_desc_type_node.
1037         (vb_off_identifier): Move var decl into init_decl_processing.
1038         (current_function_assigns_this): Declare as static.
1039         (int_ftype_ptr_ptr_int, void_ftype_ptr_int_int): Delete var decls.
1040         (init_decl_processing): Delete init of void_ftype_ptr_ptr_int.
1041         Move decls of string_ftype_ptr_ptr and int_ftype_string_string here.
1042         * decl2.c (delete_sanity): Delete definition/mod of local var ELT_SIZE.
1043         * init.c (BI_header_type, BI_header_size): Declare as static.
1044         * pt.c (template_classes): Delete unused var.
1045         (add_pending_template): Delete decl for non-existent fn.
1046         (lookup_template_class): Delete vars CODE and TAG_CODE.
1047         (instantiate_template): Delete unused var TARGS.
1048         * cp-tree.h (vb_off_identifier, current_function_assigns_this):
1049         Delete decls.
1050         (__tp_desc_type_node): #if 0 var decl.
1051         (fndecl_as_string): Fix prototype.
1052
1053 Thu Feb 22 15:56:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
1054
1055         * tree.def: Add GOTO_STMT.
1056         * pt.c (tsubst_expr): Support goto and labels.
1057         * decl.c (define_label): Support minimal parsing.
1058         * parse.y (simple_stmt): Ditto.
1059
1060 Thu Feb 22 15:30:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1061
1062         * xref.c (GNU_xref_member): Only define/set var I if
1063         XREF_SHORT_MEMBER_NAMES is defined, to match when it's actually
1064         used.
1065         (GNU_xref_end_scope): Delete unused fifth arg TRNS.
1066         (GNU_xref_end): Fix call.
1067         * decl.c (poplevel, poplevel_class, finish_method): Fix calls.
1068         * cp-tree.h (GNU_xref_end_scope): Fix prototype.
1069
1070         * tree.c (build_exception_variant): Delete unused vars I, A, T,
1071         T2, and CNAME.
1072         (layout_vbasetypes): Delete unused var NONVIRTUAL_VAR_SIZE.
1073         (mapcar): Delete unused var CODE.
1074         (build_cplus_new): Delete unused arg WITH_CLEANUP_P.
1075         (break_out_cleanups): Fix call.
1076         (bot_manip): Likewise.
1077         * call.c (build_method_call): Likewise.
1078         * cvt.c (build_up_reference, convert_to_reference, cp_convert):
1079         Likewise.
1080         * typeck.c (unary_complex_lvalue, build_modify_expr,
1081         convert_for_initialization): Likewise.
1082         * typeck2.c (build_functional_cast): Likewise.
1083         * cp-tree.h (build_cplus_new): Fix prototype.
1084
1085         * repo.c (open_repo_file): Delete unused var Q.
1086         (repo_compile_flags, repo_template_declared,
1087         repo_template_defined, repo_class_defined, repo_inline_used,
1088         repo_vtable_used, repo_tinfo_used): #if 0 unused fns.
1089         (repo_get_id, repo_vtable_used): Declare as static. 
1090         * cp-tree.h (mark_{decl,class}_instantiated, finish_repo): Add
1091         prototypes.
1092
1093 Thu Feb 22 14:53:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
1094
1095         * parse.y (pending_inlines): Add function_try_block case.
1096
1097         * pt.c (unify): Fix for template const parms.
1098
1099 Thu Feb 22 13:24:15 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1100
1101         * lex.c (extract_interface_info): Delete forward decl.
1102         (default_copy_constructor_body, default_assign_ref_body): Delete
1103         decls for non-existent functions.
1104         (synth_firstobj, inline_text_firstobjs): Delete unused vars.
1105         (init_lex): Delete setting them.
1106         (cons_up_default_function): Delete unused vars FUNC_BUF,
1107         FUNC_LEN, and COMPLEX.  Delete code setting COMPLEX.  Delete old
1108         #if 0'd synth code.
1109         (toplevel, expression_obstack): Delete unused extern decls.
1110         (tree_node_kind): Delete unused enum.
1111         (tree_node_counts, tree_node_sizes): Wrap with #ifdef
1112         GATHER_STATISTICS.
1113         (tree_node_kind_names): Delete unused extern decl.
1114         (synth_obstack): Delete unused var.
1115         (init_lex): Don't set it.
1116         (init_parse): Add decl before use.
1117         (reduce_count): Only define #ifdef GATHER_STATISTICS && REDUCE_LENGTH.
1118         (current_unit_{name, language}): Delete unused vars. 
1119         (check_newline): Don't bother setting them, just accept the #pragma.
1120         * cp-tree.h (init_repo, peek_yylex): Add prototypes.
1121         (current_unit_{name, language}): Delete decls.
1122
1123         * search.c: Wrap all of the memoized functions, macros, and
1124         variables inside #ifdef GATHER_STATISTICS.
1125         (lookup_field, lookup_fnfields): Likewise.
1126         (init_search_processing): Likewise.
1127         (reinit_search_statistics): Wrap whole function.
1128         * lex.c (reinit_lang_specific): Wrap call to reinit_search_statistics.
1129
1130         * decl.c (finish_function): Only call pop_memoized_context if
1131         GATHER_STATISTICS is defined.
1132         (start_function): Likewise for push_memoized_context.
1133         * class.c (pushclass, popclass): Likewise.
1134
1135         * cp-tree.h (CLASSTYPE_MTABLE_ENTRY): Move definition from here...
1136         * search.c (CLASSTYPE_MTABLE_ENTRY): ... to here.
1137
1138         * cvt.c (cp_convert): Delete unused local var FORM.
1139         * cp-tree.h (can_convert, can_convert_arg, real_lvalue_p): Add
1140         prototypes.
1141
1142 Thu Feb 22 13:19:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
1143
1144         * pt.c (do_poplevel): Oops; really return what we get from
1145         poplevel this time.
1146
1147 Thu Feb 22 11:41:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1148
1149         * cp-tree.h (is_aggr_type): Add prototype.
1150
1151         * cp-tree.h ({push,pop}_cp_function_context): Add decls.
1152         * method.c ({push,pop}_cp_function_context): Delete decls.
1153         * except.c (start_eh_unwinder, end_eh_unwinder): Declare as void.
1154         (SetUnexpected, SetTerminate): Delete unused vars.
1155         (init_exception_processing): Don't set SetUnexpected or
1156         SetTerminate.  Don't set SET_UNEXPECTED_FNDECL or SET_TERMINATE_FNDECL.
1157         (output_exception_table_entry): Delete unused array LABEL.
1158         (expand_internal_throw): Delete unused var PARAMS.
1159         (expand_start_catch_block): Delete unused var CLEANUP.
1160         (emit_exception_table): Delete unused var EH_NODE_DECL.
1161         (expand_builtin_throw): Delete unused vars UNWIND_AND_THROW and
1162         GOTO_UNWIND_AND_THROW.  Don't set them.
1163         (end_eh_unwinder): Add top decl.
1164         (pop_rtl_from_perm): Delete unused decl of PERMANENT_OBSTACK.
1165         (exception_section, push_rtl_perm, do_function_call,
1166         lang_interim_eh, push_eh_cleanup, eh_outer_context,
1167         expand_end_eh_spec, end_eh_unwinder): Declare as static.
1168         (saved_pc, saved_throw_type, saved_throw_value, saved_cleanup,
1169         throw_used): Likewise.
1170         * cp-tree.h (expand_end_eh_spec): Delete prototype.
1171
1172         * search.c (dfs_mark, dfs_mark_vtable_path,
1173         dfs_unmark_vtable_path, dfs_mark_new_vtable,
1174         dfs_unmark_new_vtable, dfs_clear_search_slot,
1175         dfs_search_slot_nonempty_p, bfs_markedp, bfs_unmarkedp,
1176         bfs_marked_vtable_pathp, bfs_unmarked_vtable_pathp,
1177         bfs_marked_new_vtablep, bfs_unmarked_new_vtablep): #if 0 unused
1178         functions.
1179         (n_fields_searched, n_calls_lookup_field, n_calls_lookup_field_1,
1180         n_calls_lookup_fnfields, n_calls_lookup_fnfields_1,
1181         n_calls_get_base_type, n_outer_fields_searched, n_contexts_saved):
1182         Only define #ifdef GATHER_STATISTICS.
1183         (reinit_search_statistics): Only init some vars if GATHER_STATISTICS
1184         is defined.
1185         (vbase_decl): Delete var definition.
1186         (init_search): Delete old decl.
1187         (init_vbase_pointers): Delete building of VBASE_DECL, since it's
1188         never actually used.
1189         (expand_indirect_vtbls_init): Delete init of VBASE_DECL.
1190         (get_base_distance_recursive): Delete unused fourth arg
1191         BASETYPE_PATH.  Fix call .
1192         (get_base_distance): Fix call.
1193         (push_class_decls): Delete unused var ID.
1194         (make_memoized_table_entry): Declare as static.
1195         (breadth_first_search): Declare as static.
1196         (tree_has_any_destructor_p): Declare as static.
1197         (pop_class_decls): Delete unused arg pop_class_decls.
1198         * class.c (popclass): Fix call to pop_class_decls.
1199         * cp-tree.h (make_memoized_table_entry, breadth_first_search,
1200         tree_has_any_destructor_p): Delete prototypes.
1201
1202         * rtti.c (build_ptmf_desc): Delete unused arg TYPE.
1203         (build_t_desc): Fix call.  Delete unused vars ELEMS and TT.
1204         (build_dynamic_cast): Delete unused local vars TMP1 and RETVAL.
1205         (build_user_desc): Delete unused var T.
1206         (build_class_desc): Delete unused vars T and OFF.
1207         (build_t_desc): Delete unused var NAME_STRING.
1208         (build_headof): Make static.
1209         (get_bad_cast_node): Likewise.
1210         (get_def_to_follow): Likewise.
1211         * cp-tree.h (init_type_desc): Add prototype.
1212         (build_headof): Remove prototype.
1213
1214 Thu Feb 22 00:54:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
1215
1216         * pt.c (tsubst): Only look for matching decls at file scope for
1217         non-member functions.
1218
1219         * call.c (build_scoped_method_call): Handle scoped destructor
1220         calls in templates.
1221
1222         * decl.c (*_top_level): Also save previous_class_values.
1223
1224         * pt.c (tsubst_expr): Support do {} while loops.
1225         * parse.y (simple_stmt): Ditto.
1226         * tree.def: Ditto.
1227
1228         * method.c (build_overload_identifier): For a class nested in a
1229         template class, don't mangle in the template parms from our
1230         context.
1231
1232         * lex.c, cp-tree.h: Remove support for template instantiations in
1233         the pending_inlines code.
1234         * pt.c: Remove dead functions and unused arguments.
1235         (uses_template_parms): TYPENAME_TYPEs always use template parms.
1236         * parse.y: Stop passing anything to end_template_decl.
1237         * tree.c (print_lang_statistics): Only print tinst info #ifdef
1238         GATHER_STATISTICS.
1239
1240 Wed Feb 21 16:57:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1241
1242         * init.c (expand_recursive_init{,_1}): Delete decls. 
1243         (sort_member_init): Delete unused var INIT.
1244         (emit_base_init): Delete unused var X.
1245         (build_offset_ref): Delete unused var CNAME.
1246         (sort_member_init): Delete unused var FIELDS_TO_UNMARK.
1247         (emit_base_init): Delete unused local var BASE.  Delete extern
1248         decl of IN_CHARGE_IDENTIFIER.
1249         (build_delete): Delete unused local var VIRTUAL_SIZE.
1250
1251         * init.c (build_vec_delete): Delete unused third arg ELT_SIZE.
1252         (build_delete): Fix call.
1253         * decl2.c (delete_sanity): Likewise.
1254         * cp-tree.h (build_vec_delete): Update prototype.
1255
1256         * typeck.c (common_base_type): Delete unused var TMP.
1257         (build_binary_op): Delete local var ARGS_SAVE.
1258         (build_array_ref): Delete unused var ITYPE.
1259         (c_expand_return): Delete unused var USE_TEMP.
1260
1261         * typeck.c (compexcepttypes): Delete unused arg STRICT.
1262         (comptypes): Fix calls.
1263         * decl.c (duplicate_decls): Likewise.
1264         * cp-tree.h (compexcepttypes): Delete extra arg.
1265
1266         * decl2.c (check_classfn): Delete unused second arg CNAME.
1267         * decl.c (start_decl, grokfndecl): Fix calls.
1268         * init.c (do_friend): Likewise.
1269         * cp-tree.h (check_classfn): Update prototype.
1270
1271         * cp-tree.h (signature_error, import_export_vtable,
1272         append_signature_fields, id_in_current_class, mark_used,
1273         copy_assignment_arg_p): Add decls.
1274         * decl2.c (mark_used): Delete decl.
1275
1276         * class.c (n_*): Wrap with #ifdef GATHER_STATISTICS.
1277
1278         * class.c (get_vtable_entry): Diable unused function.
1279         (doing_hard_virtuals): Delete unused static global var.
1280         (finish_struct_1): Don't init DOING_HARD_VIRTUALS.
1281         (prepare_fresh_vtable): Delete unused vars PATH and RESULT.
1282         (overrides): Delete unused vars RETTYPE and BASE_RETTYPE.
1283         (modify_one_vtable): Delete unused var OLD_RTTI.
1284         (finish_struct_anon): Delete unused vars OFFSET and X.
1285         (finish_struct_bits): Delete unused var METHOD_VEC.
1286         (get_basefndecls): Delete unused var PURPOSE.  Delete unused
1287         for-scope local variable METHODS.
1288
1289         * call.c (user_harshness): Delete unused/unneeded arg PARM.
1290         (ideal_candidate): Delete unused args BASETYPE and PARMS.
1291         (build_method_call): Delete unused args passed into ideal_candidate.
1292         (build_overload_call_real): Likewise.  Delete unused var OVERLOAD_NAME.
1293         * cp-tree.h (synthesize_method): Add decl.
1294
1295         * decl.c (note_level_for_for): Give void return type.
1296         (pushdecl_nonclass_level): Likewise.
1297         (finish_function): Delete unused vars VFIELDS and ALLOCATED_THIS.
1298         (poplevel): Delete unused var IMPLICIT_TRY_BLOCK.
1299         (suspend_binding_level): Delete unused var LEVEL.
1300         (duplicate_decls): Delete unused var CTYPE.
1301         (duplicate_decls): Delete unused var PREVIOUS_C_DECL.
1302         (init_decl_processing): Delete unused vars FLOAT_ENDLINK and
1303         PTR_ENDLINK.
1304         (grokdeclarator): Delete unused var C.
1305         (grokdeclarator): Delete unused var SIZE_VARIES.
1306         (grokparms): Delete unused var SAW_VOID.
1307         (start_function): Delete unused var OLDDECL.
1308         (cplus_expand_expr_stmt): Delete unused var
1309         REMOVE_IMPLICIT_IMMEDIATELY. 
1310
1311         * cp-tree.h (pushdecl_nonclass_level): Fix prototype.
1312
1313         * Makefile.in (CONFLICTS): Update to 12 shift/reduce.
1314
1315 Wed Feb 21 00:06:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
1316
1317         * tree.c (build_min): Set TREE_COMPLEXITY to lineno.
1318         (build_min_nt): Ditto.
1319         * pt.c (do_pushlevel): Emit line note.
1320         (do_poplevel): Return what we get from poplevel.
1321         (tsubst_expr): Set lineno from TREE_COMPLEXITY in stmt nodes.
1322         * parse.y: Use do_pushlevel and do_poplevel.
1323         * cp-tree.h: Declare do_poplevel.
1324         
1325         * cp-tree.h: Declare at_eof.
1326         * decl.c (cp_finish_decl): Pass it to rest_of_decl_compilation.
1327         * decl2.c (import_export_decl): Renamed from import_export_inline.
1328         (finish_file): Call it to do interface handling for statics.
1329         * pt.c (tsubst_copy): Call mark_used on variables and functions
1330         used here.
1331
1332         * decl2.c (finish_file): Don't emit statics we can't generate.
1333         * pt.c (instantiate_decl): Don't set interface on instantiations
1334         we can't generate.
1335
1336         * cp-tree.h (struct tinst_level): Change 'classname' to 'decl'.
1337         * tree.c (print_lang_statistics): Print max template depth.
1338         * pt.c (push_tinst_level): Dump entire instantiation context.
1339         (instantiate_class_template): Use it and pop_tinst_level.
1340         (instantiate_decl): Ditto.
1341
1342         * call.c class.c cp-tree.h decl.c decl2.c error.c lex.c method.c
1343         pt.c ptree.c tree.def: Remove all traces of UNINSTANTIATED_P_TYPE.
1344
1345 Tue Feb 20 18:21:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
1346
1347         * call.c class.c cp-tree.h cvt.c decl.c decl2.c error.c expr.c
1348         init.c lex.c method.c parse.y pt.c repo.c search.c spew.c tree.c
1349         tree.def typeck.c typeck2.c xref.c: Massive, systemic changes for
1350         the new template implementation.
1351
1352 Tue Feb 20 17:14:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1353
1354         * decl2.c (check_cp_case_value): Use STRIP_TYPE_NOPS.
1355
1356 Thu Feb 15 18:44:42 1996  Mike Stump  <mrs@cygnus.com>
1357
1358         * decl.c (cp_finish_decl): Delay emitting the debug information for
1359         a typedef that has been installed as the canonical typedef, if the
1360         type has not yet been defined.
1361
1362 Thu Feb 15 09:39:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
1363
1364         * decl2.c (grokfield): Still call pop_nested_class for access decls.
1365
1366 Wed Feb 14 17:30:04 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1367
1368         * decl.c (lookup_label): Call label_rtx.
1369
1370         * decl.c (make_binding_level): New function.
1371         (pushlevel, pushlevel_class): Call it instead of explicit
1372         duplicate calls to xmalloc.
1373
1374         * decl.c (init_decl_processing): Delete useless build_pointer_type
1375         call.
1376
1377         * decl.c (float_ftype_float, ldouble_ftype_ldouble): Add definitions.
1378         (sizet_ftype_string): Delete variable.
1379         (init_decl_processing): Add built-in functions fabsf, fabsl,
1380         sqrtf, sqrtl, sinf, sin, sinl, cosf, cos, cosl.  New local
1381         variable strlen_ftype, used for strlen.
1382
1383 Wed Feb 14 16:21:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
1384
1385         * decl.c (push_to_top_level): Start from current_binding_level
1386         again for now; the stl hacks depend on g++ being broken in this
1387         way, and it'll be fixed in the template rewrite.
1388
1389         * tree.def: Add USING_DECL.
1390         * decl2.c (do_class_using_decl): Implement.
1391         (grokfield): Pass access decls off to do_class_using_decl instead of
1392         grokdeclarator.
1393         * error.c (dump_decl): Handle USING_DECLs.
1394         * decl.c (grokdeclarator): Remove code for handling access decls.
1395         * class.c (finish_struct_1): Adjust accordingly, treat using-decls
1396         as access decls for now.
1397         (finish_struct): Don't check USING_DECLs for other uses of the name.
1398
1399         * search.c (get_matching_virtual): Use cp_error_at.
1400
1401 Wed Feb 14 10:36:58 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1402
1403         * typeck.c (comptypes): Default COMP_TYPE_ATTRIBUTES to 1, to
1404         match c-typeck.c.
1405         (self_promoting_args_p): Move the check that TYPE is non-nil
1406         before trying to look at its main variant.
1407         (unsigned_type, signed_type): Add checking of DI/SI/HI/QI nodes.
1408
1409         * cp-tree.h (DECL_WAITING_FRIENDS, SET_DECL_WAITING_FRIENDS):
1410         Delete macros.
1411         * init.c (xref_friend, embrace_waiting_friends): Delete functions.
1412         (do_friend): Delete call to xref_friend.
1413         * class.c (finish_struct_1): Delete call to embrace_waiting_friends.
1414
1415         * typeck.c (convert_sequence): #if 0 unused function.
1416
1417         * cp-tree.h (DECL_IN_MEMORY_P): New macro w/ the check that used to
1418         be in decl_in_memory_p.
1419         (decl_in_memory_p): Delete decl.
1420         * expr.c (decl_in_memory_p): Delete fn.
1421         * typeck.c (mark_addressable): Use DECL_IN_MEMORY_P.
1422
1423         * decl.c (cp_finish_decl): Use DECL_IN_MEMORY_P.
1424
1425 Tue Feb 13 12:51:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
1426
1427         * class.c (finish_struct_1): Check for a pure-specifier on a
1428         non-virtual function here.
1429
1430         * decl2.c (grok_function_init): Don't check whether the function
1431         is virtual here.
1432         (grokfield): Don't call check_for_override here.
1433
1434         * decl.c (push_to_top_level): Start from inner_binding_level,
1435         check class_shadowed in class levels.
1436
1437 Mon Feb 12 17:46:59 1996  Mike Stump  <mrs@cygnus.com>
1438
1439         * decl.c (resume_level): Ignore things that don't have names, instead
1440         of core dumping.
1441
1442 Mon Feb 12 15:47:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1443
1444         * decl2.c (grokfield): Set DECL_VINDEX properly for FUNCTION_DECLs.
1445
1446 Sat Feb 10 17:59:45 1996  Jason Merrill  <jason@yorick.cygnus.com>
1447
1448         * class.c (finish_struct_1): Set DECL_VINDEX properly on a
1449         synthesized dtor.
1450
1451         * parse.y (complete_type_name): Bind global_scope earlier.
1452         (complex_type_name): Ditto.
1453         (qualified_type_name): Remove.
1454
1455 Thu Feb  8 15:15:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
1456
1457         * decl.c (grokfndecl): Move code that looks for virtuals in base
1458         classes...
1459         * class.c (check_for_override): ... to a new function.
1460         (finish_struct_1): Call it.
1461
1462         * cp-tree.h: Declare warn_sign_compare.
1463
1464         * typeck.c (build_binary_op_nodefault): Check warn_sign_compare
1465         rather than extra_warnings to decide whether to warn about
1466         comparison of signed and unsigned.
1467
1468         * decl2.c (lang_decode_option): Handle warn_sign_compare.  -Wall
1469         implies -Wsign-compare.  -Wall doesn't imply -W.
1470
1471 Wed Feb  7 15:27:57 1996  Mike Stump  <mrs@cygnus.com>
1472
1473         * typeck.c (build_component_ref): Fix to handle anon unions in base
1474         classes as well.
1475
1476 Wed Feb  7 14:29:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1477
1478         * class.c (resolves_to_fixed_type_p): Delete code dealing with
1479         a WITH_CLEANUP_EXPR, since we don't generate them any more.
1480         * cvt.c (build_up_reference): Likewise.
1481         * decl.c (grok_reference_init): Likewise.
1482         (cp_finish_decl): Likewise.
1483         * error.c (dump_expr): Likewise.
1484         * tree.c (real_lvalue_p): Likewise.
1485         (lvalue_p): Likewise.
1486         (build_cplus_new): Likewise.
1487         (unsave_expr_now): Likewise.
1488         * typeck.c (unary_complex_lvalue, build_modify_expr,
1489         c_expand_return): Likewise.
1490
1491 Tue Feb  6 13:39:22 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1492
1493         Make the C++ front-end pay attention to attributes for structures.
1494         * class.c (finish_struct): New argument ATTRIBUTES, passed down into
1495         finish_struct_1.
1496         (finish_struct_1): New argument ATTRIBUTES; call cplus_decl_attributes.
1497         Take out old round_up_size use and setting the DECL_ALIGN possibly
1498         using it.  Take out setting of TYPE_ALIGN to round_up_size, which
1499         can override what the attribute set.
1500         * cp-tree.h (finish_struct): Update prototype.
1501         * parse.y (template_instantiate_once): Pass a NULL_TREE for the
1502         attributes to finish_struct.
1503         (structsp): For a CLASS decl, add maybe_attribute to rule and pass that
1504         value down into finish_struct.
1505         * Makefile.in (CONFLICTS): Switch to 7 shift/reduce conflicts.
1506
1507 Tue Feb  6 13:12:15 1996  Per Bothner  <bothner@kalessin.cygnus.com>
1508
1509         * decl.c (poplevel):  Re-word dead for local handling.
1510         (pushdecl):  Remove useless DECL_DEAD_FOR_LOCAL test.
1511         (cp_finish_decl):  If is_for_scope, check for duplicates so
1512         we can disable is_for_scope.  Otherwise, preserve_temp_slots.
1513
1514         * lex.c (do_identifier):  Use global binding in preference of
1515         dead for local variable.
1516
1517 Mon Feb  5 17:46:46 1996  Mike Stump  <mrs@cygnus.com>
1518
1519         * init.c (initializing_context): Handle anon union changes, the
1520         context where fields of anon unions can be initialized now has to be
1521         found by walking up the TYPE_CONTEXT chain.
1522
1523 Fri Feb  2 14:54:04 1996  Doug Evans  <dje@charmed.cygnus.com>
1524
1525         * decl.c (start_decl): #ifdef out code to set DECL_COMMON
1526         if ASM_OUTPUT{,_ALIGNED}_BSS is defined.
1527         (obscure_complex_init): If bss is supported, always set
1528         DECL_INITIAL to error_mark_node.
1529
1530 Thu Feb  1 16:19:56 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1531
1532         * init.c (is_friend): Make sure there's a context before we see if
1533         it's an aggr type.
1534
1535 Thu Feb  1 15:44:53 1996  Mike Stump  <mrs@cygnus.com>
1536
1537         * init.c (is_friend): Classes are not friendly with nested classes.
1538
1539 Thu Feb  1 15:27:37 1996  Doug Evans  <dje@charmed.cygnus.com>
1540
1541         * lex.c (check_newline): Pass last character read to HANDLE_PRAGMA,
1542         and record its result.
1543
1544 Thu Feb  1 09:27:01 1996  Mike Stump  <mrs@cygnus.com>
1545
1546         * class.c (finish_struct_anon): Switch around code to not move anon
1547         union elements around, nor mess up their contexts, nor offsets,
1548         instead we now build up the right number of COMPONENT_REFs for all
1549         the anon unions that may be present at build_component_ref time.
1550         * typeck.c (lookup_anon_field): New routine to handle field lookup
1551         on fields without names.  We find them, based upon their unique type
1552         instead.
1553         * typeck.c (build_component_ref): Allow FIELD_DECL components.
1554         Handle finding components in anonymous unions, and ensure that a
1555         COMPONENT_REF is built for each level as necessary.
1556
1557 Tue Jan 30 18:18:23 1996  Mike Stump  <mrs@cygnus.com>
1558
1559         * cvt.c (build_up_reference): Make the INDIRECT_BIND case come after
1560         code that ensures that copy ctors are used if appropriate.
1561
1562 Tue Jan 30 17:35:14 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1563
1564         * init.c (build_vec_delete): Only give an error if base isn't an
1565         error_mark_node.
1566
1567 Mon Jan 29 17:09:06 1996  Mike Stump  <mrs@cygnus.com>
1568
1569         * spew.c (do_aggr): `new struct S;' isn't a forward declaration.
1570         (yylex): If we see `new', keep slurping.
1571
1572 Thu Jan 25 18:31:36 1996  Mike Stump  <mrs@cygnus.com>
1573
1574         * class.c (finish_struct_1): Move code for handling anon unions...
1575         (finish_struct_anon): to here.  Fixup so that we do the offset
1576         calculations right, and so that the fields are physically moved to
1577         the containers's chain.
1578
1579 Thu Jan 25 18:27:37 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1580
1581         * decl.c (grokdeclarator): Avoid trying to get an operand off an
1582         identifier node.
1583
1584 Wed Jan 24 11:25:30 1996  Jim Wilson  <wilson@chestnut.cygnus.com>
1585
1586         * typeck.c (pointer_int_sum): Use TYPE_PRECISION (sizetype) not
1587         POINTER_SIZE to agree with expr.c.
1588
1589 Thu Jan 25 13:01:23 1996  Mike Stump  <mrs@cygnus.com>
1590
1591         * search.c (lookup_field): Don't report ambiguities if protect is 0,
1592         instead return NULL_TREE.
1593
1594 Wed Jan 24 13:01:26 1996  Mike Stump  <mrs@cygnus.com>
1595
1596         * class.c (finish_struct_1): Call warn_hidden if we want warnings
1597         about overloaded virtual functions.
1598         (warn_hidden): New routine to warn of virtual functions that are
1599         hidden by other virtual functions, that are not overridden.
1600         (get_basefndecls): New routine, used by warn_hidden.
1601         (mark_overriders): New routine, used by warn_hidden.
1602         * search.c (get_matching_virtual): Remove old warning that just
1603         isn't very useful.
1604
1605 Tue Jan 23 12:26:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1606
1607         * decl.c (output_builtin_tdesc_entries): #if 0 the function definition.
1608
1609         * typeck.c (null_ptr_cst_p): Delete unused fn.
1610         (build_function_call_maybe): Delete unused fn.
1611
1612         * expr.c (extract_init): #if 0 the code after unconditional return 0
1613         for now.
1614
1615         Delete old cadillac code.
1616         * edsel.c: Remove file.
1617         * Make-lang.in (CXX_SRCS): Take edsel.c off the list.
1618         * Makefile.in (CXX_OBJS): Delete edsel.o.
1619         (edsel.o): Delete rule.
1620         * cp-tree.h (flag_cadillac): Delete var decl.
1621         * lang-options.h: Delete "-fcadillac" and "-fno-cadillac".
1622         * decl2.c (flag_cadillac): Delete var definition.
1623         (lang_decode_option): Delete handling of -fcadillac and -fno-cadillac.
1624         (grokfield): Delete code depending on flag_cadillac.
1625         (finish_anon_union): Likewise.
1626         * class.c (finish_struct_1): Likewise.
1627         (pushclass): Likewise.
1628         (popclass): Likewise.
1629         (push_lang_context): Likewise.
1630         (pop_lang_context): Likewise.
1631         * decl.c (init_decl_processing): Likewise.
1632         (start_decl): Likewise.
1633         (cp_finish_decl): Likewise.
1634         (xref_tag): Likewise.
1635         (finish_enum): Likewise.
1636         (start_function): Likewise.
1637         (finish_function): Likewise.
1638         (finish_stmt): Likewise.
1639         * lex.c (lang_init): Likewise.
1640         (check_newline): Likewise.
1641
1642         * lex.c (do_pending_inlines): Delete synthesized method kludge.
1643
1644         Delete defunct, ancient garbage collection implementation.
1645         * rtti.c: New file with the RTTI stuff from gc.c.
1646         * gc.c: Removed file (moved the remaining stuff into rtti.c).
1647         * Makefile.in (CXX_OBJS): Replace gc.o with rtti.o.
1648         (rtti.o): New rule, replacing gc.o.
1649         * Make-lang.in (CXX_SRCS): Replace gc.c with rtti.c.
1650         * cp-tree.h: Delete gc-related fn decls.
1651         (DECL_GC_OFFSET): Delete macro.
1652         (flag_gc): Delete extern decl.
1653         * decl.c (current_function_obstack_index): Delete var decl.
1654         (current_function_obstack_usage): Delete var decl.
1655         (start_function): Delete clearing of current_function_obstack_index
1656         and current_function_obstack_usage.
1657         (init_decl_processing): Delete code relying on -fgc.
1658         Delete call to init_gc_processing.
1659         (cp_finish_decl): Delete calls to build_static_gc_entry and
1660         type_needs_gc_entry.  Delete gc code setting DECL_GC_OFFSET.
1661         (store_parm_decls): Delete -fgc calls to cp_expand_decl_cleanup
1662         and to expand_expr of a __gc_main call.
1663         (maybe_gc_cleanup): Delete var decl.
1664         (finish_function): Delete call to expand_gc_prologue_and_epilogue.
1665         * decl2.c (flag_gc): Delete var decl.
1666         (lang_f_options): Delete offering of -fgc.
1667         (lang_decode_option): Delete -fgc and -fno-gc handling.
1668         (get_temp_regvar): Delete gc code.
1669         * init.c (build_new): Delete gc code.
1670         * lex.c (init_lex): Delete checking of flag_gc.
1671
1672         * typeck.c (convert_arguments): Delete gc code.
1673         (build_component_addr): Delete -fgc warning.
1674         (build_modify_expr): Delete gc code.
1675
1676         * decl2.c (build_push_scope): Delete fn.
1677         * cp-tree.h (build_push_scope): Delete decl.
1678
1679         * search.c (clear_search_slots): Delete fn.
1680         * cp-tree.h (clear_search_slots): Delete decl.
1681
1682         * search.c (tree_needs_constructor_p): Delete fn.
1683         * cp-tree.h (tree_needs_constructor_p): Delete decl.
1684
1685         * tree.c (id_cmp): Delete fn.
1686
1687         * tree.c (set_fnaddr_from_vtable_entry): Delete fn.
1688         * cp-tree.h (set_fnaddr_from_vtable_entry): Delete decl.
1689
1690         * tree.c (decl_value_member): Delete fn.
1691         * cp-tree.h (decl_value_member): Delete decl.
1692
1693         * tree.c (list_hash_lookup_or_cons): Delete fn.
1694         * cp-tree.h (list_hash_lookup_or_cons): Delete decl.
1695
1696         * method.c (cplus_exception_name): Delete fn.
1697         (EXCEPTION_NAME_{PREFIX, LENGTH}): Delete macros.
1698
1699         * spew.c (shift_tokens): Delete fn.
1700
1701 Mon Jan 22 17:49:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
1702
1703         * except.c (init_exception_processing): Pass 1 to needs_pop in calls
1704         to cp_finish_decl.
1705         * parse.y: Ditto.
1706
1707 Mon Jan 22 17:34:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1708
1709         * tree.c (build_cplus_staticfn_type): Delete function definition;
1710         never used.
1711         * cp-tree.h (build_cplus_staticfn_type): Delete decl.
1712
1713         * tree.c (virtual_member): Delete function definition; never used.
1714         * cp-tree.h (virtual_member): Delete decl.
1715
1716 Fri Jan 19 18:03:14 1996  Mike Stump  <mrs@cygnus.com>
1717
1718         * typeck.c (build_component_ref): Handle getting vbase pointers
1719         out of complex multiple inheritance better.
1720
1721 Fri Jan 19 16:27:40 1996  Mike Stump  <mrs@cygnus.com>
1722
1723         * typeck.c (build_object_ref): Make sure we use the real type, not
1724         any reference type.
1725
1726 Fri Jan 19 16:01:47 1996  Mike Stump  <mrs@cygnus.com>
1727
1728         * tree.c (build_exception_variant): Don't create new types if we
1729         don't have to, also build new types on the right obstack.
1730
1731 Fri Jan 19 14:09:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
1732
1733         * decl.c (store_bindings): Split out from push_to_top_level.
1734         (push_to_top_level): Call it for b->type_shadowed on class binding
1735         levels.
1736
1737 Fri Jan 19 13:53:14 1996  Mike Stump  <mrs@cygnus.com>
1738
1739         * search.c (expand_upcast_fixups): Fix so that offsets stored in
1740         vbase_offsets are always right.  Fixes a problem where virtual base
1741         upcasting and downcasting could be wrong during conversions on this
1742         during virtual function dispatch at ctor/dtor time when dynamic
1743         vtable fixups for deltas are needed.  This only sounds easier than
1744         it is.  :-)
1745         (fixup_virtual_upcast_offsets): Change to reflect new calling
1746         convention for expand_upcast_fixups.
1747
1748 Fri Jan 19 12:23:08 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1749
1750         * decl2.c (grokbitfield): Strip the NOPs from WIDTH before we
1751         check that it's usable as the bitfield width.
1752
1753 Wed Jan 17 21:22:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1754
1755         * decl2.c (grokfield): Call cplus_decl_attributes with the attrlist.
1756         Pass a null tree to grokdeclarator for its ATTRLIST arg, since it's
1757         only ever used for functions in it.
1758
1759 Wed Jan 17 12:10:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
1760
1761         * parse.y (qualified_type_name): Use the TYPE_DECL, not the type.
1762         (nested_type): Ditto.
1763         (nested_name_specifier): Use lastiddecl.
1764
1765         * decl.c (grokdeclarator): Adjust accordingly.
1766         * init.c (expand_member_init): Ditto.
1767         * parse.y (base_class): Ditto.
1768         * typeck2.c (build_functional_cast): Ditto.
1769
1770         * typeck2.c (build_functional_cast): Fill in name after we've
1771         checked for non-aggr type.
1772
1773 Wed Jan 17 10:18:01 1996  Mike Stump  <mrs@cygnus.com>
1774
1775         * decl2.c (warn_pointer_arith): Default to on.
1776
1777 Tue Jan 16 12:45:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
1778
1779         * lex.c (is_rid): New function.
1780         * decl.c (grokdeclarator): Diagnose reserved words used as
1781         declarator-ids.
1782
1783 Tue Jan 16 11:39:40 1996  Jason Merrill  <jason@yorick.cygnus.com>
1784
1785         * tree.c (get_decl_list): Don't lose cv-quals.
1786
1787         * decl.c (grokdeclarator): Fix SCOPE_REF handling and diagnose
1788         typespecs used as declarator-ids.
1789
1790 Tue Jan 16 11:09:42 1996  Mike Stump  <mrs@cygnus.com>
1791
1792         * decl.c (poplevel): When poping a level, don't give a warning for
1793         any subblocks that already exist.
1794
1795 Tue Jan 16 00:25:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
1796
1797         * typeck.c (build_object_ref): Finish what I started.
1798
1799         * parse.y (qualified_type_name): Don't check TYPE_BUILT_IN.
1800
1801         * decl2.c (constructor_name_full): Handle TEMPLATE_TYPE_PARMs.
1802
1803         * decl.c (grokdeclarator): Also accept TEMPLATE_TYPE_PARM as a
1804         scope.
1805
1806 Mon Jan 15 16:19:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
1807
1808         * decl.c (xref_tag): Handle passing a type in directly.
1809
1810         * parse.y (qualified_type_name): Pull out the type.
1811         (nested_type): Ditto.
1812         Take types directly instead of as identifiers.
1813         * call.c (build_scoped_method_call): Take types directly instead of
1814         as identifiers.
1815         * decl.c (xref_basetypes): Ditto.
1816         * init.c (expand_member_init): Ditto.
1817         (build_member_call): Ditto.
1818         (build_offset_ref): Ditto.
1819         * typeck2.c (build_scoped_ref): Ditto, remove bogus code.
1820         * method.c (do_build_assign_ref): Ditto.
1821         * decl.c (grokdeclarator): Handle a type appearing as the
1822         declarator-id for constructors.
1823         * method.c (do_build_copy_constructor): current_base_init_list now
1824         uses the types directly, not their names.
1825         * init.c (sort_base_init): Ditto.
1826         (expand_member_init): Ditto.
1827         * init.c (is_aggr_type): New function, like is_aggr_typedef.
1828
1829 Mon Jan 15 08:45:01 1996  Jeffrey A Law  (law@cygnus.com)
1830
1831         * tree.c (layout_basetypes): Call build_lang_field_decl instead
1832         of build_lang_decl if first arg is a FIELD_DECL.
1833         (tree_copy_lang_decl_for_deferred_output): Reverse test for when
1834         to copy DECL_MAIN_VARIANT and DECL_CHAIN.
1835
1836 Thu Jan 11 14:55:07 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1837
1838         * decl.c (cp_finish_decl): Only clear TREE_USED if DECL_NAME is
1839         non-empty.
1840         * except.c (expand_start_catch_block): Set TREE_USED to avoid
1841         warnings about the catch handler.
1842
1843 Mon Jan  8 17:35:12 1996  Jason Merrill  <jason@yorick.cygnus.com>
1844
1845         * typeck.c (build_modify_expr): Use a COMPOUND_EXPR instead of
1846         expand_target_expr.
1847
1848 Thu Jan  4 12:30:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1849
1850         Fix access control to use trees rather than integers.
1851         * class.c (access_{default, public, protected, private,
1852         default_virtual, public_virtual, private_virtual}_node): Add
1853         definitions.
1854         (init_class_processing): Do creation of those nodes.
1855         * cp-tree.h (access_type): Delete enum decl.
1856         (access_{default, public, protected, private, default_virtual,
1857         public_virtual, private_virtual}_node): Add decls.
1858         (compute_access): Change return type.
1859         * search.c (compute_access): Have tree return type, instead of enum.
1860         (lookup_field): Declare THIS_V and NEW_V to be tree nodes.
1861         * lex.c (real_yylex): Use yylval.ttype for giving the value of the
1862         access_* node for each of RID_{PUBLIC, PRIVATE, PROTECTED}.
1863         * parse.y (VISSPEC): Make ttype rather than itype.
1864         (base_class_access_list): Likewise.
1865         * *.[cy]: Change all refs of `access_public' to `access_public_node',
1866         etc.
1867         * call.c (build_method_call): Make ACCESS be a tree.
1868         * class.c (alter_access, finish_struct_1, filter_struct): Likewise.
1869         * cvt.c (convert_to_aggr): Likewise.
1870         * init.c (build_offset_ref, resolve_offset_ref, build_delete):
1871         Likewise.
1872         * method.c (hack_identifier): Likewise.
1873         * typeck.c (build_component_ref_1, build_component_ref): ): Likewise.
1874
1875 Thu Jan  4 11:02:20 1996  Mike Stump  <mrs@cygnus.com>
1876
1877         * typeck.c (pointer_int_sum, pointer_diff): Make code agree with C
1878         frontend, and make it more consistent with respect to
1879         warn_pointer_arith.
1880
1881 Tue Jan  2 00:13:38 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
1882
1883         * decl.c (pushdecl): Check for duplicate parameter names.
1884
1885 Wed Jan  3 09:25:48 1996  Mike Stump  <mrs@cygnus.com>
1886
1887         * decl.c (expand_static_init): Call assemble_external for atexit.
1888
1889 Wed Jan  3 07:55:19 1996  Mike Stump  <mrs@cygnus.com>
1890
1891         * except.c (do_unwind): Remove some generated dead code.
1892         (eh_outer_context): New routine, factor out some common code from
1893         expand_builtin_throw and end_eh_unwinder.  Add code to do return
1894         address masking for the PA.
1895         (expand_builtin_throw): Use eh_outer_context instead of open coding
1896         it here.
1897         (end_eh_unwinder): Ditto.
1898
1899 Tue Jan  2 17:00:56 1996  Mike Stump  <mrs@cygnus.com>
1900
1901         * except.c (expand_throw): Call assemble_external for __empty, if we
1902         use it.
1903
1904 Thu Dec 28 11:13:15 1995  Mike Stump  <mrs@cygnus.com>
1905
1906         * except.c (expand_builtin_throw): Use RETURN_ADDR_OFFSET instead of
1907         NORMAL_RETURN_ADDR_OFFSET.
1908         (end_eh_unwinder): Ditto.
1909
1910 Wed Dec 27 22:18:16 1995  Mike Stump  <mrs@cygnus.com>
1911
1912         * gc.c (build_dynamic_cast): Make sure we don't cast away const
1913         when dealing with references, and make sure we handle dynamic
1914         casting to a cv qualified reference.
1915
1916 Thu Dec 21 23:50:35 1995  Mike Stump  <mrs@cygnus.com>
1917
1918         * except.c (struct eh_context): New structure top hold eh context
1919         information.
1920         (push_eh_context): New routine.
1921         (pop_eh_context): Ditto.
1922         * decl.c (push_cp_function_context): Use them.
1923         (pop_cp_function_context): Ditto.
1924
1925 Wed Dec 20 12:42:51 1995  Jason Merrill  <jason@yorick.cygnus.com>
1926
1927         * decl2.c (finish_file): Also prune uninteresting functions in the
1928         inline emission loop.
1929
1930 Wed Dec 20 02:32:07 1995  Jeffrey A Law  (law@cygnus.com)
1931
1932         * sig.c (build_signature_table_constructor): Mark functions
1933         in the signature as referenced.
1934
1935 Tue Dec 19 22:36:56 1995  Jason Merrill  <jason@yorick.cygnus.com>
1936
1937         * decl2.c (finish_file): Do all the vtable/synthesis stuff before
1938         the inline emission stuff.
1939
1940 Mon Dec 18 15:51:33 1995  Jason Merrill  <jason@yorick.cygnus.com>
1941
1942         * cp-tree.h, decl2.c (flag_weak): New flag to control the use of
1943         weak symbols.   
1944         * lang-options.h: Add -f{no-,}weak.
1945         * decl.c (init_decl_processing): If the target does not support weak
1946         symbols, don't use them.
1947         * decl2.c, pt.c: s/SUPPORTS_WEAK/flag_weak/.
1948
1949 Sun Dec 17 21:13:23 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
1950
1951         * init.c (expand_member_init): warning for base init after members.
1952
1953 Sun Dec 17 22:06:56 1995  Jeffrey A Law  (law@cygnus.com)
1954
1955         * tree.c (tree_copy_lang_decl_for_deferred_output): Handle
1956         CONST_DECLs correctly.
1957
1958 Fri Dec 15 15:32:18 1995  Jason Merrill  <jason@yorick.cygnus.com>
1959
1960         * cvt.c (build_expr_type_conversion): Don't convert to a reference
1961         type.
1962
1963 Thu Dec 14 16:05:58 1995  Mike Stump  <mrs@cygnus.com>
1964
1965         * method.c (report_type_mismatch): Improve wording for volatile
1966         mismatches.
1967
1968 Thu Dec 14 14:16:26 1995  Mike Stump  <mrs@cygnus.com>
1969
1970         * init.c (expand_aggr_init_1): Use expand_aggr_init_1 instead of
1971         expand_assignment, as the later doesn't handle things that have
1972         copy constructors well.  The compiler would do bitwise copying,
1973         instead of ctor calling in some cases.
1974
1975 Wed Dec 13 17:05:54 PST 1995  Paul Eggert  <eggert@twinsun.com>
1976
1977         * g++.c (my_strerror): Return "cannot access" if errno is 0.
1978         (pfatal_with_name, perror_exec): Don't assume that
1979         the returned value from my_strerror contains no '%'s.
1980         (concat): Remove.
1981         (sys_nerror): Declare only if HAVE_STRERROR is not defined.
1982
1983 Wed Dec 13 16:22:38 1995  Jason Merrill  <jason@yorick.cygnus.com>
1984
1985         Lose CLASSTYPE_METHODS/DECL_NEXT_METHOD chain; make
1986         TYPE_METHODS/TREE_CHAIN mean what they used to. 
1987         * decl2.c (constructor_name_full): Refer to CLASSTYPE_METHOD_VEC
1988         instead of TYPE_METHODS.
1989         * decl.c (duplicate_decls): Lose references to DECL_NEXT_METHOD.
1990         * tree.c (tree_copy_lang_decl_for_deferred_output): Ditto.
1991         * cp-tree.h (CLASSTYPE_METHODS): Lose.
1992         (CLASSTYPE_METHOD_VEC): Point to lang_spec->methods instead of
1993         TYPE_METHODS.
1994         (struct lang_decl): Lose next_method field.
1995         (DECL_NEXT_METHOD): Lose.
1996         * class.c (finish_struct_methods): Don't mess with TYPE_METHODS.
1997         (finish_struct): Just use TYPE_METHODS; we don't need fn_fields
1998         anymore.
1999         (finish_struct_methods): Don't mess with the TREE_CHAINs in
2000         fn_fields.
2001
2002         * search.c (add_conversions): Don't use TREE_CHAIN to traverse method
2003         vector.
2004
2005         * call.c (build_method_call): Synthesize here even when not inlining.
2006         * typeck.c (build_function_call_real): Ditto.
2007
2008 Wed Dec 13 15:02:39 1995  Ian Lance Taylor  <ian@cygnus.com>
2009
2010         * cp/lex.c (check_newline): If DBX_DEBUGGING_INFO and write_symbols
2011         == DBX_DEBUG, call dbxout_start_new_source_file and
2012         dbxout_resume_previous_source_file when appropriate.
2013
2014 Tue Dec 12 20:38:55 1995  Mike Stump  <mrs@cygnus.com>
2015
2016         * except.c (start_anon_func): Push to the top level.
2017         (end_anon_func): Pop from the top level.
2018
2019 Mon Dec 11 18:56:14 1995  Mike Stump  <mrs@cygnus.com>
2020
2021         * cp-tree.h (build_cleanup): New routine to build cleanups.
2022         * decl.c (expand_static_init): Use build_cleanup to build a cleanup
2023         call at ctor time and use atexit to run it later.
2024         * decl2.c (build_cleanup): New routine, taken from finish_file.
2025         (finish_file): Use build_cleanup instead, and don't put function
2026         local statics in global dtor list.
2027         
2028 Wed Dec  6 14:34:29 1995  Mike Stump  <mrs@cygnus.com>
2029
2030         * except.c (expand_throw): Ensure that we have cleanups, if we try
2031         and expand cleanups.
2032
2033 Wed Dec  6 11:48:21 1995  Mike Stump  <mrs@cygnus.com>
2034
2035         * except.c (expand_throw): Add logic to manage dynamic cleanups for
2036         the EH object.
2037         (expand_end_catch_block): Use the magic of expand_goto, instead of
2038         emit_jump so that we get the cleanup for any catch clause parameter
2039         and the cleanup for the exception object.  Update to reflect label
2040         changes.
2041         (push_eh_cleanup): New routine to register a cleanup for an
2042         exception object.
2043         (empty_fndecl): Used to default cleanup actions to
2044         nothing.
2045         (init_exception_processing): Setup empty_fndecl.  Setup
2046         saved_cleanup.
2047         (expand_start_catch_block): Update to reflect label changes.  Call
2048         push_eh_object to register the cleanup for the EH object.
2049         (start_anon_func): New routine to start building lambda expressions
2050         from trees.
2051         (end_anon_func): New routine to end them.
2052         (struct labelNode): Change so that we can use tree labels, or rtx
2053         labels.
2054         (saved_cleanup): Object to check for dynamic cleanups for the
2055         exception handling object.
2056         (push_label_entry): Change so that we can use tree labels, or rtx
2057         labels.
2058         (pop_label_entry): Ditto.
2059         (top_label_entry): Ditto.
2060         (expand_start_all_catch): Use tree label instead of rtx label, so
2061         that we can get the magic of expand_goto.
2062         (expand_end_all_catch): Update to reflect label changes.
2063
2064         * class.c (build_vfn_ref): Remove building_cleanup logic, as we now
2065         use UNSAVE_EXPRs.
2066         typeck.c (get_member_function_from_ptrfunc): Remove remnants of
2067         building_cleanup logic, as we now use UNSAVE_EXPRs.
2068         * cp-tree.h (unsave_expr): Declare it.
2069         * decl.c (building_cleanup): Remove.
2070         (maybe_build_cleanup): Remove building_cleanup logic, and use
2071         UNSAVE_EXPR instead.
2072
2073 Sun Dec  3 01:34:58 1995  Mike Stump  <mrs@cygnus.com>
2074
2075         * gc.c (build_t_desc): Update error message to say <typeinfo>.
2076
2077 Thu Nov 30 12:30:05 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2078
2079         * decl.c (pushdecl): Only warn about shadowing a local variable if
2080         warn_shadow is true.
2081
2082 Sun Nov 26 16:06:55 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
2083
2084         * typeck.c (build_binary_op_nodefault): Added warning about
2085         comparisons between different enum types with -Wall, unless
2086         -fenum-int-equiv set.
2087
2088 Wed Nov 22 15:44:02 1995  Mike Stump  <mrs@cygnus.com>
2089
2090         * class.c (finish_struct_1): Skip down to the inner type in
2091         multidimensional arrays.  Ensures ctors will be made for types that
2092         need constructing.
2093
2094 Wed Nov 22 14:19:22 1995  Mike Stump  <mrs@cygnus.com>
2095
2096         * decl.c (last_dtor_insn): New to track the last compiler generated
2097         insn in a dtor.
2098         (store_parm_decls): Set it.
2099         (finish_function): Use it to see if the dtor is empty.  Avoid doing
2100         vtable setup all the time, if we can.
2101         (struct cp_function): Add last_dtor_insn.
2102         (push_cp_function_context): Save it.
2103         (pop_cp_function_context): Restore it.
2104
2105 Wed Nov 22 11:52:19 1995  Paul Russell  <Rusty.Russell@adelaide.maptek.com.au>
2106
2107         * typeck.c (build_unary_op): Set TREE_NO_UNUSED_WARNING to avoid
2108         warnings.
2109
2110 Tue Nov 21 17:15:23 1995  Mike Stump  <mrs@cygnus.com>
2111
2112         * typeck.c (expand_target_expr): Make sure targets get put into the
2113         current temp_slot_level, so that the free_temp_slots call will reuse
2114         them.
2115
2116 Tue Nov 21 13:32:03 1995  Mike Stump  <mrs@cygnus.com>
2117
2118         * class.c (finish_struct_1): Delay delta fixups for virtual bases
2119         until after we have done the hard virtuals, to avoid a bogus `every
2120         virtual function must have a unique final overrider' for virtual
2121         functions that are only overridden by hard virtuals.
2122
2123 Thu Nov  9 13:35:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
2124
2125         * pt.c (do_function_instantiation): Don't try to find a file-scope
2126         template for a member function.
2127
2128 Tue Nov 14 06:20:35 1995  Mike Stump  <mrs@cygnus.com>
2129
2130         * g++.c (main): Add handling of -nodefaultlibs.
2131
2132 Mon Nov 13 15:45:34 1995  Mike Stump  <mrs@cygnus.com>
2133
2134         * cp-tree.h (INDIRECT_BIND): Add a way for the frontend to
2135         distinguish between direct bindings of reference variables, and
2136         indirect bindings of reference variables.
2137         * cvt.c (build_up_reference): Use it.
2138         * typeck.c (convert_arguments): Use it to indicate this is an
2139         indirect binding.
2140         * decl.c (cp_finish_decl): Ensure that we reuse stack slots as fast
2141         as they are unused.
2142         (expand_static_init): Diotto.
2143         (cplus_expand_expr_stmt): Ditto.
2144         * decl2.c (finish_file): Ditto.
2145         * init.c (perform_member_init): Ditto.
2146         (emit_base_init): Ditto.
2147         (expand_aggr_vbase_init_1): Ditto.
2148
2149 Fri Nov 10 09:19:31 1995  Jeffrey A Law  (law@cygnus.com)
2150
2151         * tree.c (tree_copy_lang_decl_for_deferred_output): Handle
2152         copying of DECL_ARGUMENTS field.
2153         (tree_copy_lang_type_for_deferred_output): Handle disgusting
2154         re-use of TYPE_LANG_SPECIFIC for pointer to member function
2155         type nodes.
2156
2157 Fri Nov 10 09:18:09 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2158
2159         * decl.c (push_namespace): Rewrite to use build_lang_decl, so we
2160         get a DECL_LANG_SPECIFIC node.
2161         * cp-tree.h (lang_decl_flags): Add new member `level'.
2162         (NAMESPACE_LEVEL): Don't use decl.arguments, instead use the
2163         decl_flags level member.
2164
2165 Mon Nov  6 18:36:13 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2166
2167         * call.c (build_method_call): Make sure instance has a
2168         TYPE_LANG_SPECIFIC node before we dive into it.  
2169
2170 Sat Nov  4 20:01:52 1995  Jason Molenda  (crash@phydeaux.cygnus.com)
2171
2172         * method.c (make_thunk): use TREE_SET_CODE to set thunk's tree code.
2173
2174 Thu Nov  2 17:56:57 1995  Mike Stump  <mrs@cygnus.com>
2175
2176         * decl.c (duplicate_decls): When smashing decls, smash staticness in
2177         the usual way.
2178
2179 Thu Nov  2 16:44:02 1995  Mike Stump  <mrs@cygnus.com>
2180
2181         * decl.c (poplevel): Handle the merging of subblocks of cleanups
2182         when finishing blocks that have already been created (usually due to
2183         the fixup goto code).  Fixes bad debugging information.
2184
2185 Wed Nov  1 12:33:53 1995  Jason Merrill  <jason@yorick.cygnus.com>
2186
2187         * method.c (hack_identifier): Don't abort when we get a TREE_LIST
2188         that's not a list of overloaded functions.
2189
2190 Wed Nov  1 11:38:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2191
2192         * decl2.c (mark_vtable_entries): Check DECL_LANG_SPECIFIC on fn
2193         before trying to use DECL_ABSTRACT_VIRTUAL_P.
2194
2195 Tue Oct 31 11:56:55 1995  Jason Merrill  <jason@yorick.cygnus.com>
2196
2197         * decl2.c (mark_used): New function for hooking into setting of
2198         TREE_USED on decls.
2199         * call.c (build_method_call): Use it.
2200         * class.c (instantiate_type): Ditto.
2201         * init.c (build_offset_ref): Ditto.  Don't call assemble_external
2202         for all like-named functions.
2203         * method.c (hack_identifier): Ditto.
2204         (emit_thunk): Don't call assemble_external.
2205         (make_thunk): Create thunk as a FUNCTION_DECL so that it
2206         gets the right mode and ENCODE_SECTION_INFO works.
2207         
2208         * parse.y: Use mark_used.  Pass operator names to do_identifier.
2209         * lex.c (do_identifier): Handle operator names.
2210
2211         * decl2.c (grokclassfn): Tweak __in_chrg attributes.
2212
2213 Thu Oct 26 20:58:59 1995  Jeffrey A Law  (law@cygnus.com)
2214
2215         * cp/tree.c (tree_copy_lang_decl_for_deferred_output): Handle
2216         FIELD_DECLs and VAR_DECLs correctly.
2217
2218 Thu Oct 26 16:45:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2219
2220         * errfn.c: Include stdio.h.
2221         (cp_sprintf): Take out decl of sprintf, and cast sprintf to errorfn*.
2222
2223 Wed Oct 25 18:58:41 1995  Mike Stump  <mrs@cygnus.com>
2224
2225         * typeck2.c (digest_init): Always convert initializers to the
2226         right type.
2227
2228 Wed Oct 25 13:25:24 1995  Mike Stump  <mrs@cygnus.com>
2229
2230         * init.c (member_init_ok_or_else): Don't allow member initializers
2231         for indirect members, as it is invalid.
2232
2233 Wed Oct 25 11:35:28 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2234
2235         * decl.c (grokdeclarator): Don't allow `friend signed ()'.
2236
2237 Fri Oct 20 10:30:59 1995  Mike Stump  <mrs@cygnus.com>
2238
2239         * parse.y (for.init.statement): Catch compound statements inside for
2240         initializations, if we're being pedantic.
2241
2242 Fri Oct 20 10:03:42 1995  Mike Stump  <mrs@cygnus.com>
2243
2244         * decl.c (lookup_tag): Return NULL_TREE if we don't find what we are
2245         looking for.
2246
2247 Thu Oct 19 14:26:10 1995  Mike Stump  <mrs@cygnus.com>
2248
2249         * error.c (dump_expr): Don't core dump when a boolean expression is
2250         used as a default argument.
2251
2252 Thu Oct 19 10:36:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
2253
2254         * class.c (finish_struct_bits): Check aggregate_value_p instead of
2255         RETURN_IN_MEMORY.
2256
2257 Wed Oct 18 18:12:32 1995  Jason Merrill  <jason@yorick.cygnus.com>
2258
2259         * class.c (finish_struct_bits): Also set TREE_ADDRESSABLE on a
2260         BLKmode type that would otherwise be returned in registers.
2261
2262 Mon Oct 16 12:32:19 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2263
2264         * g++.c (WITHLIBC): New macro.
2265         (main): Declare saw_libc.  Use WITHLIBC if `-lc' was used; set
2266         saw_libc and pass it at the end if it was set.
2267
2268 Wed Oct 11 16:30:34 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2269
2270         * parse.y (fn.def1): Call split_specs_attrs in
2271         declmods notype_declarator case.
2272
2273 Sun Nov 26 14:47:42 1995  Richard Kenner  <kenner@mole.gnu.ai.mit.edu>
2274
2275         * Version 2.7.2 released.
2276
2277 Mon Nov 20 14:05:00 1995  Mike Stump  <mrs@cygnus.com>
2278
2279         * g++.c (pfatal_with_name): Add missing third argument to concat.
2280
2281 Thu Oct 26 13:59:54 1995  Mike Stump  <mrs@cygnus.com>
2282
2283         * init.c (expand_aggr_init): Handle cv qualifiers on the object's
2284         type.
2285
2286 Sat Nov 11 08:25:55 1995  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2287
2288         * Version 2.7.1 released.
2289
2290 Thu Nov  2 17:02:47 1995  Jason Merrill  <jason@yorick.cygnus.com>
2291
2292         * call.c (convert_harshness): Handle references to arrays.
2293
2294 Fri Oct 27 14:20:21 1995  Jason Merrill  <jason@yorick.cygnus.com>
2295
2296         * typeck.c (comp_target_types): Check multi-level pointer
2297         conversions in both directions.
2298
2299 Tue Oct 17 21:39:05 1995  Jason Merrill  <jason@yorick.cygnus.com>
2300
2301         * parse.y (explicit_instantiation): Fix 'extern template' with no
2302         return type.
2303
2304 Mon Oct 16 14:35:20 1995  Jason Merrill  <jason@yorick.cygnus.com>
2305
2306         * parse.y (explicit_instantiation): Support automatic instantiation
2307         of constructors.
2308         (named_class_head_*): Support out-of-class definition of nested
2309         types.
2310
2311 Wed Oct 11 12:20:56 1995  Mike Stump  <mrs@cygnus.com>
2312
2313         * search.c (envelope_add_decl): New routine.  Fix so that
2314         methods are hidden in the same way that other members are.
2315         (dfs_pushdecls): Cleanup and move functionality out of line,
2316         into envelope_add_decl. 
2317
2318 Tue Oct 10 15:46:01 1995  Mike Stump  <mrs@cygnus.com>
2319
2320         * typeck.c (mark_addressable): Only call assemble_external if we
2321         have started the output file.
2322
2323 Tue Oct 10 11:27:18 1995  Jason Merrill  <jason@yorick.cygnus.com>
2324
2325         * decl.c (start_function): Fix earlier cv-quals change.
2326
2327 Mon Oct  9 23:53:05 1995  Mike Stump  <mrs@cygnus.com>
2328
2329         * parse.y (complex_direct_notype_declarator): Only push the class if
2330         we are not already in the class.
2331
2332 Mon Oct  9 11:22:03 1995  Doug Evans  <dje@canuck.cygnus.com>
2333
2334         * decl.c (duplicate_decls): Call merge_machine_decl_attributes.
2335         Update olddecl's attributes too.
2336         (grokdeclarator): #if 0 out call to build_decl_attribute_variant.
2337         * typeck.c (common_type): Call merge_machine_type_attributes.
2338
2339 Fri Oct  6 14:44:27 1995  Mike Stump  <mrs@cygnus.com>
2340
2341         * typeck.c (mark_addressable): Add missing call to
2342         assemble_external.
2343
2344 Wed Oct  4 22:05:23 1995  Jeff Law  (law@hurl.cygnus.com
2345
2346         * cp/decl.c (deplicate_decls): Merge in deferred output
2347         status for variables.
2348         * cp/tree.c (tree_copy_lang_decl_for_deferred_output): New
2349         function to copy the g++ specific parts of a DECL node.
2350         (tree_copy_lang_type_for_deferred_output): Similarly for
2351         TYPE nodes.
2352
2353 Wed Oct  4 15:06:39 1995  Mike Stump  <mrs@cygnus.com>
2354
2355         * decl.c (store_parm_decls): Make sure the unwinder start comes
2356         before the exception specification start.
2357         * except.c (expand_exception_blocks): Make sure the unwinder end
2358         comes after the terminate protected catch clause region and after
2359         the end of the exception specification region.
2360
2361 Wed Oct  4 12:47:02 1995  Jason Merrill  <jason@yorick.cygnus.com>
2362
2363         * lex.c (real_yylex): Fix identifier case for linemode.
2364         (handle_sysv_pragma): Don't abort when we see a pragma we don't
2365         recognize.
2366
2367 Tue Oct  3 14:09:46 1995  Mike Stump  <mrs@cygnus.com>
2368
2369         * decl.c (store_parm_decls): Add a call to start_eh_unwinder.
2370         * except.c (init_exception_processing): __throw doesn't take any
2371         arguments.
2372         (expand_builtin_throw): Ditto.  Always use Pmode, instead of SImode
2373         for all pointers.  Use expand_builtin_return_addr to unwind the
2374         first level off the stack.
2375         (do_unwind): Always use Pmode, instead of SImode for all pointers.
2376         (expand_exception_blocks): Add a call to end_eh_unwinder.
2377         (start_eh_unwinder, end_eh_unwinder): New routines to build machine
2378         independent stack unwinders for function/method calls.
2379         
2380 Mon Oct  2 17:20:42 1995  Mike Stump  <mrs@cygnus.com>
2381
2382         * tree.c (unsave_expr_now): Make sure we process the argument list
2383         of any called functions.  Fixes incorrect code generation for
2384         cleanups.
2385
2386 Mon Oct  2 13:04:16 1995  Mike Stump  <mrs@cygnus.com>
2387
2388         * typeck.c (get_member_function_from_ptrfunc): Save function if it
2389         needs it.  Cures core dump on things like (this->*(f()))().
2390
2391 Sat Sep 23 22:51:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2392
2393         * decl.c (start_function): Conform to gcc cv-quals convention (no
2394         expression has a cv-qualified type) in RESULT_DECLs.
2395         * method.c (make_thunk): Ditto.
2396
2397 Fri Sep 22 10:21:13 1995  Mike Stump  <mrs@cygnus.com>
2398
2399         * decl.c (pushtag): Add in the namespace name for the tag.
2400
2401 Thu Sep 21 13:11:13 1995  Mike Stump  <mrs@cygnus.com>
2402
2403         * parse.y (maybe_base_class_list, base_class_list, base_class,
2404         base_class_access_list): Make sure we see the typenames for base
2405         classes.
2406         * lex.c (see_typename): Instead of failing to see a typename when
2407         there is no next token, perfer a typename, and get the next token.
2408
2409 Wed Sep 20 12:35:27 1995  Michael Meissner  <meissner@cygnus.com>
2410
2411         * decl.c (init_decl_processing): Add __builtin_expect.
2412
2413 Tue Sep 19 16:48:11 1995  Mike Stump  <mrs@cygnus.com>
2414
2415         * cvt.c (cp_convert_to_pointer): Don't allow leftover conversions to
2416         or from pointer to member functions, they must all be handled before
2417         this point.
2418
2419 Fri Sep 15 17:14:47 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2420
2421         * init.c (resolve_offset_ref): Fix wording of non-static member
2422         being referenced as a static.
2423
2424 Fri Sep 15 12:39:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2425
2426         * typeck.c (build_indirect_ref): Only bash pointer if we actually
2427         call build_expr_type_conversion.
2428
2429 Thu Sep 14 18:24:56 1995  Jason Merrill  <jason@deneb.cygnus.com>
2430
2431         * cvt.c (build_expr_type_conversion): Handle conversion from
2432         reference.
2433         * typeck.c (build_indirect_ref): Avoid infinite recursion.
2434
2435 Thu Sep 14 17:23:28 1995  Mike Stump  <mrs@cygnus.com>
2436
2437         * decl.c (expand_start_early_try_stmts): New routine to start a try
2438         block at the start of the function, for function-try-blocks.
2439         * cp-tree.h (expand_start_early_try_stmts): Declare it.
2440         * parse.y (function_try_block): Use it, instead of doing it here, as
2441         we don't want to include rtl.h here, as that conflicts with RETURN
2442         in the parser.
2443
2444 Wed Sep 13 18:32:24 1995  Mike Stump  <mrs@cygnus.com>
2445
2446         * lex.c (reinit_parse_for_block): Support saving inline
2447         function-try-blocks, uses peekyylex.
2448         * parse.y (eat_saved_input): New rule, permit the parser to see that
2449         END_OF_SAVED_INPUT is ok, as it can see this when parsing the
2450         handlers of a function-try-block.
2451         (fndef): Use it.
2452         (component_decl): Make sure TRY and RETURN can come after fn.def2.
2453         * spew.c (peekyylex): New routine to peek at what will come next.
2454
2455 Wed Sep 13 16:52:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2456
2457         * typeck.c (comptypes): Tighten up comparisons of template type
2458         parms.
2459
2460         * decl.c (duplicate_decls): Turn off whining about virtual functions
2461         redeclared inline for now.
2462
2463 Wed Sep 13 11:13:40 1995  Mike Stump  <mrs@cygnus.com>
2464
2465         * decl.c (store_in_parms): New routine to put things before we
2466         put base inits.
2467         * cp-tree.h (store_in_parms): Declare it.
2468         * decl.c (store_parm_decls): Use it to makr sure the starting of the
2469         eh spec comes before base inits.
2470         (finish_function): Use sequences instead of the obsolete
2471         reorder_insns.
2472         * parse.y (fndef): Enhance readability and maintainability.  Update
2473         to include function_try_block syntax.
2474         (function_try_block): Add.
2475
2476 Tue Sep 12 17:43:07 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2477
2478         * call.c (convert_harshness): Use comptypes, not ==, to check if
2479         TYPE and PARMTYPE are equivalent on a function type.
2480
2481 Tue Sep 12 17:31:33 1995  Douglas Rupp  (drupp@cs.washington.edu)
2482
2483         * Make-lang.in (cc1plus) : Removed unnecessary $(exeext).
2484
2485 Mon Sep 11 23:24:07 1995  Mike Stump  <mrs@cygnus.com>
2486
2487         * except.c (expand_throw): Never allocate storage for thrown pointer
2488         to objects.
2489
2490 Mon Sep 11 19:36:45 1995  Mike Stump  <mrs@cygnus.com>
2491
2492         * except.c (expand_start_catch_block): Pointers to objects come
2493         back from catch matching already dereferenced, don't dereference
2494         again.
2495
2496 Mon Sep 11 15:46:28 1995  Mike Stump  <mrs@cygnus.com>
2497
2498         * except.c (expand_throw): Only decay the throw expression, don't do
2499         any default conversions.  This is so that one can throw and catch
2500         characters, and not have them match integers.
2501
2502 Mon Sep 11 13:46:45 1995  Mike Stump  <mrs@cygnus.com>
2503
2504         * error.c (dump_aggr_type): Deal with anonymous unions that don't
2505         have a TYPE_NAME.
2506
2507 Fri Sep  8 20:40:27 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2508
2509         * lex.c (handle_sysv_pragma): Deal with getting a comma from yylex.
2510
2511 Fri Sep  8 15:51:41 1995  Mike Stump  <mrs@cygnus.com>
2512
2513         * except.c (expand_end_eh_spec): Handle empty EH specifications.
2514
2515 Fri Sep  8 15:27:22 1995  Mike Stump  <mrs@cygnus.com>
2516
2517         * cp-tree.h (expand_start_eh_spec): Declare new routine.
2518         (expand_end_eh_spec): Ditto.
2519         * decl.c (store_parm_decls): Call expand_start_eh_spec to process
2520         exception specifications.
2521         * except.c (expand_leftover_cleanups): Remove unused parameter.
2522         (expand_end_catch_block): Ditto.
2523         (expand_exception_blocks): Ditto.
2524         (expand_start_eh_spec): New routine to mark the start of an
2525         exception specification region.
2526         (expand_end_eh_spec): New routine to mark the end of an exception
2527         specification region.
2528         (expand_exception_blocks): Call expand_end_eh_spec to process
2529         exception specifications.
2530
2531 Fri Sep  8 14:40:48 1995  Per Bothner  <bothner@kalessin.cygnus.com>
2532
2533         * lex.c (do_identifier):  Use global binding in preference of
2534         dead for local variable.
2535
2536 Wed Sep  6 19:32:59 1995  Mike Stump  <mrs@cygnus.com>
2537
2538         * cp-tree.h (build_exception_variant): Remove used first argument.
2539         * decl.c (duplicate_decls): Ditto.
2540         (grokfndecl): Ditto.
2541         (revert_static_member_fn): Ditto.
2542         * decl2.c (grok_method_quals): Ditto.
2543         * tree.c (build_exception_variant): Ditto.
2544         * typeck.c (common_type): Ditto.
2545         * decl2.c (grokclassfn): After changing the type, call
2546         build_exception_variant, if necessary.
2547
2548 Tue Sep  5 15:56:27 1995  Mike Stump  <mrs@cygnus.com>
2549
2550         * except.c (expand_throw): Run cleanups for the throw expression.
2551
2552 Wed Aug 30 15:24:38 1995  Stephen L. Favor  (sfavor@tigger.intecom.com)
2553
2554         * except.c (expand_builtin_throw): Moved gen_label_rtx calls beyond
2555         the store_parm_decls call which does initialization in the emit_*
2556         code concerning label numbering.
2557         
2558 Thu Aug 31 09:01:07 1995  Mike Stump  <mrs@cygnus.com>
2559
2560         * except.c (expand_internal_throw): Let the frontend be responsible
2561         for managing all frontend EH parameters, the backend routine only
2562         needs to deal with backend values.  type and value are no longer
2563         passed to __throw.
2564         (init_exception_processing): Ditto.
2565         (expand_start_all_catch): Ditto.
2566         (expand_end_all_catch): Ditto.
2567         (expand_leftover_cleanups): Ditto.
2568         (expand_end_catch_block): Ditto.
2569         (expand_builtin_throw): Ditto.
2570         (expand_throw): Ditto.
2571         
2572 Tue Aug 29 15:04:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2573
2574         * cp-tree.h (DECL_REAL_CONTEXT): Give the real declaration context
2575         for a decl.
2576         * decl.c (cp_finish_decl): Use it.
2577
2578 Tue Aug 29 10:30:27 1995  Mike Stump  <mrs@cygnus.com>
2579
2580         * except.c (expand_internal_throw): Oops, almost forgot type and
2581         value are now trees.
2582
2583 Mon Aug 28 17:57:45 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2584
2585         Fix the attribute handling to make sure they get noted before we
2586         create the function's RTL, in case they can affect that.
2587         * decl.c (grokfndecl): New arg ATTRLIST.  Run
2588         cplus_decl_attributes before creating the decl's rtl.
2589         (grokdeclarator): New arg ATTRLIST, passed down into grokfndecl.
2590         (shadow_tag, groktypename, start_decl, start_method): Pass a
2591         NULL_TREE to grokdeclarator's new last arg.
2592         * decl2.c (grokfield): New arg ATTRLIST, passed into grokdeclarator.
2593         (grokbitfield, grokoptypename): Pass a NULL_TREE to
2594         grokdeclarator's new last arg.
2595         * except.c (expand_start_catch_block): Likewise.
2596         * pt.c (process_template_parm, end_template_decl,
2597         do_function_instantiation): Likewise.
2598         * cp-tree.h (grokfield): Add arg.
2599         (grokdeclarator): Move the prototype from here...
2600         * decl.h: ...to here.
2601         * lex.c (cons_up_default_function): Pass NULL_TREE to grokfield
2602         ATTRLIST argument.
2603         * parse.y: Create a list for the grokfield arg where appropriate,
2604         and pass it down instead of calling cplus_decl_attributes.
2605
2606 Mon Aug 28 15:07:24 1995  Mike Stump  <mrs@cygnus.com>
2607
2608         * except.c: Always allow turning on exception handling.  Allow cross
2609         compilations to use EH.
2610
2611 Thu Aug 24 17:39:24 1995  Mike Stump  <mrs@cygnus.com>
2612
2613         * except.c (saved_pc, saved_throw_type, saved_throw_value): Use
2614         trees, instead of rtxs, and don't depend on using special machine
2615         dependent registers.
2616         (expand_internal_throw): Ditto.
2617         (init_exception_processing): Ditto.
2618         (expand_start_all_catch): Ditto.
2619         (expand_end_all_catch): Ditto.
2620         (expand_start_catch_block): Ditto.
2621         (expand_leftover_cleanups): Ditto.
2622         (expand_end_catch_block): Ditto.
2623         (expand_builtin_throw): Ditto.
2624         (expand_throw): Ditto.
2625
2626 Wed Aug 23 17:25:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2627
2628         * cvt.c (build_expr_type_conversion): Handle conversions to
2629         reference types.
2630
2631 Wed Aug 23 15:33:59 1995  Mike Stump  <mrs@cygnus.com>
2632
2633         * except.c (do_unwind): Work around backend bug with -fpic.
2634
2635 Tue Aug 22 17:20:07 1995  Per Bothner  <bothner@kalessin.cygnus.com>
2636
2637         * decl2.c (flag_new_for_scope):  Add a new mode that follows ANSI
2638         for-scoping, but supports (and warns about) old programs.
2639         Make the new mode (with value 1) the default.
2640         (lang_f_options):  The on-value for flag_new_for_scope is now 2.
2641         * cp-tree.h (DECL_DEAD_FOR_LOCAL, DECL_ERROR_REPORTED): New macros
2642         (DECL_SHADOWED_FOR_VAR):  Likewise.
2643         * decl.c (struct binding_level):  New fields dead_vars_from_for
2644         and is_for_scope.
2645         (note_level_for_for):  New function.
2646         (poplevel):  Special processing if is_for_scope.
2647         (pushdecl):  Warn if for-scope variable shadows local.
2648         * lex.c (do_identifier):  Handle old (non-ANSI) for scoping,
2649         and warn if conflicts.
2650         * parse.y (FOR):  Call note_level_for_for.
2651
2652 Mon Aug 21 10:28:31 1995  Jason Merrill  <jason@deneb.cygnus.com>
2653
2654         * decl2.c (import_export_inline): Class interface hackery does not
2655         apply to synthesized methods.
2656
2657 Sun Aug 20 16:29:00 1995  Mike Stump  <mrs@cygnus.com>
2658
2659         * search.c (virtual_context): Find the right context more often.
2660         Solves a `recoverable compiler error, fixups for virtual function'
2661         problem.
2662
2663 Sun Aug 20 13:53:24 1995  Mike Stump  <mrs@cygnus.com>
2664
2665         * except.c (expand_start_all_catch): Ensure that we always transfer
2666         control to the right EH handler, by rethrowing the end label on the
2667         region, instead of hoping we are nested and falling through.
2668         (expand_leftover_cleanups): Ditto.
2669         (end_protect): Since we now rethrow the end label, put a
2670         nop after it, so that outer regions are recognized.
2671         * init.c (build_vec_delete_1): New routine to handle most of vector
2672         deleting, all code moved here from build_vec_delete.
2673         (build_array_eh_cleanup): Use build_vec_delete_1 to do all the real
2674         work.
2675         (expand_vec_init): If the array needs partial destructing, setup an
2676         EH region to handle it.
2677         (build_vec_delete): Move lots of code to build_vec_delete_1, use
2678         build_vec_delete_1 to do the grunt work.
2679         
2680 Sat Aug 19 14:25:33 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2681
2682         Handle decl attributes properly for function definitions without
2683         previous attribute-loaded declarations.
2684         * decl.c (start_function): New arg ATTRS.  Add a call to
2685         cplus_decl_attributes with it before we create the RTL.
2686         * cp-tree.h (start_function): Update prototype.
2687         * parse.y (fn.def1): Pass ATTRS into start_function instead of
2688         trying to call cplus_decl_attributes too late.  Pass a NULL_TREE
2689         for other use.
2690         * decl2.c (finish_file): Pass NULL_TREE as fourth arg to
2691         start_function.
2692         * method.c (synthesize_method): Likewise.
2693         * except.c (expand_builtin_throw): Likewise for start on __throw.
2694
2695 Sat Aug 19 13:36:08 1995  Mike Stump  <mrs@cygnus.com>
2696
2697         * class.c (set_rtti_entry): Turn on -fvtable-thunk -frtti support.
2698         This changes -fvtable-thunks vtable layout, so a recompile will be
2699         necessary, if you use -fvtable-thunks.
2700         (get_vtable_entry): Use n, instead of i to be consistent with the
2701         rest of the compiler.
2702         (get_vtable_entry_n): Ditto.
2703         (add_virtual_function): Add a slot for the tdesc, if -fvtable-thunks
2704         are being used.
2705         (finish_struct_1): Ditto.
2706         (skip_rtti_stuff): New routine to collapse similar code from many
2707         different parts of the compiler.  I think I got them all.
2708         (modify_one_vtable): Use it.
2709         (fixup_vtable_deltas1): Ditto.
2710         (override_one_vtable): Ditto.
2711         * decl2.c (mark_vtable_entries): Ditto.
2712         * tree.c (debug_binfo): Ditto.
2713         * search.c (expand_upcast_fixups): Ditto.
2714         (get_abstract_virtuals_1): Ditto.  Use virtuals, instead of tmp to
2715         consistent with the rest of the compiler.
2716         (get_abstract_virtuals): Ditto.
2717         * cp-tree.h (skip_rtti_stuff): New routine, declare it.
2718         * gc.c (build_headof): Support -fvtable-thunk and -frtti together.
2719         (build_typeid): Ditto.
2720         (build_classof): Remove old style way of doing rtti.  Remove support
2721         for `classof' and `headof'.
2722         * gxx.gperf: Ditto.
2723         * hash.h: Ditto.
2724         * parse.y: Ditto.
2725
2726 Fri Aug 18 17:31:58 1995  Jason Merrill  <jason@deneb.cygnus.com>
2727
2728         * decl.c (start_function): Clear ctor_label and dtor_label.
2729
2730         * class.c (finish_struct_1): Fix handling of access decls.
2731
2732 Tue Aug 15 19:21:54 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2733
2734         * class.c (finish_struct): Only do minimal processing here, so it
2735         can be used for class template definitions, as well.
2736         (finish_struct_1): New function with the rest of the code.
2737
2738 Tue Aug 15 09:46:16 1995  Mike Stump  <mrs@cygnus.com>
2739
2740         * class.c (prepare_fresh_vtable): On second though, always build the
2741         offset (see Aug 10 change), unless -fvtable-thunks is given.  It
2742         does this by calling the new routine set_rtti_entry.
2743         (finish_struct): Ditto.
2744         (set_rtti_entry): New routine to update the rtti information at the
2745         start of the vtable.
2746
2747 Mon Aug 14 12:21:22 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2748
2749         * error.c (dump_decl, case IDENTIFIER_NODE): Only work on a dtor
2750         if it's declared in the C++ language spec.
2751         (dump_function_decl): Likewise.
2752         (dump_function_name): Likewise.
2753         (ident_fndecl): Make sure we got something back from lookup_name.
2754         * decl.c (start_function): Likewise.
2755
2756 Fri Aug 11 16:52:15 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2757
2758         * call.c (build_method_call): Don't call build_new when calling a
2759         constructor without an instance.
2760
2761 Thu Aug 10 20:00:17 1995  Mike Stump  <mrs@cygnus.com>
2762
2763         * class.c (prepare_fresh_vtable): Always build the offset to the
2764         complete object, as it doesn't cost much.  This allows dynamic_cast
2765         to void * to work when -frtti isn't given.
2766         (finish_struct): Ditto.
2767
2768 Thu Aug 10 16:31:28 1995  Mike Stump  <mrs@cygnus.com>
2769
2770         * except.c (build_eh_type): Split out some functionality to new
2771         routine named build_eh_type_type.
2772         (build_eh_type_type): New routine.
2773         (expand_start_catch_block): Use build_eh_type_type, as we never want
2774         the dynamic type of the catch parameter, just the static type.
2775         Fixes core dumps when -frtti is used and one catchs pointers to
2776         classes.
2777
2778 Thu Aug 10 14:55:29 1995  Mike Stump  <mrs@cygnus.com>
2779
2780         * except.c (expand_builtin_throw): Since we now use normal calling
2781         conventions for __throw, we have to remove the first layer off the
2782         stack, so that the next context we search for handlers is the outer
2783         context instead of the context that had the call to __throw, if we
2784         don't immediately find the desired context.
2785
2786 Tue Aug  8 17:44:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2787
2788         * tree.c (cp_expand_decl_cleanup): Returns int, not tree.
2789         * cp-tree.h: Update.
2790
2791         * parse.y (template_type_parm): Add support for `typename'.
2792
2793 Tue Aug  8 12:06:31 1995  Mike Stump  <mrs@cygnus.com>
2794
2795         * except.c (expand_internal_throw): New internal routine to throw a
2796         value.
2797         (expand_end_all_catch, expand_leftover_cleanups): All throwers
2798         changed to use `expand_internal_throw' instead of jumping to throw
2799         label.
2800         (expand_end_catch_block, expand_throw): Ditto.
2801         (throw_label): Removed.
2802         (expand_builtin_throw): Changed so that EH parameters are passed by
2803         normal function call conventions.  Completes Aug 4th work.
2804
2805 Fri Aug  4 17:17:08 1995  Mike Stump  <mrs@cygnus.com>
2806
2807         * cp-tree.h (expand_builtin_throw): Declare it.
2808         * decl2.c (finish_file): Call expand_builtin_throw.
2809         * except.c (make_first_label): Remove.
2810         (init_exception_processing): Don't use a LABEL_REF for throw_label,
2811         instead use a SYMBOL_REF, this is so that we don't use LABEL_REFs in
2812         other functions that don't really appear in those functions.  This
2813         solves a problem where cc1plus consumed exponential amounts of
2814         memory when -Wall was used.
2815         (expand_end_all_catch, expand_leftover_cleanups,
2816         expand_end_catch_block, expand_throw): Change all uses of
2817         throw_label to match new style.
2818         (do_unwind): Rename parameter to inner_throw_label, as it is now
2819         different from throw_label.  Also, assume that our caller will wrap
2820         the passed label with a LABEL_REF, if needed.
2821         (expand_builtin_throw): Make external, change so that the generated
2822         throw is now a real function.
2823         (expand_exception_blocks): Never generate throw code inside another
2824         function.
2825
2826 Fri Aug  4 12:20:02 1995  Mike Stump  <mrs@cygnus.com>
2827
2828         * decl.c (grokdeclarator): Move checking of mutable const objects
2829         and mutable static objects down, as we might decide during parsing
2830         to unset staticp or constp (for example, when const is part of the
2831         object being pointed to).
2832
2833 Thu Aug  3 17:13:43 1995  Mike Stump  <mrs@cygnus.com>
2834
2835         * except.c (output_exception_table_entry): Enhance portability to
2836         weird machines.
2837         (emit_exception_table): Ditto.
2838
2839 Thu Aug  3 16:41:38 1995  Mike Stump  <mrs@cygnus.com>
2840
2841         * typeck.c (build_ptrmemfunc): Handle casting of pointer to
2842         non-virtual member functions.
2843
2844 Wed Aug  2 11:58:25 1995  Mike Stump  <mrs@cygnus.com>
2845
2846         * gc.c (build_typeid): Strip cv qualifiers so that const T&, T&, T
2847         and const T all match.
2848
2849 Wed Aug  2 11:25:33 1995  Mike Stump  <mrs@cygnus.com>
2850
2851         * except.c (build_eh_type): Strip cv qualifiers so that const T&,
2852         T&, T and const T all match.
2853
2854 Tue Aug  1 14:20:16 1995  Mike Stump  <mrs@cygnus.com>
2855
2856         * except.c: Fix up comments, cleanup code and eliminate exceptNode,
2857         exceptStack, exceptstack, push_except_stmts, pop_except_stmts,
2858         new_except_stack, push_last_insn, pop_last_insn, insn_save_node and
2859         InsnSave.  Also, numerous speed improvements, and correctness
2860         improvements.  Double faulting in all situations should now be
2861         handled correctly.
2862         (expand_start_all_catch): Instead of having many terminate protected
2863         regions, just have one.
2864         (expand_start_catch_block): No longer have to protect
2865         false_label_rtx, as it isn't used for EH region marking.
2866         (expand_end_catch_block): Expand out EH cleanups here by using
2867         expand_leftover_cleanups.
2868         (expand_end_all_catch): Use sequences instead of playing with insn
2869         links directly.
2870         (expand_exception_blocks): Ditto.  Also protect all catch clauses
2871         with one terminate region.
2872
2873 Mon Jul 31 13:24:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2874
2875         * method.c (report_type_mismatch): Don't talk about an object
2876         parameter for non-methods.
2877
2878 Sun Jul 30 13:13:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2879
2880         * class.c (finish_struct): Catch private and protected members of
2881         anonymous unions here.
2882         * decl2.c (finish_anon_union): And here.
2883         * parse.y: Instead of here.
2884
2885         * errfn.c (ARGSLIST): Support passing four args.
2886         * error.c (cv_as_string): New function.
2887         (cp_printers): Add it.
2888         * call.c (build_method_call): Report 'const' at end of pseudo-decl.
2889
2890         * method.c (report_type_mismatch): Deal with a bad_arg of 0.
2891
2892         * init.c (expand_aggr_init): Handle volatile objects, too.
2893
2894 Sat Jul 29 13:42:03 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2895
2896         * decl.c (struct binding_level): Keep list of incomplete decls.
2897         (print_binding_level): Use list_length to count them.
2898         (pushdecl): Build up the list.
2899         (hack_incomplete_structures): Walk it and prune completed decls.
2900
2901 Fri Jul 28 15:26:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2902
2903         * typeck.c (comp_target_types): Don't check const and volatile for
2904         function types.
2905         (comp_ptr_ttypes_real): Ditto.
2906
2907 Thu Jul 27 15:40:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2908
2909         * typeck.c (comp_target_types): Fix.
2910
2911 Thu Jul 27 15:10:48 1995  Mike Stump  <mrs@cygnus.com>
2912
2913         * cp-tree.h (unsave_expr_now, build_unsave_expr,
2914         cp_expand_decl_cleanup): Declare new routines.
2915         * decl.c (cp_finish_decl, store_parm_decls,
2916         hack_incomplete_structures): Change all cals from
2917         expand_decl_cleanup to cp_expand_decl_cleanup.
2918         * gc.c (protect_value_from_gc): Ditto.
2919         * expr.c (cplus_expand_expr): Handle UNSAVE_EXPRs.
2920         * tree.c (unsave_expr): New routine to build an UNSAVE_EXPR.
2921         (unsave_expr_now): Backend routine used by tree expander.
2922         (cp_expand_decl_cleanup): Wrap second argument in an UNSAVE_EXPR to
2923         work around a limitation in the backend.  The backend uses the
2924         cleanups multiple times, on disjoint control flows, so we cannot
2925         pass unsaved SAVE_EXPRs to the backend.
2926         * tree.def (UNSAVE_EXPR): New tree code.
2927         * typeck.c (c_expand_return): Move goto/return code up inside
2928         conditional, as we don't always want to do this, we only want to do
2929         this when we don't otherwise finish with this control flow.
2930
2931 Thu Jul 27 10:38:43 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2932
2933         * parse.y (typespec): Only complain about typeof if we're not
2934         getting it from a system header.
2935
2936 Thu Jul 27 10:26:23 1995  Doug Evans  <dje@canuck.cygnus.com>
2937
2938         Clean up prefix attribute handling.
2939         * parse.y (reserved_declspecs): Link prefix attributes with declspecs.
2940         (declmods): Likewise.
2941         (all rules that reference typed_declspecs and declmods): Call
2942         split_specs_attrs or strip_attrs to separate declspecs and attrs.
2943         (lang_extdef): Delete resetting of prefix_attributes.
2944         (template_def, notype_declarator rule): Use NULL_TREE for
2945         prefix_attributes.
2946         (condition): Use NULL_TREE for prefix_attributes.
2947         (setattrs): Deleted.
2948         (nomods_initdcl0): Set prefix_attributes to NULL_TREE.
2949         (component_decl): Delete resetting of prefix_attributes.
2950         (component_decl_1, notype_components rule): Use NULL_TREE for
2951         prefix_attributes.
2952         (simple_stmt): Delete resetting of prefix_attributes.
2953
2954 Mon Jul 24 13:37:53 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2955
2956         * call.c (convert_harshness): Deal with reference conversions before
2957         others.  Actually do array->pointer decay.  Call comp_target_types
2958         with pointer types rather than their targets.
2959
2960         * typeck.c (comp_target_types): Avoid assigning D const * to B *.
2961
2962 Mon Jul 24 08:54:46 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2963
2964         * pt.c (to_be_restored): Move decl to global scope.
2965
2966 Sat Jul 22 12:22:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2967
2968         * decl.c (start_decl): Put back clearing of DECL_IN_AGGR_P.
2969
2970 Fri Jul 21 17:09:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2971
2972         * decl.c (grokdeclarator): Downgrade error about 'extern int A::i'
2973         to pedwarn.
2974
2975         * pt.c (instantiate_template): Also avoid instantiation if the
2976         function has already been declared to be a specialization.
2977
2978         * decl2.c (check_classfn): Ignore cname argument, and return the
2979         matching function.
2980
2981         * decl.c (start_decl): Handle declarations of member functions
2982         outside of the class (i.e. specialization declarations).
2983
2984 Thu Jul 20 10:34:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2985
2986         * class.c (finish_struct): Don't mess with the type of bitfields.
2987
2988         * various.c: s/TYPE_POINTER_TO/build_pointer_type/.
2989
2990 Thu Jul 20 01:43:10 1995  Mike Stump  <mrs@cygnus.com>
2991
2992         * init.c (expand_aggr_init): Assume LOOKUP_ONLYCONVERTING if init
2993         is not a parameter list (TREE_LIST).
2994         (expand_default_init): If LOOKUP_ONLYCONVERTING is set, then set
2995         LOOKUP_NO_CONVERSION so that we don't allow two-level conversions,
2996         but don't set it otherwise.
2997
2998 Wed Jul 19 20:32:01 1995  Mike Stump  <mrs@cygnus.com>
2999
3000         * init.c (expand_default_init): Don't allow two-level conversions
3001         during construction.
3002
3003 Wed Jul 19 18:06:37 1995  Mike Stump  <mrs@cygnus.com>
3004
3005         * gc.c (build_headof): The type of dyncasting to a pointer to cv
3006         void, should be pointer to cv void.
3007
3008 Wed Jul 19 17:25:43 1995  Mike Stump  <mrs@cygnus.com>
3009
3010         * gc.c (build_dynamic_cast): Allow casting in const.
3011
3012 Wed Jul 19 16:34:27 1995  Mike Stump  <mrs@cygnus.com>
3013
3014         * typeck.c (build_const_cast): If we are passed error_mark_node,
3015         return it.
3016
3017 Wed Jul 19 15:24:48 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
3018
3019         * class.c (push_nested_class): Make sure TYPE is non-nil.
3020
3021         * cvt.c (type_promotes_to): Watch for error_mark_node on the
3022         incoming TYPE.
3023
3024 Wed Jul 19 13:23:12 1995  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
3025
3026         * cp-tree.h (SIGTABLE_VT_OFF_NAME): Renamed from SIGTABLE_OFFSET_NAME.
3027         (SIGTABLE_VB_OFF_NAME): New macro.
3028         (vt_off_identifier): Renamed from offset_identifier.
3029         (vb_off_identifier): Added extern declaration.
3030
3031         * decl.c (vt_off_identifier): Renamed from offset identifier.
3032         (vb_off_identifier): New variable to hold the identifier for the
3033         sigtable field vb_off.
3034         (init_decl_processing): Initialize vb_off_identifier.
3035         Renamed vt_off_identifier from offset_identifier.
3036         * sig.c (build_signature_method_call): Renamed offset_identifier and
3037         local variable offset to vt_off_identifer and vt_off, respecitively.
3038         * sig.c (build_signature_table_constructor): Renamed offset to vt_off.
3039
3040         * decl.c (init_decl_processing): Add vb_off field to
3041         sigtable_entry_type.  Reorder fields so that pfn gets properly
3042         aligned at a 64 bit boundary on the Alpha.
3043         * sig.c (build_signature_table_constructor): Build the constructor
3044         according to the new layout.  Set the vb_off field to -1 for now.
3045
3046         * decl.c (init_decl_processing): Align sigtable_entry_type on word
3047         boundaries instead of double word boundaries to save space.
3048
3049 Tue Jul 18 16:58:37 1995  Mike Stump  <mrs@cygnus.com>
3050
3051         * cvt.c (cp_convert): Always call build_cplus_new for a ctor.
3052
3053 Tue Jul 18 14:24:53 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
3054
3055         * parse.y (opt.component_decl_list): Only forbid private/protected
3056         in anonymous unions.  We need to make this know when the type is
3057         defined for an object, to not give the error.
3058
3059 Mon Jul 17 14:22:44 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
3060
3061         * parse.y (opt.component_decl_list): Don't allow access control
3062         as private or protected for union members.
3063
3064 Sun Jul 16 14:01:00 1995  Jim Wilson  <wilson@chestnut.cygnus.com>
3065
3066         * lex.c (check_newline): For 'p' case, move goto skipline line to
3067         before end brace for 'pragma'.
3068
3069 Fri Jul  7 13:55:58 1995  Mike Stump  <mrs@cygnus.com>
3070
3071         * g++.1: Tiny updates.
3072
3073 Fri Jul  7 13:05:20 1995  Mike Stump  <mrs@cygnus.com>
3074
3075         * decl.c (cp_finish_decl): Only destruct local static variables if
3076         they are constructed, and only construct the first time control
3077         passes completely through its declaration (if not initialized with a
3078         constant-expression).
3079         (expand_static_init): Ditto.
3080
3081 Wed Jul  5 14:05:04 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
3082
3083         * typeck.c (comptypes, case OFFSET_REF): If either offset basetype
3084         is a TEMPLATE_TYPE_PARM, give a match.
3085
3086 Fri Jun 30 15:42:57 1995  Mike Stump  <mrs@cygnus.com>
3087
3088         * method.c (build_overload_value): Handle encoding of null pointer
3089         constants (or any pointer with a constant numeric value) for
3090         templates.
3091
3092 Fri Jun 30 13:45:51 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
3093
3094         * call.c (convert_harshness): Add QUAL_CODE when we're faced with
3095         const vs non-const for void conversions.
3096
3097 Fri Jun 30 10:19:52 1995  Mike Stump  <mrs@cygnus.com>
3098
3099         * except.c (expand_start_all_catch): Fix problem with finding an
3100         outer nested try block when there is no code to separate it from an
3101         inner try block.
3102
3103 Fri Jun 30 02:22:26 1995  Mike Stump  <mrs@cygnus.com>
3104
3105         * search.c (dfs_pushdecls): Consume 2 or 3 orders of magnitude less
3106         memory please when virtual bases are used.
3107
3108 Thu Jun 29 19:03:47 1995  Mike Stump  <mrs@cygnus.com>
3109
3110         * class.c (build_vbase_path): Avoid testing things that cannot be
3111         null to see if they are null.
3112         * cvt.c (convert_pointer_to_vbase): Remove code that doesn't work.
3113         * decl.c (finish_function): Pass a type into the new
3114         convert_pointer_to_vbase instead of a binfo.
3115         * search.c (convert_pointer_to_vbase): Rewritten to use get_vbase
3116         and convert_pointer_to_real.
3117         (expand_indirect_vtbls_init): Use convert_pointer_to_vbase instead
3118         of the more cryptic call to get_vbase.
3119
3120 Thu Jun 29 09:35:05 1995  Mike Stump  <mrs@cygnus.com>
3121
3122         * decl.c (BOOL_TYPE_SIZE): Fix broken SLOW_BYTE_ACCESS check.
3123
3124 Thu Jun 29 03:43:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3125
3126         * pt.c (instantiate_template): Don't strip 'this' twice.
3127
3128         * pt.c (coerce_template_parms): Allow null pointer constants.
3129
3130         * decl.c (revert_static_member_fn): But only if DECL_ARGUMENTS is
3131         set.
3132
3133 Wed Jun 28 18:39:03 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3134
3135         * decl.c (revert_static_member_fn): Also remove 'this' from
3136         DECL_ARGUMENTS.
3137         * decl2.c (check_classfn): Don't revert this function until we get a
3138         match.
3139
3140 Wed Jun 28 14:07:27 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
3141
3142         * parse.y (component_decl): Clear PREFIX_ATTRIBUTES here.
3143
3144 Wed Jun 28 11:05:13 1995  Mike Stump  <mrs@cygnus.com>
3145
3146         * decl2.c (finish_file): Handle global vector news.
3147         * init.c (build_new): Encode vector news so that later we will know
3148         how many elements there are.
3149
3150 Mon Jun 26 13:38:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3151
3152         * expr.c (cplus_expand_expr): Don't mess with temp slots.
3153
3154         * decl2.c (warn_if_unknown_interface): Don't crash if tinst_for_decl
3155         returns null.
3156
3157         * decl2.c (check_classfn): Use revert_static_member_fn.
3158         * decl.c (revert_static_member_fn): Diagnose static member functions
3159         declared const or volatile.
3160
3161         * decl2.c (grokfield): Check for missing default args here, too.
3162         (check_default_args): Function to do the checking.
3163         * decl.c (pushdecl): Use it.
3164
3165         * decl.c (pushdecl): Don't warn about shadowing a member of `this'
3166         if there is no `this'.
3167
3168 Sun Jun 25 11:34:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3169
3170         * call.c (build_method_call): Downgrade 'called before definition'
3171         to a warning, as it ought to go away after Monterey.
3172
3173 Sat Jun 24 14:18:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3174
3175         * pt.c (coerce_template_parms): Don't do extra checking on pointer
3176         to member arguments.
3177
3178         * class.c (finish_struct): const and reference members don't prevent
3179         a class from being an aggregate.
3180
3181         * class.c (finish_struct): Signatures are always aggregates.
3182
3183 Fri Jun 23 17:20:29 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3184
3185         * decl2.c (check_classfn): Improve error message.
3186
3187         * pt.c (tsubst): Handle PROMOTE_PROTOTYPES.
3188
3189 Thu Jun 22 01:50:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3190
3191         * typeck.c (comptypes): Don't ignore method quals.
3192
3193         * class.c (finish_struct): Non-abstract virtuals are always USED.
3194
3195         * decl.c (build_ptrmemfunc_type): The underlying union type isn't
3196         IS_AGGR_TYPE, either.
3197         * class.c (finish_struct): Use CLASSTYPE_NON_AGGREGATE instead.
3198         * cp-tree.h: Ditto.
3199
3200         * cp-tree.h (lang_type): Add aggregate.
3201         (CLASSTYPE_AGGREGATE): New macro.
3202         (TYPE_NON_AGGREGATE_CLASS): Ditto.
3203         * class.c (finish_struct): Determine whether a class is an
3204         aggregate.
3205         * decl.c (cp_finish_decl): Check TYPE_NON_AGGREGATE_CLASS instead of
3206         TYPE_NEEDS_CONSTRUCTING.
3207         * typeck2.c (digest_init): Check TYPE_NON_AGGREGATE_CLASS for
3208         subobjects, too.
3209
3210         * pt.c (tsubst, PARM_TYPE): Propagate DECL_ARTIFICIAL.
3211
3212         * decl.c (start_function): For pre-parsed functions, layout all of
3213         the parm decls again.
3214         (grokvardecl): TREE_PUBLIC depends on DECL_THIS_EXTERN, not
3215         DECL_EXTERNAL.
3216
3217         * pt.c (coerce_template_parms): Improve checking for invalid
3218         template parms.
3219
3220 Wed Jun 21 12:01:16 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
3221
3222         * decl.c (grokdeclarator): Forbid declaration of a static member
3223         with the same name as its enclosing class.
3224
3225 Mon Jun 19 10:28:14 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3226
3227         * decl.c (finish_function): Clear current_class_decl.
3228
3229         * typeck.c (build_conditional_expr): Use convert (boolean_type_node
3230         instead of truthvalue_conversion.
3231
3232         * class.c (finish_struct): A data member with the same name as the
3233         class doesn't suppress constructors.
3234
3235 Fri Jun 16 18:11:39 1995  Gerald Baumgartner  (gb@alexander.cs.purdue.edu)
3236
3237         * decl.c (start_function): If current_class_decl is a signature
3238         pointer, don't dereference it but set C_C_D to current_class_decl.
3239
3240 Fri Jun 16 17:06:28 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3241
3242         * decl.c (duplicate_decls): Complain about virtual functions
3243         redeclared to be inline.
3244
3245 Fri Jun 16 13:20:38 1995  Mike Stump  <mrs@cygnus.com>
3246
3247         * decl.c (get_unique_name): New routine to name unnamed namespaces.
3248         (push_namespace): Use get_unique_name for naming unnamed namespaces.
3249
3250 Thu Jun 15 15:00:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3251
3252         * parse.y: Call cplus_decl_attributes with prefix_attributes where
3253         appropriate.
3254
3255 Wed Jun 14 19:24:49 1995  Mike Stump  <mrs@cygnus.com>
3256
3257         * search.c (get_vbase): New routine to switch hierarchies from the
3258         CLASSTYPE_VBASECLASSES to the normal one.
3259         (expand_indirect_vtbls_init): Use get_vbase to figure out how we
3260         want to convert to a vbase pointer.
3261
3262 Mon Jun 12 17:50:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3263
3264         * pt.c (instantiate_class_template): Add the new instantiation to
3265         template_classes.
3266         (do_pending_expansions): Call instantiate_member_templates on all of
3267         the classes in template_classes.
3268
3269 Mon Jun 12 12:36:59 1995  Mike Stump  <mrs@cygnus.com>
3270
3271         * decl.c (complete_array_type): Fill in the TYPE_DOMAIN of our
3272         TYPE_MAIN_VARIANT if it is not filled in.
3273         * init.c (build_delete): If the TYPE_DOMAIN is not set, give an
3274         error instead of core dumping.
3275
3276 Mon Jun 12 10:41:40 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3277
3278         * call.c (can_convert): Also check for distance > 0.
3279         (can_convert_arg): Ditto.
3280         (user_harshness): Ditto.
3281
3282 Fri Jun  9 19:17:21 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3283
3284         * g++.c (MATH_LIBRARY): Provide default.
3285         (main): Always link with the math library if we link with libstdc++.
3286
3287         * decl.c (start_function): Complain about redefinition of a function
3288         even when the pending_inline version is compiled after the other
3289         version.
3290
3291 Thu Jun  8 15:44:38 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3292
3293         * gc.c (build_dynamic_cast): Build up a reference to a parameter of
3294         aggregate type.
3295
3296 Wed Jun  7 15:31:57 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3297
3298         * init.c (build_vec_delete): Resolve an offset ref before we try to
3299         use it.
3300
3301 Wed Jun  7 14:19:32 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3302
3303         * typeck.c (build_modify_expr): If the class lacks a constructor or
3304         assignment operator, return error_mark_node.
3305         (common_type): Use build_cplus_array_type.
3306
3307 Tue Jun  6 09:41:27 1995  Mike Stump  <mrs@cygnus.com>
3308
3309         * class.c (dont_allow_type_definitions): New variable set when types
3310         cannot be defined.
3311         (finish_struct): Use it.
3312         * cp-tree.h (dont_allow_type_definitions): Define it.
3313         * parse.y (primary, handler_seq): Set it.
3314
3315 Mon Jun  5 18:49:38 1995  Mike Stump  <mrs@cygnus.com>
3316
3317         * method.c (build_opfncall): Use DECL_CHAIN, not TREE_CHAIN for
3318         results from lookup_fnfields.  Always give warning/error on bad
3319         code.
3320
3321 Mon Jun  5 11:39:37 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3322
3323         * init.c (member_init_ok_or_else): Don't allow initialization of
3324         an ancestor's member from within a constructor.
3325
3326 Mon Jun  5 11:20:34 1995  Gerald Baumgartner  (gb@alexander.cs.purdue.edu)
3327
3328         * sig.c (build_signature_table_constructor): Use DECL_CONTEXT
3329         instead of DECL_CLASS_CONTEXT for calculating the vfield offset so
3330         abstract virtual functions are handled correctly.
3331
3332         * sig.c (build_signature_table_constructor): Store the correct
3333         delta in signature table entries.  It does not yet work for
3334         classes with virtual base classes as implementations of signatures.
3335         (build_signature_method_call): Add the delta to the object_ptr
3336         before generating the function call.
3337
3338         * call.c (build_method_call): Make instance_ptr the signature
3339         pointer itself instead of dereferencing the optr.
3340         * sig.c (build_signature_method_call): Dereference the optr for the
3341         direct and virtual calls.
3342
3343         * sig.c (build_signature_table_constructor): Make the tag for
3344         default implementations -1 instead of 2.
3345         (build_signature_method_call): Change the generated conditional
3346         expression correspondingly.
3347
3348         * sig.c (build_signature_pointer_constructor): Deleted the sorry
3349         message that said we can't handle multiple inheritance for
3350         implementations of signatures
3351         (build_signature_method_call): Use the offset from the sigtable
3352         entry instead of the vptr field from the signature pointer for
3353         building a virtual function call.
3354
3355         * class.c (build_vfn_ref): Deleted signature specific code, we don't
3356         call this function anymore from build_signature_method_call.
3357
3358         * cp-tree.h (SIGNATURE_VPTR_NAME): Deleted.  We use the right vptr
3359         field in the object now instead of in the signature pointer/ref. 
3360         (build_vptr_ref): Deleted extern declaration.
3361         * sig.c (build_vptr_ref): Deleted.
3362         (build_signature_pointer_or_reference_type): Deleted construction of
3363         the vptr field.
3364         (build_signature_pointer_constructor): Deleted initialization of/
3365         assignment to the vptr field.
3366
3367         * sig.c (build_signature_table_constructor): Convert the signature
3368         table entry fields to their correct types.
3369
3370         * sig.c (build_signature_table_constructor): Don't call digest_init
3371         for the fields of a sigtable entry, it's wasted time.
3372
3373         * sig.c (build_signature_table_constructor): Correctly set the
3374         offset and index fields of a sigtable entry.  Build the constructor
3375         the way digest_init does, digest_init can't handle initializing an
3376         anonymous union inside a struct.
3377         (build_signature_method_call): Use the index field instead of the
3378         delta field to get the vtable index.
3379
3380         * decl.c (init_decl_processing): Fix number of fields for building
3381         sigtable_entry_type.
3382
3383         * cp-tree.h (tag_identifier, offset_identifier): Added extern decls.
3384         (SIGTABLE_CODE_NAME): Renamed to SIGTABLE_TAG_NAME.
3385         (SIGTABLE_PFN_NAME): Deleted, we'll use VTABLE_PFN_NAME instead.
3386         * decl.c (tag_identifier, offset_identifier): New variables to
3387         hold the identifiers for the sigtable fields tag and offset.
3388         (init_decl_processing): Initialize these variables.
3389         (init_decl_processing): Use these variables to build the
3390         sigtable_entry_type structure.  Rename the code and offset fields
3391         to tag and delta, respectively; add offset and index fields. Changed
3392         types of fields from short_integer_type_node to delta_type_node.
3393         * sig.c (build_signature_table_constructor): Rename code and offset
3394         to tag and delta, respectively.
3395         (build_signature_method_call): Ditto.  Use above variables.
3396
3397 Thu Jun  1 17:03:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3398
3399         * decl.c (lookup_name_real): Don't try to look anything up in an
3400         erroneous object.
3401
3402 Fri Jun  2 10:30:14 1995  Mike Stump  <mrs@cygnus.com>
3403
3404         * method.c (build_overload_int): New routine.  Break out
3405         functionality from build_overload_value so we can reuse it.
3406         (build_overload_value): Handle pointer to member functions as value
3407         parameters for templates.
3408         (build_overload_identifier): Since template parameters are shared
3409         among all instantiations, we have to substitute in the real types
3410         in TREE_TYPE (parm).
3411         pt.c (coerce_template_parms): Ditto.
3412         (push_template_decls): Ditto.
3413         (grok_template_type): Deleted as template parameters are shared
3414         among all instantiations.
3415
3416 Wed May 31 19:10:32 1995  Mike Stump  <mrs@cygnus.com>
3417
3418         * decl.c (grokdeclarator): Always give errors on constant overflow
3419         for array indices.
3420
3421 Wed May 31 11:39:43 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3422
3423         * typeck.c (commonparms): Don't abort if simple_cst_equal returns < 0.
3424         (build_c_cast): Don't tack on a NON_LVALUE_EXPR when casting to
3425         reference type.
3426         (build_indirect_ref): Fix check for *&.
3427
3428 Fri Jun 16 06:54:03 1995  Mike Stump  <mrs@cygnus.com>
3429
3430         * Version 2.7.0 released.
3431
3432 Fri Jun 16 15:07:29 1995  Richard Kenner  (kenner@vlsi1.ultra.nyu.edu)
3433
3434         * Make-lang.in (DEMANGLER_PROG): Add LIBS.
3435
3436 Thu Jun 15 15:00:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3437
3438         * decl.c (define_function): Don't set DECL_INTERFACE_KNOWN.
3439
3440 Wed Jun  7 20:00:31 1995  Mike Stump  <mrs@cygnus.com>
3441
3442         * *.[chy]: Change all callers of finish_decl to cp_finish_decl.
3443         * decl.c (finish_decl): New routine to handle call backs from the
3444         mid end (declare_hidden_char_array).
3445
3446 Wed Jun  7 19:02:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3447
3448         * decl.c (start_function): Handle setting C_C_D here.
3449         (set_C_C_D): Removed.
3450         (struct saved_scope): Remove class_decl.
3451         (push_to_top_level): Don't save current_class_decl.
3452         (pop_from_top_level): Don't restore current_class_decl or C_C_D.
3453         (struct cp_function): Add C_C_D.
3454         (push_cp_function_context): Save C_C_D.
3455         (pop_cp_function_context): Restore C_C_D.
3456
3457 Fri Jun  2 11:05:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3458
3459         * decl.c (set_C_C_D): New function.  suspend_momentary before
3460         building C_C_D.
3461         (pop_from_top_level): Call it.
3462         (start_function): Ditto.
3463         (pop_cp_function_context): Ditto.
3464
3465         * class.c, cp-tree.h, decl.c, decl2.c, parse.y: Lose all references
3466         to current_vtable_decl, CLASSTYPE_INST_VAR and CLASSTYPE_VTBL_PTR.
3467
3468         * decl.c (push_cp_function_context): Save current_class_decl.
3469         (pop_cp_function_context): Restore current_class_decl and set C_C_D.
3470         (pop_from_top_level): Don't use CLASSTYPE_INST_VAR to set C_C_D.
3471         (start_function): Ditto.
3472
3473         * class.c (popclass): Don't mess with current_class_decl,
3474         current_vtable_decl, or C_C_D.
3475
3476 Mon May 29 12:45:10 1995  Paul Eggert  <eggert@twinsun.com>
3477
3478         * Make-lang.in (c++.mostlyclean): Remove $(DEMANGLER_PROG).
3479
3480 Wed May 24 15:55:18 1995  Richard Kenner  (kenner@vlsi1.ultra.nyu.edu)
3481
3482         * decl.c (duplicate_decls): Check simple_cst_equal result against 0.
3483         * decl2.c (finish_anon_union): Likewise.
3484         * method.c (largest_union_member): Likewise.
3485
3486 Wed May 24 14:41:11 1995  H.J. Lu  (hjl@nynexst.com)
3487
3488         * Make-lang.in (cxxmain.o): Replace single quotes with backslashes.
3489
3490 Mon May 22 17:38:48 1995  Richard Kenner  (kenner@vlsi1.ultra.nyu.edu)
3491
3492         * Make-lang.in (g++, g++-cross, cc1plus, DEMANGLER_PROG):
3493         Use $@ instead of output name so works even if have .exe.
3494         (cxxmain.o): Use cp if ln -s fails.
3495         (c++.install-man): Use $(exeext) in executable names.
3496         (c++.mostlyclean, stage[1-4]): Use $(objext) in object file names.
3497         * Makefile.in (../cc1plus): Use $(exeext) in name of executable.
3498
3499 Wed May 24 01:39:03 1995  Jason Merrill  <jason@deneb.cygnus.com>
3500
3501         * call.c (build_method_call): parms can be null, duh.
3502
3503 Tue May 23 01:32:09 1995  Jason Merrill  <jason@deneb.cygnus.com>
3504
3505         * call.c (build_method_call): If convert_arguments failed, just bail.
3506
3507 Fri May 19 10:31:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3508
3509         * cvt.c (convert_force): Pass LOOKUP_NORMAL to cp_convert.
3510
3511         * tree.c (copy_to_permanent): Oops.
3512
3513 Fri May 19 10:01:07 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3514
3515         * cp-tree.h (break_out_target_exprs): Add decl.
3516
3517 Thu May 18 13:02:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3518
3519         * decl.c (start_function): Move *all* interface handling stuff after
3520         the pushdecl.
3521
3522         * tree.c (mapcar): Renamed from make_deep_copy and generalized.
3523         (perm_manip): Return t if permanent, otherwise 0.
3524         (copy_to_permanent): Use them.
3525         (bot_manip): Helper for break_out_target_exprs.
3526         (break_out_target_exprs): New function.  Uses mapcar.
3527
3528         * typeck.c (convert_arguments): Use it.
3529
3530         * method.c (hack_identifier): Use convert_from_reference to
3531         dereference a reference.
3532
3533 Wed May 17 17:54:54 1995  Mike Stump  <mrs@cygnus.com>
3534
3535         * call.c (convert_harshness): Move reference bashing before pointer
3536         to member bashing.
3537
3538 Wed May 17 16:57:53 1995  Mike Stump  <mrs@cygnus.com>
3539
3540         * cvt.c (convert_to_reference): Only complain, if complaints are
3541         wanted.
3542         * typeck.c (build_function_call_real): Ditto.  If LOOKUP_SPECULATIVELY
3543         is set and something won't work, return NULL_TREE.
3544         * cvt.c (cp_convert): Ditto.  Pass flags down to build_method_call.
3545         (convert): Pass LOOKUP_NORMAL to cp_convert.
3546         * typeck.c (convert_for_assignment): Ditto.
3547         (convert_force): Pass LOOKUP_COMPLAIN to cp_convert.
3548         (convert_arguments): Get out early if we get an error_mark_node.
3549         (convert_for_initialization): Use cp_convert instead of convert so
3550         that we can pass flags down.
3551         * cp-tree.h (LOOKUP_SPECULATIVELY): Added documentation.
3552
3553 Wed May 17 01:43:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3554
3555         * typeck2.c (store_init_value): Don't take the MAIN_VARIANT of the
3556         decl type.
3557
3558         * class.c (finish_struct): Don't complain about a class with no
3559         user-defined constructors but with a member that has no default
3560         constructor, as this is OK for aggregates.
3561
3562         * expr.c (cplus_expand_expr, NEW_EXPR): If this is an explicit
3563         constructor call, mark slot addressable.
3564
3565 Tue May 16 18:37:51 1995  Douglas Rupp  (drupp@cs.washington.edu)
3566
3567         * g++.c: Changed WINNT to _WIN32.
3568
3569 Tue May 16 12:40:16 1995  Jason Merrill  <jason@lisa.cygnus.com>
3570
3571         * lex.c (handle_sysv_pragma): Don't use token_buffer.
3572
3573 Tue May 16 12:05:26 1995  Mike Stump  <mrs@cygnus.com>
3574
3575         * call.c (resolve_scope_to_name): Add initial semantic support for
3576         namespaces.
3577         * class.c (finish_struct): Ditto.
3578         * cp-tree.h (NAMESPACE_LEVEL): Ditto.
3579         * cvt.c (build_up_reference, convert_to_reference): Ditto. 
3580         * decl.c (binding_level::namespace_p, suspend_binding_level): Ditto.
3581         (resume_binding_level, toplevel_bindings_p): Ditto
3582         (namespace_bindings_p, declare_namespace_level): Ditto.
3583         (resume_level, push_namespace, pop_namespace): Ditto.
3584         (pop_everything, pushtag, duplicate_decls, pushdecl): Ditto.
3585         (implicitly_declare, lookup_namespace_name, lookup_name_real): Ditto.
3586         (start_decl, make_temporary_for_reference), Ditto.
3587         (obscure_complex_init, finish_decl, expand_static_init): Ditto.
3588         (grokvardecl, grokdeclarator, parmlist_is_exprlist): Ditto.
3589         (store_parm_decls, hack_incomplete_structures): Ditto.
3590         * decl2.c (get_temp_name, finish_anon_union, current_namespace): Ditto.
3591         (push_namespace, pop_namespace, do_namespace_alias): Ditto.
3592         (do_toplevel_using_decl, do_class_using_decl): Ditto.
3593         * error.c (dump_decl): Ditto.
3594         * init.c (build_member_call, build_offset_ref): Ditto.
3595         * lex.c (identifier_type): Ditto.
3596         * parse.y (lang_extdef, using_decl, extdef, component_decl_1): Ditto.
3597         (nested_name_specifier_1): Ditto.
3598         * spew.c (yylex): Ditto.
3599         * tree.def (NAMESPACE_DECL): Ditto.
3600
3601 Tue May 16 11:55:35 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3602
3603         * decl.c (push_overloaded_decl): Return the new decl even if it
3604         can't be pushed.
3605
3606 Tue May 16 11:00:37 1995  Jason Merrill  <jason@lisa.cygnus.com>
3607
3608         * typeck.c (decay_conversion): Split out from default_conversion.
3609         (default_conversion): Call it.
3610         (build_binary_op): Ditto.
3611         (build_binary_op_nodefault): Use decay_conversion for truth ops.
3612
3613 Mon May 15 12:47:56 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3614
3615         * decl.c (warn_extern_redeclared_static): This is a pedwarn.
3616         (duplicate_decls): Always use the old decl's linkage info.  Don't
3617         play with linkage of consts.
3618         (pushdecl): Don't play with linkage of consts.
3619         (redeclaration_error_message): Don't complain about an old public
3620         decl and a new non-public decl here.
3621         (grokvardecl): Handle linkage of consts here.
3622         (grokdeclarator): An 'extern inline' is public.  Pass constp to
3623         grokvardecl.
3624         (start_function): Wait until after the pushdecl to do some linkage
3625         stuff.
3626
3627         * decl2.c (import_export_vtable): Make duplicates weak rather than
3628         static if supported.
3629         (import_export_inline): Ditto.
3630         * pt.c (do_pending_expansions): Ditto.
3631
3632         * class.c (build_vbase_path): flag_assume_nonnull_objects only
3633         affects reference conversion.
3634
3635         * init.c (emit_base_init): Build up an RTL_EXPR and add it to
3636         rtl_expr_chain.
3637         * decl.c, decl2.c: s/base_init_insns/base_init_expr/.
3638
3639 Tue May 16 07:06:28 1995  Paul Eggert  <eggert@twinsun.com>
3640
3641         * method.c (numeric_output_need_bar): Renamed from misspelling.
3642
3643         * typeck.c (build_ptrmemfunc): Fix misspellings in messages.
3644
3645 Sun May 14 10:26:22 1995  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3646
3647         * lang-options.h, lang-specs.h: New files.
3648
3649 Thu May 11 00:31:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3650
3651         * typeck.c (default_conversion): Don't check for BLKmode before
3652         pulling out the decl_constant_value.
3653
3654         * decl.c (start_function): Clear named_labels and shadowed_labels.
3655
3656         * typeck.c (build_function_call_real): Also synthesize methods here.
3657
3658 Wed May 10 00:55:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3659
3660         * decl2.c (finish_file): Synthesize exported methods before the
3661         reconsider loop.
3662
3663         * parse.y: Move declaration of flag_new_for_scope to file scope.
3664
3665 Tue May  9 19:10:33 1995  Mike Stump  <mrs@cygnus.com>
3666
3667         * decl2.c: Add flag_new_for_scope for new -ffor-scope flag.
3668         * parse.y (FOR): Conditionalize the pushing and poping of scope for
3669         the for-init-statement upon the new flag_new_for_scope.
3670         * parse.y (try_block): Simplify and use compstmt.
3671
3672 Mon May  8 12:41:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3673
3674         * decl.c (define_function): Mark function decl artificial.
3675
3676 Sun May  7 00:51:28 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3677
3678         * parse.y (simple_stmt, FOR): Put back push/pop for condition scope.
3679
3680         * decl2.c (grokclassfn): DECLs don't have cv-qualified types.
3681         * tree.c (build_cplus_method_type): Ditto.
3682
3683         * cp-tree.h (SET_DECL_ARTIFICIAL): Just set DECL_ARTIFICIAL to 1.
3684
3685         * typeck.c (build_function_call_real): If convert_arguments failed,
3686         just bail.
3687         (convert_arguments): If one of the arguments is error_mark_node,
3688         just bail.
3689
3690 Sat May  6 02:39:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3691
3692         * decl.c (duplicate_decls): Don't check DECL_NOT_REALLY_EXTERN for
3693         decls that don't include it.
3694
3695 Fri May  5 14:23:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3696
3697         * decl.c (duplicate_decls): Decls that have DECL_INTERFACE_KNOWN or
3698         DECL_NOT_REALLY_EXTERN set aren't extern decls.
3699
3700         * typeck.c (build_indirect_ref): Don't call default_conversion for a
3701         parameter of reference_type.
3702         * cvt.c (convert_from_reference): Just use build_indirect_ref.
3703
3704         * pt.c (do_type_instantiation): Only instantiate member functions
3705         that actually come from templates.
3706
3707 Fri May  5 09:46:05 1995  Mike Stump  <mrs@cygnus.com>
3708
3709         * parse.y: Generalized cleanup of poplevels, and compound statements
3710         and compound statements in try blocks.  Rewritten `for' rule so that
3711         the scope of variables declared in the for clause is shortened to
3712         span just to the end of the statement, instead of the whole
3713         containing block.
3714
3715 Fri May  5 00:37:14 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3716
3717         * call.c (convert_harshness): Handle pointers to members better.
3718
3719 Thu May  4 16:00:26 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3720
3721         * decl2.c (delete_sanity): Do access control here.
3722         * init.c (build_delete): Instead of here.
3723
3724         * Make-lang.in: Build c++filt.
3725
3726 Wed May  3 02:59:53 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3727
3728         * decl2.c (cplus_decl_attributes): If we just modified a TYPE_DECL,
3729         update our IDENTIFIER_TYPE_VALUE.
3730
3731 Fri Apr 28 07:58:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3732
3733         * lex.c (cons_up_default_function): Fix linkage of #pragma
3734         implemented functions.
3735
3736 Thu Apr 27 16:56:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3737
3738         * method.c (build_overload_name): Simplify and fix repeated type
3739         folding.
3740
3741         * decl.c (grokdeclarator): Prohibit pointers to void or reference
3742         members.
3743
3744 Thu Apr 27 09:49:07 1995  Mike Stump  <mrs@cygnus.com>
3745
3746         * typeck2.c (process_init_constructor): Make sure initializers are
3747         fully digested.
3748
3749 Thu Apr 27 01:11:55 1995  Jason Merrill  <jason@python.cygnus.com>
3750
3751         * lex.c (cons_up_default_function): Always defer synthesis.
3752
3753 Thu Apr 27 00:20:37 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3754
3755         * decl2.c (mark_inline_for_output): Don't play with pending_inline
3756         stuff.
3757
3758 Wed Apr 26 17:48:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3759
3760         * call.c (user_harshness): New function; like build_type_conversion,
3761         but doesn't actually build anything.
3762         (compute_conversion_costs): Use it instead of build_type_conversion.
3763
3764 Wed Apr 26 17:11:25 1995  Jason Merrill  <jason@deneb.cygnus.com>
3765
3766         * typeck.c (build_function_call_real): Improve error message for
3767         calling a non-function.
3768
3769         * method.c (hack_identifier): Lose check for calling a data member.
3770
3771 Wed Apr 26 16:59:13 1995  Mike Stump  <mrs@cygnus.com>
3772
3773         * typeck2.c (build_functional_cast): Remove very old cruft.
3774         Seems like good code is generated without it.
3775
3776 Wed Apr 26 00:47:16 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3777
3778         * method.c (do_build_assign_ref): Fix handling of anonymous unions.
3779         (do_build_copy_constructor): Ditto.
3780
3781         * parse.y (simple_stmt, SWITCH): Call {push,pop}_switch.
3782
3783         * decl.c (push_switch): New function.
3784         (pop_switch): Ditto.
3785         (define_case_label): Check for jumping over initialization.
3786
3787         * call.c (build_method_call): Check for an inline function being
3788         called before its definition has been seen.
3789         * typeck.c (build_function_call_real): Ditto.
3790
3791         * decl.c (duplicate_decls): Check for a function being redeclared
3792         inline after its address has been taken.
3793
3794         * typeck.c (build_conditional_expr): Handle related class lvalues.
3795
3796 Tue Apr 25 13:20:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3797
3798         * pt.c (do_pending_expansions): Don't expand unused templates.
3799
3800         * parse.y (component_decl): Accept a lone semicolon.
3801
3802 Tue Apr 25 00:25:56 1995  Jason Merrill  <jason@rtl.cygnus.com>
3803
3804         * call.c (build_method_call): Don't allow an RTL_EXPR to serve as the
3805         object parameter anymore.
3806
3807         * expr.c (cplus_expand_expr): Don't create RTL_EXPRs with no insns.
3808
3809 Mon Apr 24 12:35:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3810
3811         * parse.y (simple_stmt, decl case): Clear prefix_attributes.
3812         (lang_extdef): Ditto.
3813
3814         * parse.y (maybe_parmlist): New rule for use in declarators where
3815         this could either be a list of expressions or parameters.  Calls
3816         suspend_momentary before deciding which.
3817         (direct_after_type_declarator): Use it.
3818         (complex_direct_notype_declarator): Use it.
3819
3820         * pt.c (tsubst): Propagate attributes const and noreturn.
3821
3822         * typeck.c (build_modify_expr): If warn_synth, call build_opfncall
3823         before doing the default thing.
3824
3825 Thu Apr 27 21:49:36 1995  Doug Evans  <dje@cygnus.com>
3826
3827         * typeck.c (common_type): Call lookup_attribute instead of
3828         value_member.
3829
3830 Tue Apr 25 18:07:43 1995  Richard Kenner  (kenner@vlsi1.ultra.nyu.edu)
3831
3832         * Make-lang.in: Change "realclean" to "maintainer-clean".
3833
3834 Sun Apr 23 12:32:38 1995  Mike Stump  <mrs@cygnus.com>
3835
3836         * decl2.c (finish_file): Fix broken linked list handling.
3837
3838 Fri Apr 21 18:08:43 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3839
3840         * class.c (finish_base_struct): Don't set TYPE_HAS_COMPLEX_*_REF
3841         as often.
3842         (finish_struct): Ditto.
3843
3844         * various: Use TYPE_HAS_TRIVIAL_* instead of TYPE_HAS_COMPLEX_*.
3845
3846         * cp-tree.h (TYPE_HAS_TRIVIAL_INIT_REF): New macro.
3847         (TYPE_HAS_TRIVIAL_ASSIGN_REF): New macro.
3848
3849 Fri Apr 21 15:52:22 1995  Jason Merrill  <jason@python.cygnus.com>
3850
3851         * typeck.c (c_expand_return): Only expand a returned TARGET_EXPR if
3852         it is of the same type as the return value.
3853
3854 Fri Apr 21 03:01:46 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3855
3856         * decl2.c (finish_file): Reconsider if synthesizing a method wrote
3857         out its assembly.
3858
3859         * typeck.c (convert_for_initialization): Don't call a trivial copy
3860         constructor.
3861
3862         * typeck2.c (store_init_value): Only abort if the type has a
3863         non-trivial copy constructor.
3864
3865         * typeck.c (c_expand_return): If we're returning in a register and
3866         the return value is a TARGET_EXPR, expand it.  Only do
3867         expand_aggr_init if we're returning in memory.
3868         (expand_target_expr): Function to expand a TARGET_EXPR.
3869         (build_modify_expr): Use it.
3870
3871         * tree.c (build_cplus_new): Layout the slot.
3872
3873         * expr.c (cplus_expand_expr): Use expand_call to expand the call
3874         under a NEW_EXPR, so the target is not discarded.
3875
3876 Thu Apr 20 14:59:31 1995  Mike Stump  <mrs@cygnus.com>
3877
3878         * gc.c (build_dynamic_cast): Tighten error checking.
3879
3880 Thu Apr 20 11:23:54 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3881
3882         * expr.c (cplus_expand_expr): Only abort if the returned target is
3883         different from what we expected if the type has a non-trivial copy
3884         constructor.
3885
3886         * decl2.c (cplus_decl_attributes): Attributes applied to a template
3887         really apply to the template's result.
3888
3889         * tree.c (lvalue_p): Check IS_AGGR_TYPE instead of TREE_ADDRESSABLE
3890         to decide whether to consider a CALL_EXPR an lvalue.
3891
3892         * class.c (finish_struct_bits): Only set TREE_ADDRESSABLE if the
3893         type has a non-trivial copy constructor.
3894
3895         * decl.c (start_function): If interface_known, unset
3896         DECL_NOT_REALLY_EXTERN on the function.
3897
3898 Wed Apr 19 16:53:13 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3899
3900         * pt.c (do_function_instantiation): Handle explicit instantiation of
3901         member functions.
3902         (do_type_instantiation): Handle 'inline template class foo<int>',
3903         meaning just spit out the vtable.
3904
3905         * lex.c (cons_up_default_function): Set DECL_NOT_REALLY_EXTERN on
3906         the consed functions.
3907
3908         * decl2.c (import_export_inline): Set DECL_INTERFACE_KNOWN.
3909
3910 Wed Apr 19 16:28:17 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3911
3912         * call.c, class.c, decl2.c, gc.c, init.c, parse.y, pt.c, search.c,
3913         typeck.c: Include output.h.
3914
3915 Wed Apr 19 14:57:21 1995  Gerald Baumgartner  (gb@alexander.cs.purdue.edu)
3916
3917         * call.c (build_method_call): Allow a signature member functions to
3918         be called from a default implementation.
3919
3920 Wed Apr 19 10:21:17 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3921
3922         * repo.c (finish_repo): Remember what directory we are in.
3923
3924         * search.c (expand_upcast_fixups): Don't mess with abort_fndecl.
3925
3926         * repo.c: Use obstacks instead of fixed-size buffers.  Don't spit
3927         out the second copy of the symbol name.  Don't remember COLLECT_GCC.
3928
3929 Wed Apr 19 02:32:40 1995  Mike Stump  <mrs@cygnus.com>
3930
3931         * search.c (virtual_context): New function to get the virtual
3932         context of a function.
3933         (expand_upcast_fixups): New function to generate runtime vtables.
3934         (fixup_virtual_upcast_offsets): Ditto.
3935         (expand_indirect_vtbls_init): Use fixup_virtual_upcast_offsets to
3936         ensure that the this offsets for upcasts from virtual bases into
3937         other virtual bases or non-virtual bases are correct at construction
3938         time and destruction time.
3939         * class.c (fixup_vtable_deltas): Modify to fixup all offsets in all
3940         vtables in all virtual bases, instead of just one vtable in each
3941         virtual base.
3942         (fixup_vtable_deltas1): Ditto.
3943
3944 Tue Apr 18 03:57:35 1995  Michael Meissner  (meissner@cygnus.com)
3945
3946         * Makefile.in (lex.o): Add dependency on c-pragma.h.
3947
3948         * lex.c (handle_sysv_pragma): Use NULL_PTR and NULL_TREE as
3949         appropriate, instead of 0.
3950
3951 Mon Apr 17 12:28:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3952
3953         * decl.c (pushdecl): Use decls_match, not duplicate_decls, for
3954         comparing local and global decls.
3955
3956 Fri Apr 14 01:46:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3957
3958         * typeck.c (convert_arguments): Only prohibit passing to ... of
3959         types with non-trivial copy constructors.
3960
3961         * repo.c (repo_template_used): Don't try to mess with no id.
3962
3963 Fri Apr 14 23:32:50 1995  Per Bothner  <bothner@rtl.cygnus.com>
3964
3965         * decl.c (duplicate_decls):  Use cp_warning_at for redundant-decls.
3966
3967 Thu Apr 13 15:37:42 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3968
3969         * cp-tree.h (current_tinst_level): Delete declaration, since it's
3970         static inside pt.c.
3971
3972         * typeck.c (build_modify_expr): Catch incompatible array assignment.
3973
3974         * parse.y (attribute_list, attrib): Rewrite actions to feed the
3975         right stuff to decl_attributes.
3976
3977 Thu Apr 13 11:24:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3978
3979         * search.c (dfs_debug_mark): Check for magic virtual like
3980         import_export_vtable.
3981
3982         * typeck.c (build_binary_op_nodefault): Don't call cp_pedwarn with
3983         four args.
3984
3985 Wed Apr 12 12:02:57 1995  Jason Merrill  <jason@deneb.cygnus.com>
3986
3987         * decl2.c (finish_file): Move prevtable pass before needs_messing_up
3988         decision.
3989
3990 Tue Apr 11 11:20:27 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3991
3992         * decl.c (finish_decl): If we're writing out a static data member of
3993         a class, we want the debug info for that class.
3994
3995         * gc.c (build_t_desc): Check linkage of a class properly.
3996
3997         * class.c (finish_struct): Set the 'headof' offset for the main
3998         vtable properly.
3999         (prepare_fresh_vtable): Fix typeinfo pointer here.
4000         (modify_one_vtable): Instead of here.
4001
4002 Mon Apr 10 12:15:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4003
4004         * repo.c (repo_get_id): New function to return the interesting
4005         identifier for a repo entity.
4006         (repo_template_used): Use it.
4007         (repo_template_instantiated): Mark the id as chosen.
4008         (init_repo): Record whether or not the id was chosen.
4009         (finish_repo): Note if an id was newly chosen.
4010
4011         * pt.c (do_function_instantiation): Call repo_template_instantiated.
4012         (do_type_instantiation): Ditto.  Don't diagnose multiple
4013         instantiation.
4014
4015         * decl2.c (finish_file): Use DECL_NOT_REALLY_EXTERN when deciding
4016         whether or not to synthesize a method.
4017
4018         Undo these changes:
4019         * class.c (finish_vtbls): build more vtables if flag_rtti is on.
4020         * class.c (modify_all_direct_vtables): ditto.
4021         * init.c (expand_direct_vtbls_init): expand more vtables if
4022         flag_rtti is on.
4023
4024 Sat Apr  8 17:45:41 1995  Mike Stump  <mrs@cygnus.com>
4025
4026         * gc.c (build_headof): Use ptrdiff_type_node instead of
4027         integer_type_node on pointer arithmetic.
4028
4029 Sat Apr  8 11:57:04 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4030
4031         * typeck.c (build_modify_expr): Undo previous change.
4032
4033 Thu Apr  6 01:23:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4034
4035         * Makefile.in (compiler): Remove ../cc1plus before rebuilding it.
4036
4037         * repo.c (get_base_filename): Put the .rpo file in the directory
4038         with the object file, not the source.
4039
4040         * typeck.c (build_conditional_expr): Handle pmf's better.
4041
4042         * repo.c (finish_repo): Also use ASM_OUTPUT_LABELREF to print out
4043         the name of the symbol.
4044
4045 Wed Apr  5 15:24:12 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4046
4047         * repo.c (open_repo_file): Make repo filename DOS-compliant.
4048         (*): Also write a new repo file if some previously-used
4049         templates are no longer used.  Only remember the identifier.
4050
4051         * lex.c (cons_up_default_function): If this function belongs to a
4052         template class, call repo_template_used for it.
4053
4054         * repo.c (repo_template_used): Using a class means using its vtable,
4055         if any.
4056         (finish_repo): Ditto.
4057
4058         * typeck.c (build_modify_expr): Only wrap TARGET_EXPRs in RTL_EXPRs
4059         if the type has a complex copy constructor.
4060
4061         * decl2.c (lang_decode_option): -frepo implies
4062         -fno-implicit-templates.
4063
4064         * decl.c (start_function): Clear current_{base,member}_init_list.
4065
4066         * lex.c (init_lex): Also unset *_eq if ! flag_operator_names.
4067
4068 Tue Apr  4 16:11:08 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4069
4070         * decl.c (struct cp_function): Add {base,member}_init_list.
4071         (push_cp_function_context): Save current_{base,member}_init_list.
4072         (pop_cp_function_context): Restore them.
4073
4074 Mon Apr  3 16:55:08 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4075
4076         * repo.c (get_base_filename): Take filename parm, fix logic bug.
4077
4078         * typeck.c (build_compound_expr): Do not warn about a compound expr
4079         in which the first expression has no side effects.
4080         (build_x_compound_expr): Warn here instead.
4081         (build_conditional_expr): Don't warn about a conditional expression
4082         between an enum and the type it promotes to.
4083
4084         * init.c (build_new): Handle initialization of arrays of builtins
4085         properly.
4086
4087 Mon Apr  3 15:08:04 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4088
4089         * repo.c: Include config.h to get definitions of bcopy and rindex
4090         on systems that don't have them (e.g., SVR4).
4091
4092 Mon Apr  3 14:41:55 1995  Mike Stump  <mrs@cygnus.com>
4093
4094         * decl2.c (finish_table): Pass NULL_TREE instead of init to
4095         finish_decl so that it won't try and do error checking on the
4096         initializer.
4097
4098 Mon Apr  3 10:45:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4099
4100         * repo.c (get_base_filename): Analyze COLLECT_GCC_OPTIONS to
4101         determine whether this compile used -c -o.
4102         (open_repo_file): Use get_base_filename.  Remove the extension.
4103         (finish_repo): Spit out the values of main_input_filename,
4104         COLLECT_GCC and COLLECT_GCC_OPTIONS.
4105
4106         * parse.y (structsp): Add TYPENAME_KEYWORD complex_type_name.
4107
4108 Sun Apr  2 23:43:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4109
4110         * search.c (compute_access): Don't try to do access control on
4111         nested types.
4112
4113 Fri Mar 31 10:14:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4114
4115         * repo.c: New file to handle things repo.
4116
4117         * pt.c (instantiate_template): Call repo_template_used if the
4118         definition is accessible.
4119         (mark_function_instantiated): Split out from
4120         do_function_instantiation.
4121         (mark_class_instantiated): Split out from do_type_instantiation.
4122
4123         * parse.y (template_instantiate_once): Call repo_template_used.
4124
4125         * lex.c (lang_init): Call init_repo.
4126
4127         * decl2.c: Handle flag_use_repository.
4128         (finish_file): Call finish_repo.
4129
4130         * decl.c (start_method): Call repo_template_used if this is a
4131         template method.
4132
4133         * Makefile.in (CXX_OBJS): Add repo.o.
4134         (repo.o): Add dependencies.
4135
4136         * Make-lang.in (CXX_SRCS): Add repo.c.
4137
4138         * decl.c (start_function): If DECL_INTERFACE_KNOWN and
4139         DECL_NOT_REALLY_EXTERN are both set, unset DECL_EXTERNAL.
4140
4141         * typeck.c (build_binary_op_nodefault): Identify the invalid operand
4142         types used.
4143
4144         * decl.c (duplicate_decls): Propagate DECL_NOT_REALLY_EXTERN.
4145
4146 Thu Mar 30 17:54:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4147
4148         * typeck.c (build_binary_op_nodefault): Tidy up use of build_type
4149         and result_type.  When checking for comparison between signed
4150         and unsigned, use result_type rather than the (possibly shortened)
4151         type of op0.  Also, don't warn about equality comparison of a
4152         signed operand to an unsigned constant that fits in the signed
4153         type.
4154
4155         * method.c (do_build_copy_constructor): Reverse
4156         current_base_init_list after we've built it up.
4157
4158 Thu Mar 30 14:35:18 1995  Mike Stump  <mrs@cygnus.com>
4159
4160         * except.c (build_throw): Never warn about the value of throw not
4161         being used.
4162
4163 Thu Mar 30 13:16:54 1995  Mike Stump  <mrs@cygnus.com>
4164
4165         * except.c (expand_start_catch_block): Check for bad catch parameter
4166         declarations.
4167
4168 Thu Mar 30 13:06:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4169
4170         * decl.c (finish_function): Only set DECL_NOT_REALLY_EXTERN if
4171         DECL_EXTERNAL is not already set.
4172
4173 Thu Mar 30 11:26:24 1995  Mike Stump  <mrs@cygnus.com>
4174
4175         * method.c (emit_thunk): Let poplevel know that the last level is
4176         for a function so it can create a BLOCK_NODE and set DECL_INITIAL.
4177
4178 Thu Mar 30 11:15:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4179
4180         * decl2.c (import_export_inline): Don't set DECL_NOT_REALLY_EXTERN
4181         here.
4182
4183         * decl.c (grokdeclarator): OK, don't abort if we see a decl with
4184         METHOD_TYPE.
4185         (finish_function): Set DECL_EXTERNAL and DECL_NOT_REALLY_EXTERN on
4186         all deferred inlines.
4187
4188 Wed Mar 29 19:35:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4189
4190         * cp-tree.h (DECL_THIS_INLINE): New macro.
4191         (DECL_NOT_REALLY_EXTERN): New macro.
4192         (DECL_THIS_STATIC): New macro.
4193
4194         * decl.c: Lose all references to current_extern_inline.  Break
4195         inline semantics into DECL_INLINE for actual inlining and
4196         DECL_THIS_INLINE for the linkage wierdness.  Use DECL_THIS_STATIC.
4197         * decl2.c: Use DECL_NOT_REALLY_EXTERN to indicate that we want to
4198         emit an inline here.  Associated changes.
4199         * lex.c: Ditto.
4200         * pt.c: Ditto.
4201         * typeck.c: Ditto.
4202
4203         * call.c (build_method_call): Don't bother trying to handle inlines
4204         specially.
4205         * cvt.c (convert_to_aggr): Ditto.
4206
4207         * pt.c (do_function_instantiation): Handle instantiation of
4208         public inlines, too.
4209
4210 Wed Mar 29 16:04:25 1995  Mike Stump  <mrs@cygnus.com>
4211
4212         * except.c (init_exception_processing): Change the interface for
4213         __throw_type_match and add decl for new rtti matching routine
4214         __throw_type_match_rtti.
4215         (build_eh_type): New routine to build a run time descriptor for the
4216         expression given. 
4217         (expand_start_catch_block): Update to use new calling convention for
4218         the matcher.
4219         (expand_throw): Update to use build_eh_type.
4220
4221 Mon Mar 27 07:14:33 1995  Warner Losh   <imp@village.org>
4222
4223         * g++.c: Removed __NetBSD__ from conditional.
4224         Declare strerror if HAVE_STRERROR is defined; otherwise
4225         declare sys_errlist and sys_nerr.
4226         (my_strerror): New function.
4227
4228 Tue Mar 28 14:16:35 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4229
4230         * search.c (get_binfo): Don't try to be so clever.
4231
4232         * tree.c (copy_to_permanent): Also suspend_momentary().
4233
4234         * cvt.c (cp_convert_to_pointer): Hand off to convert_fn_pointer even
4235         if the types are the same.
4236
4237         * decl.c (start_function): Handle extern inlines more like C++ says
4238         we should.
4239
4240         * init.c (build_member_call): Hand constructor calls off to
4241         build_functional_cast.
4242
4243         * typeck2.c (build_functional_cast): Use DECL_NESTED_TYPENAME to get
4244         the name of the type.
4245
4246 Tue Mar 28 13:13:56 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4247
4248         * decl.c (grokdeclarator): Check for the decl returned by
4249         grokfndecl to be null before using build_decl_attribute_variant.
4250
4251 Mon Mar 27 18:04:41 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4252
4253         * init.c (build_new): Use build_pointer_type instead of
4254         TYPE_POINTER_TO.
4255
4256 Fri Mar 24 12:11:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4257
4258         * typeck.c (build_conditional_expr): Handle pmfs.
4259         (convert_for_assignment): Fix pmf support.
4260
4261         * cvt.c (convert_fn_ptr): Support !flag_vtable_thunks.
4262         (cp_convert_to_pointer): Handle pmfs.
4263         (cp_convert): Pass pmfs to cp_convert_to_pointer.
4264
4265         * typeck.c (common_type): Handle inheritance for pmfs.
4266
4267         * typeck2.c (build_m_component_ref): Do access control.
4268
4269         * typeck.c (comp_target_types): Check for conversion to void *
4270         before checking trickier conversions.
4271
4272         * decl.c (duplicate_decls): Propagate DECL_ABSTRACT_VIRTUAL_P.
4273
4274         * pt.c (push_tinst_level): Complain if template instantiation depth
4275         is greater than max_tinst_depth.
4276
4277         * typeck.c (common_type): Assume that we can call common_type to
4278         unify the target type of a pointer.
4279
4280 Thu Mar 23 00:48:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4281
4282         * decl2.c (finish_file): Don't synthesize methods at
4283         finish_vtable_prevardecl time.  Do synthesize methods that are not
4284         used, but are public and not external.
4285
4286         * cvt.c (build_type_conversion): Only give an error if for_sure.
4287
4288         * typeck.c (comp_target_types): Only support pointer conversions if
4289         nptrs > 0.
4290
4291 Wed Mar 22 19:30:15 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4292
4293         * init.c (build_new): Catch use of an initializer list where it
4294         shouldn't be.
4295
4296 Wed Mar 22 16:21:07 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4297
4298         * init.c (build_new): Wrap alloc_expr in an RTL_EXPR if nelts is
4299         non-constant.
4300
4301         * decl2.c: temp_name_counter is now public.
4302
4303         * decl.c (struct cp_function): Add temp_name_counter field.
4304         (push_cp_function_context): Save it.
4305         (pop_cp_function_context): Restore it.
4306
4307         * typeck.c (common_type): Handle unifying function types, and unify
4308         unmatched things to void* with a compiler_error, rather than
4309         silently like before.
4310
4311 Wed Mar 22 15:10:34 1995  Mike Stump  <mrs@cygnus.com>
4312
4313         * decl2.c (finish_prevtable_vardecl, finish_vtable_vardecl): Revert
4314         Brendan's last change and fix latent problem that causes TD entries
4315         to not come out when the things that need them has yet to be
4316         expanded.
4317
4318 Wed Mar 22 15:12:00 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4319
4320         * typeck.c (build_binary_op_nodefault, comparison ops): Update type0
4321         and type1, since we might have changed op0 or op1.
4322
4323 Wed Mar 22 13:33:45 1995  Jason Merrill  <jason@python.cygnus.com>
4324
4325         * typeck.c (common_type): Don't mess up templates.
4326
4327 Wed Mar 22 04:56:00 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4328
4329         * typeck.c (common_type): Handle ptms properly.  Also handle 
4330         T* -> void*.
4331         (build_binary_op_nodefault): New variable build_type controls what
4332         type is given to the expression when it is created.  Set this to
4333         boolean_type_node for comparison ops instead of using result_type.
4334         (comp_target_types): Allow T * -> void *.
4335
4336         * cvt.c (cp_convert_to_pointer): Do access control when converting
4337         ptms, too.
4338
4339 Tue Mar 21 17:25:06 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4340
4341         * parse.y (extern_lang_string): Catch use of linkage specs that
4342         aren't all naming the same language.
4343
4344         * class.c (finish_struct): Delete accidental duplicate code.
4345
4346 Tue Mar 21 14:00:57 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4347
4348         * typeck.c (build_binary_op_nodefault): Disable pedwarns about
4349         comparing functions and incomplete types.
4350
4351         * decl.c (finish_function): Only unset current_function_decl if
4352         !nested.
4353         (duplicate_decls): Last change went too far; we only want to stop
4354         checking for value/reference ambiguity.
4355
4356 Tue Mar 21 01:26:39 1995  Mike Stump  <mrs@cygnus.com>
4357
4358         * gc.c (build_generic_desc): Zap the DECL_SIZE so that we can lay it
4359         out fresh, as the new type may be larger.
4360
4361 Mon Mar 20 19:01:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4362
4363         * expr.c (extract_init): Try to expand the RTL for the
4364         initialization and figure out what it will look like so we can avoid
4365         run-time initialization.  Disabled for now.
4366         (extract_scalar_init): Helper for scalar initialization.
4367         (extract_aggr_init): Helper for aggregate initialization.
4368
4369         * decl.c (duplicate_decls): Don't complain about ambiguous
4370         declarations.
4371         (obscure_complex_init): Now returns a tree.  Call extract_init if
4372         we're optimizing and this is a toplevel decl.
4373         (finish_decl): Update accordingly.
4374
4375         * lex.c (check_newline): If we're just changing files (not pushing
4376         or popping), update input_file_stack->name.
4377
4378 Mon Mar 20 17:55:04 1995  Mike Stump  <mrs@cygnus.com>
4379
4380         * pt.c (type_unification): Only TEMPLATE_DECLs are handled right now
4381         in the transitive unification code.
4382
4383 Mon Mar 20 16:07:50 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4384
4385         * decl.c (shadow_tag): Don't allow inline, virtual, or explicit on
4386         non-functions.
4387         (grokdeclarator): Don't allow friends to be defined in local classes.
4388
4389 Sat Mar 18 04:03:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4390
4391         * decl2.c (finish_prevtable_vardecl): Use DECL_DECLARED_STATIC
4392         rather than DECL_SAVED_INSNS to decide whether or not this method
4393         was declared inline.
4394
4395         * method.c (synthesize_method): Turn off DECL_INLINE if
4396         function_cannot_inline_p thinks we're too large.
4397
4398         * typeck.c (build_indirect_ref): Use build_expr_type_conversion.
4399
4400 Fri Mar 17 17:47:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4401
4402         * class.c (instantiate_type): Handle pmfs.
4403
4404         * typeck.c (convert_for_assignment): Check types when assigning one
4405         pmf to another.
4406
4407         * decl.c (define_label): Fix logic for printing out the name of the
4408         label in an error message.
4409
4410         * error.c (dump_expr): Support ARRAY_REF.
4411
4412 Fri Mar 17 17:43:02 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4413
4414         * decl2.c (finish_vtable_vardecl): Call build_t_desc here.
4415         (finish_prevtable_vardecl): Instead of here.
4416
4417 Fri Mar 17 14:40:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4418
4419         * decl.c (expand_static_init): Also use expand_aggr_init if the
4420         initializer is a TREE_LIST.     
4421         (grokdeclarator): Only pedwarn about extra qualification if -pedantic.
4422
4423         * pt.c (unify): Fix unification of return type.
4424
4425         * expr.c (fixup_result_decl): Use store_expr, rather than
4426         emit_move_insn, to move the return value into the place where
4427         callers will expect it.
4428
4429 Thu Mar 16 22:05:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4430
4431         * init.c (build_offset_ref): Call assmble_external on functions.
4432         * typeck.c (build_component_ref): Ditto.
4433
4434 Thu Mar 16 20:28:16 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4435
4436         * decl.c (struct saved_scope): Add members base_init_list and
4437         member_init_list.
4438         (push_to_top_level): Save current_base_init_list and
4439         current_member_init_list to them.
4440         (pop_from_top_level): Put it back.
4441
4442 Thu Mar 16 19:21:14 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4443
4444         * pt.c (instantiate_template): Call assemble_external.  
4445
4446 Thu Mar 16 18:07:54 1995  Brendan Kehoe  (brendan@phydeaux.cygnus.com)
4447
4448         * class.c: Include rtl.h, to get NULL_RTX.
4449         (finish_struct): Also zero out DECL_SAVED_INSNS, to avoid problems
4450         on hosts with different sizes for each part of the union.
4451         * tree.c: Also include rtl.h.
4452         (layout_basetypes): Same change for DECL_SAVED_INSNS.
4453
4454 Thu Mar 16 13:57:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4455
4456         * pt.c (unify): Fix array domain unification for 64-bit targets.
4457
4458         * decl2.c (finish_file): Push bizarre type decl before walking the
4459         vtables the first time.
4460         (walk_vtables): OK, don't set prev to vars if the vardecl_fn messed
4461         with TREE_CHAIN (prev).
4462
4463         * init.c (emit_base_init): Use convert_pointer_to_real instead of
4464         convert_pointer_to when converting to a direct base.
4465
4466 Wed Mar 15 20:26:29 1995  Mike Stump  <mrs@cygnus.com>
4467
4468         * pt.c (type_unification): Handle transitive unification better.
4469
4470 Wed Mar 15 13:56:16 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4471
4472         * decl2.c (walk_vtables): Always set prev to vars.
4473         (mark_vtable_entries): Call assemble_external on the vtable entries.
4474
4475         * class.c (finish_struct): Set the vtable's size to NULL_TREE before
4476         calling layout_decl, so that it gets updated properly.
4477
4478         Finally re-enable dynamic synthesis.  This time it works.
4479         * method.c (synthesize_method): Pass decl_function_context (fndecl)
4480         to {push,pop}_cp_function_context.
4481         * decl.c (push_cp_function_context): Now takes a tree argument.
4482         (pop_cp_function_context): Ditto.
4483         * call.c (build_method_call): Enable synthesis.
4484         * lex.c (cons_up_default_function): Ditto.
4485
4486 Tue Mar 14 19:14:19 1995  Doug Evans  <dje@chestnut.cygnus.com>
4487
4488         * parse.y (setattrs): Chain onto prefix_attributes rather than
4489         setting it.
4490
4491 Wed Mar 15 13:00:00 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4492
4493         * decl.c (pushdecl): Check if the type of the VAR_DECL is an
4494         error_mark_node before trying to read TYPE_LANG_SPECIFIC. 
4495
4496 Mon Mar 13 21:00:28 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4497
4498         * decl.c (grokdeclarator, case ARRAY_REF): Wrap the exp with fold,
4499         and convert the size and integer_one_node to the index type.
4500
4501 Mon Mar 13 08:01:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4502
4503         * typeck.c (get_member_function_from_ptrfunc): Save the instance
4504         argument, and tack it onto the front of the COND_EXPR to make the
4505         semantics come out right.  Grab the instance argument from
4506         '*instance_ptrptr', rather than having it passed in separately.
4507         
4508         * various: Change various consed-up comparison operations to have
4509         boolean type.  Remove the instance argument in calls to
4510         get_member_function_from_ptrfunc.
4511
4512         * error.c (dump_expr): Dump true and false as "true" and "false".
4513
4514         * decl2.c (finish_file): Also set DECL_STATIC_FUNCTION_P on the
4515         global init function.
4516
4517         * decl.c (finish_function): Only set DECL_EXTERNAL here if the
4518         inline function is public.
4519
4520 Sat Mar 11 00:58:03 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4521
4522         * init.c (is_friend): Be more careful about checking
4523         DECL_CLASS_CONTEXT on non-member functions.
4524
4525         * decl2.c (finish_vtable_vardecl): Don't bother calling
4526         assemble_external here.
4527         (prune_vtable_vardecl): New function that just splices out the
4528         vtable decl from the top-level decls.
4529         (import_export_inline): Unset DECL_EXTERNAL at first.
4530         (finish_file): Don't bother calling assemble_external here.  Do
4531         splice out all of the vtables.
4532
4533 Fri Mar 10 14:42:29 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4534
4535         * decl.c (finish_function): If we're not emitting the function yet,
4536         call assemble_external for it.
4537
4538         * decl2.c (finish_prevtable_vardecl): Don't call mark_vtable_entries
4539         here.
4540         (finish_vtable_vardecl): Don't do the linkage deduction thing here.
4541         Also don't splice out the current vtable if it is unused.
4542         (finish_file): Move the second walk_vtables and the synthesis check
4543         inside the 'reconsider' loop.  Move thunk emission after the
4544         'reconsider' loop.
4545
4546 Thu Mar  9 16:28:16 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4547
4548         * pt.c (tsubst): Don't bother calling cp_build_type_variant, since it
4549         was passing bogus values for readonly and volatile from the original
4550         template decl, not the resultant type of the tsubst call.
4551
4552         * class.c (duplicate_tag_error): Use cp_error_at to point out the
4553         previous definition of the tag.
4554
4555 Thu Mar  9 10:46:17 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4556
4557         * decl.c (start_function): Clear base_init_insns and protect_list.
4558         (struct cp_function): Add base_init_insns field.
4559         (push_cp_function_context): Also save base_init_insns.
4560         (pop_cp_function_context): Also restore base_init_insns.
4561
4562 Wed Mar  8 13:31:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4563
4564         * init.c (member_init_ok_or_else): Check for initializing a static
4565         member here.
4566         (emit_base_init): Instead of here.
4567
4568 Tue Mar  7 16:03:26 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4569
4570         * call.c (build_method_call): Disable synthesis as needed.
4571         * lex.c (cons_up_default_function): Ditto.
4572
4573 Tue Mar  7 10:14:29 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4574
4575         * parse.y: New rules to allow attributes in a prefix position.
4576         (prefix_attributes): New variable.  Pass it into cplus_decl_attributes.
4577         (setattr): New rule.
4578         (reserved_declspecs, declmods): Catch attributes here.
4579         * decl2.c (cplus_decl_attributes): Add PREFIX_ATTRIBUTES argument.
4580         * decl.c (duplicate_decls): Pass DECL_MACHINE_ATTRIBUTES to
4581         descendent typedef.
4582         (grokdeclarator): Added code to support machine attributes.
4583         * Makefile.in (stamp-parse): Expect 5 shift/reduce failures.
4584
4585 Mon Mar  6 15:07:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4586
4587         * call.c (build_method_call): Don't synthesize methods outside of a
4588         function.
4589
4590         Make base initialization more re-entrant so that synthesis on the
4591         fly will work (and, eventually, template instantation on the fly).
4592         * init.c (sort_member_init): Don't bother with members that can't be
4593         initialized.  Reorganize a bit.  Don't initialize base members here.
4594         (sort_base_init): New function, like sort_member_init, but for base
4595         classes.  Steals some code from emit_base_init.
4596         (emit_base_init): Simplify.  Call sort_{member,base}_init before
4597         doing any initialization, so we don't have to save
4598         current_{member,base}_init_list in push_cp_function_context.
4599         (expand_aggr_vbase_init_1): Adjust for sort_base_init.
4600         (expand_aggr_vbase_init): Simplify.
4601         * decl.c (struct cp_function): Add protect_list field.
4602         (push_cp_function_context): Also save protect_list.
4603         (pop_cp_function_context): Also restore protect_list.
4604         * call.c (build_method_call): Enable synthesis at point of call.
4605         * lex.c (cons_up_default_function): Ditto.
4606
4607         * parse.y: Turn -ansi checks back into -pedantic checks.
4608
4609         * init.c (build_new): Fix -fcheck-new for array new.
4610
4611 Sat Mar  4 15:55:42 1995  Fergus Henderson  <fjh@cs.mu.oz.au>
4612
4613         * typeck.c (build_compound_expr): warn if left-hand operand of
4614         comma expression has no side-effects.
4615
4616 Fri Mar  3 15:16:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4617
4618         * parse.y (primary): Change 'object qualified_id *' rules to 'object
4619         overqualified_id *'.
4620
4621 Fri Mar  3 12:48:17 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4622
4623         * parse.y (unary_expr): Catch doing sizeof an overloaded function.
4624         Make the error look the same as the one we issue in c_sizeof.
4625
4626         * typeck.c (build_binary_op_nodefault): Give an error for trying
4627         to compare a pointer-to-member to `void *'.
4628
4629 Fri Mar  3 11:28:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4630
4631         * typeck.c (build_unary_op): Handle bool increment with smoke and
4632         mirrors here, rather than in expand_increment where it belongs,
4633         because Kenner doesn't agree with me.
4634
4635 Fri Mar  3 00:08:10 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4636
4637         * decl.c (grokparms): Catch a PARM_DECL being used for a default
4638         argument as well.
4639
4640 Thu Mar  2 20:05:54 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4641
4642         * init.c (build_new): Don't allow new on a function type.
4643
4644         * parse.y (primary): Avoid a crash when seeing if the arg is of
4645         the same type as that given for the typespec in an explicit dtor call.
4646
4647 Thu Mar  2 00:49:38 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4648
4649         * decl.c (finish_function): Change test for calling
4650         mark_inline_for_output.
4651
4652 Wed Mar  1 11:23:46 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4653
4654         * typeck.c (build_modify_expr): Complain if
4655         build_default_binary_type_conversion fails.
4656
4657         * init.c (expand_default_init): Handle arguments of unknown type
4658         properly.
4659
4660         * cvt.c (build_expr_type_conversion): Only complain about ambiguity
4661         if 'complain'.
4662         * various: Pass 'complain'.
4663
4664         * typeck.c (comptypes): Be more picky about comparing UPTs.
4665
4666 Wed Mar  1 11:03:41 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4667
4668         * decl.c (grokdeclarator): If declarator is null, say that the
4669         type used has an incomplete type.
4670
4671 Wed Mar  1 10:06:20 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4672
4673         * pt.c (instantiate_template): Copy the template arguments to the
4674         permanent_obstack.  Also use simple_cst_equal to compare them when
4675         looking for a previous instantiation.
4676
4677         * tree.c (make_deep_copy): Support copying INTEGER_TYPEs (assuming
4678         they are array domain types).
4679
4680 Tue Feb 28 23:24:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4681
4682         * cp-tree.h: Define WANT_* constants for passing to
4683         build_expr_type_conversion.
4684         * cvt.c (build_expr_type_conversion): New function to build
4685         conversion to one of a group of suitable types.
4686         (build_default_binary_type_conversion): Use it.
4687         * decl2.c (grok_array_decl): Ditto.
4688         * typeck.c (build_unary_op): Ditto.
4689         (build_array_ref): Tidy up a bit.
4690         (build_binary_op): Ditto.
4691
4692 Tue Feb 28 19:57:31 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4693
4694         * decl.c (grokdeclarator): Don't allow decl of an argument as `void'.
4695
4696 Tue Feb 28 17:23:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4697
4698         * parse.y (typed_declspecs1): Add 'typespec reserved_typespecquals
4699         reserved_declspecs' rule.
4700
4701         * parse.y (expr_or_declarator): Remove notype_qualified_id rule.
4702         (direct_notype_declarator): Ditto.
4703         (complex_direct_notype_declarator): Add notype_qualified_id rule.
4704
4705         * lex.c (real_yylex): Handle :> digraph properly.
4706
4707 Tue Feb 28 12:26:29 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4708
4709         * decl.c (grokdeclarator): Check if it's a friend, not if it's
4710         non-virtual, that's being initialized.  Move the check up to
4711         before FRIENDP would get cleared.  Catch an unnamed var/field
4712         being declared void.  Say just `field' instead of `structure field'
4713         in the error message.  Only go for the operator name if DECLARATOR
4714         is non-null.
4715
4716 Tue Feb 28 00:08:01 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4717
4718         * decl.c (start_function): Complain about abstract return type.
4719         (grokdeclarator): Complain about declaring constructors and
4720         destructors to be const or volatile.  Complain about declaring
4721         destructors to be static.
4722
4723         * pt.c (uses_template_parms): Handle pmfs.
4724
4725         * decl.c (grokdeclarator): Don't call variable_size for array bounds
4726         that only depend on template constant parameters.
4727
4728 Mon Feb 27 15:38:16 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4729
4730         * error.c (dump_decl): Only look to see if it's a vtable if we
4731         actually have a name to check out.
4732
4733 Mon Feb 27 13:37:53 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4734
4735         * cvt.c (convert_to_aggr): Lose misleading shortcut.
4736
4737 Sun Feb 26 17:27:32 1995  Doug Evans  <dje@canuck.cygnus.com>
4738
4739         * decl.c (set_nested_typename): Always set DECL_IGNORED_P,
4740         not just for dwarf.
4741
4742 Sun Feb 26 00:10:18 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4743
4744         * decl.c (grokdeclarator): Don't allow a static member to be
4745         declared `register'.
4746
4747         * init.c (make_friend_class): Move up to a pedwarn for the warning
4748         about a class declaring friends with itself.
4749
4750         * decl.c (grokdeclarator): You can't do `volatile friend class foo'
4751         or `inline friend class foo'.  Only try to make a friend out of
4752         TYPE if we didn't already reset it to integer_type_node.
4753
4754 Sat Feb 25 22:32:03 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4755
4756         * decl.c (grokdeclarator): Don't allow initialization of a
4757         non-virtual function.
4758
4759         * decl.c (start_function): Do a pedwarn if we're changing `main'
4760         to have an int return type.
4761
4762 Sat Feb 25 00:02:05 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4763
4764         * typeck.c (build_modify_expr): Handle simple assignment from
4765         TARGET_EXPRs by building up an RTL_EXPR to force expansion.  Whew.
4766
4767 Fri Feb 24 18:27:14 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4768
4769         * decl.c (grokdeclarator): Also don't allow virtual outside of a
4770         class decl for a scope method definition performed at global binding.
4771
4772         * init.c (build_offset_ref): Don't allow creation of an OFFSET_REF
4773         of a bitfield.
4774
4775         * decl.c (grokdeclarator): Don't allow a const to be declared mutable.
4776
4777         * typeck.c (build_binary_op): Return an error_mark_node if either
4778         one of the args turned into an error_mark_node when we tried to
4779         use default_conversion.
4780
4781         * typeck.c (build_unary_op): Forbid using postfix -- on a bool.
4782
4783         * decl.c (grokdeclarator): Allow `signed' and `unsigned' to be
4784         used on `__wchar_t'.
4785
4786 Fri Feb 24 13:59:53 1995  Mike Stump  <mrs@cygnus.com>
4787
4788         * except.c (end_protect_partials): Do it the right way.
4789
4790 Wed Feb 22 15:42:56 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4791
4792         * typeck.c (build_binary_op_nodefault): Upgrade warning about
4793         comparing distinct pointer types to pedwarn.
4794
4795         * typeck2.c (digest_init): Cope with extra braces.
4796
4797         * typeck.c (build_binary_op_nodefault): Use tree_int_cst_sgn instead
4798         of INT_CST_LT (..., interger_zero_node).
4799
4800 Wed Feb 22 14:45:52 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4801
4802         * except.c [!TRY_NEW_EH] (end_protect_partials): Define dummy
4803         function for systems that don't have EH.
4804
4805 Tue Feb 21 19:18:31 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4806
4807         * call.c (can_convert_arg): Like can_convert, but takes an arg as
4808         well.
4809
4810         * pt.c (type_unification): Allow implicit conversions for parameters
4811         that do not depend on template parameters.
4812
4813 Tue Feb 21 18:43:48 1995  Douglas Rupp  (drupp@cs.washington.edu)
4814
4815         * Make-lang.in, config-lang.in: ($exeext): New macro.
4816         * Make-lang.in: Try a "cp" if "ln" fails.
4817         * cp-tree.h (decl_attributes): Added argument.
4818         * decl2.c (cplus_decl_attribute): Add arg to decl_attributes.
4819         * cp/g++.c: Added #ifdefs for sys/file.h and process.h for NT.
4820         Modified spawnvp to have to correct number of arguments for OS/2, NT.
4821
4822 Tue Feb 21 18:36:55 1995  Mike Stump  <mrs@cygnus.com>
4823
4824         * decl.c (finish_function): Add calls to end_protect_partials to end
4825         the exception region that protects constructors so that partially
4826         constructed objects can be partially destructed when the constructor
4827         throws an exception.
4828         * init.c (perform_member_init, sort_member_init, emit_base_init):
4829         Added support for partially constructed objects.
4830         * init.c (build_partial_cleanup_for): New routine to do partial
4831         cleanups of a base class.
4832         * decl2.c (finish_file): Move the emitting of the exception table
4833         down, after we emit all code that might have exception regions in
4834         them.
4835         * except.c (end_protect_partials, might_have_exceptions_p): New
4836         routines.
4837         (emit_exception_table): Always output table if called.
4838         * cp-tree.h (protect_list, end_protect_partials,
4839         might_have_exceptions_p, emit_exception_table): Added.
4840
4841 Tue Feb 21 16:05:59 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4842
4843         * gc.c (build_typeid): Pass a NULL_TREE, not the bogus, unused
4844         address of a local variable.
4845         * class.c (build_vfn_ref): Only try to build the PLUS_EXPR if we
4846         were given a non-null PTR_TO_INSTPTR.
4847
4848 Tue Feb 21 01:53:18 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4849
4850         * decl.c (duplicate_decls): Always lay out the merged decl.
4851
4852         * decl2.c (finish_vtable_vardecl): Don't do vtable hack on templates.
4853         (finish_prevtable_vardecl): Ditto.
4854
4855         * method.c (synthesize_method): Set interface_{unknown,only}
4856         according to the settings for our class, not the file where it comes
4857         from.
4858
4859 Sat Feb 18 12:26:48 1995  Mike Stump  <mrs@cygnus.com>
4860
4861         * except.c: Handle systems that define __i386__ but not __i386.
4862
4863 Fri Feb 17 15:31:31 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4864
4865         * decl2.c (reparse_decl_as_expr): Support being called without a
4866         type argument.
4867
4868         * parse.y (primary): Add '(' expr_or_declarator ')'.  Adds 4 r/r
4869         conflicts.  Sigh.
4870
4871 Fri Feb 17 12:02:06 1995  Mike Stump  <mrs@cygnus.com>
4872
4873         * parse.y (template_def, fndef, fn.def1, return_init, condition,
4874         initdcl0, initdcl, notype_initdcl0, nomods_initdcl0,
4875         component_decl_1, after_type_component_declarator0,
4876         notype_component_declarator0, after_type_component_declarator,
4877         notype_component_declarator, after_type_component_declarator,
4878         full_parm, maybe_raises, exception_specification_opt): Fix up,
4879         include exception_specification_opt maybeasm maybe_attribute and
4880         maybe_init if missing.  Rename maybe_raises to
4881         exception_specification_opt to match draft wording.  Use maybe_init
4882         to simplify rules.
4883
4884 Fri Feb 17 01:54:46 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4885
4886         * init.c (build_new): Set TREE_NO_UNUSED_WARNING on COMPOUND_EXPRs
4887         built for news of scalar types.
4888
4889 Thu Feb 16 17:48:28 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4890
4891         * typeck.c (build_binary_op_nodefault): Update code for warning
4892         about signed/unsigned comparisons from C frontend.  Realize that the
4893         code in the C frontend is, if anything, even more bogus.  Fix it.
4894         (build_binary_op): Undo default_conversion if it wasn't useful.
4895
4896         * typeck.c (build_unary_op, ADDR_EXPR): Lose bogus special case for
4897         PRE*CREMENT_EXPR.
4898
4899         * decl2.c (import_export_vtable): Don't try the vtable hack
4900         if the class doesn't have any real non-inline virtual functions.
4901         (finish_vtable_vardecl): Don't bother trying to find a non-inline
4902         virtual function in a non-polymorphic class.
4903         (finish_prevtable_vardecl): Ditto.
4904
4905         * decl2.c (import_export_vtable): Use and set DECL_INTERFACE_KNOWN.
4906
4907         * cp-tree.h (DECL_INTERFACE_KNOWN): Use DECL_LANG_FLAG_5.
4908
4909         * init.c (expand_virtual_init): Always call assemble_external.
4910
4911         * class.c (build_vfn_ref): Always call assemble_external.
4912         (build_vtable): Always call import_export_vtable.
4913         (prepare_fresh_vtable): Ditto.
4914         (add_virtual_function): Don't bother setting TREE_ADDRESSABLE.
4915
4916 Thu Feb 16 03:28:49 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4917
4918         * class.c (finish_struct): Use TYPE_{MIN,MAX}_VALUE to determine
4919         whether an enumerated type fits in a bitfield.
4920
4921 Wed Feb 15 15:38:12 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4922
4923         * class.c (grow_method): Update method_vec after growing the class
4924         obstack.
4925
4926 Wed Feb 15 13:42:59 1995  Mike Stump  <mrs@cygnus.com>
4927
4928         * parse.y (handler_seq): Push a level for the catch parameters.
4929
4930 Wed Feb 15 12:42:57 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4931
4932         * init.c (emit_base_init): Update BINFO_INHERITANCE_CHAIN on my
4933         bases, in case they've been clobbered.
4934
4935 Wed Feb 15 12:07:29 1995  Mike Stump  <mrs@cygnus.com>
4936
4937         * class.c (finish_base_struct): Set up BINFO_INHERITANCE_CHAIN here,
4938         so that one day it will always be valid.
4939         * tree.c (propagate_binfo_offsets, layout_vbasetypes): Ditto.
4940
4941         * cp-tree.h (copy_binfo): Removed, unused.
4942         * tree.c (copy_binfo): Ditto.
4943
4944 Wed Feb 15 00:05:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4945
4946         * init.c (build_new): Save the allocation before calling
4947         expand_vec_init on it.
4948
4949         * decl.c (finish_enum): The TYPE_PRECISION of the enum type mush
4950         match the TYPE_PRECISION of the underlying type for constant folding
4951         to work.
4952
4953 Tue Feb 14 15:31:25 1995  Mike Stump  <mrs@cygnus.com>
4954
4955         * except.c (push_eh_entry, expand_start_all_catch,
4956         expand_leftover_cleanups, expand_end_catch_block): Keep track of
4957         the context in which the exception region occurs.
4958         (build_exception_table): If the region was not output, don't output
4959         the entry in the eh table for it.
4960
4961 Tue Feb 14 02:15:43 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4962
4963         * init.c (expand_default_init): Only use a previous constructor call
4964         if it's a call to our constructor.  Does the word "Duh" mean
4965         anything to you?
4966
4967         * decl.c (grokparms): Fine, just don't call
4968         convert_for_initialization at all.  OK?  Happy now?
4969
4970 Mon Feb 13 02:23:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4971
4972         * cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Make sure that the class
4973         method vector has a second element before returning it.
4974
4975         * decl.c (grokparms): Don't strip REFERENCE_TYPE before calling
4976         convert_for_initialization.
4977
4978 Sun Feb 12 03:57:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4979
4980         * typeck.c (build_modify_expr): Compare function name to
4981         constructor_name (current_class_type) instead of current_class_name.
4982
4983         * decl.c (grokparms): Don't do anything with the return value of
4984         convert_for_initialization.
4985
4986         * error.c (dump_decl): Also dump_readonly_or_volatile on the decl.
4987
4988         * decl.c (duplicate_decls): Tweak error message.
4989
4990         * typeck.c (build_const_cast): Implement checking.
4991         (build_reinterpret_cast): Implement some checking.
4992
4993         * cp-tree.h (CONV_FORCE_TEMP): Require a new temporary when
4994         converting to the same aggregate type.
4995         (CONV_STATIC_CAST): Include it.
4996         (CONV_C_CAST): Ditto.
4997         * cvt.c (convert_force): Use CONV_C_CAST instead of CONV_OLD_CONVERT.
4998         (cp_convert): Only force a new temporary if CONV_FORCE_TEMP.
4999
5000 Fri Feb 10 16:18:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5001
5002         * typeck.c (build_c_cast): Use non_lvalue to tack something on
5003         where necessary.
5004
5005         * decl.c (auto_function): Now a function.
5006         * except.c (init_exception_processing): terminate, unexpected,
5007         set_terminate, and set_unexpected have C++ linkage.
5008
5009         * typeck.c (build_unary_op, TRUTH_NOT_EXPR): Use convert instead of
5010         truthvalue_conversion for converting to bool, as it handles
5011         user-defined conversions properly.
5012         (condition_conversion): Ditto.
5013
5014         * except.c (expand_throw): Don't call convert_to_reference.
5015         Pass the correct parameters to build_new.
5016
5017         * method.c (do_build_assign_ref): Don't use access control when
5018         converting to a base reference here.
5019         (do_build_copy_constructor): Or here.
5020
5021         * init.c (build_new): Unset TREE_READONLY on the dereferenced
5022         pointer before assigning to it.
5023
5024         * decl.c (maybe_build_cleanup): Don't bother stripping const here.
5025
5026         * decl2.c (delete_sanity): You can now delete pointer to const.
5027
5028 Fri Feb 10 13:28:38 1995  Jason Merrill  <jason@python.cygnus.com>
5029
5030         * decl.c (finish_function): Don't rely on actual parameters being
5031         evaluated left-to-right.
5032         * except.c (expand_end_catch_block): Ditto.
5033
5034 Fri Feb 10 00:52:04 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5035
5036         * tree.c (real_lvalue_p): Like lvalue_p, but class temps aren't
5037         considered lvalues.
5038         * cvt.c (convert_to_reference): Use real_lvalue_p instead of
5039         lvalue_p.
5040
5041         * cvt.c (build_type_conversion_1): Don't call convert on aggregate
5042         types.
5043         (convert_to_reference): Fix erroneous text substitution.
5044
5045         * typeck2.c (initializer_constant_valid_p): Update from C frontend.
5046         Add new argument to all callers.
5047
5048         * typeck.c (convert_arguments): Check for error_mark_node before
5049         trying to do anything with the actual parameter.
5050
5051         * typeck.c (condition_conversion): Build up a CLEANUP_POINT_EXPR and
5052         fold it.
5053         (bool_truthvalue_conversion): Remove.  Fix all callers to call
5054         truthvalue_conversion instead.
5055         (various): Fold CLEANUP_POINT_EXPRs.
5056
5057         * parse.y (conditions): Call condition_conversion rather than
5058         building up a CLEANUP_POINT_EXPR.
5059
5060         * pt.c (end_template_decl): Don't warn_if_unknown_interface here
5061         under -falt-external-templates.
5062
5063 Thu Feb  9 05:24:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5064
5065         * init.c (build_new): Complain about new of const type without
5066         initializer.  Other cleanup.
5067
5068         * call.c (compute_conversion_costs): Don't call
5069         build_type_conversion with a reference type; convert to the target
5070         type and check its lvaluetude.
5071         * cvt.c (convert_to_reference): Ditto.
5072
5073         * cvt.c (build_type_conversion_1): There will never be any need to
5074         dereference references here now.
5075
5076 Thu Feb  9 00:37:47 1995  Mike Stump  <mrs@cygnus.com>
5077
5078         * except.c (expand_builtin_throw): Make sure we only `use' the
5079         value of return_val_rtx.
5080
5081 Wed Feb  8 15:45:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5082
5083         * parse.y (structsp): Don't complain about declaring a type being
5084         defined to be a friend.
5085
5086         * decl2.c (warn_if_unknown_interface): Note the template in question
5087         and the point of instantiation, for -falt-external-templates.
5088         * lex.c (reinit_parse_for_method): Pass the decl to
5089         warn_if_unknown_interface.
5090         * pt.c (instantiate_template): Ditto.
5091         (end_template_decl): Ditto.
5092
5093         * decl.c (set_nested_typename): Set IDENTIFIER_TYPE_VALUE on the
5094         nested name again, to make local classes work a bit better.
5095
5096         * typeck.c (build_function_call_real): Dereference reference after
5097         checking for incomplete type.
5098
5099         * init.c (build_new): Accept new of const and volatile types.
5100
5101 Wed Feb  8 14:04:16 1995  Jason Merrill  <jason@deneb.cygnus.com>
5102
5103         * decl.c (grokdeclarator): Fix error message.
5104
5105 Wed Feb  8 03:16:15 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5106
5107         * typeck.c (convert_for_initialization): Do bash arrays when
5108         converting to a reference to non-array.
5109
5110 Tue Feb  7 15:50:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5111
5112         * cvt.c (cp_convert): Don't call convert_to_reference, or
5113         automatically dereference references.  Do pass reference conversions
5114         to cp_convert_to_pointer.
5115         (cp_convert_to_pointer): Support references.
5116
5117         * call.c (build_method_call): Don't build up a reference to the
5118         parameter here; let build_overload_call handle that.
5119
5120         * typeck.c (build_c_cast): Call convert_to_reference directly if
5121         converting to a reference type.
5122         * method.c (do_build_copy_constructor): Ditto.
5123         * method.c (do_build_copy_constructor): Ditto.
5124         (do_build_assign_ref): Ditto.
5125
5126         * call.c (build_method_call): Dereference a returned reference.
5127         * typeck.c (build_function_call_real): Ditto.
5128
5129         * decl.c (xref_basetypes): Check for unions with basetypes here.
5130         (xref_tag): Instead of here.
5131
5132         * pt.c (process_template_parm): Template type parm decls are
5133         artificial.
5134
5135 Mon Feb  6 04:32:09 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5136
5137         * parse.y (typed_declspecs): Add missing semicolon.
5138         (do_xref_defn): Resurrect.
5139         (named_class_head_sans_basetype): Move template specialization
5140         definition cases to named_class_head_sans_basetype_defn.
5141
5142         * decl2.c (grokfield): Call pushdecl_class_level after setting the
5143         TYPE_NAME, not before.
5144
5145 Sun Feb  5 02:50:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5146
5147         * call.c (convert_harshness): Don't call sorry here.  Don't allow
5148         conversions between function pointer types if pedantic.
5149
5150         * pt.c (overload_template_name): Pass globalize=1 to xref_tag.
5151
5152         * lex.c (cons_up_default_function): Use the full name for the return
5153         type of op=.
5154
5155         * decl.c (set_nested_typename): Don't worry about anonymous types,
5156         as they already have a unique name.
5157         (pushdecl): Remove redundant set_nested_typename
5158         (xref_tag): Split out base handling into xref_basetypes.
5159
5160         * cp-tree.h (TYPE_INCOMPLETE): New macro; TEMPLATE_TYPE_PARMs are
5161         not considered incomplete even though their definition is unknown.
5162
5163         * decl.c (xref_defn_tag): Lose.
5164         (xref_tag): xref_next_defn = ! globalize.
5165         (pushdecl): Don't set DECL_NESTED_TYPENAME on artificial decls.  The
5166         ones that should have it set will have it set by pushtag.
5167         (pushdecl_class_level): Ditto.
5168         (pushtag): Tidy up a bit.
5169         (set_nested_typename): Push a decl for the nested typename from
5170         here, rather than from xref_defn_tag.
5171
5172         * parse.y (do_xref): Lose.
5173         (named_class_head): If we see 'class foo:' we know it's a
5174         definition, so don't worry about base lists for non-definitions.
5175
5176         * pt.c (push_template_decls): Template parm decls are artificial.
5177
5178         * decl.c (duplicate_decls): Restore check for qualifier
5179         disagreement for non-functions.
5180         (decls_match): Remove check for qualifier disagreement.
5181
5182 Fri Feb  3 14:58:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5183
5184         * decl.c (grok_reference_init): Convert initializer from
5185         reference.
5186         * typeck.c (convert_for_initialization): Ditto.
5187
5188         * decl.c (duplicate_decls): Propagate DECL_NESTED_TYPENAME.
5189
5190         * cvt.c (cp_convert): Don't convert to the same class type by just
5191         tacking on a NOP_EXPR.
5192         (convert_to_reference): Use comp_target_types instead of comptypes
5193         so that we don't allow conversions two levels down.
5194
5195 Thu Feb  2 15:07:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5196
5197         * class.c (build_vbase_path): Bash types to make the backend happy.
5198         * cvt.c (build_up_reference): Bash the types bashed by
5199         build_vbase_path to be reference types instead of pointer types.
5200         (convert_to_reference): Ditto.
5201
5202         * typeck.c (build_c_cast): Don't strip NOPs if we're converting to a
5203         reference type.
5204
5205         * parse.y (structsp): Put back error for 'struct B: public A;'.
5206
5207 Wed Feb  1 23:02:06 1995  Mike Stump  <mrs@cygnus.com>
5208
5209         * except.c: Add support for mips systems that don't define __mips
5210         but do define mips, like Ultrix.
5211
5212 Wed Feb  1 22:39:07 1995  Mike Stump  <mrs@cygnus.com>
5213
5214         * except.c: Add support for exception handling on the Alpha.
5215
5216 Wed Feb  1 10:12:14 1995  Mike Stump  <mrs@cygnus.com>
5217
5218         * decl2.c (finish_file): Fix bug in Jan 31st change.
5219
5220 Tue Jan 31 16:59:15 1995  Gerald Baumgartner  (gb@lorenzo.cs.purdue.edu)
5221
5222         * sig.c (build_signature_pointer_or_reference_type): Don't set
5223         IS_AGGR_TYPE for signature pointers/reference so expand_default_init
5224         doesn't expect to find a copy constructor.
5225         * call.c (build_method_call): Treat signature pointers/reference
5226         as if IS_AGGR_TYPE were set.
5227
5228 Tue Jan 31 13:28:56 1995  Mike Stump  <mrs@cygnus.com>
5229
5230         * gc.c (get_typeid): Pawn off error messages to build_t_desc.
5231         (build_t_desc): Inform the user here if they try and build
5232         with -frtti and don't include <typeinfo.h>.
5233
5234         * decl2.c (finish_prevtable_vardecl): Support rescanning.
5235         (finish_file): Move finish_prevtable_vardecl up to before the global
5236         initializers are done as tdecls are initialized in the global
5237         initializer.  Also Pick up any new tdecls or vtables needed by
5238         synthesized methods.
5239
5240         * class.c (finish_struct): Simplify.  We have to do rtti scanning at
5241         end, so we might as well do all of it there.
5242
5243 Tue Jan 31 05:35:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5244
5245         * call.c (build_method_call): Fix -fthis-is-variable for 32-bit
5246         targets, too.
5247
5248 Tue Jan 31 00:11:04 1995  Mike Stump  <mrs@cygnus.com>
5249
5250         * decl2.c (finish_prevtable_vardecl): New routine, mostly split from
5251         finish_vtable_vardecl.  It has the first half functionality from
5252         that routine.
5253         * decl2.c (finish_vtable_vardecl): Update to not include stuff not
5254         in  finish_prevtable_vardecl.
5255         * decl2.c (finish_file): Call finish_prevtable_vardecl.
5256         * gc.c (build_generic_desc): Allow it to be called when not at the
5257         global binding layer, but behave as if we were.
5258         (build_t_desc): Rearrange a bit so that it really works and is
5259         easier to follow.
5260         * class.c (finish_struct): Don't decide on tdecls here, as we have
5261         to wait until the end of the file in general to decide whether or
5262         not they come out.
5263
5264 Mon Jan 30 01:00:40 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5265
5266         * init.c (build_delete): Check access to operator delete before
5267         calling the destructor.
5268         * method.c (build_opfncall, DELETE_EXPR): build_method is allowed to
5269         return error_mark_node.
5270         * call.c (build_method_call): Use the one-argument op delete even if
5271         it's an error.
5272
5273         * init.c (build_new): Fix -fthis-is-variable support.
5274         * call.c (build_method_call): Ditto.
5275
5276         * call.c (convert_harshness): Make conversion from a pointer to bool
5277         worse than conversion to another pointer.
5278
5279 Sat Jan 28 16:46:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5280
5281         * init.c (build_new): Check new return value if -fcheck-new.
5282
5283         * lex.c (check_newline): Clear end_of_file when we're done, too.
5284
5285 Sat Jan 28 10:38:39 1995  Mike Stump  <mrs@cygnus.com>
5286
5287         * decl2.c (finish_vtable_vardecl): Make rtti TD tables follow
5288         vtables whereever they go.
5289
5290         * gc.c (build_t_desc): Remove old way of setting it up, as it wasn't
5291         right.
5292
5293 Sat Jan 28 09:10:44 1995  Mike Stump  <mrs@cygnus.com>
5294
5295         * decl2.c (finish_vtable_vardecl): Now set the
5296         interface/implementation of vtables on the first virtual function,
5297         if one exists, otherwise we use the old method.  This is a major win
5298         in terms of cutting down the size of objects and executables in
5299         terms of text space and data space.  Now most of the savings that
5300         #pragma interface/implementation gives is automatic in a fair number
5301         of cases.
5302
5303 Sat Jan 28 04:57:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5304
5305         * decl.c (grokdeclarator): Discard the template parameters in a
5306         template constructor declaration so that the function is always
5307         named constructor_name (ctype).
5308
5309         * lex.c (check_newline): Use ungetc to put back the character before
5310         calling HANDLE_PRAGMA.
5311
5312 Fri Jan 27 17:23:47 1995  Mike Stump  <mrs@cygnus.com>
5313
5314         * decl2.c (check_classfn): If the cname is T<int> and fn_name is T,
5315         make sure we still match them.
5316
5317 Fri Jan 27 16:32:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5318
5319         * parse.y: Add END_OF_LINE token.
5320
5321         * lex.c (check_newline): Set linemode when we see a # directive, and
5322         unset it when we're done.  Turn all 'return's into 'goto skipline'.
5323         Fix all uses of '\n', since we won't see it anymore.  Put back the
5324         character we read before checking for a sysv or target pragma.
5325         (real_yylex): If we see an EOF in linemode, return END_OF_LINE.
5326         (handle_sysv_pragma): Don't look at the input stream; quit when we
5327         see an END_OF_LINE token.
5328
5329         * input.c (getch): Return EOF if we're in line mode and at the end
5330         of a line.
5331         (put_back): Don't put back an EOF.
5332
5333 Thu Jan 26 19:26:34 1995  Mike Stump  <mrs@cygnus.com>
5334
5335         * except.c (expand_throw): Do the newing of the exception object
5336         before we load the type descriptor or the address so that we don't
5337         wipe any of the values out.
5338
5339 Thu Jan 26 19:20:00 1995  Mike Stump  <mrs@cygnus.com>
5340
5341         * except.c (init_exception_processing): Don't use r12 on the rs6000.
5342
5343 Tue Jan 24 16:36:31 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5344
5345         * decl.c (grokparms): Don't try to build up a reference at this point.
5346
5347         * typeck2.c (build_functional_cast): Don't assume that a NOP_EXPR
5348         will suffice to convert from integer_zero_node.
5349
5350 Wed Jan 25 15:02:09 1995  David S. Miller  (davem@nadzieja.rutgers.edu)
5351
5352         * class.c (instantiate_type): Change error message text.
5353         * typeck2.c (store_init_value): Likewise.
5354
5355 Mon Jan 23 21:57:14 1995  Mike Stump  <mrs@cygnus.com>
5356
5357         * pt.c (tsubst): When we copy a node, don't forget to copy
5358         TREE_CHAIN, we use it later.
5359
5360 Mon Jan 23 03:33:47 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5361
5362         * typeck.c (convert_for_assignment): Initialize variable before use.
5363
5364 Fri Jan 20 01:17:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5365
5366         * g++.c (main): Link with both libstdc++ and libg++ if called as
5367         something ending with "g++", otherwise only libstdc++.  Move -lm to
5368         the end of the line.
5369
5370 Thu Jan 19 15:43:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5371
5372         * call.c (build_method_call): Don't mess with 'this' before calling
5373         compute_conversion_costs.
5374
5375 Wed Jan 18 15:40:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5376
5377         * search.c (get_matching_virtual): Give line number for previous
5378         declaration.
5379
5380         * call.c (convert_harshness): Handle conversions to references
5381         better.
5382
5383         * cvt.c (build_up_reference): OK, handle {MIN,MAX}_EXPR *properly*.
5384
5385 Wed Jan 18 15:21:38 1995  Mike Stump  <mrs@cygnus.com>
5386
5387         * class.c (instantiate_type): Use DECL_CHAIN to walk lists instead,
5388         as the TREE_CHAIN for methods will take us to the next differently
5389         named function, DECL_CHAIN won't.
5390
5391 Wed Jan 18 14:26:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5392
5393         * tree.c (lvalue_p): Handle {MIN,MAX}_EXPR.
5394
5395         * decl2.c (lang_decode_option): -Wall implies -Wparentheses.
5396         warn_parentheses defaults to 0.
5397
5398         * decl.c (grokparms): Put back call to require_instantiated_type.
5399
5400 Tue Jan 17 19:56:15 1995  Mike Stump  <mrs@cygnus.com>
5401
5402         * except.c (exception_section): Use the data section on the rs6000.
5403         Change calling convention for named_section.
5404
5405 Wed Jan 17 18:20:57 1994  Fergus Henderson <fjh@munta.cs.mu.oz.au>
5406
5407         * cp-tree.h : Make if (x=0) warn with wall
5408         * parse.y : Make if (x=0) warn with wall
5409
5410 Tue Jan 17 14:12:00 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5411
5412         * decl.c (BOOL_TYPE_SIZE): BITS_PER_WORD if SLOW_BYTE_ACCESS,
5413         BITS_PER_UNIT otherwise.
5414
5415         * search.c (get_matching_virtual): Don't check the binfo if the
5416         types are the same.
5417
5418         * cvt.c (cp_convert): Just call truthvalue_conversion to convert to
5419         bool.
5420
5421 Mon Jan 16 13:28:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5422
5423         * various: Use boolean_type_node, boolean_true_node,
5424         boolean_false_node.
5425
5426         * search.c (get_matching_virtual): Allow covariant returns that
5427         don't require pointer adjustment.
5428
5429         * typeck.c (build_conditional_expr): Don't call default_conversion
5430         on ifexp.
5431
5432         * cvt.c (build_up_reference): Handle MIN_EXPR and MAX_EXPR.
5433
5434         * decl.c (grokdeclarator): Upgrade warning about &const to pedwarn.
5435
5436 Sun Jan 15 22:17:32 1995  dcb@lovat.fmrco.COM (David Binderman)
5437
5438         * pt.c (do_function_instantiation): Free targs once we're done.
5439
5440 Sun Jan 15 22:17:32 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5441
5442         * decl.c (BOOL_TYPE_SIZE): Defaults to BITS_PER_WORD.
5443         (init_decl_processing): Use BOOL_TYPE_SIZE instead of CHAR_TYPE_SIZE
5444         for bool.
5445
5446 Sat Jan 14 05:33:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5447
5448         * decl2.c (finish_file): We need to mess up if there are any
5449         variables in the list, not just if there is one with a constructor.
5450
5451 Fri Jan 13 14:42:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5452
5453         * decl.c (duplicate_decls): Propagate DECL_STATIC_{CON,DE}STRUCTOR.
5454         (finish_function): Handle DECL_STATIC_{CON,DE}STRUCTOR.
5455         (finish_function): Trust rest_of_compilation.
5456
5457         * decl2.c (finish_file): Also call functions designated as static
5458         constructors/destructors.
5459
5460         * decl.c (grokdeclarator): Allow access decls of operator functions.
5461         (grokparms): Only do convert_for_initialization if the initializer
5462         has a type.
5463         (duplicate_decls): Put back push_obstacks_nochange call.
5464
5465         * lex.c (real_yylex): Downgrade complaint about the escape sequence
5466         being too large from pedwarn to warning.
5467
5468         * decl.c (grokdeclarator): Don't complain about long long in system
5469         headers.
5470
5471         * lex.c (real_yylex): Handle digraphs.
5472
5473 Thu Jan 12 12:17:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5474
5475         * decl.c (init_decl_processing): -f{no-,}strict-prototype only
5476         affects C linkage declarations now.
5477
5478         * typeck.c (comp_target_types): Grok simple contravariant conversions.
5479         (common_type): t1 and t2 are interchangeable.
5480
5481         * various: Test return value of comp_target_types differently in
5482         different places; it now returns -1 for a contravariant conversion
5483         (which is fine in symmetric cases).
5484
5485         (common_type): Prefer long double to double even when
5486         they have the same precision.
5487
5488         * decl.c (grokparms): Call convert_for_initialization to check
5489         default arguments.
5490
5491         * init.c (build_new): void_type_node has a size (of 0).
5492
5493         * decl.c (decls_match): Also check for agreement of TREE_READONLY
5494         and TREE_THIS_VOLATILE.
5495         (push_class_level_binding): Properly handle shadowing of
5496         nested tags by fields.
5497
5498         * search.c (dfs_pushdecls): Ditto.
5499
5500         * decl2.c (finish_file): Don't second-guess self-initialization.
5501
5502         * cvt.c (convert_to_reference): Work with expr directly, rather than
5503         a copy.
5504
5505         * decl.c (push_overloaded_decl): Only shadow artificial TYPE_DECLs.
5506
5507         * init.c (add_friend): Downgrade duplicate friend message from
5508         pedwarn to warning.
5509
5510         * decl.c (duplicate_decls): Push obstacks before calling common_type.
5511
5512 Thu Jan 12 17:15:21 1995  Michael Ben-Gershon  <mybg@cs.huji.ac.il>
5513
5514         * except.c (push_eh_entry): set LABEL_PRESERVE_P flag for
5515         exception table labels.
5516         (expand_start_all_catch): Ditto.
5517         (expand_leftover_cleanups): Ditto.
5518         (expand_end_catch_block): Ditto.
5519         * except.c (make_first_label): new function.
5520         (expand_start_all_catch): add a call to make_first_label() before
5521         using a label as a jump destination.
5522         (expand_end_all_catch): Ditto.
5523         (expand_leftover_cleanups): Ditto.
5524         (expand_end_catch_block): Ditto.
5525         (expand_builtin_throw): Ditto.
5526         (expand_throw): Ditto.
5527         * except.c: Add ARM processor support for exception handling.
5528
5529 Thu Jan 12 12:17:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5530
5531         (complete_array_type): Copy code from C frontend.
5532
5533         * lex.c (real_yylex): Don't multiply the length of a wide string
5534         literal by WCHAR_BYTES.
5535
5536         * decl.c (pushdecl): Check for redeclaration of wchar_t here.
5537         (duplicate_decls): Instead of here.
5538         (define_label): Complain about a label named wchar_t.
5539         (grokdeclarator): Complain about declarations of
5540         operator-function-ids as non-functions.
5541
5542         * typeck.c (unary_complex_lvalue): Also wrap prefix -- and ++ in
5543         COMPOUND_EXPRs.
5544         (build_unary_op): Wrap unary plus in a NON_LVALUE_EXPR.
5545
5546         * lex.c (real_yylex): Don't skip whitespace when reading the next
5547         character after ->.
5548
5549 Wed Jan 11 16:32:49 1995  Mike Stump  <mrs@cygnus.com>
5550
5551         * except.c: Allow cc1plus to be built with native compiler on rs6000.
5552         (expand_start_all_catch): Add assemble_external calls for various
5553         routines we call.
5554         (expand_leftover_cleanups): Ditto.
5555         (expand_start_catch_block): Ditto.
5556         (do_unwind): Ditto.
5557         (expand_builtin_throw): Ditto.
5558
5559 Wed Jan 11 01:05:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5560
5561         * decl.c (pushtag): Only look for a previous decl in the current
5562         binding level.  Use explicit global scope in DECL_NESTED_TYPENAME.
5563
5564         * gxx.gperf: Add __signature__ and __sigof__ keywords.
5565
5566         * decl2.c (lang_decode_option): -ansi does not set flag_no_asm.  It
5567         does set flag_no_gnu_keywords and flag_operator_names.
5568
5569         * lex.c (init_lex): 'overload' is not a keyword unless -traditional.
5570         Unset extension keywords if -fno-gnu-keywords.
5571         Allow operator names ('bitand') if -foperator-names.
5572         Never unset 'asm'; -fno-asm only affects 'typeof'.
5573
5574         * decl.c (lookup_name_real): The got_object special lookup only
5575         applies to types.
5576
5577 Tue Jan 10 18:07:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5578
5579         * spew.c (yylex): Also use DECL_NESTED_TYPENAME if got_object is set.
5580
5581         * parse.y (primary): Unset got_object after all rules that use the
5582         'object' nonterminal.
5583         (object): Set got_object.
5584
5585         * lex.h: Declare got_object.
5586
5587         * decl.c (lookup_name_real): Also lookup names in the context of an
5588         object specified.
5589
5590 Tue Jan 10 14:30:30 1995  Mike Stump  <mrs@cygnus.com>
5591
5592         * typeck.c (get_member_function_from_ptrfunc): Use ptrdiff_type_node
5593         for things that have to be added to pointers, not size_type.  Cures
5594         problems with pointer to members on Alphas.
5595         (build_binary_op_nodefault): Ditto.
5596         (get_delta_difference_: Ditto.
5597         (build_ptrmemfunc): Ditto.
5598
5599 Tue Jan 10 01:49:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5600
5601         * decl.c (pushtag): Stick the new decl in TYPE_NAME before pushing
5602         it.
5603
5604         * typeck.c (build_component_ref): Don't build up a COMPONENT_REF
5605         when dealing with overloaded member functions; just act like
5606         build_offset_ref.
5607         (commonparms): Remove misleading comment.
5608
5609         * decl.c (duplicate_decls): Complain about repeated default
5610         arguments here.
5611         (redeclaration_error_message): Instead of here.
5612         (pushdecl): Complain about missing default arguments here.
5613         (grokparms): Instead of here.
5614         (lookup_name_current_level): Also match on DECL_ASSEMBLER_NAME.
5615         (grok_reference_init): Do not complain about missing initializer if
5616         declared 'extern'.
5617
5618         * search.c (lookup_field): Don't return a TYPE_DECL if there is a
5619         function alternative and want_type is not set.
5620
5621 Mon Jan  9 18:16:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5622
5623         * decl.c (pushtag): Don't set TYPE_NAME to an identifier.  Do push
5624         the decl when the type has no TYPE_NAME.
5625         (lookup_nested_type): Don't assume that type has TYPE_NAME set.
5626         (lookup_name_real): Call lookup_field with want_type =
5627         prefer_type.
5628
5629         * search.c (lookup_field): Handle want_type properly in the presence
5630         of fields with the same name.
5631
5632         * decl.c (set_nested_typename): Set nested name for file-scope types
5633         to include leading ::.
5634         (pushdecl): Set the nested typename if the decl doesn't have one,
5635         rather than if the type's canonical decl doesn't have one.
5636
5637 Mon Jan  9 03:44:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5638
5639         * typeck.c (convert_for_assignment): Complain about contravariance
5640         violation here.
5641         (comp_target_types): Instead of here.
5642         (build_unary_op): resolve_offset_ref before checking for a valid
5643         type.
5644
5645         * spew.c (yylex): Decrement looking_for_typename after we see a
5646         _DEFN.
5647
5648         * decl.c (pushdecl): Don't install an artificial TYPE_DECL in
5649         IDENTIFIER_LOCAL_VALUE if we already have a decl with that name.
5650
5651         * typeck.c (convert_for_assignment): Converting pointers to bool
5652         does not need a cast.
5653
5654 Sun Jan  8 18:16:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5655
5656         * class.c (instantiate_type): Initialize nsubsts parm.
5657
5658         * pt.c (do_function_instantiation): Ditto.
5659
5660 Sat Jan  7 14:37:05 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5661
5662         * pt.c (tsubst): Use TREE_STATIC instead of DECL_INLINE &&
5663         DECL_SAVED_INSNS to determine whether or not we've seen a definition
5664         of this function.
5665         (instantiate_template): Ditto.
5666
5667         * call.c (convert_harshness): Allow const reference binding when
5668         called from the overloading code, but not when called from
5669         can_convert (since it isn't a conversion).
5670         (convert_harshness): Put back some disabled code.
5671
5672 Fri Jan  6 14:10:57 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5673
5674         * call.c (convert_harshness): There is no implicit conversion from
5675         void* to other pointer types (unless the parameter is (void*)0).
5676         (convert_harshness): Non-lvalues do not convert to reference types.
5677
5678         * class.c (finish_struct_methods): Still set
5679         TYPE_HAS_{INT,REAL}_CONVERSION.
5680
5681         * call.c (can_convert): Don't use aggregate initialization.
5682
5683         * cp-tree.h: Declare lookup_conversions.
5684
5685 Thu Jan  5 21:08:00 1995  Mike Stump  <mrs@cygnus.com>
5686
5687         * parse.y (simple_stmt): Fix duplicate case value error messages to
5688         be more readable.
5689
5690 Wed Jan  4 16:44:19 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5691
5692         * cvt.c (build_type_conversion): Total rewrite to use
5693         convert_harshness instead of reproducing conversion logic here.  Now
5694         much shorter.
5695
5696         * call.c (convert_harshness): Support conversions to bool.
5697         (can_convert): Checks whether a conversion is less harsh
5698         than USER_CODE, for build_type_conversion.
5699
5700         * search.c (add_conversions): Function for passing to dfs_walk which
5701         adds all the type conversion operators in the current type to a list.
5702         (lookup_conversions): Calls dfs_walk with add_conversions and return
5703         the list.
5704         (dfs_walk): Don't require a qfn.
5705
5706         * cp-tree.h: Lose CLASSTYPE_CONVERSIONS hackery.
5707         (CLASSTYPE_FIRST_CONVERSION): Points to elt 1 of CLASSTYPE_METHOD_VEC.
5708
5709         * class.c (finish_struct_bits): Lose CLASSTYPE_CONVERSIONS hackery.
5710         (grow_method): A separate function for building onto the growing
5711         method vector.
5712         (finish_struct_methods): Use it.  Put all type conversion operators
5713         right after the constructors.  Perhaps we should sort the methods
5714         alphabetically?
5715
5716 Mon Jan  2 14:42:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5717
5718         * call.c (build_method_call): Lose another misleading shortcut.
5719
5720 Fri Dec 30 17:57:30 1994  Mike Stump  <mrs@cygnus.com>
5721
5722         * gc.c (build_bltn_desc): Handle bool as a built-in type.
5723
5724 Fri Dec 30 14:20:21 1994  Mike Stump  <mrs@cygnus.com>
5725
5726         * tree.c (layout_vbasetypes): Ensure that we don't loose alignment
5727         on the complete type because of small virtual bases.
5728
5729 Fri Dec 30 12:22:29 1994  Mike Stump  <mrs@cygnus.com>
5730
5731         * decl.c (n_incomplete): Bump n_incomplete up to int to match C
5732         front end.
5733         (pushdecl): Also count decls pushed that are of a type being defined
5734         as incomplete things.
5735         * class.c (finish_struct): Move hack_incomplete_structures up to
5736         just after we set it as not being defined, so that the decls we
5737         build for RTTI don't count as incomplete.
5738
5739 Thu Dec 29 18:20:57 1994  Mike Stump  <mrs@cygnus.com>
5740
5741         * pt.c (tsubst): Fix problem with defining constructors in templated
5742         classes with virtual bases.
5743
5744 Wed Dec 28 08:31:00 1994  Mike Stump  <mrs@cygnus.com>
5745
5746         * parse.y (TYPEID): Strip top-level cv-qualifiers on typeid
5747         expressions.
5748         * gc.c (build_typeid): Ditto.
5749
5750 Thu Dec 22 17:26:33 1994  Mike Stump  <mrs@cygnus.com>
5751
5752         * cvt.c (build_up_reference): Fix breakage introduced on Nov 29,
5753         don't assert on complex AGGR inits.
5754
5755 Thu Dec 22 14:32:31 1994  Mike Stump  <mrs@cygnus.com>
5756
5757         * method.c (build_overload_value): Handle pointer to members as
5758         template arguments.
5759
5760 Thu Dec 22 13:09:07 1994  Mike Stump  <mrs@cygnus.com>
5761
5762         * typeck.c (unary_complex_lvalue): Don't call sorry if we know how
5763         to do take the address of a data member for a pointer to data
5764         member.
5765
5766 Thu Dec 22 10:04:19 1994  Mike Stump  <mrs@cygnus.com>
5767
5768         * decl.c (grokdeclarator): Use the typedef name for linkage if the
5769         type doesn't otherwise have a name.
5770
5771         * decl2.c (grokfield): Ditto.
5772
5773         * class.c (finish_struct): Since we reuse the TYPE_DECL for the
5774         DECL_NAME of enums, structs and classes, we have to avoid trying to
5775         put it in the TYPE_FIELDS again.
5776
5777 Wed Dec 21 11:07:05 1994  Mike Stump  <mrs@cygnus.com>
5778
5779         * decl2.c (check_classfn): Ignore this parameter on static functions
5780         when checking to see if we match.
5781
5782 Tue Dec 20 17:47:02 1994  Mike Stump  <mrs@cygnus.com>
5783
5784         * typeck.c (unary_complex_lvalue): Handle address of non-left most
5785         pointers to members by calling get_delta_difference.
5786
5787 Mon Dec 19 22:40:53 1994  Mike Stump  <mrs@cygnus.com>
5788
5789         * decl2.c (check_classfn): Don't use decls_match yet, as it modifies
5790         static functions to early.
5791
5792 Thu Dec 19 22:37:48 1994  Mike Stump  <mrs@cygnus.com>
5793
5794         * method.c (make_thunk): Handle encoding of positive thunk offsets.
5795
5796 Sat Dec 17 13:29:50 1994  Doug Evans  <dje@canuck.cygnus.com>
5797
5798         * Make-lang.in (.PHONY): Tell GNU make C++ and c++ are phony targets.
5799
5800 Thu Dec 15 16:32:12 1994  Mike Stump  <mrs@cygnus.com>
5801
5802         * decl2.c (check_classfn): Use decls_match to check if this has
5803         already been declared, as the DECL_ASSEMBLER_NAME may have been
5804         changed via asm("new_name").
5805         * decl.c (decls_match): Make public.
5806
5807 Thu Dec 15 15:17:55 1994  Mike Stump  <mrs@cygnus.com>
5808
5809         * *.[chy] (expand_aggr_init) Add fourth argument to handle
5810         distinction between = init and (init) style of initializations.
5811         * *.[chy] (finish_decl): Add fifth argument to to handle
5812         distinction between = init and (init) style of initializations.
5813
5814 Tue Dec 13 19:16:05 1994  Mike Stump  <mrs@cygnus.com>
5815
5816         Fix some random `explicit' bugs.
5817
5818         * cvt.c (convert_to_reference): Add third parameter to
5819         convert_force.
5820         (convert_force): Ditto.
5821         * call.c (build_method_call): Ditto.
5822         * decl2.c (setup_vtbl_ptr): Ditto.
5823         * init.c (expand_virtual_init): Ditto.
5824         (build_member_call): Ditto.
5825         (build_delete): Ditto.
5826         (build_vbase_delete): Ditto.
5827         * typeck.c (build_component_addr): Ditto.
5828         (build_c_cast): Ditto.
5829         (build_modify_expr): Ditto.
5830         * cp-tree.h (CONV_NONCONVERTING): Ditto. Add so that we can
5831         distinguish the context in which the conversion appears.  Add thrid
5832         argument to build_c_cast.
5833         * cvt.c (cp_convert): Pass whether or not we want to consider
5834         non-converting constructors down to build_method_call.
5835         * decl2.c (reparse_absdcl_as_casts): Add third argument to
5836         build_c_cast.
5837         * gc.c (build_m_desc): Ditto.
5838         * init.c (build_new): Ditto.
5839         * parse.y (expr_no_commas): Ditto.
5840         (primary): Ditto.
5841         * typeck.c (build_x_function_call): Ditto.
5842         (build_static_cast): Ditto.
5843         (build_reinterpret_cast): Ditto.
5844         (build_const_cast): Ditto.
5845         (build_c_cast): Ditto.
5846         (build_ptrmemfunc): Ditto.
5847         * typeck2.c (build_functional_cast): Ditto.
5848         * init.c (expand_aggr_init): Added LOOKUP_ONLYCONVERTING to
5849         expand_aggr_init_1 as inits are converted to the destination type.
5850
5851 Tue Dec 13 16:18:57 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5852
5853         * Make-lang.in (cc1plus): Depends on c-pragma.o.
5854
5855         * Makefile.in (OBJ{DEP,}S): Add ../c-pragma.o.
5856
5857         * lex.c (check_newline): If the #pragma is not recognized by g++,
5858         try machine-specific ones too.
5859         (handle_sysv_pragma): Copied from c-lex.c.
5860
5861 Mon Dec 12 23:53:06 1994  Mike Stump  <mrs@cygnus.com>
5862
5863         * except.c (expand_throw): Fix Dec 6th change, build_new likes a
5864         reference better.
5865
5866 Mon Dec 12 18:01:00 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5867
5868         * typeck.c (build_binary_op): Lose checks on TYPE_PTRMEMFUNC_P with
5869         IS_AGGR_TYPE, since now they will not both be set on the same type.
5870
5871         * pt.c (do_pending_expansions): Don't clear TREE_PUBLIC on
5872         instantiations controlled by -fexternal-templates.
5873
5874         * decl.c (duplicate_decls): Don't complain about different values of
5875         __attribute__ ((const)) and ((noreturn)).
5876
5877 Fri Dec  9 18:17:37 1994  Doug Evans  <dje@cygnus.com>
5878
5879         * Makefile.in (BISONFLAGS): Delete --yacc.
5880         (PARSE_H): Depend on $(PARSE_C), for parallel makes.
5881         (PARSE_C): Undo last patch.
5882
5883 Fri Dec  2 10:44:36 1994  Mike Stump  <mrs@cygnus.com>
5884
5885         * Makefile.in (BISONFLAGS): Add --yacc so that output winds up in
5886         y.tab.c.
5887
5888 Thu Dec  8 17:39:46 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5889
5890         * decl.c (finish_decl): Don't call obscure_complex_init for decls
5891         of indeterminate size.
5892
5893 Wed Dec  7 16:49:22 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5894
5895         * decl.c (obscure_complex_init): Function to tweak the decl to
5896         prevent expand_decl from tring to initialize it.
5897         (finish_decl): Use it rather than writing the same code in three
5898         different places.
5899
5900         * parse.y (bad_parm): Stop trying to support parms without types.
5901
5902 Wed Dec  7 12:06:56 1994  Mike Stump  <mrs@cygnus.com>
5903
5904         * decl2.c (grokfield): Make asm specs on static member functions
5905         work.
5906
5907 Tue Dec  6 15:43:20 1994  Mike Stump  <mrs@cygnus.com>
5908
5909         * except.c (expand_throw): Make a copy of the thrown object.
5910
5911 Tue Dec  6 14:16:34 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5912
5913         * parse.y: : has lower precedence than =.
5914
5915 Tue Dec  6 12:46:17 1994  Mike Stump  <mrs@cygnus.com>
5916
5917         * decl.c (pushdecl): Use DECL_NAME of VAR_DECLs to avoid namespace
5918         manglings.
5919         (grokvardecl): Add namespace into variable name.
5920
5921 Tue Dec  6 11:26:55 1994  Mike Stump  <mrs@cygnus.com>
5922
5923         * decl2.c (current_namespace_id): New routine to transform a simple
5924         name into a name in a namespace.
5925         * decl.c (grokdeclarator): Use it.
5926         * decl2.c (get_namespace_id): Find the name of the current
5927         namespace.
5928         (push_namespace, pop_namespace): Complete out missing
5929         functionality.
5930
5931 Mon Dec  5 17:11:51 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5932
5933         * class.c (finish_struct): Don't use LONG_LONG_TYPE_SIZE, as it may
5934         not be defined.  Fix warning message for enums and restore warning
5935         for non-enums.
5936
5937         * decl2.c (push_namespace): Dummy function.
5938         (pop_namespace): Ditto.
5939         (do_namespace_alias): Ditto.
5940         (do_using_decl): Ditto.
5941         (do_using_directive): Ditto.
5942
5943         * parse.y: New token NSNAME for namespace names.
5944         (extdef): Add namespace, using definitions.
5945         (using_decl): New rule for using declarations.
5946         (any_id): New rule for identifiers with any degree of scoping.
5947         (identifier): Add NSNAME.
5948         (notype_identifier): Ditto.
5949         (component_decl): Add using_decl.
5950         (nested_name_specifier): Add NSNAME SCOPE.
5951
5952         * typeck.c (convert_for_assignment): Handle conversions between
5953         enums and bool.
5954
5955         * decl.c (duplicate_decls): Only propagate DECL_MAIN_VARIANT on
5956         FUNCTION_DECLs.
5957
5958 Mon Dec  5 13:03:16 1994  Mike Stump  <mrs@cygnus.com>
5959
5960         * class.c (finish_struct): Give an error if one tries to declare a
5961         bit-field's size greater than a long long, as the backend will dump.
5962         It is not an error to declare an enum bit-field greater than its
5963         precision.  Warn if an enum bit-field is too small to hold all
5964         its values.
5965
5966 Mon Dec  5 11:41:50 1994  Mike Stump  <mrs@cygnus.com>
5967
5968         * typeck.c (convert_for_assignment): Use cp_convert instead of
5969         convert so that we don't get static casts.
5970
5971 Sun Dec  4 11:59:01 1994  Mike Stump  <mrs@cygnus.com>
5972
5973         * cvt.c (cp_convert): Don't complain about int->enum conversion if
5974         we are doing static casts.
5975
5976 Fri Dec  2 18:32:41 1994  Mike Stump  <mrs@cygnus.com>
5977
5978         * error.c (dump_expr): Do something more intelligent with SAVE_EXPRs
5979         when dumping expressions in error messages.
5980
5981 Fri Dec  2 17:04:27 1994  Mike Stump  <mrs@cygnus.com>
5982
5983         * gc.c (build_dynamic_cast): Change interface to libg++, ensure that
5984         the return type is the right type, and make references work.
5985
5986 Fri Dec  2 16:36:43 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5987
5988         * decl.c (poplevel): Don't be confused by function-scope
5989         declarations of non-nested functions.
5990         (duplicate_decls): Propagate DECL_MAIN_VARIANT.
5991         (pushdecl): Use duplicate_decls to copy info from old decl into new
5992         function-scope one rather than doing it here.
5993
5994         * decl2.c (mark_inline_for_output): Deal with the DECL_MAIN_VARIANT
5995         of this decl, in case this is a function-scope declaration.
5996
5997         * decl.c (finish_enum): Make sure that the type has the right
5998         precision when we call fixup_*_type.
5999
6000 Tue Nov 29 19:12:07 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
6001
6002         * cvt.c (build_up_reference): Strip superfluous NOP_EXPRs; we do
6003         want to build up references to rvalues if possible.
6004         (cp_convert): Stick on a NOP_EXPR when converting to the same type.
6005
6006 Tue Nov 29 11:28:59 1994  Mike Stump  <mrs@cygnus.com>
6007
6008         * parse.y (maybe_raises): Handle throw ().
6009         * parse.y (ansi_raise_identifier): grok type-ids in exception
6010         specifications.
6011         * tree.c (build_exception_variant): Use list compare to check if
6012         two exception specifications match.
6013         * decl.c (duplicate_decls, bad_specifiers): Enhance wording on error
6014         messages.
6015         * call.c (build_method_call): Remove TREE_RAISES.
6016         * cvt.c (convert_to_aggr): Ditto.
6017         * typeck.c (build_function_call_real, convert_arguments): Ditto.
6018         * init.c (expand_aggr_init_1): Ditto.
6019
6020 Tue Nov 29 09:50:39 1994  Mike Stump  <mrs@cygnus.com>
6021
6022         * except.c: Add support for m68k and mips exception handling
6023         support.
6024
6025 Tue Nov 29 08:48:33 1994  Mike Stump  <mrs@cygnus.com>
6026
6027         * except.c (expand_end_all_catch): Throw into outer context, if we
6028         fall off end of catch handlers.
6029
6030 Mon Nov 28 16:44:41 1994  Mike Stump  <mrs@cygnus.com>
6031
6032         * Makefile.in: Make is easier to decide where parse.[ch] will be
6033         built.
6034
6035 Thu Nov 17 20:11:24 1994  Doug Evans  <dje@cygnus.com>
6036
6037         * cp/Make-lang.in (CXX_INSTALL_NAME) Use program_transform_name.
6038         (GXX_INSTALL_NAME) Likewise.
6039         (CXX_CROSS_NAME) Use program_transform_cross_name.
6040         (GXX_CROSS_NAME) Likewise.
6041         (c++.install-man): Use program_transform_name on g++.1.
6042         (c++.uninstall): Likewise.
6043
6044 Mon Nov 28 13:53:03 1994  Mike Stump  <mrs@cygnus.com>
6045
6046         * parse.y (THROW): Fix precedence of throw expressions.
6047
6048 Mon Nov 28 13:15:16 1994  Mike Stump  <mrs@cygnus.com>
6049
6050         * typeck.c (build_unary_op): Allow promotions from bool to int on
6051         unary ~.
6052
6053 Sun Nov 27 00:16:21 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
6054
6055         * method.c (build_overload_name): Use DECL_ASSEMBLER_NAME for
6056         classes when appropriate.
6057         (build_overload_nested_name): When dealing with a function context,
6058         use ASM_FORMAT_PRIVATE_NAME to tweak the name of the function to
6059         avoid conflicts between local classes of the same name.
6060
6061 Wed Nov 23 17:59:42 1994  Mike Stump  <mrs@cygnus.com>
6062
6063         * gxx.gperf, parse.y, lex.h, hash.h, lex.c (init_lex), delc.c
6064         (duplicate_decls, grokdeclarator), cp-tree.h: Add support for
6065         `explicit'.
6066         * cvt.c (convert_to_reference, cp_convert, build_type_conversion_1,
6067         build_type_conversion): Use LOOKUP_ONLYCONVERTING in
6068         build_method_calls so that non-converting constructors are not used.
6069         * call.c (build_method_call): If we shouldn't use a non-converting
6070         constructor, then don't.
6071
6072 Wed Nov 23 14:46:56 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
6073
6074         * call.c (build_method_call): Don't try to synthesize methods yet.
6075
6076 Tue Nov 22 12:45:21 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
6077
6078         * pt.c (push_template_decls): Create CONST_DECLs for template
6079         constant parameters, not VAR_DECLs.
6080
6081 Sat Nov 19 15:28:31 1994  Jim Wilson  (wilson@chestnut.cygnus.com)
6082
6083         * typeck.c (build_binary_op_nodefault): Can shorten shift only if
6084         shift count is less than size in bits of arg0.
6085
6086 Thu Nov 17 15:30:50 1994  Mike Stump  <mrs@cygnus.com>
6087
6088         * gxx.gperf, hash.h, lex.c (init_lex, real_yylex), parse.y: Add new
6089         ANSI keywords and, and_eq, bitand, bitor, explicit, namespace, not,
6090         not_eq, or, or_eq, typename, using, xor, xor_eq to g++.  Still need
6091         to add support for explicit, namespace, typename, and using, support
6092         for the rest is already in.
6093
6094 Fri Nov  4 19:04:18 1994  Mike Stump  <mrs@cygnus.com>
6095
6096         * gc.c (get_bad_cast_node): New routine to support compile time
6097         throws of bad_cast.
6098         * gc.c (build_dynamic_cast): Support throwing of bad_cast at compile
6099         time.
6100
6101 Fri Nov  4 11:12:00 1994  Mike Stump  <mrs@cygnus.com>
6102
6103         * except.c: Add hppa support.
6104
6105 Fri Nov  4 10:50:50 1994  Mike Stump  <mrs@cygnus.com>
6106
6107         * except.c: Add rs6000 support.
6108
6109 Thu Nov  3 14:24:23 1994  Mike Stump  <mrs@cygnus.com>
6110
6111         * except.c (do_unwind): Add i[34]86 support.
6112
6113 Thu Nov  3 00:10:46 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6114
6115         * pt.c (do_pending_expansions): Unset TREE_PUBLIC on implicit
6116         instantiations.
6117
6118 Wed Nov  2 15:08:24 1994  Kung Hsu  (kung@mexican.cygnus.com)
6119
6120         * decl.c (finish_function): emit types used in method parameters
6121         into symbol table.
6122
6123 Wed Nov  2 15:05:47 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6124
6125         * pt.c (process_template_parm): Allow pointer to member function
6126         template parameter types.
6127         (uses_template_parms): Handle pointer to member function
6128         CONSTRUCTORs.
6129
6130         * g++.c (main): Cast first argument of bzero to (char *).
6131         Pass -lstdc++ instead of -lg++ unless we are invoked as 'g++'.
6132
6133 Mon Oct 31 14:50:48 1994  Kung Hsu  (kung@mexican.cygnus.com)
6134
6135         * gc.c (build_dynamic_cast): rewrite to make it work.
6136         * class.c (finish_vtbls): build more vtables if flag_rtti is on.
6137         * class.c (modify_all_direct_vtables): ditto.
6138         * init.c (expand_direct_vtbls_init): expand more vtables if
6139         flag_rtti is on.
6140         * decl.c (init_type_desc): add default return.
6141
6142 Tue Oct 25 17:13:09 1994  Kung Hsu  (kung@mexican.cygnus.com)
6143
6144         * tree.c (debug_binfo): get rid of the initial size entry of
6145         vtable.
6146         * cp-tree.h: change flag_dossier to flag rtti, define type
6147         descriptor type nodes.
6148         * decl.c (init_type_desc): new function to initialize type
6149         descriptor type nodes.
6150         * decl.c (record_builtin_type): change flag_dossier to flag_rtti.
6151         * lex.c (init_lex): ditto.
6152         * decl.c : change variable flag_dossier to flag_rtti.
6153         * decl.c (duplicate_decls): get rid initial size entry of vtable.
6154         * decl.c (hack_incomplete_structures): take out assert 164.
6155         * search.c (get_abstract_virtuals_1): ditto.
6156         * search.c (dfs_init_vbase_pointers): change CLASSTYPE_DOSSIER to
6157         CLASSTYPE_RTTI.
6158         * parse.y: ditto.
6159         * class.c (prepare_fresh_vtable): for virtual bases, get right
6160         offset.
6161         * class.c (add_virtual_function): change flag_dossier to
6162         flag_rtti.
6163         * class.c (modify_one_vtable): modify the right rtti entry.
6164         * class.c (override_one_vtable): get rid of size entry.
6165         * class.c (finish_struct): change flag_dossier to flag_rtti, and
6166         build extra vtables, build type descriptors for polymorphic
6167         classes.
6168         * gc.c (build_headof): make headof() works correctly with new
6169         rtti.
6170         * gc.c (build_typeid): make this function work with new rtti.
6171         * gc.c (get_typeid): make this function work with new rtti.
6172         * gc.c (build_bltn_desc): new function for new rtti.
6173         * gc.c (build_user_desc): ditto.
6174         * gc.c (build_class_desc): ditto.
6175         * gc.c (build_ptr_desc): ditto.
6176         * gc.c (build_attr_desc): ditto.
6177         * gc.c (build_func_desc): ditto.
6178         * gc.c (build_ptmf_desc): ditto.
6179         * gc.c (build_ptmd_desc): ditto.
6180         * gc.c (build_t_desc): ditto.
6181         * gc.c : comment out old build_t_desc, build_i_desc, build_m_desc.
6182
6183 Tue Oct 25 13:37:41 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6184
6185         * call.c (convert_harshness): Check for TREE_UNSIGNED differences
6186         after checking for integral conversions.
6187
6188 Wed Nov 30 19:13:50 1994  Mike Stump  <mrs@cygnus.com>
6189
6190         * Version 2.6.3 released.
6191
6192 Thu Nov 17 10:56:50 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
6193
6194         * typeck2.c (build_m_component_ref): Check the basetype of the
6195         member pointer against the main variant of the object type.
6196
6197 Mon Nov 14 14:21:52 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
6198
6199         * cvt.c (convert_to_reference): Make sure that the original expr
6200         gets its type back when converting a reference.
6201
6202         * method.c (build_overload_name): Clear numeric_outputed_need_bar here.
6203         (build_decl_overload): Instead of here.
6204
6205 Tue Nov  8 17:11:24 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
6206
6207         * cvt.c (cp_convert): Don't build a TARGET_EXPR if we're not in a
6208         function.
6209
6210         * typeck.c (convert_for_initialization): Handle initialization from
6211         a TARGET_EXPR.
6212
6213 Sun Nov  6 01:34:24 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6214
6215         * pt.c (lookup_nested_type_by_name): Fix list-walking logic.
6216         (tsubst): When replacing a TEMPLATE_TYPE_PARM, propagate
6217         TYPE_READONLY and TYPE_VOLATILE from the argument.
6218         (unify): When unifying with a TEMPLATE_TYPE_PARM, remove cv-quals
6219         present in parm from arg.
6220         (type_unification): Strip REFERENCE_TYPE from the argument type.
6221         (unify): Don't strip REFERENCE_TYPE from the argument type.
6222
6223 Sat Nov  5 22:42:15 1994  Greg McGary  (gkm@magilla.cichlid.com)
6224
6225         * pt.c (do_type_instantiation): Check to see if there's a
6226         IDENTIFIER_TEMPLATE on a class before calling
6227         instantiate_member_templates().
6228
6229 Sat Nov 12 06:35:42 1994  Mike Stump  <mrs@cygnus.com>
6230
6231         * Version 2.6.2 released.
6232
6233 Thu Nov  3 18:48:19 1994  Paul Eggert  <eggert@twinsun.com>
6234
6235         * Makefile.in (spew.o, lex.o, pt.o):
6236         Depend on $(srcdir)/parse.h, not parse.h.
6237
6238 Tue Nov  1 19:19:41 1994  Mike Stump  <mrs@cygnus.com>
6239
6240         * Version 2.6.1 released.
6241
6242 Sun Oct 23 13:19:55 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6243
6244         * decl2.c: Declare flag_access_control.
6245         (struct lang_f_options): Add access-control.
6246         * expr.c (cplus_expand_expr, NEW_EXPR): Unset flag_access_control
6247         for the call to expand_aggr_init to copy the object out of the
6248         pcc_struct_return slot.
6249         * search.c (compute_access): if (!flag_access_control) return
6250         access_public.
6251
6252 Fri Oct 21 00:32:54 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6253
6254         * lex.c (cons_up_default_function): Don't try to defer method
6255         synthesis now.
6256
6257         * decl.c (init_decl_processing): Use __pure_virtual for abort_fndecl
6258         instead of abort, since the OSF/1 dynamic linker doesn't like to see
6259         relocation entries for abort.
6260
6261         * tree.c (array_type_nelts_total): Use sizetype, not
6262         integer_type_node.
6263         (array_type_nelts_top): Ditto.
6264
6265 Thu Oct 20 15:48:27 1994  Mike Stump  <mrs@cygnus.com>
6266
6267         * decl.c (grokdeclarator): Added handling for catch parameters
6268         (CATCHPARM).
6269         * except.c (expand_start_catch_block): Use the new CATCHPARM context
6270         instead of NORMAL.
6271         * except.c (expand_throw): Don't let convert_to_reference complain
6272         about what we are doing.
6273
6274 Thu Oct 20 12:55:24 1994  Jim Wilson  (wilson@cygnus.com)
6275
6276         * method.c (emit_thunk): Call instantiate_virtual_regs.
6277
6278 Wed Oct 19 14:15:33 1994  Mike Stump  <mrs@cygnus.com>
6279
6280         * except.c (expand_exception_blocks): Make sure throw code doesn't
6281         get put in function that won't be output.
6282
6283 Mon Oct 17 18:03:15 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6284
6285         * decl.c (init_decl_processing): Make alloca a builtin.
6286
6287 Thu Oct 27 21:10:25 1994  Craig Burley  (craig@burley)
6288
6289         * g++.c (main): Only decrement "added" and set "library" to
6290         NULL when "library" != NULL (just like 940829 fix).
6291
6292 Mon Oct 17 15:56:11 1994  Mike Stump  <mrs@cygnus.com>
6293
6294         * except.c (expand_start_catch_block): Make sure the false label
6295         gets onto the permanent obstack, as it is used for the exception
6296         table.
6297
6298 Fri Oct 14 18:54:48 1994  Mike Stump  <mrs@cygnus.com>
6299
6300         * class.c (modify_one_vtable): Since the DECL_CONTEXT of fndecl can
6301         be set just below, use current_fndecl instead.
6302
6303 Fri Oct 14 15:12:22 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6304
6305         * init.c (expand_aggr_vbase_init_1): Don't call expand_aggr_init_1
6306         with LOOKUP_SPECULATIVELY.
6307         (expand_default_init): Abort if build_method_call returns NULL_TREE.
6308
6309         * typeck.c (build_modify_expr): Don't just build a MODIFY_EXPR if
6310         the rhs is a TARGET_EXPR.
6311
6312         * parse.y (left_curly): Anonymous types are not affected by #pragma
6313         interface/implementation.
6314
6315         * method.c (synthesize_method): Don't call setup_vtbl_ptr for the
6316         default constructor if it isn't needed.
6317
6318         * lex.c (cons_up_default_function): Do synthesize methods for
6319         anonymous types if necessary.
6320
6321 Thu Oct 13 17:44:55 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6322
6323         * method.c (build_decl_overload): Set numeric_outputed_need_bar to 0.
6324
6325 Wed Oct 12 13:27:57 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6326
6327         * typeck.c (build_modify_expr): Understand how to copy an aggregate.
6328
6329         * init.c (expand_default_init): Ditto.  Also remove some of the
6330         crufty code that assumes methods will not be synthesized properly.
6331
6332         * lex.c (cons_up_default_function): If the containing type has no
6333         name, these functions should never need to be called, so just
6334         declare them.
6335
6336         * lex.c (real_yylex): Use HOST_BITS_PER_WIDE_INT to determine the
6337         bitmask for lexing character constants.
6338
6339         * call.c (build_method_call): Disable code that tries to do tricky
6340         stuff with a default parameter that is a constructor call, but
6341         actually does other tricky stuff that breaks things.
6342
6343 Wed Oct 12 16:14:01 1994  Benoit Belley  <belley@cae.ca>
6344
6345         * decl.c (finish_enum): Disable code which forces enums to be signed,
6346         since this conflicts with their use as bitfields. type_promotes_to
6347         handles promotion of enums of underlying unsigned types to signed
6348         integer types.
6349
6350 Wed Oct 12 13:24:03 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6351
6352         * cvt.c (type_promotes_to): Also promote enums to long if
6353         appropriate.
6354
6355         * typeck.c (default_conversion): Don't expect type_promotes_to to
6356         return a main variant.
6357
6358 Wed Oct 12 12:19:45 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6359
6360         * call.c (build_scoped_method_call): Don't lose side effects in the
6361         object expression when calling a non-existent destructor.
6362
6363 Fri Sep  2 19:05:21 1994  Rohan Lenard  (rjl@iassf.easams.com.au)
6364
6365         * call.c (build_scoped_method_call): Remove erroneous error message
6366         when destructor call is written as a scoped call.
6367
6368 Tue Oct 11 23:48:31 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6369
6370         * various: Cast pointer arguments to bzero and bcopy to char *.
6371
6372 Tue Oct 11 19:34:32 1994  Mike Stump  <mrs@cygnus.com>
6373
6374         * class.c (get_derived_offset): Added a type parameter to limit how
6375         far up the CLASSTYPE_VFIELD_PARENT chain we search.
6376         * class.c (modify_one_vtable, fixup_vtable_deltas): When forming the
6377         offset to put into the vtable for the this parameter, make sure we
6378         don't offset from a parent of the DECL_CONTEXT of the function.
6379
6380 Tue Oct 11 16:10:52 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6381
6382         * pt.c (do_function_instantiation): Set DECL_EXTERNAL and
6383         TREE_STATIC when setting DECL_INTERFACE_KNOWN.
6384         (do_type_instantiation): Ditto.
6385
6386         * lex.c (cons_up_default_function): Set DECL_INTERFACE_KNOWN,
6387         DECL_EXTERNAL and TREE_STATIC as appropriate.
6388
6389         * decl2.c (finish_file): Also synthesize methods that don't have
6390         DECL_EXTERNAL set.  Set interface_unknown before doing so.
6391
6392         * decl.c (start_function): If DECL_INTERFACE_KNOWN is set on the
6393         function decl, don't muck with TREE_PUBLIC and DECL_EXTERNAL.
6394
6395 Mon Oct 10 00:56:53 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6396
6397         * lex.c (cons_up_default_function): Mark methods in a template class
6398         as template instances.  Store the values of interface_unknown and
6399         interface_only for do_pending_inlines.
6400         (do_pending_inlines): Use them.
6401
6402         * decl2.c (finish_file): If we haven't seen a definition of a
6403         function declared static, make the decl non-PUBLIC so compile_file
6404         can give an error.
6405
6406 Sun Oct  9 02:42:29 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6407
6408         * method.c (do_build_copy_constructor): Handle anonymous unions.
6409         (do_build_assign_ref): Ditto.
6410         (largest_union_member): Move from lex.c.
6411
6412 Sat Oct  8 14:59:43 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6413
6414         Re-implement g++'s vague linkage independent of TREE_PUBLIC.
6415         * pt.c (instantiate_member_templates): Lose redundant
6416         -fexternal-templates handling.
6417         (tsubst): Set TREE_PUBLIC and DECL_EXTERNAL on new decls.  Don't set
6418         TREE_STATIC or DECL_INTERFACE_KNOWN.
6419         (do_pending_expansions): Predicate on DECL_INTERFACE_KNOWN instead
6420         of DECL_EXTERNAL for explicit instantiations.
6421         (do_function_instantiation): Do the new thing.
6422         (do_type_instantiation): Ditto.
6423         (instantiate_template): Deal with member templates defined in a .cc
6424         file with -fexternal-templates.
6425         * except.c (expand_exception_blocks): Use DECL_LINKAGE_KNOWN to
6426         decide whether to stick builtin_throw here.
6427         * decl2.c (import_export_inline): Predicate on DECL_INTERFACE_KNOWN
6428         rather than TREE_PUBLIC.  Generally fix rules.
6429         (finish_file): Use DECL_INITIAL to determine whether or not a method
6430         has been synthesized, rather than TREE_ASM_WRITTEN.
6431         * decl.c (warn_extern_redeclared_static): Use DECL_PUBLIC instead of
6432         TREE_PUBLIC.
6433         (pushdecl): Ditto.
6434         (duplicate_decls): Ditto.  Deal with DECL_DECLARED_STATIC and
6435         DECL_INTERFACE_KNOWN. 
6436         (redeclaration_error_message): Fix checking for conflicting linkage.
6437         (define_function): Set DECL_INTERFACE_KNOWN.
6438         (grokfndecl): Function decls are PUBLIC until we are sure about
6439         their linkage.  Set DECL_DECLARED_STATIC as needed.
6440         (start_function): Deal with linkage.  Move pushdecl after linkage
6441         magic.
6442         (finish_function): Don't set TREE_ASM_WRITTEN on discarded inlines.
6443         * cp-tree.h (lang_decl_flags): Add interface_known and
6444         declared_static.
6445         (DECL_INTERFACE_KNOWN): New macro.
6446         (DECL_DECLARED_STATIC): New macro.
6447         (DECL_PUBLIC): New macro.
6448
6449         Clean up bogus use of TREE_PUBLIC.
6450         * class.c (alter_access): Fix mistaken use of TREE_PUBLIC (it
6451         doesn't correspond to TREE_PROTECTED and TREE_PRIVATE).
6452         * init.c (do_friend): Don't arbitrarily set TREE_PUBLIC.
6453
6454 Wed Oct  5 13:44:41 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6455
6456         * call.c (build_overload_call_real): Don't immediately do
6457         array->pointer conversion.
6458
6459         * pt.c (type_unification): If not passing to a reference, strip
6460         cv-quals.  Also handle array->pointer conversion.
6461
6462 Tue Oct  4 17:45:37 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6463
6464         * decl.c (grokdeclarator): Don't warn about applying const to a
6465         const typedef or template type parameter.
6466
6467         * decl2.c (finish_file): Also synthesize methods after walking the
6468         vtables.  Ugly ugly ugly.
6469
6470 Mon Oct  3 15:02:41 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6471
6472         * various: Remove lingering remnants of old exception handling code.
6473
6474         * decl2.c (finish_file): Synthesize methods before walking the
6475         vtables, so that the vtables get emitted as needed.
6476
6477         * decl.c (shadow_tag): Remove obsolete code for pushing tags and
6478         dealing with exceptions.
6479
6480 Mon Oct  3 13:05:27 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>
6481
6482         * Make-lang.in (g++-cross): Depend upon version.o and $(LIBDEPS).
6483
6484 Mon Oct  3 02:59:28 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6485
6486         * decl2.c (finish_file): Fix inline handling.
6487
6488 Sun Oct  2 00:21:56 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6489
6490         * decl.c (grokdeclarator): Handle redundant scope even better.
6491         ({push,pop}_cp_function_context): Take toplev parameter.
6492
6493         * method.c (synthesize_method): Pass toplev parameter to
6494         {push,pop}_cp_function_context depending on decl_function_context
6495         (fndecl).
6496
6497         * typeck.c (build_x_unary_op): Unary & on OFFSET_REFs is always the
6498         built-in version.
6499
6500         * method.c (synthesize_method): Don't be confused by __in_chrg
6501         parameter.
6502
6503         * class.c (popclass): Set C_C_D like start_function does.
6504
6505         * decl.c (grokdeclarator): Handle redundant scope better.
6506
6507         * parse.y (expr_or_declarator): Add '(' expr_or_declarator ')' rule.
6508         (direct_notype_declarator): Ditto.
6509         (complex_direct_notype_declarator): Remove it here.
6510
6511 Sat Oct  1 21:42:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
6512
6513         * init.c (resolve_offset_ref): Fix types used in resolving .*
6514         expressions.
6515
6516 Sat Oct  1 15:18:49 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6517
6518         Beginnings of work to synthesize methods only when needed.
6519         * call.c (build_method_call): Synthesize methods as necessary
6520         (currently never necessary).
6521         * class.c (popclass): Don't try to set C_C_D here, as it'll end up
6522         on the wrong obstack.
6523         * decl.c (push_cp_function_context): Mostly copied from
6524         push_c_function_context.
6525         (pop_cp_function_context): Similarly.
6526         (finish_function): Reverse order of poplevel and pop_nested_class so
6527         that current_class_decl is restored properly.  
6528         (start_function): Ditto.
6529         (finish_function): Add parameter 'nested'.  Don't call
6530         permanent_allocation if (nested).
6531         * various: Pass extra parameter to finish_function.     
6532         * decl2.c (finish_file): Reorganize end-of-file inline handling,
6533         synthesizing methods as necessary.
6534         * lex.c (cons_up_default_function): Call mark_inline_for_output.
6535         Only synthesize methods immediately if #pragma implementation
6536         (currently disabled).
6537         (do_pending_inlines): Call synthesize_method.
6538         * method.c (synthesize_method): New function; all method synthesis
6539         goes through here.  Calls do_build_assign_ref and
6540         do_build_copy_constructor.
6541         (build_default_constructor): Remove.
6542         (build_dtor): Ditto.
6543         (build_assign_ref): Rename to do_build_assign_ref and remove stuff
6544         done by synthesize_method.
6545         (build_copy_constructor): Similarly.
6546
6547 Thu Sep 29 16:58:52 1994  Mike Stump  <mrs@cygnus.com>
6548
6549         * typeck.c (c_expand_return): Use magic so the backend can fixup the
6550         assignment into the return register, so cleanups won't clobber it.
6551
6552 Thu Sep 29 13:08:50 1994  Jason Merrill  (jason@deneb.cygnus.com)
6553
6554         * method.c (hack_identifier): Don't call assemble_external for
6555         template decls.
6556
6557         * decl.c (finish_decl): Also end temporary allocation if the decl in
6558         question has a type of error_mark_node.
6559
6560 Wed Sep 28 21:45:00 1994  Mike Stump  <mrs@cygnus.com>
6561
6562         * typeck.c (build_modify_expr): When optimizing ?: on lhs, make sure
6563         that if the ?: was a reference type, that the subparts will be also.
6564
6565 Wed Sep 28 16:14:04 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
6566
6567         * except.c (register_exception_table): Use Pmode, not PTRmode.
6568
6569 Fri Sep 23 13:54:27 1994  Jason Merrill  (jason@deneb.cygnus.com)
6570
6571         * lex.c (do_pending_inlines): Do method synthesis after the
6572         pending_inlines have been reversed.
6573
6574 Thu Sep 22 12:53:03 1994  Per Bothner  (bothner@kalessin.cygnus.com)
6575
6576         * decl2.c (finish_file):  Fix Brendan's fix:  Only call
6577         register_exception_table if there is a non-empty exception table.
6578
6579 Thu Sep 22 12:03:46 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
6580
6581         * decl2.c (finish_file): Only do register_exception_table if
6582         -fhandle-exceptions is being used.
6583
6584 Wed Sep 21 19:01:51 1994  Per Bothner  (bothner@kalessin.cygnus.com)
6585
6586         * except.c (output_exception_table_entry):  Simplify
6587         by using assemble_integer.
6588         (build_exception_table):  Change to return a count.
6589         Cleanup to use standard macros, instead of hard-wired
6590         sparc asm format.  Don't make __EXCEPTION_TABLE__ global.
6591         (register_exception_table):  New function.  Generate call to builtin.
6592         * decl2.c (finish_file):  Call register_exception_table.
6593         * cp-tree.h (build_exception_table):  Fix prototype.
6594
6595 Wed Sep 21 13:20:42 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
6596
6597         * tree.c (break_out_calls): Don't try to duplicate the DECL_INITIAL.
6598
6599         * decl2.c (delete_sanity): Give an error at trying to delete a
6600         function.
6601
6602 Wed Sep 21 11:47:10 1994  Jason Merrill  (jason@deneb.cygnus.com)
6603
6604         * lex.c (cons_up_default_function): Mark synthesized destructors
6605         inline.
6606
6607         * decl.c (duplicate_decls): Ignore redeclarations of wchar_t as
6608         something other than __wchar_t, complaining if -pedantic and not in
6609         a system header.
6610
6611 Tue Sep 20 09:43:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
6612
6613         * decl.c (xref_tag): Set up BINFO_INHERITANCE_CHAIN on base binfos
6614         here.
6615
6616         * typeck.c (build_modify_expr): Require complete type after checking
6617         for error_mark_node.
6618
6619         * call.c (build_method_call): Print parmtypes when complaining of
6620         ambiguous call.
6621
6622         * typeck.c (build_modify_expr): Handle assignment to array from
6623         non-array.
6624
6625         * decl.c (lookup_name_real): Deal with got_scope == error_mark_node.
6626
6627         * call.c (build_method_call): Don't bother with the exact match.
6628
6629 Mon Sep 19 00:51:39 1994  Jason Merrill  (jason@deneb.cygnus.com)
6630
6631         * init.c (expand_aggr_init): If we munge the type of the variable,
6632         also munge the type of the initializer.
6633
6634         * decl.c (grokdeclarator): Use <= when comparing to RID_LAST_MODIFIER.
6635         (init_decl_processing): Push artificial declaration of wchar_t so
6636         people don't have to declare it before they can use it.
6637
6638         * error.c (cp_line_of): return lineno in lieu of 0.
6639
6640         * typeck.c (convert_for_assignment): Handle conversion of pmfs to
6641         int and bool.
6642         (build_component_ref): Fold the COMPONENT_REF in case it can be
6643         reduced.
6644
6645         * typeck2.c (store_init_value): Don't pedwarn about non-constant
6646         bracketed initializers for automatic variables.
6647
6648 Sun Sep 18 10:12:12 1994  Jason Merrill  (jason@deneb.cygnus.com)
6649
6650         * error.c (dump_decl): Don't say `typedef enum foo foo'.
6651
6652         * decl.c (start_decl): Don't set TREE_PUBLIC on template decls just
6653         because they're affected by #pragma i/i.  We'll deal with that when
6654         they get instantiated.
6655
6656         * typeck.c (build_unary_op): Clean up cruft in ADDR_EXPR case.
6657
6658         * class.c (instantiate_type): Set TREE_CONSTANT on instantiated
6659         ADDR_EXPRs if appropriate.
6660
6661         * decl.c (build_ptrmemfunc_type): Unset IS_AGGR_TYPE on pmf types.
6662
6663         * typeck.c (build_ptrmemfunc): Handle &overloaded_method as an
6664         initializer properly.
6665         * typeck2.c (digest_init): Ditto.
6666
6667         * tree.c (cp_build_type_variant): Like c_build_type_variant, except
6668         it uses build_cplus_array_type.
6669         * *.c: Use cp_build_type_variant instead of c_build_type_variant.
6670
6671         * pt.c (do_type_instantiation): Don't try to instantiate nested
6672         enums.
6673
6674 Tue Sep 13 10:56:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
6675
6676         * cvt.c (build_up_reference): Handle preincrement and predecrement
6677         properly.
6678
6679 Tue Sep 13 09:51:59 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
6680
6681         * decl.c (finish_decl): Only lay out the rtl for DECL if it is, in
6682         fact, static.
6683
6684 Mon Sep 12 14:40:30 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
6685
6686         * decl.c (finish_decl): Lay out the rtl for DECL before doing
6687         grok_reference_init, in case it's static.
6688
6689 Mon Sep 12 12:45:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
6690
6691         * class.c (finish_struct): Don't synthesize constructors if the
6692         class has a field with the same name as the class.  Don't die on
6693         classes with no constructors or destructors.  Don't die if the head
6694         and tail of the class are in different files.
6695
6696         * decl.c (grokdeclarator): Don't treat a function pointer field
6697         with the same name as the class as a constructor.
6698
6699 Fri Sep  9 13:17:00 1994  Jason Merrill  (jason@deneb.cygnus.com)
6700
6701         * typeck.c (build_c_cast): Pull constant values out of their
6702         variables here.
6703
6704         * decl.c (duplicate_decls): Only propagate DECL_CHAIN in
6705         FUNCTION_DECLs and TEMPLATE_DECLs.
6706
6707 Thu Sep  8 10:07:48 1994  Jason Merrill  (jason@deneb.cygnus.com)
6708
6709         * decl.c (duplicate_decls): Propagate DECL_CHAIN in all DECLs that
6710         have it.
6711
6712         * pt.c (unify): REALs and INTEGERs only unify with their own genus.
6713         (instantiate_member_templates): Don't muck with DECL_EXTERNAL and
6714         TREE_PUBLIC unless -fexternal-templates.
6715
6716 Wed Sep  7 13:17:10 1994  Jason Merrill  (jason@deneb.cygnus.com)
6717
6718         * pt.c (do_type_instantiation): Call instantiate_member_templates.
6719         Deal with specializations.
6720         (tsubst): Don't stick the mangled name in DECL_NAME for function
6721         instantiations.  Don't push them, either.
6722
6723         * decl2.c (grokfield): Move code for generating the
6724         DECL_ASSEMBLER_NAME for static members from here.
6725         * method.c (build_static_name): To here.
6726         * decl.c (grokvardecl): Call build_static_name.
6727         (duplicate_decls): Keep old DECL_ASSEMBLER_NAME.
6728
6729 Mon Sep  5 12:49:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
6730
6731         * call.c (build_method_call): if -Wsynth, warn when selecting
6732         synthesized op= over user-supplied one cfront would select.
6733         * decl2.c (lang_decode_option): Handle -Wsynth.
6734
6735 Fri Sep  2 15:11:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
6736
6737         * decl.c (finish_enum): Overhaul to fix several bugs.
6738         (start_enum): Disable useless code.
6739
6740 Thu Sep  1 16:04:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
6741
6742         * typeck.c (c_expand_return): Warn about returning a reference to a
6743         temporary.
6744         (convert_arguments): Increment argument counter when using default
6745         arguments, too.
6746
6747 Wed Aug 31 14:29:22 1994  Jason Merrill  (jason@deneb.cygnus.com)
6748
6749         * decl.c (finish_decl): If the type of decl is error_mark_node,
6750         don't bother trying to do anything.
6751
6752         * typeck.c (convert_for_initialization): If the rhs contains a
6753         constructor call, pretend the lhs type needs to be constructed.
6754
6755         * init.c (expand_default_init): If we stick the object inside the
6756         initializer, mark the initializer used.
6757
6758 Tue Aug 30 13:50:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
6759
6760         * method.c (build_assign_ref): return *this;
6761         (build_assign_ref): Fix base assignment order.
6762         (build_copy_constructor): Fix member init order.
6763
6764 Mon Aug 29 13:54:39 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
6765
6766         * g++.c (main): Remember to clear out SAW_SPECLANG after we see
6767         its argument.
6768
6769 Sat Aug 27 09:36:03 1994  Jason Merrill  (jason@deneb.cygnus.com)
6770
6771         * method.c (build_copy_constructor): Also copy virtual bases.
6772
6773 Fri Aug 26 17:05:15 1994  Jason Merrill  (jason@deneb.cygnus.com)
6774
6775         * lex.c (do_pending_inlines): Clear out pending_inlines before doing
6776         any synthesis.  Also first set deja_vu on all pending_inlines.
6777
6778         * method.c (build_assign_ref): Use build_member_call to invoke base
6779         operator=, rather than build_modify_expr.  And use
6780         build_reference_type instead of TYPE_REFERENCE_TO.
6781         (build_copy_constructor): Use TYPE_NESTED_NAME to identify the
6782         basetype.
6783
6784         * decl2.c (grokfield): Don't complain about undefined local class
6785         methods.
6786
6787         * class.c (finish_struct): Don't try to synthesize methods here.
6788         * lex.c (do_pending_inlines): Instead, synthesize them here.
6789         (init_lex): Initialize synth_obstack.
6790         (cons_up_default_function): Stick synthesis request on
6791         pending_inlines.
6792
6793 Fri Aug 26 12:24:14 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
6794
6795         * call.c (build_method_call) [PCC_STATIC_STRUCT_RETURN]: Also
6796         accept an RTL_EXPR in what we're about to use for the instance,
6797         since anything which would end up with pcc_struct_return set
6798         inside cplus_expand_expr.
6799
6800         * cp-tree.h (cons_up_default_function): Note change of prototype.
6801
6802 Thu Aug 25 23:05:30 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
6803
6804         * class.c (finish_struct): Undid change from Aug 21 testing
6805         CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING.
6806         * parse.y (left_curly): Ditto, undid change from Aug 21.
6807         * decl.c (xref_tag): Undid change from Aug 21, set
6808         CLASSTYPE_INTERFACE correctly, and added comments.
6809
6810 Thu Aug 25 00:36:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
6811
6812         Rework approach to synthesized methods; don't go through the parser
6813         anymore.
6814         * class.c (finish_struct): Use new synthesis approach.
6815         * lex.c (cons_up_default_function): Now just creates declaration,
6816         not code.
6817         (largest_union_member): #if 0 out.
6818         (default_assign_ref_body): Ditto.
6819         (default_copy_constructor_body): Ditto.
6820         * method.c (build_default_constructor): New function to synthesize X().
6821         (build_copy_constructor): Synthesize X(X&).
6822         (build_assign_ref): Synthesize X::operator=(X&).
6823         (build_dtor): Synthesize ~X().
6824
6825         * error.c (cp_line_of): If we're dealing with an artificial
6826         TYPE_DECL, look at the type instead.
6827
6828 Wed Aug 24 11:11:50 1994  Jason Merrill  (jason@deneb.cygnus.com)
6829
6830         * init.c (sort_member_init): Check warn_reorder.
6831         * decl2.c (lang_decode_option): Handle -W{no-,}reorder.
6832
6833         * cp-tree.h (CLASSTYPE_SOURCE_LINE): New macro.
6834         * error.c (cp_line_of): Use CLASSTYPE_SOURCE_LINE for aggregates.
6835         * class.c (finish_struct): Set CLASSTYPE_SOURCE_LINE.
6836
6837 Tue Aug 23 09:28:35 1994  Mike Stump  <mrs@cygnus.com>
6838
6839         * error.c (dump_decl): Improve wording, so that error messages
6840         dont't read template<, class foo>...
6841
6842 Mon Aug 22 15:30:51 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
6843
6844         * parse.y (label_colon): Also match a TYPENAME as a label name,
6845         since they may have declared a class by that name but have also
6846         tried to have a local label under the same name.
6847
6848         * pt.c (coerce_template_parms): Call cp_error, not cp_error_at,
6849         for the message so they know at what point it was instantiated.
6850
6851 Sun Aug 21 23:07:35 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
6852
6853         * class.c (finish_struct): Move setting of CLASSTYPE_INTERFACE and
6854         CLASSTYPE_VTABLE_NEEDS_WRITING for signatures up to left_curly time.
6855         * decl.c (xref_tag): Move setting of CLASSTYPE_INTERFACE and
6856         CLASSTYPE_VTABLE_NEEDS_WRITING for signatures down to left_curly time.
6857         * parse.y (left_curly): New final resting place for setting
6858         CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING for signatures.
6859
6860         * class.c (finish_struct): Don't test for function/field name
6861         conflicts in signatures, since all the fields are compiler-constructed.
6862
6863 Fri Aug 19 14:04:47 1994  Kung Hsu  (kung@mexican.cygnus.com)
6864
6865         * method.c (build_overload_nested_name): in qualified name
6866         mangling, the template with value instantiation will have numeric
6867         at end and may mixed with the name length of next nested level.
6868         Add a '_' in between.
6869         * method.c (build_overload_name): ditto.
6870         * method.c (build_overload_identifier): ditto.
6871
6872 Thu Aug 18 16:24:43 1994  Mike Stump  <mrs@cygnus.com>
6873
6874         * error.c (dump_decl): Handle NULL args.
6875
6876 Thu Sep 29 16:15:36 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>
6877
6878         * g++.c: Rework last change so it's done like collect.c (and 
6879         gcc.c).
6880
6881 Wed Sep 14 10:17:27 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>
6882
6883         * g++.c: Include <sys/errno.h> in case `errno' is a macro
6884         as permitted by ANSI C.
6885
6886 Thu Aug 18 12:48:09 1994  Mike Stump  <mrs@cygnus.com>
6887
6888         * class.c (finish_struct): Move setting of CLASSTYPE_INTERFACE and
6889         CLASSTYPE_VTABLE_NEEDS_WRITING up to left_curly time.
6890         * decl.c (xref_tag): Move setting of CLASSTYPE_INTERFACE and
6891         CLASSTYPE_VTABLE_NEEDS_WRITING down to left_curly time.
6892         * parse.y (left_curly): New final resting place for setting
6893         CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING.
6894
6895 Thu Aug 11 11:32:42 1994  H.J. Lu  (hjl@nynexst.com)
6896
6897         * g++.c (main): Only decrement "added" and set "library" to
6898           NULL when "library" != NULL.
6899
6900 Sat Aug 13 00:14:52 1994  Jason Merrill  (jason@deneb.cygnus.com)
6901
6902         * decl.c (grokdeclarator): Don't set TREE_PUBLIC on a function decl
6903         just because its class has a known interface.
6904         (decls_match): Deal with new format of template parms.
6905
6906         * lex.c (cons_up_default_function): Don't play with TREE_PUBLIC and
6907         DECL_EXTERNAL here.
6908
6909 Fri Aug 12 01:55:15 1994  Jason Merrill  (jason@deneb.cygnus.com)
6910
6911         * decl.c (pushtag): SET_DECL_ARTIFICIAL on gratuitous typedefs.
6912         (xref_defn_tag): Ditto.
6913         (pushdecl): Only allow artificial typedefs to be shadowed.
6914
6915         * init.c (emit_base_init): Pass the right binfos to
6916         expand_aggr_init_1.
6917
6918         * class.c (delete_duplicate_fields_1): Make it work right.
6919         (finish_struct): Catch function/field name conflict.
6920
6921         * decl2.c (check_classfn): Pass the function to cp_error, not just
6922         the name.
6923
6924         * init.c (sort_member_init): Warn when order of member initializers
6925         does not match order of member declarations.
6926         (emit_base_init): Call expand_aggr_init_1 with LOOKUP_PROTECT.
6927
6928         * error.c (dump_expr): Handle lists of functions.
6929
6930         * decl.c (start_function): #pragma interface only affects functions
6931         that would otherwise be static.
6932         (finish_decl): Don't warn about an unused variable if it has both
6933         constructor and destructor, since the 'resource allocation is
6934         initialization' idiom is relatively common.
6935
6936         * typeck.c (comp_target_types): Don't handle TEMPLATE_TYPE_PARMs.
6937         (comp_target_parms): Ditto.
6938         (compparms): Never consider default parms.
6939         (common_base_type): Don't choose a virtual baseclass if there is a
6940         more derived class in common.
6941         (build_conditional_expr): If pedantic, pedwarn about conversion to
6942         common base in conditional expr.
6943
6944         * class.c (instantiate_type): Handle template instantiation better.
6945
6946         * typeck.c (convert_arguments): Don't try to get tricky and convert
6947         to int directly when PROMOTE_PROTOTYPES is set, as it breaks
6948         user-defined conversions.
6949
6950         * lex.c (check_for_missing_semicolon): Also give error at end of
6951         file.
6952
6953         * call.c (build_method_call): Don't promote arrays to pointers here.
6954
6955         * typeck.c (convert_arguments): Don't require the actual parameter
6956         to be of a complete type if the formal parameter is a reference.
6957
6958 Thu Aug 11 15:21:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
6959
6960         * decl.c (grokdeclarator): Soften 'static' on member function error
6961         to pedwarn.
6962
6963         * init.c (build_new): Don't automatically save rval.
6964         (build_offset_ref): Do field lookup with proper basetype_path.
6965
6966 Thu Aug 11 12:46:54 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
6967
6968         * errfn.c (cp_silent): Declare to mark when we should avoid
6969         emitting warnings and errors.
6970         (cp_error): Check it.
6971         (cp_warning): Likewise.
6972         (cp_pedwarn): Likewise.
6973         (cp_compiler_error): Likewise.
6974         (cp_error_at): Likewise.
6975         (cp_warning_at): Likewise.
6976         (cp_pedwarn_at): Likewise.
6977         * call.c (compute_conversion_costs): Set CP_SILENT when we start
6978         out, and make sure we turn it off before we leave.
6979
6980 Thu Aug 11 00:02:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
6981
6982         * decl2.c (grok_array_decl): Try computing *(A+B) if neither
6983         argument is obviously an array.
6984
6985 Wed Aug 10 15:32:04 1994  Jason Merrill  (jason@deneb.cygnus.com)
6986
6987         * typeck.c (c_expand_start_case): Do cleanups here.
6988
6989         * parse.y (xcond): Do bool conversion here, too.
6990         (simple_stmt, SWITCH case): Don't do cleanups here.
6991
6992         * decl.c (duplicate_decls): Don't treat builtins that have been
6993         explicitly declared specially.
6994
6995 Tue Aug  9 01:16:09 1994  Jason Merrill  (jason@deneb.cygnus.com)
6996
6997         * tree.c (make_deep_copy): Support copying pointer, reference,
6998         function, array, offset and method types.
6999
7000         * decl.c (init_decl_processing): Mark exit and abort as
7001         BUILT_IN_NONANSI so that duplicate_decls is kinder about
7002         redeclaration.
7003         (duplicate_decls): Don't give two errors for redeclaring a C
7004         function with the same parms but a different return type.
7005
7006         * parse.y (paren_cond_or_null): Do cleanup and bool conversion here.
7007         (condition): Instead of here.
7008         (simple_stmt, SWITCH case): Also do cleanup here.
7009
7010         * decl2.c (finish_anon_union): Only break out FIELD_DECLs.
7011
7012         * call.c (build_method_call): Don't throw away the side effects of
7013         the object in a call to a non-existent constructor.
7014         * parse.y (primary): Ditto.
7015
7016         * method.c (build_decl_overload): Oop.
7017
7018         * decl2.c (lang_decode_option): Deal with flag_no_nonansi_builtin,
7019         warn about uselessness of specifying -fansi-overloading.
7020
7021         * method.c (build_decl_overload): Treat any non-member new with one
7022         parameter as __builtin_new.
7023
7024         * decl.c (init_decl_processing): Setup built-in meanings of exit,
7025         _exit and abort.
7026
7027 Mon Aug  8 15:03:30 1994  Jason Merrill  (jason@deneb.cygnus.com)
7028
7029         * error.c (dump_readonly_or_volatile): Put a space between const and
7030         volatile if both apply.
7031
7032         * init.c (perform_member_init): Clean up after this initialization.
7033         (emit_base_init): Clean up after each base init, not after all have
7034         been done.
7035         (expand_aggr_vbase_init_1): Clean up after this init.
7036
7037 Sun Aug  7 14:55:05 1994  Jason Merrill  (jason@deneb.cygnus.com)
7038
7039         * call.c (build_method_call): Deal with destroying references.
7040
7041         * parse.y (condition): Do bool_truthvalue_conversion here.
7042         (paren_expr_or_null): And here.
7043         (simple_if): Not here.
7044         (simple_stmt): Or here.
7045
7046 Sat Aug  6 22:29:45 1994  Jason Merrill  (jason@deneb.cygnus.com)
7047
7048         * parse.y (paren_expr_or_null): Wrap the expression in a
7049         CLEANUP_POINT_EXPR.
7050         (condition): Ditto.
7051
7052 Sat Aug  6 19:46:37 1994  Rohan Lenard  (rjl@easams.com.au)
7053
7054         * call.c (build_scoped_method_call): Fix error message when
7055         destructor call refers to a nonexistent type.
7056
7057 Sat Apr 16 22:43:30 1993  Gerald Baumgartner  (gb@cs.purdue.edu)
7058
7059         * lex.h (rid): Deleted RID_RAISES, it's never used.
7060         Moved RID_PUBLIC, RID_PRIVATE, RID_PROTECTED, RID_EXCEPTION,
7061         RID_TEMPLATE and RID_SIGNATURE to the end of the enumeration,
7062         they don't need to be touched in `grokdeclarator.'
7063         (RID_LAST_MODIFIER): Defined macro to be RID_MUTABLE.
7064
7065         * decl.c (grokdeclarator): Use RID_LAST_MODIFIER instead of
7066         RID_MAX as loop limit for finding declaration specifiers.
7067
7068 Sat Apr  3 21:59:07 1993  Gerald Baumgartner  (gb@cs.purdue.edu)
7069
7070         * lex.c (debug_yytranslate): Moved to parse.y since it needs to
7071         access `yytname,' which is static in parse.c.
7072
7073 Fri Apr  2 23:36:57 1993  Gerald Baumgarnter  (gb@cs.purdue.edu)
7074
7075         * cp-tree.h (GNU_xref_ref): Fixed typo in extern declaration, it
7076         was `GNU_xref_def' instead of `GNU_xref_ref.'
7077
7078 Fri Aug  5 14:20:16 1994  Jason Merrill  (jason@deneb.cygnus.com)
7079
7080         * pt.c (do_function_instantiation): Don't set TREE_PUBLIC and
7081         DECL_EXTERNAL on 'extern' instantiations; wait until EOF to do that.
7082         (do_type_instantiation): Ditto.
7083
7084         * decl2.c (import_export_inline): Decides at EOF what an inline's
7085         linkage should be.
7086         (finish_file): Call it.
7087
7088         * decl.c (start_function): Don't rely on the settings of TREE_PUBLIC
7089         and DECL_EXTERNAL from do_*_instantiation.  Only set
7090         DECL_DEFER_OUTPUT on inlines whose linkage might actually change.
7091         (finish_function): Use DECL_DEFER_OUTPUT to decide which inlines to
7092         mark for later consideration, rather than DECL_FUNCTION_MEMBER_P.
7093
7094 Fri Aug  5 01:12:20 1994  Mike Stump  <mrs@cygnus.com>
7095
7096         * class.c (get_class_offset_1, get_class_offset): New routine to
7097         find the offset of the class where a virtual function is defined,
7098         from the complete type.
7099         * class.c (modify_one_vtable, fixup_vtable_deltas): Use
7100         get_class_offset instead of virtual_offset as get_class_offset will
7101         always provide the right answer.
7102         * tree.c (virtual_offset): Remove.  It only ever worked some of the
7103         time.
7104
7105 Tue Aug  2 12:44:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
7106
7107         * call.c (build_method_call): Put back unary_complex_lvalue call
7108         that I thought was redundant.
7109
7110         * typeck.c (c_expand_return): Fix a case I missed before.
7111
7112 Sun Jul 31 17:54:02 1994  Jason Merrill  (jason@deneb.cygnus.com)
7113
7114         * pt.c (unify): Strip cv-quals from template type arguments (when
7115         'const T*' is matched to 'const char*', that does not mean that T is
7116         'const char').
7117
7118 Fri Jul 29 01:03:06 1994  Jason Merrill  (jason@deneb.cygnus.com)
7119
7120         * pt.c (do_type_instantiation): Instantiate nested TAGS, not
7121         typedefs.  Third time's the charm?
7122
7123         * parse.y (template_parm): Support default template parms.
7124         * pt.c (process_template_parm): Ditto.
7125         (end_template_parm_list): Ditto.
7126         (coerce_template_parms): Ditto.
7127         (mangle_class_name_for_template): Ditto.
7128         (push_template_decls): Ditto.
7129         (unify): Ditto.
7130         * method.c (build_overload_identifier): Ditto.
7131         * error.c (dump_decl): Ditto.
7132
7133 Wed Jul 27 17:47:00 1994  Jason Merrill  (jason@deneb.cygnus.com)
7134
7135         * pt.c (do_type_instantiation): Only instantiate nested *classes*.
7136
7137 Tue Jul 26 13:22:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
7138
7139         * search.c (note_debug_info_needed): Also emit debugging information
7140         for the types of fields.
7141
7142 Mon Jul 25 00:34:44 1994  Jason Merrill  (jason@deneb.cygnus.com)
7143
7144         * pt.c (lookup_template_class): Pass 'template' to
7145         coerce_template_parms instead of 'in_decl', since it's a more
7146         meaningful context.
7147
7148         * typeck.c (c_expand_return): Make sure any cleanups for the return
7149         expression get run.
7150         (build_c_cast): Use CONVERT_EXPR for conversion to void.
7151
7152         * pt.c (do_type_instantiation): Also instantiate nested types.
7153
7154         * typeck.c (convert_for_assignment): Don't die when comparing
7155         pointers with different levels of indirection.
7156
7157         * decl.c (grokdeclarator): The sub-call to grokdeclarator for
7158         class-local typedefs sets DECL_ARGUMENTS, so we need to clear it
7159         out.
7160
7161         * decl2.c (finish_anon_union): Don't die if the union has no
7162         members.
7163
7164         * decl.c (grokdeclarator): Undo changes to declspecs when we're done
7165         so that 'typedef int foo, bar;' will work.
7166
7167         * decl2.c (finish_file): Don't call expand_aggr_init for
7168         non-aggregates.
7169
7170 Mon Jul 25 00:03:10 1994  Teemu Torma  (tot@trema.fi)
7171
7172         * decl.c (finish_function): We can't inline constructors and
7173         destructors under some conditions with -fpic, but don't unset
7174         DECL_INLINE.
7175
7176 Mon Jul 25 00:03:10 1994  Jason Merrill  (jason@deneb.cygnus.com)
7177
7178         * typeck.c (build_object_ref): Make sure 'datum' is a valid object.
7179
7180 Sun Jul 24 14:19:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
7181
7182         * class.c (finish_struct): Don't set DECL_FIELD_BITPOS on
7183         non-fields.
7184         (finish_struct_methods): Use copy_assignment_arg_p.
7185
7186         * cvt.c (cp_convert): If expr is an OFFSET_REF, resolve it instead
7187         of giving an error.
7188
7189         * typeck.c (build_binary_op_nodefault): Don't set result_type if we
7190         don't know how to compare the operands.
7191
7192         * decl.c (grokdeclarator): Avoid seg fault when someone uses '__op'
7193         as a declarator-id in their program.  Like the Linux headers do.
7194         Arrgh.
7195
7196         * tree.c (lvalue_p): Treat calls to functions returning objects by
7197         value as lvalues again.
7198
7199         * typeck.c (build_component_addr): Use convert_force to convert the
7200         pointer in case the component type is also a private base class.
7201
7202         * search.c (get_matching_virtual): Fix bogus warning of overloaded
7203         virtual.
7204
7205         * pt.c (overload_template_name): Set DECL_ARTIFICIAL on the created
7206         TYPE_DECL to fix bogus shadowing warnings.
7207
7208 Fri Jul 22 01:15:32 1994  Jason Merrill  (jason@deneb.cygnus.com)
7209
7210         * init.c (expand_aggr_init_1): const and volatile mismatches do not
7211         prevent a TARGET_EXPR from initializing an object directly.
7212
7213 Tue Jul 19 17:55:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
7214
7215         * cvt.c (build_up_reference): Allow building up references to
7216         `this', don't warn about making references to artificial variables
7217         (like `this').
7218
7219         * tree.c (lvalue_p): `this' is not an lvalue.
7220
7221         * call.c (build_method_call): Accept using a typedef name (or
7222         template type parameter) for explicit destructor calls.
7223
7224 Thu Jul 14 09:42:23 1994  Mike Stump  <mrs@cygnus.com>
7225
7226         * Version 2.6.0 released.
7227
7228 Wed Jul 13 03:57:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
7229
7230         * method.c (hack_identifier): Put back old code so lists of
7231         non-functions will be handled properly.
7232
7233         * cp-tree.h (TYPE_NEEDS_CONSTRUCTING): #if 0 out; this macro is now
7234         defined in the language-independent tree.h.
7235
7236         * tree.c (count_functions): Avoid bogus warning when compiling this
7237         function.
7238
7239 Mon Jul 11 18:37:20 1994  Jason Merrill  (jason@deneb.cygnus.com)
7240
7241         * decl.c (grok_reference_init): Always save the initializer of a
7242         reference.
7243
7244 Fri Jul  8 17:41:46 1994  Mike Stump  <mrs@cygnus.com>
7245
7246         * decl.c (cplus_expand_expr_stmt): Wrap statement expressions inside
7247         CLEANUP_POINT_EXPRs so that the stack slots can be reused.
7248         (disabled for now)
7249
7250 Fri Jul  8 12:59:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
7251
7252         * method.c (hack_identifier): Fix for new overloading.
7253
7254         * typeck.c (build_binary_op_nodefault): Don't mess with division by
7255         zero.
7256
7257 Fri Jul  8 13:20:28 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
7258
7259         * decl2.c (finish_file): Only call walk_sigtables, if
7260         flag_handle_signatures is turned on, don't waste time otherwise.
7261
7262 Fri Jul  8 02:27:41 1994  Jason Merrill  (jason@deneb.cygnus.com)
7263
7264         * decl.c (push_overloaded_decl): Don't create overloads of one when
7265         shadowing a class type.
7266         * typeck.c (build_x_function_call): Complain about overloads of one.
7267
7268         * decl.c (grokdeclarator): Don't try to treat a char* as a tree.
7269         (grokdeclarator): Fix setting of TREE_STATIC.
7270         (start_decl): Clear DECL_IN_AGGR_P after calling duplicate_decls.
7271
7272 Thu Jul  7 22:20:46 1994  Gerald Baumgartner  (gb@andros.cygnus.com)
7273
7274         * cp-tree.h (walk_sigtables): Created extern declaration.
7275         * decl2.c (walk_sigtables): Created function, patterned after
7276         walk_vtables, even though we only need it to write out sigtables.
7277         (finish_sigtable_vardecl): Created function.
7278         (finish_vtable_vardecl): Changed 0 to NULL_PTR.
7279         (finish_file): Call walk_sigtables.
7280
7281         * sig.c (build_signature_table_constructor): Mark class member
7282         function pointed to from signature table entry as addressable.
7283
7284 Thu Jul  7 13:39:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
7285
7286         * decl.c (start_decl): Check new decl of static member variable
7287         against the declaration in the class here.
7288         (grokvardecl): Instead of here.
7289
7290         * class.c (prepare_fresh_vtable): Call import_export_vtable if not
7291         -fvtable-thunks.
7292         (build_vtable): Ditto.
7293
7294         * decl2.c (import_export_vtable): Move logic for deciding the
7295         interface of a template class from here.
7296         (import_export_template): To here.
7297         (finish_vtable_vardecl): Call import_export_template before
7298         import_export_vtable.
7299
7300 Wed Jul  6 20:25:48 1994  Mike Stump  <mrs@cygnus.com>
7301
7302         * except.c (init_exception_processing): Setup interim_eh_hook to
7303         call lang_interim_eh. 
7304         * except.c (do_unwind): Propagate throw object value across
7305         stack unwinding.
7306         * except.c (saved_throw_value): Used to hold the value of the object
7307         being thrown.  It is always a reference to the real value.
7308         * except.c (expand_start_catch_block): Add handling for the
7309         value of the exception object.
7310         * except.c (expand_start_catch_block): Add handler for the handler,
7311         so that throws inside the handler go to the outer block.
7312         * except.c (expand_end_catch_block): Ditto.
7313         * parse.y (handler_args): Use parm instead, as the other doesn't yet
7314         handle references correctly.
7315
7316 Wed Jul  6 17:55:32 1994  Per Bothner  (bothner@kalessin.cygnus.com)
7317
7318         * decl2.c (mark_vtable_entries):  If -ftable-thunks, set the
7319         vtable entry properly to abort.
7320
7321 Tue Jul  5 14:07:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
7322
7323         * typeck.c (build_binary_op_nodefault): Downgrade division by zero
7324         errors to warnings.
7325
7326         * call.c (build_overload_call_real): Handle fnname being a list of
7327         functions.
7328         * typeck.c (build_x_function_call): Pass list of functions to
7329         build_overload_call, not just the name.
7330         * tree.c (count_functions): Complain when called for invalid
7331         argument.
7332
7333         * decl.c (grokdeclarator): Fix settings of TREE_STATIC, TREE_PUBLIC
7334         and DECL_EXTERNAL on static members and initialized const members.
7335         * decl2.c (grokfield): Reflect this change.
7336
7337 Fri Jul  1 09:35:51 1994  Jason Merrill  (jason@deneb.cygnus.com)
7338
7339         * parse.y (init): ANSI C++ does not forbid { }.
7340
7341 Thu Jun 30 00:35:22 1994  Jason Merrill  (jason@deneb.cygnus.com)
7342
7343         * decl2.c (lang_decode_option): Set warn_nonvdtor along with -Wall.
7344         warn_nonvdtor defaults to off.
7345
7346         * class.c (instantiate_type): Use comptypes rather than relying on 
7347         types to satisfy ==.
7348
7349         * decl.c (start_function): Set DECL_DEFER_OUTPUT on all inlines that
7350         might be static.
7351
7352         * tree.c (build_cplus_new): Never build WITH_CLEANUP_EXPRs.
7353
7354         * decl.c (grok_reference_init): Deal with ADDR_EXPRs of TARGET_EXPRs.
7355
7356         * cvt.c (cp_convert): Pass 0 to with_cleanup_p arg of
7357         build_cplus_new.
7358
7359 Wed Jun 29 22:31:09 1994  Jason Merrill  (jason@deneb.cygnus.com)
7360
7361         * decl2.c (finish_file): Maybe consider static inlines multiple
7362         times, in case they reference each other.
7363
7364 Tue Jun 28 11:58:38 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
7365
7366         * class.c (finish_struct): Don't `cons_up_default_function's
7367         for signatures.
7368         (finish_struct): Handle an empty method_vec correctly.
7369
7370         * decl.c (grokdeclarator): Don't warn about a signature being
7371         empty in a signature pointer declaration if we only saw a
7372         forward declaration of the signature.  Changed `warning's into
7373         `cp_warning's.
7374
7375         * sig.c (build_sigtable): Don't die if a null signature table
7376         constructor is returned.
7377         (build_signature_pointer_constructor): If the signature table
7378         constructor is null, the _sptr field is set to a null pointer
7379         and cast to the appropriate type.  Make copies of all null
7380         pointers so that the type null_pointer_node doesn't get changed.
7381         (build_signature_table_constructor): Added comments.
7382
7383         * sig.c (build_signature_pointer_constructor): Complain if we
7384         try to assign to/initialize a signature pointer/reference of
7385         an undefined signature.
7386
7387 Mon Jun 27 14:05:16 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
7388
7389         * typeck2.c (store_init_value): Don't be pedantic about
7390         non-constant initializers of signature tables/pointers/references.
7391
7392 Fri Jun 24 16:49:41 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
7393
7394         * decl.c (grokdeclarator): If we are grokking an opaque typedef
7395         in a signature, don't complain about it begin static.
7396
7397 Wed Jun 29 16:44:45 1994  Mike Stump  <mrs@cygnus.com>
7398
7399         Fixes a problem of the this pointer being wrong in virtual calls to
7400         methods that are not overridden in more derived classes.
7401
7402         * class.c (fixup_vtable_delta): New routine.  It will fixup the
7403         delta entries in vtables, wheever they need updating.
7404         * class.c (finish_struct): Call the new routine for all virtual
7405         bases, as they can have different offsets, than those used in base
7406         classes that we derive our vtable from.
7407
7408 Tue Jun 28 23:49:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
7409
7410         * typeck.c (build_binary_op): Use the types before default
7411         conversions in the error message.
7412
7413         * *.c: Use c_build_type_variant instead of build_type_variant where
7414         the type might be an array.
7415
7416         * call.c (build_method_call): Call build_type_variant and
7417         build_reference_type in the right order.
7418         * decl.c (record_builtin_type): Ditto.
7419
7420 Wed Jun 29 16:58:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
7421
7422         * call.c (build_method_call): Call build_type_variant and
7423         build_reference_type in the right order.
7424         * decl.c (record_builtin_type): Ditto.
7425
7426 Tue Jun 28 23:49:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
7427
7428         * typeck.c (build_binary_op): Use the types before default
7429         conversions in the error message.
7430
7431         * *.c: Use c_build_type_variant instead of build_type_variant where
7432         the type might be an array.
7433
7434 Sat Jun 25 11:50:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
7435
7436         * cvt.c (convert_to_reference): Try UDC's before doing the
7437         reinterpret_cast thang, though.
7438
7439 Fri Jun 24 01:24:01 1994  Jason Merrill  (jason@deneb.cygnus.com)
7440
7441         * typeck.c (c_expand_return): Don't USE the return value location
7442         after we've expanded the jump.
7443
7444         * decl2.c (finish_file): Make sure DECL_SAVED_INSNS is not 0 before
7445         trying to write out an inline.
7446
7447         * cvt.c (build_up_reference): Also do address adjustment when the
7448         target type uses MI.
7449         (convert_to_reference): Try UDCs only after built-in conversions.
7450         (build_type_conversion_1): Don't play games with the argument to the
7451         method.
7452         (build_type_conversion): #if 0 out code for binding to reference.
7453
7454 Thu Jun 23 00:22:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
7455
7456         * decl2.c (finish_file): Use TREE_SYMBOL_REFERENCED to decide
7457         whether to emit inlines.
7458
7459         * decl.c (grokdeclarator): Set explicit_int for decls that just
7460         specify, say, 'long'.
7461
7462         * init.c (do_friend): Do overload C functions (or call pushdecl,
7463         anyaway).
7464
7465 Wed Jun 22 13:40:49 1994  Jason Merrill  (jason@deneb.cygnus.com)
7466
7467         * cvt.c (build_up_reference): Don't call readonly_error.
7468         (convert_to_reference): Propagate const and volatile from expr to
7469         its type.
7470
7471         * tree.c (lvalue_p): Random CALL_EXPRs are not lvalues.
7472
7473         * cvt.c (build_up_reference): Break out WITH_CLEANUP_EXPR when
7474         creating a temporary.
7475         (convert_to_reference): Lose excessive and incorrect trickiness.
7476         (cp_convert): Call build_cplus_new with with_cleanup_p set.
7477
7478         * typeck2.c (build_functional_cast): Ditto.
7479
7480 Tue Jun 21 17:38:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
7481
7482         * decl.c (grokdeclarator): signed, unsigned, long and short all
7483         imply 'int'.
7484
7485         * decl.c (grokdeclarator): Allow "this is a type" syntax.
7486         (grok_reference_init): Simplify and fix.
7487
7488 Sun Jun 19 17:08:48 1994  Jason Merrill  (jason@deneb.cygnus.com)
7489
7490         * decl.c (grokdeclarator): pedwarn about a typedef that specifies no
7491         type.
7492
7493 Sat Jun 18 04:16:50 1994  Jason Merrill  (jason@deneb.cygnus.com)
7494
7495         * decl.c (start_function): Move TREE_PUBLIC and DECL_EXTERNAL
7496         tinkering to after call to pushdecl.
7497
7498 Fri Jun 17 14:48:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
7499
7500         * call.c (build_method_call): Handle destructors for non-aggregate
7501         types properly.
7502
7503 Thu Jun 16 16:48:05 1994  Jason Merrill  (jason@deneb.cygnus.com)
7504
7505         * call.c (build_method_call): Make sure that the name given for the
7506         destructor matches the constructor_name of the instance.
7507
7508         * pt.c (do_function_instantiation): A non-extern instantiation
7509         overrides a later extern one.
7510         (do_type_instantiation): Ditto.
7511
7512 Wed Jun 15 19:34:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
7513
7514         * init.c (expand_aggr_init): Use TYPE_MAIN_VARIANT to get the
7515         unqualified array type.
7516
7517         * cp-tree.h (EMPTY_CONSTRUCTOR_P): Tests whether NODE is a
7518         CONSTRUCTOR with no elements.
7519
7520         * decl.c (various): Lose empty_init_node.
7521         (finish_decl): Use EMPTY_CONSTRUCTOR_P, do the empty CONSTRUCTOR
7522         thing depending on the value of DECL_COMMON instead of
7523         flag_conserve_space, do the empty CONSTRUCTOR thing for types that
7524         don't have constructors, don't treat a real empty CONSTRUCTOR
7525         specially.
7526
7527         * typeck2.c (process_init_constructor): Don't treat empty_init_node
7528         specially.
7529
7530 Wed Jun 15 19:05:25 1994  Mike Stump  <mrs@cygnus.com>
7531
7532         * class.c (override_one_vtable): Don't forget to merge in an old
7533         overrider when we wanted to reuse a vtable, but couldn't.
7534
7535 Wed Jun 15 15:03:16 1994  Jason Merrill  (jason@deneb.cygnus.com)
7536
7537         * decl.c (start_decl): Put statics in common again.
7538
7539         * decl.c (grokdeclarator): Return NULL_TREE for an error rather than
7540         setting the type to error_mark_node.
7541
7542         * typeck.c (build_modify_expr): Build up a COMPOUND_EXPR for enum
7543         bitfield assignments.
7544
7545 Tue Jun 14 12:23:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
7546
7547         * decl.c (grok_op_properties): Const objects can be passed by value.
7548
7549 Mon Jun 13 03:10:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
7550
7551         * decl2.c (import_export_vtable): Force implicit instantiations to
7552         be interface_only when -fno-implicit-templates.
7553
7554         * decl.c (duplicate_decls): Redeclaring a class template name is an
7555         error.
7556
7557         * pt.c (end_template_decl): Call GNU_xref_decl for class templates.
7558         * xref.c (GNU_xref_decl): Support templates.
7559
7560 Sat Jun 11 17:09:05 1994  Jason Merrill  (jason@deneb.cygnus.com)
7561
7562         * decl.c (grok_op_properties): Split out checking for whether this
7563         function should suppress the default assignment operator.
7564         * decl2.c (grok_function_init): Ditto.
7565         (copy_assignment_arg_p): New function do do just that.
7566         Now considers virtual assignment operators that take a base as an
7567         argument to count as copy assignment operators.
7568
7569         * search.c (dfs_debug_mark): Lose checks for DWARF_DEBUG and
7570         TREE_ASM_WRITTEN, as they are redundant.
7571
7572         * pt.c (end_template_decl): Don't try to set DECL_CLASS_CONTEXT on a
7573         decl that has no LANG_SPECIFIC part.
7574         (do_type_instantiation): Force the debugging information for this
7575         type to be emitted.
7576
7577         * decl.c (start_decl): Clear up uses of various types of templates
7578         (say sorry for static data members, rather than "invalid template"). 
7579         (expand_static_init): Fix initialization of static data members of
7580         template classes.
7581
7582 Fri Jun 10 00:41:19 1994  Jason Merrill  (jason@deneb.cygnus.com)
7583
7584         * decl.c (grokdeclarator): Set DECL_CONTEXT on static data members.
7585
7586         * g++.c (main): Use -xc++-cpp-output for .i files.
7587
7588         * pt.c (tsubst): Give meaningful error about declaring template for
7589         a copy constructor which was not declared in the class template.
7590         (do_type_instantiation): Explicit instantiation before the class
7591         template is an error.
7592         (instantiate_template): Don't die if tsubst returns error_mark_node.
7593
7594 Thu Jun  9 19:04:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
7595
7596         Don't synthesize the copy assignment operator if the one in a base
7597         class is pure virtual.
7598         * cp-tree.h (TYPE_HAS_ABSTRACT_ASSIGN_REF): New macro to indicate
7599         whether the type has a pure virtual copy assignment operator.
7600         * class.c (finish_base_struct): Don't generate the copy assignment
7601         operator if a base class has a pure virtual one.
7602         * decl.c (grok_op_properties): Add disabled code to set
7603         TYPE_HAS_ABSTRACT_ASSIGN_REF with comment pointing to where it is
7604         actually set.
7605         * decl2.c (grok_function_init): Set TYPE_HAS_ABSTRACT_ASSIGN_REF.
7606
7607         * decl2.c (import_export_vtable): Always treat template
7608         instantiations as if write_virtuals >= 2, and treat implicit
7609         instantiations as external if -fno-implicit-templates.
7610         (finish_file): Output all pending inlines if
7611         flag_keep_inline_functions.
7612
7613 Wed Jun  8 20:48:02 1994  Mike Stump  <mrs@cygnus.com>
7614
7615         * tree.c (layout_vbasetypes): Align virtual base classes inside
7616         complete objects, so that we don't core dump on machines such as
7617         SPARCs when we access members that require larger than normal
7618         alignments, such as a double.  Also, we bump up the total alignment
7619         on the complete type, as necessary.
7620
7621 Wed Jun  8 16:18:14 1994  Jason Merrill  (jason@deneb.cygnus.com)
7622
7623         * gxxint.texi (Free Store): New section with code for examining
7624         cookie.
7625         (Limitations of g++): Remove operator delete entry, since it is no
7626         longer accurate.  Fix access control entry.
7627
7628         * typeck.c (build_unary_op): Pedwarn about taking the address of or
7629         incrementing a cast to non-reference type.
7630         (build_modify_expr): Use convert instead of convert_force again.
7631
7632         * search.c (get_base_distance): Use IS_AGGR_TYPE_CODE to check for
7633         class type, not == RECORD_TYPE.
7634
7635         * decl.c (grokdeclarator): Cope with grokfndecl returning NULL_TREE.
7636
7637         * typeck2.c (report_case_error): #if 0 out.
7638         * lex.c (real_yylex): Lose RANGE.
7639         * parse.y: Ditto.
7640
7641 Tue Jun  7 18:17:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
7642
7643         * parse.y (simple_stmt, case ranges): Use ELLIPSIS instead of RANGE.
7644
7645 Mon Jun  6 19:39:57 1994  Jason Merrill  (jason@deneb.cygnus.com)
7646
7647         * typeck.c (build_c_cast): Don't shortcut conversions to the same
7648         type.  Don't replace consts with their values here, since that's now
7649         done in cp_convert.
7650
7651         * cvt.c (cp_convert): When converting to bool, take
7652         integer_zero_node to false_node and all other INTEGER_CSTs to
7653         true_node.
7654         (build_type_conversion): Don't complain about multiple conversions
7655         to float if we're not really converting.
7656
7657 Fri Jun  3 02:10:56 1994  Jason Merrill  (jason@deneb.cygnus.com)
7658
7659         Implement 'extern template class A<int>;' syntax for suppressing
7660         specific implicit instantiations.
7661         * cp-tree.h: Update prototypes for do_*_instantiation.
7662         * pt.c (do_pending_expansions): Don't compile 'extern' explicit
7663         instantiations.
7664         (do_function_instantiation): Set DECL_EXTERNAL on 'extern' explicit
7665         instantiations.
7666         (do_type_instantiation): Ditto.
7667         * parse.y (explicit_instantiation): Support 'extern template class
7668         A<int>;' syntax.
7669         * decl.c (start_function): Don't modify the settings of TREE_PUBLIC
7670         and DECL_EXTERNAL on explicit instantiations.
7671
7672         * cvt.c (cp_convert): Replace constants with their values before
7673         converting.
7674         (cp_convert): Consistently use 'e' instead of 'expr'.
7675
7676 Thu Jun  2 03:53:30 1994  Jason Merrill  (jason@deneb.cygnus.com)
7677
7678         * typeck2.c (build_x_arrow): Resolve OFFSET_REFs first.
7679
7680 Wed Jun  1 18:57:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
7681
7682         * typeck2.c (digest_init): Handle initializing a pmf with an
7683         overloaded method.
7684         * typeck.c (build_ptrmemfunc): Handle overloaded methods.
7685
7686         * decl.c (pushtag): Use build_decl to make TYPE_DECLs.
7687         (xref_defn_tag): Ditto.
7688         * pt.c (process_template_parm): Ditto.
7689         (lookup_template_class): Ditto.
7690         (push_template_decls): Ditto.
7691         (instantiate_class_template): Ditto.
7692         (create_nested_upt): Ditto.
7693         * class.c (finish_struct): Don't try to set DECL_CLASS_CONTEXT on
7694         TYPE_DECLs.
7695
7696         * typeck.c (convert_arguments): Make sure type is not NULL before
7697         checking its TREE_CODE.
7698
7699 Wed Jun  1 17:40:39 1994  Mike Stump  <mrs@cygnus.com>
7700
7701         * class.c (get_derived_offset): New routine.
7702         * class.c (finish_base_struct): Make sure we set BINFO_VTABLE and
7703         BINFO_VIRTUALS when we choose a new base class to inherit from.
7704         * class.c (modify_one_vtable): Use get_derived_offset to get the
7705         offset to the most base class subobject that we derived this binfo
7706         from.
7707         * class.c (finish_struct): Move code to calculate the
7708         DECL_FIELD_BITPOS of the vfield up, as we need might need it for
7709         new calls to get_derived_offset in modify_one_vtable.
7710
7711 Wed Jun  1 16:50:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
7712
7713         * init.c (build_member_call): Use build_pointer_type instead of
7714         TYPE_POINTER_TO.
7715
7716 Wed Jun  1 11:11:15 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
7717
7718         * decl.c (grokdeclarator): Make sure we have a DNAME set before we
7719         try to use it in an error.
7720
7721 Wed Jun  1 09:48:49 1994  Mike Stump  <mrs@cygnus.com>
7722
7723         * typeck.c (convert_arguments, convert_for_initialization): Don't
7724         strip NOP_EXPRs, when we are converting to a reference.
7725
7726 Wed Jun  1 01:11:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
7727
7728         * typeck.c (build_modify_expr): Don't dereference references when
7729         initializing them.
7730
7731         * decl2.c (grokfield): Don't check for grokdeclarator returning
7732         error_mark_node any more.
7733
7734         * decl.c (grokfndecl): Return NULL_TREE instead of error_mark_node.
7735         (start_method): Return void_type_node instead of error_mark_node.
7736
7737         * typeck.c (build_modify_expr): Resolve offset refs earlier.
7738
7739 Tue May 31 16:06:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
7740
7741         * call.c (build_method_call): Resolve OFFSET_REFs in the object.
7742
7743         * typeck.c (build_modify_expr): Dereference references before trying
7744         to assign to them.
7745
7746         * call.c (build_method_call): Don't confuse type conversion
7747         operators with constructors.
7748         * typeck2.c (build_functional_cast): Just call build_c_cast if there
7749         was only one parameter.
7750         * method.c (build_typename_overload): Don't set
7751         IDENTIFIER_GLOBAL_VALUE on these identifiers.
7752         * decl.c (grok_op_properties): Warn about defining a type conversion
7753         operator that converts to a base class (or reference to it).
7754         * cvt.c (cp_convert): Don't try to use a type conversion operator
7755         when converting to a base class.
7756         (build_type_conversion_1): Don't call constructor_name_full on an
7757         identifier.
7758         * cp-tree.h (DERIVED_FROM_P): Should be self-explanatory.
7759
7760         * decl.c (start_decl): Don't complain that error_mark_node is an
7761         incomplete type.
7762         (finish_decl): Check for type == error_mark_node.
7763
7764 Mon May 30 23:38:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
7765
7766         * decl.c (start_function): Set DECL_DEFER_OUTPUT on implicit
7767         instantiations and inline members.
7768
7769         * spew.c (yylex): Set looking_for_template if the next token is a '<'.
7770
7771         * lex.h: Declare looking_for_template.
7772
7773         * decl.c (lookup_name_real): Use looking_for_template to arbitrate
7774         between type and template interpretations of an identifier.
7775
7776 Sat May 28 04:07:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
7777
7778         * pt.c (instantiate_template): Zero out p if we found a
7779         specialization.
7780
7781         * decl.c (grokdeclarator): Elucidate warning.
7782         (grokdeclarator): If pedantic AND -ansi, complain about long long.
7783
7784         Make explicit instantiation work reasonably.  It is now appropriate
7785         to deprecate the use of -fexternal-templates.
7786         * pt.c (instantiate_template): Set DECL_TEMPLATE_SPECIALIZATION or
7787         DECL_IMPLICIT_INSTANTIATION on fndecl as appropriate.
7788         (end_template_instantiation): Reflect changes in USE_TEMPLATE
7789         semantics.
7790         (do_pending_expansions): if (!flag_implicit_templates) DECIDE(0);
7791         (do_function_instantiation): Don't set EXPLICIT_INST if
7792         flag_external_templates is set.  Do set TREE_PUBLIC and DECL_EXTERN
7793         appropriately otherwise.
7794         (do_type_instantiation): Set interface info for class.  Set
7795         TREE_PUBLIC and DECL_EXTERN for methods.  Do none of this if
7796         flag_external_templates is set.
7797         * parse.y: Reflect changes in USE_TEMPLATE semantics.
7798         * decl2.c: New flag flag_implicit_templates determines whether or
7799         not implicit instantiations get emitted.  This flag currently
7800         defaults to true, and must be true for -fexternal-templates to work.
7801         (finish_file): Consider flag_implement_inlines when
7802         setting DECL_EXTERNAL.  Consider flag_implicit_templates when
7803         deciding whether or not to emit a static copy.
7804         * decl.c (start_function): Set TREE_PUBLIC and DECL_EXTERNAL
7805         properly for template instantiations.
7806         (start_method): Set DECL_IMPLICIT_INSTANTIATION on methods of a
7807         template class.
7808         * cp-tree.h (CLASSTYPE_USE_TEMPLATE): Change semantics.
7809         (DECL_USE_TEMPLATE): Parallel macro for FUNCTION and VAR_DECLs.
7810         (various others): Accessor macros for the above.
7811
7812 Fri May 27 13:57:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
7813
7814         * typeck.c (build_binary_op_nodefault): Division by constant zero is
7815         an error.
7816
7817 Fri May 27 13:50:15 1994  Mike Stump  <mrs@cygnus.com>
7818
7819         * class.c (override_one_vtable): Don't modify things we don't own.
7820
7821 Fri May 27 01:42:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
7822
7823         * decl.c (finish_decl): Don't postpone processing the initializer of
7824         a decl with DECL_EXTERNAL set, and do call rest_of_compilation for a
7825         PUBLIC const at toplevel.
7826         (grokdeclarator): pedwarn about initializing non-const or
7827         non-integral statics in the class body.
7828
7829         * decl.c (pushtag): Don't try to set DECL_CLASS_CONTEXT on a
7830         TYPE_DECL.
7831
7832         * call.c (convert_harshness): Dereference reference on rhs before
7833         proceeding, properly grok passing const things to non-const
7834         references.
7835
7836         * typeck.c (build_unary_op): Soften error about taking the address
7837         of main() to a pedwarn.
7838
7839         * lex.c (default_copy_constructor_body): Unambiguously specify base
7840         classes (i.e. A((const class ::A&)_ctor_arg) ).
7841         (default_assign_ref_body): Ditto.
7842
7843 Thu May 26 13:13:55 1994  Gerald Baumgartner  (gb@mexican.cygnus.com)
7844
7845         * decl2.c (grokfield): Don't complain about local signature
7846         method declaration without definition.
7847
7848         * call.c (convert_harshness): If `type' is a signature pointer
7849         and `parmtype' is a pointer to a signature, just return 0.  We
7850         don't really convert in this case; it's a result of making the
7851         `this' parameter of a signature method a signature pointer.
7852
7853         * call.c (build_method_call): Distinguish calling the default copy
7854         constructor of a signature pointer/reference from a signature
7855         member function call.
7856
7857 Thu May 26 12:56:25 1994  Jason Merrill  (jason@deneb.cygnus.com)
7858
7859         * decl2.c (grokfield): Don't set TREE_PUBLIC on member function
7860         declarations.
7861
7862         * decl.c (duplicate_decls): A previous function declaration as
7863         static overrides a subsequent non-static definition.
7864         (grokdeclarator): Don't set TREE_PUBLIC on inline method
7865         declarations.
7866
7867 Wed May 25 14:36:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
7868
7869         * decl.c (grokdeclarator): Handle initialization of static const
7870         members.
7871         (finish_decl): Ditto.
7872
7873         * decl2.c (grokfield): Allow initialization of static const members
7874         even when pedantic.
7875
7876         * decl2.c (grokfield): Deal with grokdeclarator returning
7877         error_mark_node.
7878
7879         * decl.c (grok_ctor_properties): Return 0 for A(A) constructor.
7880         (grokfndecl): Check the return value of grok_ctor_properties.
7881         (start_method): Ditto.
7882
7883         * parse.y (absdcl): Expand type_quals inline.
7884
7885 Tue May 24 19:10:32 1994  Jason Merrill  (jason@deneb.cygnus.com)
7886
7887         * decl.c (pushtag): Use IS_AGGR_TYPE rather than checking for a
7888         RECORD_TYPE.
7889
7890 Tue May 24 18:09:16 1994  Per Bothner  (bothner@kalessin.cygnus.com)
7891
7892         * cp-tree.h (VTABLE_NAME_FORMAT):  If flag_vtable_thunks,
7893         always use "__vt_%s".
7894         * decl2.c (finish_vtable_vardecl):  Don't consider abstract virtuals
7895         when looking for a "sentinal" method (to decide on emitting vtables).
7896         * decl2.c (finish_file):  Scan all decls for thunks that need
7897         to be emitted.
7898         * decl2.c (finish_vtable_vardecl):  Don't bother calling emit_thunk.
7899         * method.c (make_thunk):  Use a more meaningful label.  If there
7900         exists a matching top-level THUNK_DECL re-use it;  otherwise
7901         create a new THUNK_DECL (and declare it).
7902         * method.c (emit_thunk):  Make thunk external/public depending
7903         on the underlying method.
7904
7905 Tue May 24 00:22:04 1994  Jason Merrill  (jason@deneb.cygnus.com)
7906
7907         * pt.c (tsubst): Use lookup_name_nonclass to find guiding decls, not
7908         lookup_name.
7909
7910         * call.c (build_overload_call_real): Don't immediately pick a
7911         function which matches perfectly.
7912
7913         * decl.c (grokdeclarator): Use c_build_type_variant for arrays.
7914         (grokdeclarator): Warn about, and throw away, cv-quals attached to a
7915         reference (like 'int &const j').
7916
7917         * typeck.c (convert_arguments): Don't mess with i for methods.
7918         * call.c (build_method_call): Pass the function decl to
7919         convert_arguments.
7920
7921         * typeck.c (comp_ptr_ttypes_real): New function.  Implements the
7922         checking for which multi-level pointer conversions are allowed.
7923         (comp_target_types): Call it.
7924         (convert_for_assignment): Check const parity on the ultimate target
7925         type, too.  And make those warnings pedwarns.
7926
7927 Mon May 23 14:11:24 1994  Jason Merrill  (jason@deneb.cygnus.com)
7928
7929         * error.c (dump_char): Use TARGET_* for character constants.
7930
7931 Mon May 23 13:03:03 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
7932
7933         * tree.c (debug_no_list_hash): Make static.
7934
7935         * decl.c (decls_match): Say the types don't match if newdecl ends up
7936         with a null type, after we've checked if olddecl does.
7937         (pushdecl): Check if the decls themselves match before looking for
7938         an extern redeclared as static, to avoid inappropriate and incorrect
7939         warnings.
7940
7941 Fri May 20 14:04:34 1994  Jason Merrill  (jason@deneb.cygnus.com)
7942
7943         * decl.c (grokdeclarator): Make warning about duplicate short, etc.
7944         a pedwarn.
7945
7946         * typeck.c (build_c_cast): Casting to function or method type is an
7947         error.
7948
7949         * class.c (finish_struct): Make warning for anonymous class with no
7950         instances a pedwarn.
7951
7952         * Makefile.in (stamp-parse): Expect a s/r conflict.
7953
7954         * typeck.c (build_modify_expr): pedwarn about using a non-lvalue
7955         cast as an lvalue.
7956
7957 Thu May 19 12:08:48 1994  Jason Merrill  (jason@deneb.cygnus.com)
7958
7959         * cvt.c (type_promotes_to): Make sure bool promotes to int rather
7960         than unsigned on platforms where sizeof(char)==sizeof(int).
7961
7962 Wed May 18 14:27:06 1994  Jason Merrill  (jason@deneb.cygnus.com)
7963
7964         * typeck.c (build_c_cast): Tack on a NOP_EXPR when casting to
7965         another variant.
7966         (build_modify_expr): Don't strip NOP_EXPRs, and don't get tricky
7967         and treat them as lvalues.
7968
7969         * decl.c (shadow_tag): Do complain about forward declarations of
7970         enums and empty declarations.
7971         * parse.y: Don't complain about forward declarations of enums and
7972         empty declarations.
7973
7974         * typeck.c (convert_for_assignment): Complain about changing
7975         the signedness of a pointer's target type.
7976
7977         * parse.y (stmt): Move duplicated code for checking case values from
7978         here.
7979         * decl2.c (check_cp_case_value): To here.  And add a call to
7980         constant_expression_warning.
7981
7982         * typeck.c (convert_for_assignment): Don't complain about assigning
7983         a negative value to bool.
7984
7985         * decl.c (init_decl_processing): Make bool unsigned.
7986
7987         * class.c (finish_struct): Allow bool bitfields.
7988
7989 Wed May 18 12:35:27 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
7990
7991         * Make-lang.in (c++.install-man): Get g++.1 from $(srcdir)/cp.
7992
7993 Wed May 18 03:28:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
7994
7995         * cvt.c (build_type_conversion): Lose special handling of
7996         truthvalues.
7997
7998         * search.c (dfs_pushdecls): Improve shadowing warning.
7999
8000 Tue May 17 13:34:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
8001
8002         * init.c (build_delete): Throw away const and volatile on `this'.
8003
8004         * decl.c (finish_enum): Put the constants in TYPE_VALUES again,
8005         rather than the enumerators.
8006         (pushtag): s/cdecl/c_decl/g
8007
8008 Mon May 16 23:04:01 1994  Stephen R. van den Berg  (berg@pool.informatik.rwth-aachen.de)
8009
8010         * cp/typeck.c (common_type): Attribute merging.
8011         (comp_types): Utilise COMP_TYPE_ATTRIBUTES macro.
8012
8013         * cp/parse.y: Revamp attribute parsing.
8014
8015 Mon May 16 01:40:34 1994  Jason Merrill  (jason@deneb.cygnus.com)
8016
8017         * decl.c (shadow_tag): Also check for inappropriate use of auto and
8018         register.
8019
8020         * method.c (build_overload_name): Clarify that the illegal case is a
8021         pointer or reference to array of unknown bound.
8022
8023         * error.c (dump_type_prefix): Print references to arrays properly.
8024
8025         * typeck.c (various): Be more helpful in pointer
8026         comparison diagnostics.
8027
8028         * tree.c (lvalue_p): MODIFY_EXPRs are lvalues again.  Isn't this
8029         fun?
8030
8031         * parse.y: Also catch an error after valid stmts.
8032
8033         * search.c (dfs_init_vbase_pointers): Don't abort because `this' is
8034         const.
8035
8036         * typeck.c (convert_for_initialization): If call to
8037         convert_to_reference generated a diagnostic, print out the parm
8038         number and function decl if any.
8039
8040         * errfn.c (cp_thing): Check atarg1 to determine whether or not we're
8041         specifying a line, not atarg.
8042
8043         * tree.c (build_cplus_method_type): Always make `this' const.
8044
8045         * decl2.c (grokclassfn): If -fthis-is-variable and this function is
8046         a constructor or destructor, make `this' non-const.
8047
8048         * typeck.c (build_modify_expr): Don't warn specially about
8049         assignment to `this' here anymore, since it will be caught by the
8050         usual machinery.
8051
8052         * various: Disallow specific GNU extensions (variable-size arrays,
8053         etc.) when flag_ansi is set, not necessarily when pedantic is set,
8054         so that people can compile with -pedantic-errors for tighter const
8055         checking and such without losing desirable extensions.
8056
8057         * typeck2.c (build_functional_cast): Call build_method_call with
8058         LOOKUP_PROTECT.
8059         (process_init_constructor): Only process FIELD_DECLs.
8060
8061         * decl.c (finish_decl): Also force static consts with no explicit
8062         initializer that need constructing into the data segment.
8063
8064         * init.c (build_delete): Undo last patch, as it interferes with
8065         automatic cleanups.
8066
8067 Sat May 14 01:59:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
8068
8069         * call.c, class.h, cp-tree.h, cvt.c, decl2.c: Lose old overloading
8070         code.
8071
8072         * init.c (build_delete): pedwarn about using plain delete to delete
8073         an array.
8074
8075 Fri May 13 16:45:07 1994  Jason Merrill  (jason@deneb.cygnus.com)
8076
8077         * typeck.c (comp_target_types): Be more helpful in contravariance
8078         warnings, and make them pedwarns.
8079
8080         * decl.c (grokdeclarator): Use decl_context to decide whether or not
8081         this is an access declaration.
8082
8083         * class.c (finish_struct_bits): Set TYPE_HAS_INT_CONVERSION if it
8084         has a conversion to enum or bool, too.
8085
8086 Fri May 13 16:31:27 1994  Mike Stump  <mrs@cygnus.com>
8087
8088         * method.c (emit_thunk):  Make declaration for
8089         current_call_is_indirect local (needed for hppa).
8090
8091 Fri May 13 16:16:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
8092
8093         * pt.c (uses_template_parms): Grok BOOLEAN_TYPE.
8094         (tsubst): Ditto.
8095
8096 Fri May 13 16:23:32 1994  Mike Stump  <mrs@cygnus.com>
8097
8098         * pt.c (tsubst): If there is already a function for this expansion,
8099         use it.
8100         * pt.c (instantiate_template): Ditto.
8101
8102 Fri May 13 10:30:42 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
8103
8104         * parse.y (implicitly_scoped_stmt, simple_stmt case): Use
8105         kept_level_p for MARK_ENDS argument to expand_end_bindings, to avoid
8106         generating debug info for unemitted symbols on some systems.
8107
8108         * cp-tree.h (build_static_cast, build_reinterpret_cast,
8109         build_const_cast): Add declarations.
8110
8111 Fri May 13 09:50:31 1994  Mike Stump  <mrs@cygnus.com>
8112
8113         * search.c (expand_indirect_vtbls_init): Fix breakage from Apr 27
8114         fix.  We now try get_binfo, and if that doesn't find what we want,
8115         we go back to the old method, which still sometimes fails.
8116
8117 Fri May 13 01:43:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
8118
8119         * parse.y (initdcl): Call cplus_decl_attributes on the right
8120         variable.
8121         * decl2.c (cplus_decl_attributes): Don't call decl_attributes for
8122         void_type_node.
8123
8124         * typeck.c (build_binary_op_nodefault): Change result_type for
8125         comparison ops to bool.
8126         (build_binary_op): Convert args of && and || to bool.
8127         * cvt.c (build_default_binary_type_conversion): Convert args of &&
8128         and || to bool.
8129         (build_default_unary_type_conversion): Convert arg of ! to bool.
8130         (type_promotes_to): bool promotes to int.
8131
8132 Fri May 13 01:43:18 1994  Mike Stump  <mrs@cygnus.com>
8133
8134         Implement the new builtin `bool' type.
8135         * typeck.c (build_binary_op_nodefault): Convert args of && and || to
8136         bool.
8137         (build_unary_op): Convert arg of ! to bool.
8138         * parse.y: Know true and false.  Use bool_truthvalue_conversion.
8139         * method.c (build_overload_value): Know bool.
8140         (build_overload_name): Ditto.
8141         * lex.c (init_lex): Set up RID_BOOL.
8142         * gxx.gperf: Add bool, true, false.
8143         * error.c (*): Know bool.
8144         * decl.c (init_decl_processing): Set up bool, true, false.
8145         * cvt.c (cp_convert): Handle conversion to bool.
8146         (build_type_conversion): Ditto.
8147         * *.c: Accept bool where integers and enums are accepted (use
8148         INTEGRAL_CODE_P macro).
8149
8150 Thu May 12 19:13:54 1994  Richard Earnshaw  (rwe11@cl.cam.ac.uk)
8151
8152         * g++.c: Use #ifdef for __MSDOS__, not #if.
8153
8154 Thu May 12 18:05:18 1994  Mike Stump  <mrs@cygnus.com>
8155
8156         * decl2.c (lang_f_options): Handle -fshort-temps.  -fshort-temps
8157         gives old behavior , and destroys temporaries earlier.  Default
8158         behavior now conforms to the ANSI working paper.
8159
8160 Thu May 12 14:45:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
8161
8162         * typeck.c (build_modify_expr): Understand MODIFY_EXPR as an lvalue.
8163         Use convert_force to convert the result of a recursive call when we
8164         are dealing with a NOP_EXPR.  Don't automatically wrap MODIFY_EXPRs
8165         in COMPOUND_EXPRs any more.
8166         (various): Lose pedantic_lvalue_warning.
8167         (unary_complex_lvalue): Understand MODIFY_EXPR.
8168
8169         * cvt.c (convert_to_reference): Allow DECL to be error_mark_node if
8170         we don't know what we're initializing.
8171
8172 Wed May 11 01:59:36 1994  Jason Merrill  (jason@deneb.cygnus.com)
8173
8174         * cvt.c (convert_to_reference): Modify to use convtype parameter.
8175         Only create temporaries when initializing a reference, not when
8176         casting.
8177         (cp_convert): New main function.
8178         (convert): Call cp_convert.
8179         * cvt.c, decl.c, typeck.c: Fix calls to convert_to_reference.
8180         * cp-tree.h (CONV_*): New constants used by conversion code for
8181         selecting conversions to perform.
8182
8183         * tree.c (lvalue_p): MODIFY_EXPRs are no longer lvalues.
8184
8185         * typeck.c (build_{static,reinterpret,const_cast): Stubs that just
8186         call build_c_cast.
8187         * parse.y: Add {static,reinterpret,const}_cast.
8188         * gxx.gperf: Ditto.
8189
8190         * typeck.c (common_type): Allow methods with basetypes of different
8191         UPTs.
8192         (comptypes): Deal with UPTs.
8193         (build_modify_expr): Wrap all MODIFY_EXPRs in a COMPOUND_EXPR.
8194
8195         * pt.c (end_template_decl): Check for multiple definitions of member
8196         templates.
8197
8198         * call.c (build_method_call): Complain about calling an abstract
8199         virtual from a constructor.
8200
8201         * typeck.c (pointer_int_sum): Check for the integer operand being 0
8202         after checking the validity of the pointer operand.
8203
8204         * typeck2.c (digest_init): Pedwarn about string initializer being
8205         too long.
8206
8207 Tue May 10 12:10:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
8208
8209         * decl.c (push_overloaded_decl): Only throw away a builtin if the
8210         decl in question is the artificial one.
8211
8212         * parse.y (simple_stmt, switch): Use implicitly_scoped_stmt because
8213         expand_{start,end}_case cannot happen in the middle of a block.
8214
8215         * cvt.c (build_type_conversion_1): Use convert again.
8216
8217 Tue May 10 11:52:04 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
8218
8219         * typeck2.c (digest_init): Make sure we check for signed and
8220         unsigned chars as well when warning about string initializers.
8221
8222         * init.c (emit_base_init): Check if there's a DECL_NAME on the
8223         member before trying to do an initialization for it.
8224
8225 Tue May 10 11:34:37 1994  Mike Stump  <mrs@cygnus.com>
8226
8227         * except.c: Don't do anything useful when cross compiling.
8228
8229 Tue May 10 03:04:13 1994  Jason Merrill  (jason@deneb.cygnus.com)
8230
8231         * decl.c (duplicate_decls): Fix up handling of builtins yet again.
8232         (push_overloaded_decl): Ditto.
8233
8234         * cvt.c (convert): Don't look for void type conversion.
8235
8236 Mon May  9 18:05:41 1994  Jason Merrill  (jason@deneb.cygnus.com)
8237
8238         * init.c (do_friend): Only do a pushdecl for friends, not
8239         pushdecl_top_level.
8240
8241 Mon May  9 13:36:34 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)
8242
8243         * decl.c (lookup_name_current_level): Put empty statement after
8244         the label OUT to make the code valid C.
8245
8246 Mon May  9 12:20:57 1994  Jason Merrill  (jason@deneb.cygnus.com)
8247
8248         * typeck.c (build_binary_op_nodefault): Only complain about
8249         comparing void * and a function pointer if void * is smaller.
8250
8251 Sun May  8 01:29:13 1994  Jason Merrill  (jason@deneb.cygnus.com)
8252
8253         * decl.c (lookup_name_current_level): Move through temporary binding
8254         levels.
8255
8256         * parse.y (already_scoped_stmt): Revive.
8257         (simple_stmt): Use it again.
8258
8259         * decl.c (poplevel): Always call poplevel recursively if we're
8260         dealing with a temporary binding level.
8261
8262 Sat May  7 10:52:28 1994  Mike Stump  <mrs@cygnus.com>
8263
8264         * decl.c (finish_decl): Make sure we run cleanups for initial values
8265         of decls.  Cures memory leak.
8266         * decl.c (expand_static_init): Ditto for static variables.
8267         * decl2.c (finish_file): Ditto for globals.
8268
8269 Sat May  7 03:57:44 1994  Jason Merrill  (jason@deneb.cygnus.com)
8270
8271         * typeck.c (commonparms): Don't complain about redefining default
8272         args.
8273
8274         * decl.c (duplicate_decls): Don't complain twice about conflicting
8275         function decls.
8276         (decls_match): Don't look at default args.
8277         (redeclaration_error_message): Complain about redefining default
8278         args.
8279
8280         * call.c (build_overload_call_real): Also deal with guiding
8281         declarations coming BEFORE the template decl.
8282
8283         * pt.c (unify): Allow different parms to have different
8284         cv-qualifiers.
8285         (unify): Allow trivial conversions on non-template parms.
8286
8287 Fri May  6 03:53:23 1994  Jason Merrill  (jason@deneb.cygnus.com)
8288
8289         * pt.c (tsubst): Support OFFSET_TYPEs.
8290         (unify): Ditto.
8291
8292         * decl2.c (finish_decl_parsing): Call push_nested_class with a type.
8293
8294         * init.c (build_offset_ref): Fix error message.
8295         * search.c (lookup_field): Ditto.
8296
8297         * call.c (build_scoped_method_call): Pass binfo to
8298         build_method_call.
8299         * typeck.c (build_object_ref): Ditto.
8300
8301         * typeck2.c (binfo_or_else): Don't return a _TYPE.
8302
8303         * class.c (finish_struct): Don't complain about re-use of inherited
8304         names or shadowing of type decls.
8305         * decl.c (pushdecl_class_level): Ditto.
8306
8307         * decl.c (finish_enum): Set the type of all the enums.
8308
8309         * class.c (finish_struct): Don't get confused by access decls.
8310
8311         * cp-tree.h (TYPE_MAIN_DECL): New macro to get the _DECL for a
8312         _TYPE.  You can stop using TYPE_NAME for that now.
8313
8314         * parse.y: Lose doing_explicit (check $0 instead).
8315         * gxx.gperf: 'template' now has a RID.
8316         * lex.h (rid): Ditto.
8317         * lex.c (init_lex): Set up the RID for 'template'.
8318
8319         * parse.y (type_specifier_seq): typed_typespecs or
8320         nonempty_type_quals.  Use it.
8321         (handler_args): Fix bogus syntax.
8322         (raise_identifier{,s}, optional_identifier): Lose.
8323         * except.c (expand_start_catch_block): Use grokdeclarator to parse
8324         the catch variable.
8325         (init_exception_processing): The second argument to
8326         __throw_type_match is ptr_type_node.
8327
8328         Fri May  6 07:18:54 1994  Chip Salzenberg  (chip@fin)
8329
8330         [ change propagated from c-decl.c of snapshot 940429 ]
8331         * cp/decl.c (finish_decl): Setting asmspec_tree should not
8332         zero out the old RTL.
8333
8334 Fri May  6 01:25:38 1994  Mike Stump  <mrs@cygnus.com>
8335
8336         Add alpha exception handling support to the compiler.
8337         Quick and dirty backend in except.c.
8338
8339         * cp/*:  Remove most remnants of old exception handling support.
8340         * decl.c (finish_function): Call expand_exception_blocks to put
8341         the exception hanlding blocks at the end of the function.
8342         * dec.c (hack_incomplete_structures): Make sure expand_decl_cleanup
8343         comes after expand_decl_init.
8344         * except.c: Reimplementation.
8345         * expr.c (cplus_expand_expr): Handle THROW_EXPRs.
8346         * lex.c (init_lex): Always have catch, try and throw be reserved
8347         words, so that we may always parse exception handling.
8348         * parse.y: Cleanup to support new interface into exception handling.
8349         * tree.def (THROW_EXPR): Add.
8350
8351 Thu May  5 17:35:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
8352
8353         * parse.y (simple_stmt, for loops): Use implicitly_scoped_stmt.
8354         (various): Lose .kindof_pushlevel and partially_scoped_stmt.
8355
8356 Thu May  5 16:17:27 1994  Kung Hsu  (kung@mexican.cygnus.com)
8357
8358         * parse.y (already_scoped_stmt): move expand_end_binding() to
8359         fix the unmatched LBB/LBE in stabs.
8360
8361 Thu May  5 14:36:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
8362
8363         * decl.c (set_nested_typename): Set TREE_MANGLED on the new
8364         identifiers.
8365         (pushdecl): Check TREE_MANGLED.
8366         (xref_tag): Ditto.
8367         * cp-tree.h (TREE_MANGLED): This identifier is a
8368         DECL_NESTED_TYPENAME (named to allow for future use to denote
8369         mangled function names as well).
8370
8371         Implement inconsistency checking specified in [class.scope0].
8372         * decl.c (lookup_name_real): Don't set ICV here after all.
8373         (finish_enum): Also set the type of the enumerators themselves.
8374         (build_enumerator): Put the CONST_DECL in the list instead of its
8375         initial value.
8376         (pushdecl_class_level): Check inconsistent use of a name in the
8377         class body.
8378         * class.c (finish_struct): Check inconsistent use of a name in the
8379         class body.  Don't set DECL_CONTEXT on types here anymore.
8380         * parse.y (qualified_type_name): Note that the identifier has now
8381         been used (as a type) in the class body.
8382         * lex.c (do_identifier): Note that the identifier has now been used
8383         (as a constant) in the class body.
8384         * error.c (dump_decl): Print type and enum decls better.
8385
8386 Thu May  5 09:35:35 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
8387
8388         * typeck.c (build_modify_expr): Warn about assignment to `this'.
8389
8390 Wed May  4 15:55:49 1994  Jason Merrill  (jason@deneb.cygnus.com)
8391
8392         * init.c (build_delete): Use the global operator delete when
8393         requested.
8394
8395         * decl.c (lookup_name_real): If we find the type we're looking in a
8396         base class while defining a class, set IDENTIFIER_CLASS_VALUE for
8397         the type.
8398
8399         * class.c (finish_struct): Remove a couple of dependencies on
8400         language linkage.
8401
8402         * decl.c (pushtag): Classes do nest in extern "C" blocks.
8403         (pushdecl): Only set DECL_NESTED_TYPENAME on the canonical one for
8404         the type.
8405         (pushtag): Remove another dependency on the language linkage.
8406
8407         * lex.c (cons_up_default_function): Don't set DECL_CLASS_CONTEXT to
8408         a const-qualified type.
8409
8410         * decl.c (push_overloaded_decl): Throw away built-in decls here.
8411         (duplicate_decls): Instead of here.
8412
8413 Wed May  4 15:27:40 1994  Per Bothner  (bothner@kalessin.cygnus.com)
8414
8415         * typeck.c (get_member_function_from_ptrfunc):  Do The Right
8416         Thing (I hope) if we're using thunks.
8417
8418 Wed May  4 13:52:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
8419
8420         * parse.y (specialization): aggr template_type_name ';'.
8421         (named_class_head_sans_basetype): Use it.
8422         (explicit_instantiation): Ditto.
8423         (tmpl.2): Revert.
8424
8425         * cvt.c (build_type_conversion_1): Use convert_for_initialization,
8426         rather than convert, to do conversions after the UDC.
8427
8428         * cp-tree.h (SHARED_MEMBER_P): This member is shared between all
8429         instances of the class.
8430
8431         * search.c (lookup_field): If the entity found by two routes is the
8432         same, it's not ambiguous.
8433
8434 Wed May  4 12:10:00 1994  Per Bothner  (bothner@kalessin.cygnus.com)
8435
8436         * decl.c (lookup_name_real):  Check for a NULL TREE_VALUE,
8437         to prevent the compiler from crashing ...
8438
8439 Wed May  4 11:19:45 1994  Jason Merrill  (jason@deneb.cygnus.com)
8440
8441         * call.c (build_method_call): If we don't have an object, check
8442         basetype_path to figure out where to look up the function.
8443
8444         * typeck.c (convert_for_initialization): Pass TYPE_BINFO (type) to
8445         build_method_call in case exp is NULL_TREE.
8446
8447 Tue May  3 16:02:53 1994  Per Bothner  (bothner@kalessin.cygnus.com)
8448
8449         Give a vtable entries a unique named type, for the sake of gdb.
8450         * class.c (build_vtable_entry):  The addres of a thunk now has
8451         type vtable_entry_type, not ptr_type_node.
8452         * method.c (make_thunk):  Fix type of THUNK_DECL.
8453         * class.c (add_virtual_function, override_one_vtable):  Use
8454         vfunc_ptr_type_node, instead of ptr_type_node.
8455         * cp-tree.h (vfunc_ptr_type_node):  New macro.
8456         * decl.c (init_decl_processing):  Make vtable_entry_type
8457         be a unique type of pointer to a unique function type.
8458
8459 Tue May  3 09:20:44 1994  Jason Merrill  (jason@deneb.cygnus.com)
8460
8461         * parse.y (do_explicit): Sets doing_explicit to 1.
8462         (explicit_instantiation): Use do_explicit rather than TEMPLATE
8463         directly, add "do_explicit error" rule.
8464         (datadef): Set doing_explicit to 0 after an explicit instantiation.
8465         (tmpl.2): Don't instantiate if we see a ';' unless we're doing an
8466         explicit instantiation.
8467         (named_class_head_sans_basetype): Remove aggr template_type_name
8468         ';' again.
8469
8470 Mon May  2 23:17:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
8471
8472         * search.c (lookup_nested_tag): Lose.
8473
8474         * decl2.c (grokfield): Set DECL_CONTEXT on TYPE_DECLs.
8475         (lookup_name_nonclass): Lose.
8476
8477         * decl.c (poplevel_class): Add force parameter.
8478         (lookup_name_real): Fix handling of explicit scoping which specifies
8479         a class currently being defined.  Add 'nonclass' argument.
8480         (lookup_name, lookup_name_nonclass): Shells for lookup_name_real.
8481
8482         * class.c (finish_struct): Don't unset IDENTIFIER_CLASS_VALUEs here.
8483         (popclass): Force clearing of IDENTIFIER_CLASS_VALUEs if we're being
8484         called from finish_struct.
8485
8486 Mon May  2 19:06:21 1994  Per Bothner  (bothner@kalessin.cygnus.com)
8487
8488         * decl.c (init_decl_processing), cp-tree.h:  Removed memptr_type.
8489         (It seeems redundant, given build_ptrmemfunc_type.)
8490         * typeck.c (get_member_function_from_ptrfunc), gc.c (build_headof,
8491         build_classof):  Use vtable_entry_type instead of memptr_type.
8492         * method.c (emit_thunk):  Call poplevel with functionbody==0
8493         to prevent DECL_INITIAL being set to a BLOCK.
8494
8495 Mon May  2 15:02:11 1994  Jason Merrill  (jason@deneb.cygnus.com)
8496
8497         * parse.y (named_class_head_sans_basetype): Add "aggr
8498         template_type_name ';'" rule for forward declaration of
8499         specializations.
8500
8501 Mon May  2 15:02:11 1994  Jason Merrill  (jason@deneb.cygnus.com)
8502
8503         * class.c (instantiate_type): Deal with pmf's.
8504
8505         * Make-lang.in (cc1plus): Don't depend on OBJS or BC_OBJS, since
8506         stamp-objlist does.
8507
8508         * Makefile.in (../cc1plus): Depend on OBJDEPS.
8509         (OBJDEPS): Dependency version of OBJS.
8510
8511 Mon May  2 12:51:31 1994  Kung Hsu  (kung@mexican.cygnus.com)
8512
8513         * search.c (dfs_debug_mark): unmark TYPE_DECL_SUPPRESS_DEBUG, not
8514         DECL_IGNORED_P.
8515
8516 Fri Apr 29 12:29:56 1994  Jason Merrill  (jason@deneb.cygnus.com)
8517
8518         * class.c (finish_struct): Clear out memory of local tags.  And
8519         typedefs.
8520
8521         * decl2.c (grokclassfn): Don't set DECL_CONTEXT to a cv-qualified
8522         type.
8523         * search.c (get_matching_virtual): Be more helpful in error message.
8524
8525         * *: Use DECL_ARTIFICIAL (renamed from DECL_SYNTHESIZED).
8526
8527         * lex.c (default_assign_ref_body): Expect TYPE_NESTED_NAME to work.
8528         (default_copy_constructor_body): Ditto.
8529
8530         * class.c (finish_struct): Don't gratuitously create multiple decls
8531         for nested classes.
8532
8533 Thu Apr 28 23:39:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
8534
8535         Avoid clobbering the arg types of other functions when reverting
8536         static member functions.
8537         * decl.c (revert_static_member_fn): Rearrange arguments, don't
8538         require values for 'fn' and 'argtypes', add warning to comment
8539         above.
8540         (decls_match): Rearrange arguments in call to rsmf.
8541         (grok_op_properties): Don't pass values for fn and argtypes.
8542         * pt.c (instantiate_template): Don't pass values for fn and argtypes.
8543
8544 Thu Apr 28 16:29:11 1994  Doug Evans  (dje@canuck.cygnus.com)
8545
8546         * Make-lang.in (cc1plus): Depend on stamp-objlist.
8547         * Makefile.in (BC_OBJS): Delete.
8548         (OBJS): Cat ../stamp-objlist to get language independent files.
8549         Include ../c-common.o.
8550         (../cc1plus): Delete reference to BC_OBJS.
8551
8552 Thu Apr 28 02:12:08 1994  Jason Merrill  (jason@deneb.cygnus.com)
8553
8554         * search.c (compute_access): No really, deal with static members
8555         properly.  Would I lie to you?
8556
8557         Implement lexical hiding of function declarations.
8558         * pt.c (tsubst): Use lookup_name to look for function decls to guide
8559         instantiation.
8560         * method.c (build_opfncall): Use lookup_name_nonclass to look for
8561         non-member functions.
8562         * init.c (do_friend): Use lookup_name_nonclass to look for
8563         functions.
8564         * error.c (ident_fndecl): Use lookup_name to look for functions.
8565         * decl2.c (lookup_name_nonclass): New function, skips over
8566         CLASS_VALUE.
8567         * decl.c (struct binding_level): Lose overloads_shadowed field.
8568         (poplevel): Don't deal with overloads_shadowed.
8569         (push_overloaded_decl): Do lexical hiding for functions.
8570         * class.c (instantiate_type): Don't check non-members if we have
8571         members with the same name.
8572         * call.c (build_method_call): Use lookup_name_nonclass instead of
8573         IDENTIFIER_GLOBAL_VALUE to check for non-member functions.
8574         (build_overload_call_real): Ditto.
8575
8576         * decl.c (duplicate_decls): Check for ambiguous overloads here.
8577         (push_overloaded_decl): Instead of here.
8578         
8579         * decl.c (pushdecl): Back out Chip's last change.
8580
8581         * decl.c (grok_op_properties): operators cannot be static members.
8582
8583         * cp-tree.h (DECL_SYNTHESIZED): DECL_SOURCE_LINE == 0
8584         (SET_DECL_SYNTHESIZED): DECL_SOURCE_LINE = 0
8585         * lex.c (cons_up_default_function): Use SET_DECL_SYNTHESIZED.
8586
8587         * method.c (do_inline_function_hair): Don't put friends of local
8588         classes into global scope, either.
8589
8590         * typeck2.c (build_functional_cast): Don't look for a function call
8591         interpretation.
8592
8593 Thu Apr 28 15:19:46 1994  Mike Stump  <mrs@cygnus.com>
8594
8595         * cp-tree.h: disable use of backend EH.
8596
8597 Wed Apr 27 21:01:24 1994  Doug Evans  (dje@canuck.cygnus.com)
8598
8599         * Make-lang.in (c++.distdir): mkdir tmp/cp first.
8600         * Makefile.in (INCLUDES): Move definition to same place as
8601         parent makefile.
8602         (ALLOCA): Define.
8603         (OLDAR_FLAGS): Delete.
8604         (OLDCC): Define.
8605         (DIR): Delete.
8606         (CLIB): Define.
8607         (####site): Delete.
8608         (SUBDIR_USE_ALLOCA): Don't use ALLOCA if compiling with gcc.
8609
8610 Wed Apr 27 19:10:04 1994  Kung Hsu  (kung@mexican.cygnus.com)
8611
8612         * decl.c (xref_tag): not to use strstr(), it's not available on
8613         all platforms.
8614
8615 Wed Apr 27 18:10:12 1994  Jason Merrill  (jason@deneb.cygnus.com)
8616
8617         * class.c (finish_struct): Resolve yet another class/pmf confusion.
8618
8619         * call.c (build_overload_call_real): Don't take the single-function
8620         shortcut if we're dealing with an overloaded operator.
8621
8622 Wed Apr 27 17:35:37 1994  Mike Stump  <mrs@cygnus.com>
8623
8624         * search.c (get_base_distance): Search the virtual base class
8625         binfos, incase someone wants to convert to a real virtual base
8626         class.
8627         * search.c (expand_indirect_vtbls_init): Use convert_pointer_to_real
8628         instead of convert_pointer_to, as it now will work.
8629
8630 Wed Apr 27 15:36:49 1994  Jason Merrill  (jason@deneb.cygnus.com)
8631
8632         * cvt.c (convert_to_reference): Don't complain about casting away
8633         const and volatile.
8634
8635         * typeck.c (build_unary_op): References are too lvalues.
8636
8637 Wed Apr 27 13:58:05 1994  Mike Stump  <mrs@cygnus.com>
8638
8639         * class.c (override_one_vtable): We have to prepare_fresh_vtable
8640         before we modify it, not after, also, we cannot reuse an old vtable,
8641         once we commit to a new vtable.  Implement ambiguous overrides in
8642         virtual bases as abstract.  Hack until we make the class
8643         ill-formed.
8644
8645 Wed Apr 27 01:17:08 1994  Jason Merrill  (jason@deneb.cygnus.com)
8646
8647         * parse.y (unary_expr): Expand new_placement[opt] and
8648         new_initializer[opt] inline.
8649
8650         * search.c (lookup_fnfields): Don't throw away the inheritance
8651         information here, either.
8652         (compute_access): Handle static members properly.
8653
8654         * init.c (build_member_call): Always set basetype_path, and pass it
8655         to lookup_fnfields.
8656
8657         * search.c (lookup_field): Deal properly with the case where
8658         xbasetype is a chain of binfos; don't throw away the inheritance
8659         information.
8660         (compute_access): protected_ok always starts out at 0.
8661
8662         * init.c (resolve_offset_ref): Don't cast `this' to the base type
8663         until we've got our basetype_path.
8664
8665         * cp-tree.h (IS_OVERLOAD_TYPE): aggregate or enum.
8666
8667         * cvt.c (build_up_reference): Use build_pointer_type rather than
8668         TYPE_POINTER_TO.
8669
8670         * call.c (convert_harshness_ansi): Call type_promotes_to for reals
8671         as well.
8672
8673         * cvt.c (type_promotes_to): Retain const and volatile, add
8674         float->double promotion.
8675
8676         * decl.c (grokdeclarator): Don't bash references to arrays into
8677         references to pointers in function parms.  Use type_promotes_to.
8678
8679 Tue Apr 26 23:44:36 1994  Mike Stump  <mrs@cygnus.com>
8680
8681         Finish off Apr 19th work.
8682
8683         * class.c (finish_struct_bits): Rename has_abstract_virtuals to
8684         might_have_abstract_virtuals.
8685         * class.c (strictly_overrides, override_one_vtable,
8686         merge_overrides): New routines to handle virtual base overrides.
8687         * class.c (finish_struct): Call merge_overrides to handle overrides
8688         in virtual bases.
8689
8690 Tue Apr 26 12:45:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
8691
8692         * typeck.c (build_function_call): Call build_function_call_real with
8693         LOOKUP_NORMAL.
8694
8695         * *: Don't deal with TYPE_EXPRs.
8696
8697         * tree.c (lvalue_p): If the type of the expression is a reference,
8698         it's an lvalue.
8699
8700         * cvt.c (convert_to_reference): Complain about passing const
8701         lvalues to non-const references.
8702         (convert_from_reference): Don't arbitrarily throw away const and
8703         volatile on the target type.
8704
8705         * parse.y: Simplify and fix rules for `new'.
8706
8707         * decl.c (grok_op_properties): operator void is illegal.
8708
8709 Mon Apr 25 02:36:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
8710
8711         * parse.y (components): Anonymous bitfields can still have declspecs.
8712
8713         * decl.c (pushdecl): Postpone handling of function templates like we
8714         do C functions.
8715
8716         * search.c (expand_indirect_vtbls_init): Fix infinite loop when
8717         convert_pointer_to fails.
8718
8719         * call.c (compute_conversion_costs_ansi): A user-defined conversion
8720         by itself is better than that UDC followed by standard conversions.
8721         Don't treat integers and reals specially.
8722
8723         * cp-tree.h: Declare flag_ansi.
8724
8725         * typeck.c (c_expand_return): pedwarn on return in void function
8726         even if the expression is of type void.
8727         (build_c_cast): Don't do as much checking for casts to void.
8728         (build_modify_expr): pedwarn about array assignment if this code
8729         wasn't generated by the compiler.
8730
8731         * tree.c (lvalue_p): A comma expression is an lvalue if its second
8732         operand is.
8733
8734         * typeck.c (default_conversion): Move code for promoting enums and
8735         ints from here.
8736         * cvt.c (type_promotes_to): To here.
8737         * call.c (convert_harshness_ansi): Use type_promotes_to.  Also fix
8738         promotion semantics for reals.
8739
8740 Sun Apr 24 16:52:51 1994  Doug Evans  (dje@canuck.cygnus.com)
8741
8742         * Make-lang.in (c++.install-common): Check for g++-cross.
8743         * Makefile.in: Remove Cygnus cruft.
8744         (config.status): Delete.
8745         (RTL_H): Define.
8746         (TREE_H): Use complete pathname, some native makes have minimal
8747         VPATH support.
8748         (*.o): Use complete pathname to headers in parent dir.
8749         (doc, info, dvi): Delete.
8750
8751 Sun Apr 24 16:52:51 1994  Doug Evans  (dje@canuck.cygnus.com)
8752
8753         * Make-lang.in (c++.install-common): Check for g++-cross.
8754         * Makefile.in: Remove Cygnus cruft.
8755         (config.status): Delete.
8756         (RTL_H): Define.
8757         (TREE_H): Use complete pathname, some native makes have minimal
8758         VPATH support.
8759         (*.o): Use complete pathname to headers in parent dir.
8760         (doc, info, dvi): Delete.
8761
8762 Sun Apr 24 00:47:49 1994  Jason Merrill  (jason@deneb.cygnus.com)
8763
8764         * decl.c (pushdecl): Avoid redundant warning on redeclaring function
8765         with different return type.
8766         (decls_match): Compare return types strictly.
8767
8768 Fri Apr 22 12:55:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
8769
8770         * cvt.c (build_type_conversion): Do try to convert through other
8771         pointers.  This will fail if the class defines multiple pointer
8772         conversions.
8773
8774         * error.c (dump_type_prefix): Print out pointers to arrays properly.
8775         (dump_type_suffix): Ditto.  (was 'int *[]', now 'int (*)[]')
8776
8777         * typeck.c (build_unary_op): Disallow ++/-- on pointers to
8778         incomplete type.
8779
8780         * decl.c (duplicate_decls): Check mismatched TREE_CODES after
8781         checking for shadowing a builtin.  If we're redeclaring a builtin
8782         function, bash the old decl to avoid an ambiguous overload.
8783
8784         * cvt.c (convert_to_reference): Don't force arrays to decay here.
8785
8786         * tree.c (lvalue_p): A MODIFY_EXPR is an lvalue.
8787
8788         * decl.c (duplicate_decls): Don't assume that the decls will have
8789         types.
8790
8791         Mon Apr 18 11:35:32 1994  Chip Salzenberg  (chip@fin.uucp)
8792
8793         [ cp/* changes propagated from c-* changes in 940318 snapshot ]
8794         * c-decl.c (pushdecl): Warn if type mismatch with another external decl
8795         in a global scope.
8796
8797         Fri Apr 22 06:38:56 1994  Chip Salzenberg  (chip@fin.uucp)
8798
8799         * cp/typeck2.c (signature_error): Use cp_error for "%T".
8800
8801         Mon Apr 18 11:59:59 1994  Chip Salzenberg  (chip@fin.uucp)
8802
8803         [ cp/* changes propagated from c-* changes in 940415 snapshot ]
8804         * cp/decl.c (duplicate_decls, pushdecl, builtin_function):
8805         Use DECL_FUNCTION_CODE instead of DECL_SET_FUNCTION_CODE.
8806
8807         Mon Apr 18 11:55:18 1994  Chip Salzenberg  (chip@fin.uucp)
8808
8809         [ cp/* changes propagated from c-* changes in 940409 snapshot ]
8810         * cp/decl.c (duplicate_decls): Put new type in same obstack as
8811         old ones, or permanent if old ones in different obstacks.
8812
8813         Mon Apr 18 11:48:49 1994  Chip Salzenberg  (chip@fin.uucp)
8814
8815         [ cp/* changes propagated from c-* changes in 940401 snapshot ]
8816         * cp/parse.y (attrib): Handle string args as expressions,
8817         merging the two rules.  `mode' attribute now takes a string arg.
8818         Delete the rule for an identifier as arg.
8819
8820         Mon Apr 18 11:24:00 1994  Chip Salzenberg  (chip@fin.uucp)
8821
8822         [ cp/* changes propagated from c-* changes in 940312 snapshot ]
8823         * cp/typeck.c (pointer_int_sum): Multiplication should be done signed.
8824         (pointer_diff): Likewise the division.
8825
8826         Sun Mar  6 19:43:39 1994  Chip Salzenberg  (chip@fin.uucp)
8827
8828         [ cp/* changes propagated from c-* changes in 940304 snapshot ]
8829         * cp/decl.c (finish_decl): Issue warning for large objects,
8830         if requested.
8831
8832         Sat Feb 19 22:20:32 1994  Chip Salzenberg  (chip@fin.uucp)
8833
8834         [ cp/* changes propagated from c-* changes in 940218 snapshot ]
8835         * cp/parse.y (attrib): Handle attribute ((section ("string"))).
8836         * cp/decl.c (duplicate_decls): Merge section name into new decl.
8837
8838         Tue Feb  8 09:49:17 1994  Chip Salzenberg  (chip@fin.uucp)
8839
8840         [ cp/* changes propagated from c-* changes in 940206 snapshot ]
8841         * cp/typeck.c (signed_or_unsigned_type): Check for any
8842         INTEGRAL_TYPE_P not just INTEGER_TYPE.
8843
8844         Mon Dec  6 13:35:31 1993  Norbert Kiesel  (norbert@i3.INformatik.rwth-aachen.DE)
8845
8846         * cp/decl.c (finish_enum): Start from 0 when determining precision
8847         for short enums.
8848
8849         Fri Dec  3 17:07:58 1993  Ralph Campbell  (ralphc@pyramid.COM)
8850
8851         * cp/parse.y (unary_expr): Look at $1 for tree_code rather than
8852         casting $$.
8853
8854         Wed Nov 17 19:22:09 1993  Chip Salzenberg  (chip@fin.uucp)
8855
8856         * cp/typeck.c (build_binary_op_nodefault): Propagate code
8857         from C front-end to optimize unsigned short division.
8858         (build_conditional_expr): Fix bug in "1 ? 42 : (void *) 8".
8859
8860         Wed Nov 17 19:17:18 1993  Chip Salzenberg  (chip@fin.uucp)
8861
8862         * cp/call.c (convert_harshness_ansi): Given an (e.g.) char
8863         constant, prefer 'const char &' to 'int'.
8864
8865         Wed Feb  3 13:11:48 1993  Chip Salzenberg  (chip@fin.uucp)
8866
8867         * cp/class.c (finish_struct_methods):  Handle multiple
8868         constructors in fn_fields list.
8869
8870 Fri Apr 22 12:48:10 1994  Kung Hsu  (kung@mexican.cygnus.com)
8871
8872         * class.c (finish_struct): use TYPE_DECL_SUPPRESS_DEBUG to flag
8873         types not to be dumped in stabs, like types in #pragma interface.
8874         * decl.c (init_decl_processing): use TYPE_DECL_SUPPRESS_DEBUG to
8875         mark unknown type.
8876
8877 Fri Apr 22 03:27:26 1994  Doug Evans  (dje@cygnus.com)
8878
8879         * Language directory reorganization.
8880         See parent makefile.
8881
8882 Thu Apr 21 18:27:57 1994  Per Bothner  (bothner@kalessin.cygnus.com)
8883
8884         * cp-tree.h (THUNK_DELTA):  It is normally negative, so
8885         use signed .i variant of frame_size rather than unsigned .u.
8886         * cp-tree.h (VTABLE_NAME_FORMAT):  If flag_vtable_thunks,
8887         use "VT" rather than "vt" due to binary incompatibility.
8888         * class.c (get_vtable_name):  Use strlen of VTABLE_NAME_FORMAT,
8889         rather than sizeof, since it is now an expression.
8890         * class.c (modify_one_vtable):  Modify to skip initial element
8891         containing a count of the vtable.
8892
8893 Thu Apr 21 00:09:02 1994  Jason Merrill  (jason@deneb.cygnus.com)
8894
8895         * lex.c (check_newline): Force interface_unknown on main input file.
8896
8897         * pt.c (do_pending_expansions): Always emit functions that have been
8898         explicitly instantiated.
8899         (do_function_instantiation): Set DECL_EXPLICITLY_INSTANTIATED.
8900         (do_type_instantiation): Set CLASSTYPE_VTABLE_NEEDS_WRITING and
8901         DECL_EXPLICITLY_INSTANTIATED on all my methods.
8902         * parse.y (explicit_instantiation): Call do_type_instantiation for
8903         types.
8904         * decl2.c (finish_vtable_vardecl): Call import_export_vtable.
8905         * decl.c (start_function): Don't set DECL_EXTERNAL on a function
8906         that has been explicitly instantiated.
8907         * cp-tree.h (DECL_EXPLICITLY_INSTANTIATED): Alias for
8908         DECL_LANG_FLAG_4.
8909         * class.c: Move import_export_vtable to decl2.c, and comment out all
8910         uses.
8911
8912 Wed Apr 20 16:51:06 1994  Jason Merrill  (jason@deneb.cygnus.com)
8913
8914         * lex.c (process_next_inline): Don't muck with DECL_INLINE.
8915         (do_pending_inlines): Ditto.
8916
8917 Tue Apr 19 22:25:41 1994  Mike Stump  <mrs@cygnus.com>
8918
8919         Reimplement vtable building, and most vtable pointer setting.
8920         Allows for earier maintenance, easier understandability, and most
8921         importantly, correct semantics.
8922
8923         * class.c (build_vtable): Removed unneeded
8924         SET_BINFO_VTABLE_PATH_MARKED.
8925         * class.c (prepare_fresh_vtable): Ditto.  Added argument.
8926         * class.c (modify_vtable_entry): General cleanup.
8927         * class.c (related_vslot, is_normal, modify_other_vtable_entries,
8928         modify_vtable_entries): Removed.
8929         * class.c (add_virtual_function): General cleanup.
8930         * class.c (finish_base_struct): Setup BINFO_VTABLE and
8931         BINFO_VIRTUALS as early as we can, so that modify_all_vtables can
8932         work.
8933         * class.c (finish_vtbls): New routine, mostly from
8934         unmark_finished_struct.
8935         * class.c (overrides): New routine.
8936         * class.c (modify_one_vtable): New routine, mostly from
8937         modify_other_vtable_entries and modify_vtable_entries.
8938         * class.c (modify_all_direct_vtables, modify_all_indirect_vtables,
8939         modify_all_vtables): New routines.
8940         * class.c (finish_struct): Added arguemnt to prepare_fresh_vtable
8941         call.  General cleanup on how pending_hard_virtuals are handled.
8942         General cleanup on modifying vtables.  Use finish_vtbls, instead of
8943         unmark_finished_struct.
8944         * cp-tree.h (init_vtbl_ptrs, expand_direct_vtbls_init,
8945         get_first_matching_virtual, get_matching_virtual,
8946         expand_vbase_vtables_init,  expand_indirect_vtbls_init): Update.
8947         * cvt.c (convert_pointer_to_real): cleanup error message.
8948         * decl.c (grokfndecl): General cleanup.
8949         * decl.c (finish_function): Change init_vtbl_ptrs call to
8950         expand_direct_vtbls_init.  Change expand_vbase_vtables_init call to
8951         expand_indirect_vtbls_init.
8952         * init.c (expand_virtual_init): Remove unneeded argument.
8953         * init.c (init_vtbl_ptrs): Rename to expand_direct_vtbls_init, added
8954         two arguments to make more general.  Made more general.  Now can be
8955         used for vtable pointer initialization from virtual bases.
8956         * init.c (emit_base_init): Change expand_vbase_vtables_init call to
8957         expand_indirect_vtbls_init.  Change init_vtbl_ptrs call to
8958         expand_direct_vtbls_init.
8959         * init.c (expand_virtual_init): General cleanup.
8960         * init.c (expand_default_init): Change expand_vbase_vtables_init
8961         call to expand_indirect_vtbls_init.
8962         * init.c (expand_recursive_init_1): Change expand_vbase_vtables_init
8963         call to expand_indirect_vtbls_init.
8964         * init.c (expand_recursive_init): Change expand_vbase_vtables_init
8965         call to expand_indirect_vtbls_init.
8966         * search.c (get_first_matching_virtual): Rename to
8967         get_matching_virtual.  General cleanup and remove setting of
8968         DECL_CONTEXT.  That is now done in a cleaner way in
8969         modify_vtable_entry and add_virtual_function.
8970         * search.c (expand_vbase_vtables_init): Rename to
8971         expand_indirect_vtbls_init.  General cleanup.  Use
8972         expand_direct_vtbls_init to do hard work.  Ensures that _all_ vtable
8973         pointers from virtual bases are set up.
8974         * search.c (bfs_unmark_finished_struct, unmark_finished_struct):
8975         Removed.
8976
8977         * *.[chy]: Remove support for VTABLE_USES_MASK.
8978
8979 Tue Apr 19 12:51:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
8980
8981         * cvt.c (convert_to_reference): Use NOP_EXPRs to switch between
8982         reference and pointer types instead of bashing the types directly.
8983
8984         * call.c (build_overload_call_real): Use the TREE_CODE to determine
8985         whether the function is overloaded or not, rather than
8986         TREE_OVERLOADED.
8987         * *: Remove all uses of TREE_OVERLOADED.
8988
8989         * decl.c (grokdeclarator): Only complain about initializing const
8990         fields when -ansi or -pedantic.
8991
8992 Tue Apr 19 12:42:42 1994  Doug Evans  (dje@canuck.cygnus.com)
8993
8994         * cp-tree.h (THUNK_DELTA): frame_size is now a union.
8995
8996 Mon Apr 18 00:17:13 1994  Jason Merrill  (jason@deneb.cygnus.com)
8997
8998         Do overloading on a block-by-block basis, not function-by-function.
8999         * decl.c: Lose overloads_to_forget.
9000         (struct binding_level): Add overloads_shadowed field.
9001         (poplevel): Restore overloads_shadowed.
9002         (push_overloaded_decl): Use overloads_shadowed instead of
9003         overloads_to_forget.
9004         (finish_function): Don't look at overloads_to_forget.
9005
9006         Copy enum_overflow logic from c-decl.c.
9007         * decl.c (start_enum): Initialize enum_overflow.
9008         (build_enumerator): Use enum_overflow.  Also use current_scope().
9009
9010         * search.c (current_scope): Move Brendan's comment from
9011         build_enumerator here.
9012
9013         * typeck.c (convert_for_assignment): Change warnings to pedwarns for
9014         discarding const/volatile.
9015
9016 Sat Apr 16 01:18:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
9017
9018         * typeck.c (comp_target_parms): Accept TEMPLATE_TYPE_PARMs on the rhs.
9019         (comp_target_types): Ditto.
9020
9021         * decl.c (lookup_name): Don't unset got_scope here.
9022
9023         * spew.c (yylex): Only replace yylval with the TYPE_NESTED_NAME if
9024         got_scope != NULL_TREE.
9025
9026 Fri Apr 15 16:36:33 1994  Jason Merrill  (jason@deneb.cygnus.com)
9027
9028         Horrible kludge to prevent templates from being instantiated by
9029         their base classes.
9030         * parse.y (template_instantiate_once): Unset TYPE_BEING_DEFINED
9031         before we get to left_curly.
9032         * pt.c (instantiate_class_template): Set TYPE_BEING_DEFINED.
9033
9034         * error.c (dump_decl): If it's a typedef, print out the name of the
9035         decl, not just the underlying type.
9036
9037         * decl.c (pushdecl): If the old duplicate decl was a TYPE_DECL,
9038         update the IDENTIFIER_TYPE_VALUE of its name.
9039
9040         * decl2.c (finish_file): When processing the initializer for a
9041         static member, pretend that the dummy function is a member of the
9042         same class.
9043
9044 Fri Apr 15 15:56:35 1994  Kung Hsu  (kung@mexican.cygnus.com)
9045
9046         * class.c (build_vtable_entry): revert Apr 4 change.
9047         * decl2.c (mark_vtable_entries): replace pure virtual function
9048         decl with abort's.
9049
9050 Fri Apr 15 13:49:33 1994  Jason Merrill  (jason@deneb.cygnus.com)
9051
9052         * typeck.c (build_conditional_expr): Pedwarn on pointer/integer
9053         mismatch, and don't pedwarn on 0/function pointer mismatch.
9054
9055         * typeck2.c (digest_init): Lose code for special handling of unions.
9056         (process_init_constructor): Since they're handled just fine here.
9057         Pedwarn on excess elements.
9058
9059         * decl2.c (grokfield): Complain about local class method declaration
9060         without definition.
9061
9062 Fri Apr 15 13:19:40 1994  Per Bothner  (bothner@kalessin.cygnus.com)
9063
9064         * method.c (emit_thunk):  Add extern declaration for
9065         current_call_is_indirect (needed for hppa).
9066
9067 Thu Apr 14 16:12:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
9068
9069         Improve local class support; allow classes in different blocks to
9070         have the same name.
9071         * decl.c (pushtag): Support local classes better.
9072         (pushdecl_nonclass_level): New function for pushing mangled decls of
9073         nested types into the appropriate scope.
9074         (xref_defn_tag): Use pushdecl_nonclass_level instead of
9075         pushdecl_top_level. 
9076         (grokfndecl): Don't mess with IDENTIFIER_GLOBAL_VALUE for local
9077         class methods.
9078         * method.c (do_inline_function_hair): Ditto.
9079
9080         * class.c (finish_struct): It is legal for a class with no
9081         constructors to have nonstatic const and reference members.
9082
9083 Thu Apr 14 07:15:11 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
9084
9085         * decl.c (push_overloaded_decl): Avoid giving errors about
9086         built-ins, since duplicate_decls will have given warnings/errors
9087         for them.
9088
9089 Thu Apr 14 03:45:12 1994  Jason Merrill  (jason@deneb.cygnus.com)
9090
9091         * cvt.c (convert_to_reference): Warn about casting pointer type to
9092         reference type when this is probably not what they wanted.
9093
9094 Wed Apr 13 13:12:35 1994  Per Bothner  (bothner@kalessin.cygnus.com)
9095
9096         * decl.c (finish_decl):  Don't mindlessly set TREE_USED for
9097         static consts any more (toplev.c has now been modified to
9098         not emit warnings if they are unused).
9099
9100 Wed Apr 13 00:22:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
9101
9102         * decl.c (grok_op_properties): If op new/delete get here with
9103         METHOD_TYPEs, do a revert_static_member_fn.
9104
9105         * cp-tree.h (IDENTIFIER_CLASS_TYPE_VALUE): Lose.
9106         * init.c (is_aggr_typedef): Don't look at
9107         IDENTIFIER_CLASS_TYPE_VALUE.
9108         (get_aggr_from_typedef): Ditto.
9109         (get_type_value): Ditto.
9110         * call.c (build_scoped_method_call): Don't rely on overloaded
9111         template names having IDENTIFIER_CLASS_VALUE set.
9112
9113         * parse.y (component_decl_1, fn.def2): Revert rules for
9114         constructors.
9115         (component_decl_1, fn.def2): Use $1 instead of $$, since $$ is being
9116         clobbered.
9117
9118         * decl.c (start_function): Only warn about `void main()' if pedantic
9119         || warn_return_type.
9120
9121 Tue Apr 12 02:14:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
9122
9123         Clean up overloading of the template name.
9124         * class.c (pushclass): overload the template name whenever pushing
9125         into the scope of a template class, not just if it is
9126         uninstantiated.
9127         (popclass): Correspondingly.
9128         * search.c (push_class_decls): Don't overload_template_name.
9129         * pt.c (overload_template_name): Don't set IDENTIFIER_LOCAL_VALUE or
9130         DECL_CONTEXT on things.
9131         * parse.y (left_curly): Don't overload_template_name.
9132         * class.c (finish_struct): Don't undo_template_name_overload.
9133
9134         * method.c (build_opfncall): Only pass one argument to global op
9135         delete.
9136
9137         * call.c (build_method_call): Use TYPE_VEC_DELETE_TAKES_SIZE to
9138         decide how many arguments to use for vec delete.
9139
9140         * decl.c (grok_op_properties): Be consistent in modifying
9141         current_class_type.
9142         (grokdeclarator): Only complain about function decls with no return
9143         type if we're being pedantic.
9144
9145 Mon Apr 11 00:10:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
9146
9147         Add support for operator new [] and operator delete [].
9148
9149         * tree.def: Add VEC_NEW_EXPR and VEC_DELETE_EXPR.
9150         * ptree.c (print_lang_type): Indicate vec new/delete.
9151         * parse.y: Support vec new/delete.
9152         * method.c (build_decl_overload): Deal with vec new/delete.
9153         (build_opfncall): Ditto.
9154         * lex.c (init_lex): Set up values of ansi_opname and opname_tab for
9155         vec new/delete.  vec new uses "__vn", and vec delete uses "__vd".
9156         * init.c (init_init_processing): Set up BIVN and BIVD.
9157         (do_friend): Don't clean up after mistaken setting of TREE_GETS_NEW,
9158         since it doesn't happen any more.
9159         (build_new): Support vec new.  Always call something.
9160         (build_x_delete): Support vec delete.
9161         (build_vec_delete): Lose dtor_dummy argument, add use_global_delete,
9162         and pass it to build_x_delete.
9163         * decl2.c (delete_sanity): Don't change behavior by whether or not
9164         the type has a destructor.  Pass use_global_delete to
9165         build_vec_delete.
9166         (coerce_delete_type): Make sure that the type returned has a first
9167         argument of ptr_type_node.
9168         * decl.c (init_decl_processing): Also declare the global vec
9169         new/delete.
9170         (grokdeclarator): Also force vec new/delete to be static.
9171         (grok_op_properties): Note presence of vec new/delete, and play with
9172         their args.  If vec delete takes the optional size_t argument, set
9173         TYPE_VEC_DELETE_TAKES_SIZE.
9174         * cp-tree.h (TYPE_GETS_{REG,VEC}_DELETE): New macros to simplify
9175         checking for one delete or the other.
9176         (lang_type): gets_new and gets_delete are now two bits long.  The
9177         low bit is for the non-array version.  Lose gets_placed_new.
9178         (TYPE_VEC_DELETE_TAKES_SIZE): New macro indicating that the vec
9179         delete defined by this class wants to know how much space it is
9180         deleting.
9181         (TYPE_VEC_NEW_USES_COOKIE): New macro to indicate when vec new must
9182         add a header containing the number of elements in the vector; i.e.
9183         when the elements need to be destroyed or vec delete wants to know
9184         the size.
9185         * class.c (finish_struct_methods): Also check for overloading vec
9186         delete.
9187         * call.c (build_method_call): Also delete second argument for vec
9188         delete.
9189
9190         * decl.c (grokdeclarator): Correct complaints again.
9191         (grokdeclarator): Fix segfault on null declarator.
9192         (decls_match): Also accept redeclaration with no arguments if both
9193         declarations were in C context.  Bash TREE_TYPE (newdecl) here.
9194         (duplicate_decls): Instead of here.
9195
9196         * parse.y (nested_name_specifier_1): Lose rules for dealing with
9197         syntax errors nicely, since they break parsing of 'const i;'.
9198
9199         * decl.c (lookup_name): if (got_scope == current_class_type)
9200         val = IDENTIFIER_CLASS_VALUE (name).
9201
9202         * search.c (lookup_nested_tag): Look in enclosing classes, too.
9203
9204         * spew.c (yylex): Only look one character ahead when checking for a
9205         SCOPE.
9206
9207         * lex.c (check_newline): Read first nonwhite char before
9208         incrementing lineno.
9209
9210         * decl.c (grokdeclarator): Don't claim that typedefs are variables
9211         in warning.
9212
9213         * parse.y: Divide up uses of unqualified_id into
9214         notype_unqualified_id and unqualified_id, so that TYPENAME can be
9215         used as an identifier after an object.
9216
9217         * class.c (push_nested_class): Don't push into non-class scope.
9218
9219         * decl.c (grokdeclarator): If an identifier could be a type
9220         conversion operator, but has no associated type, it's not a type
9221         conversion operator.
9222
9223         * pt.c (unify): Check for equality of constants better.
9224
9225         * decl.c (grokdeclarator): Don't complain about access decls.
9226
9227 Sun Apr 10 02:39:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
9228
9229         * decl.c (grokdeclarator): pedwarn about data definitions without
9230         types here.
9231
9232         * parse.y (datadef): Don't pedwarn about decls without types here,
9233         since that is valid for functions.
9234         (fn.def2, component_decl): Support constructors with declmods again.
9235         (nomods_initdecls): For decls without any mods, so that we don't try
9236         to get declspecs from some arbitrary $0.
9237
9238         * search.c (lookup_field): Use cp_error.
9239
9240         * parse.y (nested_name_specifier_1): Don't check aggr/non-aggr type
9241         here; it breaks destructors for non-aggr types.
9242
9243         * decl.c (lookup_name): Only look for TYPE_DECLs in base classes of
9244         a type being defined, like the comment says.
9245         If got_scope is not an aggregate, just return NULL_TREE.
9246
9247         * pt.c (create_nested_upt): Kung's code for creating types nested
9248         within uninstantiated templates now lives here (it used to live in
9249         hack_more_ids).  It needs to be expanded.
9250
9251         * parse.y: Stop calling see_typename so much.
9252
9253         * decl.c (lookup_name): Deal with TTPs and UPTs.
9254
9255         * lex.c (real_yylex): Don't set looking_for_typename just because we
9256         saw a 'new'.
9257         (dont_see_typename): #if 0 out.
9258
9259         * spew.c (yylex): Increment looking_for_typename if the next
9260         character is SCOPE, rather than setting it to 1; this way, the value
9261         from seeing an aggr specifier will not be lost.  This kinda relies
9262         on looking_for_typename never being < 0, which is now true.
9263
9264         * parse.y (nested_name_specifier_1): Accept TEMPLATE_TYPE_PARMs,
9265         too.
9266         (named_class_head_sans_basetype): Accept template types, too.  Oops.
9267
9268 Fri Apr  8 16:39:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
9269
9270         * decl2.c (reparse_decl_as_expr1): Handle SCOPE_REFs.
9271
9272         * parse.y: Lose START_DECLARATOR.
9273
9274         * search.c (lookup_nested_tag): New function to scan CLASSTYPE_TAGS
9275         for a class.
9276
9277         * parse.y: Simplify fn.def2 and component_decl.  Support 'enum
9278         A::foo' syntax.  Catch invalid scopes better.
9279
9280         * parse.y, lex.c: lose TYPENAME_COLON.
9281
9282         * decl2.c (groktypefield): #if 0 out.
9283
9284         * decl.c (lookup_name): If the type denoted by got_scope is
9285         currently being defined, look in CLASSTYPE_TAGS rather than FIELDS.
9286
9287         * class.c (push_nested_class): Don't try to push into
9288         error_mark_node.
9289
9290 Fri Apr  8 07:26:36 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
9291
9292         * Makefile.in (stamp-parse): Update count of conflicts to 33.
9293
9294 Thu Apr  7 17:47:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
9295
9296         A saner implementation of nested types that treats template types
9297         no differently from non-template types.  There are still some
9298         shortcomings of our system; most notably, it is difficult to look
9299         for a nested type that is hidden by another name, because of the way
9300         we keep track of hidden types.  But this shouldn't be a problem for
9301         just about anyone.  Perhaps lookup_field should be fixed up a bit.
9302
9303         * spew.c: Moved handling of nested types/scoping from the lexer
9304         into the parser.  Removed variable template_type_seen_before_scope.
9305         Removed functions frob_identifier, hack_more_ids, and various cruft
9306         that was #if 0'd out in the past, reducing the size of the file from
9307         1146 lines to 450 lines.  We can't quite do away with spew.c yet,
9308         though; we still need it for do_aggr () and checking for SCOPE after
9309         the current identifier.  And setting lastiddecl.
9310
9311         * parse.y: Moved handling of nested types/scoping from the lexer
9312         into the parser, using a new global variable `got_scope'.  Reduced
9313         the number of states by 53.  Implemented all uses of explicit global
9314         scope.  Removed terminals SCOPED_TYPENAME and SCOPED_NAME.  Removed
9315         nonterminals tmpl.1, scoped_base_class, id_scope, typename_scope,
9316         scoped_typename.  Added nonterminals nested_type,
9317         qualified_type_name, complete_type_name, qualified_id, ptr_to_mem,
9318         nested_name_specifier, global_scope, overqualified_id, type_name.
9319         Changed many others.  Added 9 new reduce/reduce conflicts, which are
9320         nested type parallels of 9 that were already in the grammar for
9321         non-nested types.  Eight of the now 33 conflicts should be removed
9322         in the process of resolving the late binding between variable and
9323         function decls.
9324
9325         * gxxint.texi (Parser): Update.
9326
9327         * cp-tree.h (IS_AGGR_TYPE_CODE): Add UNINSTANTIATED_P_TYPE.
9328
9329         * lex.h: Add decl for got_scope.
9330
9331         * lex.c (see_typename): Claim to be the lexer when calling
9332         lookup_name.
9333
9334         * decl.c (lookup_name): When called from the lexer, look at
9335         got_scope and looking_at_typename; otherwise don't.
9336
9337 Thu Apr  7 22:05:47 1994  Mike Stump  <mrs@cygnus.com>
9338
9339         31th Cygnus<->FSF merge.
9340
9341 Thu Apr  7 17:47:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
9342
9343         * decl2.c (mark_vtable_entries): Call this to mark all the
9344         entries in the vtable addressable.
9345         (finish_decl_parsing): Handle SCOPE_REFs.
9346
9347         * decl.c (decls_match): Always call compparms with strict == 1.
9348         Handle the special case of C function redecl here.
9349         (duplicate_decls): Only keep the old type if the new decl takes no
9350         arguments.
9351
9352         * typeck.c (compparms): Also allow t1 to be ... if strict == 0.
9353
9354 Thu Apr  7 16:17:50 1994  Mike Stump  <mrs@cygnus.com>
9355
9356         * class.c (build_vtable_entry): Fix breakage introduced Apr 5
9357         17:48:41.
9358
9359 Wed Apr  6 16:05:10 1994  Per Bothner  (bothner@kalessin.cygnus.com)
9360
9361         * init.c (build_virtual_init), search.c (build_vbase_vtables_init),
9362         ch-tree.h:  Every place these functions were called, the result was
9363         immediately passed to expand_expr_stmt.  Reduce redundancy by
9364         calling expand_expr_init *inside* these functions.  These
9365         makes for a simpler interface, and we don't have to build
9366         compound expressions.  Hence, rename these function to:
9367         expand_virtual_init and expand_vbase_vtables_init respectively.
9368         * init.c, decl.c:  Change callers of these functions.
9369         * init.c, cp-tree.h (expand_virtual_init):  Make static.
9370
9371         * decl2.c (finish_file): Check TREE_PUBLIC||TREE_ADDRESSABLE
9372         rather than DECL_SAVED_INSNS before emitting inlines.
9373
9374 Wed Apr  6 13:06:39 1994  Jason Merrill  (jason@deneb.cygnus.com)
9375
9376         * spew.c (init_spew): #if 0 out stuff used by arbitrate_lookup.
9377
9378         * decl.c (duplicate_decls): If this is a new declaration of an
9379         extern "C" function, keep the type (for the argtypes).
9380         (redeclaration_error_message): Don't check DECL_LANGUAGE here.
9381         (decls_match): Call compparms with a value of strict dependent on
9382         the value of strict_prototypes for DECL_LANGUAGE (oldecl).
9383
9384         * typeck.c (compparms): ... is only equivalent to non-promoting
9385         parms if we're not being strict.
9386
9387         * parse.y (empty_parms): Don't check flag_ansi || pedantic here.
9388
9389         * decl.c (init_decl_processing): if (flag_ansi || pedantic)
9390         strict_prototypes_lang_c = strict_prototypes_lang_cplusplus;
9391
9392         * decl2.c (grok_function_init): Don't set DECL_INITIAL on pure
9393         virtuals.
9394
9395 Tue Apr  5 17:48:41 1994  Per Bothner  (bothner@kalessin.cygnus.com)
9396
9397         Support for implementing vtables with thunks.
9398         * tree.def (THUNK_DECL):  New TREE_CODE.
9399         * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY), tree.c
9400         (fnaddr_from_vtable_entry):  Handle flag_vtable_thunks case.
9401         * cp-tree.h (memptr_type):  New variable.
9402         * class.c (build_vtable_entry):  Build thunk if necessary.
9403         * class.c (build_vfn_ref):  If using thunks, don't need
9404         to add delta field from vtable (there is none!).
9405         * decl.c: Add memptr_type as well as vtable_entry_type.
9406         If using thunks, the latter is just ptr_type_node.
9407         * gc.c, typeck.c:  Use memptr_typeChange, not vtable_entry_type.
9408         * decl2.c (finish_vtable_vardecl):  Handle thunks.
9409         * expr.c (cplus_expand_expr):  Support THUNK_DECL.
9410
9411         * decl.c (grokdeclarator):  Set DECL_THIS_EXTERN if "extern".
9412         * decl.c (start_function):  Set current_extern_inline based on
9413         DECL_THIS_EXTERN, not TREE_PUBLIC.
9414         * decl.c (finish_function):  Call mark_inline_for_output if needed,
9415
9416         Improve intelligence about when to emit inlines.
9417         * cp-tree.h (lang_decl_flags):  New field saved_inline.
9418         * cp-tree.h (DECL_SAVED_INLINE):  New macro.
9419         * class.c (add_virtual_function):  Don't set TREE_ADDRESSABLE.
9420         * decl.h, decl.c (pending_addressable_inlines):  Removed.
9421         * decl2.c (pending_addressable_inlines):  Renamed to saved_inlines.
9422         * decl2.c (mark_inline_for_output):  Do nothing if
9423         DECL_SAVED_INLINE;  otherwise set it (and add to saved_inlines list).
9424         * decl2.c (finish_vtable_vardecl):  SET_CLASSTYPE_INTERFACE_KNOWN
9425         and set CLASSTYPE_INTERFACE_ONLY if there is a non-inline virtual.
9426         * decl2.c (finish_file):  Writing out inlines later, so we can
9427         also handle the ones needed for vtbales.
9428         * decl2.c (write_vtable_entries, finish_vtable_typedecl):  Removed.
9429
9430         * cp-tree.h, class.c, decl2.c, search.c:  Remove -fvtable-hack
9431         and flag_vtable_hack.   Use -fvtable-thunks and flag_vtable_thunks
9432         instead.  (The rationale is that these optimizations both break binary
9433         compatibility, but should become the default in a future release.)
9434
9435 Wed Apr  6 10:53:56 1994  Mike Stump  <mrs@cygnus.com>
9436
9437         * class.c (modify_vtable_entries): Never reset the DECL_CONTEXT
9438         of a fndecl, as we might not be from that vfield.
9439
9440 Tue Apr  5 17:43:35 1994  Kung Hsu  (kung@mexican.cygnus.com)
9441
9442         * class.c (add_virtual_function): fix bug for pure virtual, so
9443         that DECL_VINDEX of the dummy decl copied won't be error.
9444         (see also Apr 4 change)
9445
9446 Tue Apr  5 17:23:45 1994  Per Bothner  (bothner@kalessin.cygnus.com)
9447
9448         * typeck.c (c_expand_return):  Before checking that we're not
9449         returning the address of a local, make sure it's a VAR_DECL.
9450         (And don't worry about it being a TREE_LIST.)
9451
9452 Tue Apr  5 13:26:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
9453
9454         * parse.y (YYDEBUG): Always define.
9455         * lex.c (YYDEBUG): Ditto.
9456
9457 Mon Apr  4 11:28:17 1994  Kung Hsu  (kung@mexican.cygnus.com)
9458
9459         * class.c (finish_struct): backup out the change below, put the
9460         new change for the same purpose. The change below breaks code.
9461
9462         * class.c (finish_struct): if pure virtual, copy node and make
9463         RTL point to abort, then put in virtual table.
9464         * decl2.c (grok_function_iit): reinstate Mar 31 change.
9465
9466 Sat Apr  2 03:12:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
9467
9468         * init.c (build_new): pedwarn about newing const and volatile
9469         types.
9470
9471         * tree.c (get_identifier_list): Only do the special handling
9472         thing if we're dealing with the main variant of the record type.
9473
9474         * cvt.c (convert_to_reference): When converting between
9475         compatible reference types, use the pointer conversion machinery.
9476         Don't just blindly overwrite the old type.
9477
9478 Fri Apr  1 17:14:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
9479
9480         * call.c (build_method_call): When looking at global functions,
9481         be sure to use instance_ptr for the first argument, not some version
9482         of it that has been cast to a base class.  Also do this before
9483         comparing candidates.
9484
9485 Thu Mar 31 19:50:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
9486
9487         * call.c (build_method_call): Constructors can be called for
9488         const objects.
9489
9490 Thu Mar 31 16:20:16 1994  Kung Hsu  (kung@mexican.cygnus.com)
9491
9492         * decl2.c (grok_func_init): do not abort as rtl for pur virtual
9493         fucntions. They can be defined somewhere else.
9494
9495 Sat Jan 23 23:23:26 1994  Stephen R. van den Berg  (berg@pool.informatik.rwth-aachen.de)
9496
9497         * decl.c (init_decl_processing): Declare __builtin_return_address
9498         and __builtin_frame_address for C++ as well.
9499
9500 Thu Mar 31 12:35:49 1994  Mike Stump  <mrs@cygnus.com>
9501
9502         * typeck2.c (store_init_value): Integral constant variables are
9503         always constant, even when doing -fpic.
9504
9505 Sat Jan 23 23:23:26 1994  Stephen R. van den Berg  (berg@pool.informatik.rwth-aachen.de)
9506
9507         * decl.c (redeclaration_error_message): Pass the types to
9508         comptypes.
9509
9510 Wed Mar 30 21:29:25 1994  Mike Stump  <mrs@cygnus.com>
9511
9512         Cures incorrect errors about pure virtuals in a class, when they
9513         have been overridden in a derived class.
9514
9515         * search.c (get_abstract_virtuals): Reimplement.
9516         * search.c (get_abstract_virtuals_1): New routine.
9517
9518 Wed Mar 30 14:10:04 1994  Jason Merrill  (jason@deneb.cygnus.com)
9519
9520         * pt.c (push_template_decls): Make the pushed level pseudo
9521         global.
9522
9523         * parse.y (extdefs): Don't pop everything if the current binding
9524         level is pseudo_global.
9525
9526         * decl.c (pop_everything): Stop on reaching a pseudo-global
9527         binding level.
9528
9529         * cp-tree.h (DECL_FUNCTION_MEMBER_P): Change to more reliable test.
9530
9531         * decl.c (duplicate_decls): Only copy DECL_SOURCE_{FILE_LINE} if
9532         the old decl actually had an initializer.
9533
9534         * {various}: Clean up gcc -W complaints.
9535
9536         * cp-tree.h (DECL_FUNCTION_MEMBER_P): Currently defined to be
9537         (DECL_CONTEXT (NODE) != NULL_TREE).
9538
9539         * parse.y (lang_extdef): Call pop_everything if necessary.
9540
9541         * decl.c (pop_everything): New function for popping binding
9542         levels left over after a syntax error.
9543         (pushdecl): Use DECL_FUNCTION_MEMBER_P to decide whether or not
9544         a function is a member.
9545
9546 Wed Mar 30 14:20:50 1994  Mike Stump  <mrs@cygnus.com>
9547
9548         Cures calling a more base base class function, when a more derived
9549         base class member should be called in some MI situations.
9550
9551         * search.c (make_binfo): Use more the more specialized base
9552         binfos from the binfo given as the second argument to make_binfo,
9553         instead of the unspecialized ones from the TYPE_BINFO.
9554         * class.c (finish_base_struct): Ditto, update callers.
9555         * search.c (dfs_get_vbase_types): Ditto.
9556         * tree.c (propagate_binfo_offsets, layout_vbasetypes): Ditto.
9557         * decl.c (xref_tag): Use NULL_TREE instead of 0.
9558         * lex.c (make_lang_type): Ditto.
9559
9560 Wed Mar 30 14:10:04 1994  Jason Merrill  (jason@deneb.cygnus.com)
9561
9562         * decl.c (pushdecl): If pushing a C-linkage function, only do a
9563         push_overloaded_decl.
9564         (duplicate_decls): Standard overloading does not shadow built-ins.
9565
9566 Tue Mar 29 00:54:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
9567
9568         * pt.c (end_template_decl): Don't call push_overloaded_decl.
9569
9570         * init.c (do_friend): Don't call push_overloaded_decl.
9571
9572         * decl.c (pushdecl): Call push_overloaded_decl for functions and
9573         function templates.
9574         (duplicate_decls): functions and function templates are not
9575         duplicates, but don't complain about calling this function to
9576         compare them.
9577         (push_overloaded_decl): Don't deal with linkage.  Call
9578         duplicate_decls.
9579         (redeclaration_error_message): Deal with linkage.
9580
9581         * decl.c (start_function): If push_overloaded_decl returns an
9582         older version of the function, deal with it.
9583
9584         * decl.c (start_function): Be sure only to push_overloaded_decl
9585         for non-members.
9586
9587         * decl.c (grokfndecl): Put back clearing of DECL_CHAIN for
9588         methods.
9589         (start_function): Lose broken and redundant code for checking old
9590         decl.
9591
9592         * init.c (add_friend): Give line numbers of both friend decls
9593         when warning about re-friending.
9594
9595         * pt.c (tsubst): Use comptypes rather than == to compare the
9596         types of the method as declared and as defined, since default
9597         parameters may be different.
9598
9599         * call.c (build_method_call): Use brendan's candidate printing
9600         routine.
9601
9602         * decl.c (start_method): Methods defined in the class body are
9603         inline whether or not it's a template class.
9604
9605 Mon Mar 28 16:39:26 1994  Jason Merrill  (jason@deneb.cygnus.com)
9606
9607         * parse.y (initdcl0): Add "extern" to current_declspecs if
9608         have_extern_spec && ! used_extern_spcec.
9609
9610         * tree.c (really_overloaded_fn): A fn with more than one
9611         overload.
9612
9613         * pt.c (end_template_decl): Use really_overloaded_fn.
9614
9615         * decl.c (duplicate_decls): When smashing a decl into a previous
9616         definition, keep the old file and line.
9617         Don't deal with overloaded functions.
9618         Lose old code for checking arg types of functions.
9619         Check for overloaded C functions.
9620         (pushdecl): Deal with overloaded functions.
9621         (start_decl): Expect pushdecl to return an appropriate function decl.
9622         (start_function): Ditto.
9623         (push_overloaded_decl): Don't check for overloaded C functions.
9624
9625         * *.c: Stop using DECL_OVERLOADED, it being archaic.
9626         TREE_OVERLOADED should probably go, too.
9627
9628 Mon Mar 28 14:00:45 1994  Ron Guilmette  (rfg@netcom.com)
9629
9630         * typeck.c (comp_target_types): Call comp_target_parms with
9631         strict == 1.
9632
9633 Sun Mar 27 00:07:45 1994  Jason Merrill  (jason@deneb.cygnus.com)
9634
9635         * parse.y (empty_parms): Don't parse () as (...) in extern "C"
9636         sections if we're compiling with -ansi or -pedantic.
9637
9638         * decl.c (decls_match): Don't treat (int) and (int&) as matching.
9639
9640         * decl2.c (grokfield): Don't pedwarn twice about initializing
9641         field.
9642
9643         * decl.c (push_overloaded_decl): Warn about shadowing
9644         constructor.
9645         (redeclaration_error_message): Don't allow 'int a; int a;'
9646
9647         * cvt.c (build_up_reference): Only check for valid upcast if
9648         LOOKUP_PROTECT is set, not just any flag.
9649
9650 Fri Mar 25 01:22:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
9651
9652         * lex.c (check_newline): When we see a #pragma implementation,
9653         also set it for the main input file.
9654
9655         * init.c (build_new): Convert array size argument to size_t.
9656
9657         * parse.y (primary): If we're doing a parenthesized type-id, call
9658         groktypename before passing it to build_new.
9659
9660         * call.c (build_method_call): Deal properly with const and
9661         volatile for instances of reference type.
9662
9663         * decl.c (store_return_init): Change 'if (pedantic) error' to 'if
9664         (pedantic) pedwarn'.
9665
9666         * decl.c (grokdeclarator): Don't complain about putting `static'
9667         and `inline' on template function decls.
9668
9669 Thu Mar 24 23:18:19 1994  Jason Merrill  (jason@deneb.cygnus.com)
9670
9671         * call.c (build_method_call): Preserve const & volatile on
9672         `this'.
9673
9674 Thu Mar 24 16:21:52 1994  Mike Stump  <mrs@cygnus.com>
9675
9676         * init.c (build_new, build_vec_delete): Use global new and delete
9677         for arrays. 
9678         * decl2.c (delete_sanity): Ditto.
9679
9680 Thu Mar 24 02:10:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
9681
9682         * cvt.c (convert_to_reference): If i is an lvalue,
9683         (int &)i -> *(int*)&i, as per 5.2.8p9 of the latest WP.
9684         (convert_force): Call convert_to_reference with LOOKUP_COMPLAIN.
9685
9686 Wed Mar 23 17:45:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
9687
9688         * decl.c (duplicate_decls): Also propagate DECL_TEMPLATE_MEMBERS
9689         and DECL_TEMPLATE_INSTANTIATIONS.
9690
9691         * init.c (build_new): Handle array typedefs properly.
9692
9693 Wed Mar 23 18:23:33 1994  Mike Stump  <mrs@cygnus.com>
9694
9695         30th Cygnus<->FSF merge.
9696
9697 Wed Mar 23 00:46:24 1994  Mike Stump  <mrs@cygnus.com>
9698
9699         * class.c (modify_vtable_entries): Avoid running off the end of the
9700         virtuals list when processing a virtual destructor.
9701         * class.c (get_vtable_entry): Ditto.
9702
9703 Wed Mar 23 00:23:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
9704
9705         * decl.c (duplicate_decls): If two template decls don't match,
9706         just return 0.
9707
9708 Tue Mar 22 23:49:41 1994  Jason Merrill  (jason@deneb.cygnus.com)
9709
9710         * typeck.c (convert_for_assignment): Don't pedwarn about
9711         converting function pointer to void *.
9712
9713 Tue Mar 22 22:23:19 1994  Mike Stump  <mrs@cygnus.com>
9714
9715         Major revamp of pointer to member functions.  Cures major
9716         nonfunctionality when used in casts, and MI situations.
9717
9718         * cvt.c (convert_force): Update call site of build_ptrmemfunc.
9719         * typeck.c (convert_for_assignment): Ditto.
9720         * typeck2.c (digest_init): Ditto.
9721         * typeck2.c (process_init_constructor): Simplify by moving code into
9722         digest_init.
9723         * typeck2.c (digest_init): Do default_conversions on init value, if
9724         we are processing pointer to member functions.
9725         * class.c (get_vfield_offset): Now non-static.  Convert bit offset
9726         into byte offset.
9727         * cp-tree.h (get_vfield_offset): Ditto.
9728         * typeck.c (get_member_function_from_ptrfunc): Convert down to right
9729         instance, before fetching vtable pointer.
9730         * typeck.c (get_delta_difference): New routine.
9731         * typeck.c (build_ptrmemfunc): Revamp to handle casting better, also
9732         get vtable pointer out of right subobject.
9733
9734 Tue Mar 22 17:56:48 1994  Mike Stump  <mrs@cygnus.com>
9735
9736         * search.c (get_binfo): Return NULL instead of aborting, when
9737         passed a UNION_TYPE.
9738
9739 Tue Mar 22 12:44:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
9740
9741         These patches implement handling of redefinition/redeclaration of
9742         templates.
9743
9744         * typeck.c (comptypes): Simplify.  All TEMPLATE_TYPE_PARMs are
9745         considered compatible.
9746
9747         * parse.y (template_def): Pass defn argument to end_template_decl.
9748
9749         * pt.c (end_template_decl): Add defn argument.  Check for
9750         redefinition.  Simplify.
9751
9752         * error.c (OB_UNPUT): New macro, to remove mistakes.
9753         (aggr_variety): Subroutine of dump_aggr_type.
9754
9755         * decl.c (decls_match): Support templates.
9756         (duplicate_decls): No longer static.  Don't try to lay out template
9757         decls.
9758         (pushdecl): Simplify.
9759
9760         * cp-tree.h (DECL_TEMPLATE_MEMBERS): Use DECL_SIZE instead of
9761         DECL_INITIAL.
9762
9763 Mon Mar 21 11:46:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
9764
9765         * error.c (dump_decl): Support class template decls.
9766         (dump_type): Don't adorn template type parms.
9767
9768         * decl.c (duplicate_decls): Save DECL_TEMPLATE_INFO from old decl
9769         if it was a definition.
9770         (redeclaration_error_message): Do the cp_error thang, and reject
9771         redefinition of templates.
9772
9773 Mon Mar 21 19:36:06 1994  Per Bothner  (bothner@kalessin.cygnus.com)
9774
9775         * decl.c (grokdeclarator):  Set TREE_PUBLIC for METHOD_TYPE
9776         in FIELD context, when appropriate.  Also,
9777         CLASSTYPE_INTERFACE_ONLY is irrelevant to setting TREE_PUBLIC.
9778         Also, simplify check for bogus return specifiers.
9779
9780 Mon Mar 21 11:46:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
9781
9782         * parse.y (after_type_declarator1): Expand type_quals.
9783         (notype_declarator1): Ditto.
9784         (absdcl1): Ditto.
9785
9786 Sat Mar 19 01:05:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
9787
9788         * decl.c (grokdeclarator): Treat class-local typedefs like static
9789         members; i.e. 'typedef int f();' means that f is a function type,
9790         not a method type.
9791
9792         * parse.y (decl): Change direct_* back to *.
9793         (type_id): Change direct_abstract_declarator to absdcl.
9794         (direct_declarator, direct_initdecls, direct_initdcl0): Remove again.
9795
9796 Fri Mar 18 12:47:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
9797
9798         These two patches fix crashes on instantiating a template inside a
9799         function with C linkage or containing labels.
9800
9801         * class.c (current_lang_stacksize): No longer static.
9802
9803         * decl.c (struct saved_scope): Add lang_base, lang_stack,
9804         lang_name, lang_stacksize, and named_labels.
9805         (push_to_top_level): Save them.
9806         (pop_from_top_level): Restore them.
9807
9808         * gxxint.texi (Parser): Update.
9809
9810         These two patches finish moving the task of expr/declarator
9811         ambiguity resolution from the lexer to the parser, and add one more
9812         r/r conflict.  START_DECLARATOR can now be nuked.
9813
9814         * parse.y (decl): Add "direct_" in typespec X rules.
9815         (direct_declarator): New nonterminal for
9816         direct_after_type_declarator and direct_notype_declarator.
9817         (direct_initdecls): Like initdecls, but uses direct_initdcl0.
9818         (direct_initdcl0): Like initdcl0, but uses direct_declarator.
9819         (named_parm): Add typespec direct_declarator rule.
9820
9821         * spew.c (yylex): #if 0 out START_DECLARATOR insertion.
9822
9823         These two patches disable some excessive cleverness on the part of
9824         g++; a non-class declaration always hides a class declaration in the
9825         same scope, and g++ was trying to unhide it depending on the
9826         enclosing expression.
9827
9828         * spew.c (arbitrate_lookup): #if 0 out.
9829
9830         * decl.c (lookup_name): Never call arbitrate_lookup.
9831
9832         * parse.y (complex_notype_declarator1): Add '*'
9833         complex_notype_declarator1 and '&' complex_notype_declarator1 rules.
9834
9835         * parse.y (complex_direct_notype_declarator): Restore id_scope
9836         see_typename TYPENAME rule, remove all other rules beginning with
9837         those tokens.
9838         (notype_unqualified_id): Add '~' see_typename IDENTIFIER rule.
9839
9840 Thu Mar 17 17:30:01 1994  Jason Merrill  (jason@deneb.cygnus.com)
9841
9842         These changes fix the compiler's handling of the functional cast/
9843         object declaration ambiguities in section 6.8 of the ARM.  They also
9844         add 11 reduce/reduce conflicts.  Sigh.
9845
9846         * parse.y: Add precedence decls for OPERATOR and '~'.
9847         (notype_unqualified_id): New nonterminal, encompasses all of the
9848         ANSI unqualified-id nonterminal except TYPENAMEs.
9849         (expr_or_declarator): New nonterminal to delay parsing of code like
9850         `int (*a)'.
9851         (primary): Use notype_unqualified_id.
9852         (decl): Add typespec initdecls ';' and typespec declarator ';'
9853         rules.
9854         (initdcl0): Deal with the above.
9855         (complex_notype_declarator1): A notype_declarator that is not also
9856         an expr_or_declarator.
9857         (complex_direct_notype_declarator): A direct_notype_declarator that
9858         doesn't conflict with expr_or_declarator.  Use
9859         notype_unqualified_id.  Remove id_scope see_typename TYPENAME rule.
9860         (functional_cast): New nonterminal, for the three functional cast
9861         rules.  So that they can be moved after
9862         complex_direct_notype_declarator.
9863         (see_typename): Don't accept type_quals any more.
9864
9865         * decl2.c (reparse_decl_as_expr): New function to deal with parse
9866         nodes for code like `int (*a)++;'.      
9867         (reparse_decl_as_expr1): Recursive subroutine of the above.
9868         (finish_decl_parsing): New function to deal with parse nodes for
9869         code like `int (*a);'.  See the difference?
9870
9871 Thu Mar 17 12:16:10 1994  Mike Stump  <mrs@cygnus.com>
9872
9873         These changes break binary compatibility in code with classes
9874         that use virtual bases.
9875
9876         * search.c (dfs_get_vbase_types): Simplify and correct to make
9877         sure virtual bases are initialized in dfs ordering.
9878         * search.c (get_vbase_types): Simplify and make readable.
9879
9880 Thu Mar 17 12:01:10 1994  Jason Merrill  (jason@deneb.cygnus.com)
9881
9882         * parse.y: s/ typename / type_id /g
9883
9884 Wed Mar 16 17:42:52 1994  Kung Hsu  (kung@mexican.cygnus.com)
9885
9886         * parse.y (typespec): add SCOPE TYPENAME for global scoped 
9887         type. e.g. ::B x.
9888
9889         * decl.c (complete_array_type): fix a bug that in -pendantic
9890         mode even there's no initializer, it will continue to build
9891         default index.
9892
9893 Wed Mar 16 17:43:07 1994  Jason Merrill  (jason@deneb.cygnus.com)
9894
9895         * parse.y (direct_notype_declarator): Add PTYPENAME rule, remove
9896         all of the scoped PTYPENAME rules.
9897
9898 Wed Mar 16 16:39:02 1994  Mike Stump  <mrs@cygnus.com>
9899
9900         * init.c (build_offset_ref): The value of A::typedef_name is
9901         always the TYPE_DECL, and never an error.
9902
9903 Tue Mar 15 20:02:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
9904
9905         * search.c (get_base_distance_recursive): Two binfos can only
9906         represent the same object if they are both via_virtual.
9907
9908         * class.c (finish_base_struct): Check vbases for ambiguity, too.
9909
9910         * search.c (get_vbase_types): Accept binfo argument, too.
9911
9912 Tue Mar 15 19:22:05 1994  Kung Hsu  (kung@mexican.cygnus.com)
9913
9914         * decl.c (complete_array_type): complete TYPE_DOMAIN of the 
9915         initializer also, because back-end requires it.
9916
9917 Tue Mar 15 15:33:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
9918
9919         * error.c (dump_expr): Support member functions (which show up as
9920         OFFSET_REFs).
9921
9922 Mon Mar 14 16:24:36 1994  Mike Stump  <mrs@cygnus.com>
9923
9924         * init.c (build_new): Set the return type of multidimensional
9925         news correctly.
9926
9927 Fri Mar 11 15:35:39 1994  Kung Hsu  (kung@mexican.cygnus.com)
9928
9929         * call.c (build_method_call): if basetype not equal to type
9930         of the instance, use the type of the instance in building
9931         destructor.
9932
9933 Thu Mar 10 17:07:10 1994  Kung Hsu  (kung@mexican.cygnus.com)
9934
9935         * parse.y (direct_notype_declarator): add push_nested_type for
9936         'template_type SCOPED_NAME' rule.
9937
9938 Tue Mar  8 00:19:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
9939
9940         * parse.y (parm): Add typed_declspec1 {absdcl, epsilon} rules.
9941
9942 Sat Mar  5 04:47:48 1994  Jason Merrill  (jason@deneb.cygnus.com)
9943
9944         * parse.y (regcast_or_absdcl): New nonterminal to implement late
9945         reduction of constructs like `int ((int)(int)(int))'.
9946         (cast_expr): Use it.
9947         (sub_cast_expr): Everything that can come after a cast.
9948         (typed_declspecs1): typed_declspecs that are not typed_typespecs.
9949         (direct_after_type_declarator): Lose PAREN_STAR_PAREN rule.
9950         (direct_abstract_declarator): Replace '(' parmlist ')' rule with
9951         '(' complex_parmlist ')' and regcast_or_absdcl.
9952         (parmlist): Split
9953         (complex_parmlist): Parmlists that are not also typenames.
9954         (parms_comma): Enabler.
9955         (named_parm): A parm that is not also a typename.  Use declarator
9956         rather than dont_see_typename abs_or_notype_decl.  Expand
9957         typed_declspecs inline.
9958         (abs_or_notype_decl): Lose.
9959         (dont_see_typename): Comment out.
9960         (bad_parm): Break out abs_or_notype_decl into two rules.
9961
9962 Fri Mar  4 18:22:39 1994  Jason Merrill  (jason@deneb.cygnus.com)
9963
9964         * decl2.c (reparse_decl_as_casts): New function to change parse
9965         nodes for `(int)(int)(int)' from "function taking int and returning
9966         function taking int and returning function taking int" to "... cast
9967         to int, cast to int, cast to int".
9968
9969         * decl2.c (reparse_decl_as_expr): Recursive function to change
9970         parse nodes for `A()()' from "function returning function returning
9971         A" to "A().operator()".
9972
9973         * parse.y (primary): Replace `typespec LEFT_RIGHT' rule with
9974         `typespec fcast_or_absdcl' rule.
9975         (fcast_or_absdcl): New nonterminal to implement late reduction of
9976         constructs like `A()()()()'.
9977         (typename): Replace `typespec absdcl1' rule with
9978         `typespec direct_abstract_declarator' rule.
9979         (direct_abstract_declarator): Replace `LEFT_RIGHT type_quals' rule
9980         with `fcast_or_absdcl type_quals' rule.
9981
9982 Fri Mar  4 16:18:03 1994  Mike Stump  <mrs@cygnus.com>
9983
9984         * tree.c (lvalue_p): Improve OFFSET_REF handling, so that it
9985         matches Section 5.5.
9986
9987 Fri Mar  4 14:01:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
9988
9989         * error.c (dump_type_prefix): Don't print basetype twice for
9990         pmfs.
9991
9992 Fri Mar  4 13:24:33 1994  Mike Stump  <mrs@cygnus.com>
9993
9994         * typeck.c (convert_arguments): Handle setHandler(A::handlerFn)
9995         so that it is like setHandler(&A::handlerFn).  Cures an `invalid
9996         lvalue in unary `&''.
9997
9998 Fri Mar  4 11:15:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
9999
10000         * gxxint.texi (Copying Objects): New section discussing default
10001         op= problems with virtual inheritance.
10002
10003         * decl2.c (grokoptypename): Just does grokdeclarator and
10004         build_typename_overload, since the parser can't call grokdeclarator
10005         directly.
10006
10007         * method.c (build_typename_overload): Set IDENTIFIER_GLOBAL_VALUE
10008         and TREE_TYPE on generated identifiers.
10009
10010         * decl.c (grokdeclarator): Don't deal with TYPE_EXPRs anymore.
10011
10012         * parse.y (parm): Convert `const char *' to `__opPCc' here.
10013
10014         * error.c (dump_decl): Say sorry rather than my_friendly_aborting
10015         if we can't figure out what to do.
10016         (dump_type*): Ditto.
10017
10018         * typeck2.c (build_m_component_ref): 'component' is an expr, not
10019         a decl.  Also move the IS_AGGR_TYPE check after the stripping of
10020         REFERENCE_TYPE.
10021
10022 Fri Mar  4 04:46:05 1994  Mike Stump  <mrs@cygnus.com>
10023
10024         * call.c (build_method_call): Handle b->setHandler(A::handlerFn)
10025         so that it is like b->setHandler(&A::handlerFn).  Cures an `invalid
10026         lvalue in unary `&''.
10027
10028 Thu Mar  3 12:38:15 1994  Jason Merrill  (jason@deneb.cygnus.com)
10029
10030         * parse.y: Add precedence specification for START_DECLARATOR.
10031         (type_quals): Move before primary.
10032         (typename): Move before typed_declspecs, add 'typespec absdcl1' rule.
10033
10034         * decl2.c (grokoptypename): Lose.
10035
10036         * decl.c (grokdeclarator): Parse TYPE_EXPRs in the initial scan,
10037         rather than waiting until later.
10038
10039 Wed Mar  2 14:12:23 1994  Jason Merrill  (jason@deneb.cygnus.com)
10040
10041         * parse.y (unary_expr): Use 'typename' in 'new' rules, rather
10042         than expanding it inline.
10043         (typename): Expand empty option of (former) absdcl inline.
10044         (abs_or_notype_decl): Ditto.
10045         (absdcl): Lose empty rule.
10046         (conversion_declarator): New nonterminal for 'typename' of 'operator
10047         typename'.
10048         (operator_name): Use it instead of absdcl.
10049
10050         * parse.y: Add precedence declarations for SCOPED_TYPENAME,
10051         TYPEOF, and SIGOF.
10052         (typed_declspecs): Accept typed_typespecs, rather than typespec
10053         directly.  Add rules with reserved_typespecquals.
10054         (reserved_declspecs): Don't accept typespecqual_reserved at the
10055         beginning of the list.  The typed_declspecs rule will deal with this
10056         omission.
10057         (declmods): Accept nonempty_type_quals, rather than TYPE_QUAL
10058         directly.
10059
10060         * parse.y (direct_notype_declarator,
10061         direct_after_type_declarator, direct_abstract_declarator): Split up
10062         the declarator1 nonterminals to match the draft standard and avoid
10063         ambiguities.
10064         (new_type_id, new_declarator, direct_new_declarator,
10065         new_member_declarator): New nonterminals to implement the subset of
10066         'typename' allowed in new expressions.
10067         (unary_expr): Use new_type_id instead of typename.
10068         (after_type_declarator1, absdcl1): Fix semantics of member pointers.
10069         (abs_member_declarator, after_type_member_declarator): Lose.
10070
10071         * parse.y (absdcl1): Don't require parens around
10072         abs_member_declarator.
10073         (abs_member_declarator): Lose see_typename from rules.
10074         (after_type_member_declarator): Ditto.
10075
10076         * tree.c (get_identifier_list): New function, containing code
10077         previously duplicated in get_decl_list and list_hash_lookup_or_cons.
10078         (get_decl_list): Use it.
10079         (list_hash_lookup_or_cons): Ditto.
10080
10081         * parse.y (typed_declspecs, declmods): It's not necessary to hash
10082         the declspecs on class_obstack, so don't.  This way typed_typespecs
10083         can reduce to typed_declspecs.
10084
10085 Wed Mar  2 14:29:18 1994  Jason Merrill (jason@cygnus.com)
10086
10087         * cvt.c (build_up_reference): If we aren't checking visibility,
10088         also allow base->derived conversions.
10089
10090 Mon Feb 28 15:14:29 1994  Per Bothner  (bothner@kalessin.cygnus.com)
10091
10092         * typeck.c (build_c_cast): Remove bogus hack when converting
10093         to a reference type.
10094
10095         * cp-tree.h (lang_decl::vbase_init_list, DECL_VBASE_INIT_LIST):
10096         Removed, not used.
10097         (lang_stype::methods, lang_decl::next_method): New fields.
10098         (CLASSTYPE_METHODS, DECL_NEXT_METHOD):  New macros.
10099         * decl.c (duplicate_decls):  Preserve DECL_NEXT_METHOD.
10100
10101         * cp-tree.h, decl2.c (flag_vtable_hack):  New flag.
10102         * decl2.c (finish_vtable_vardecl):  If flag_vtable_hack,
10103         and  !CLASSTYPE_INTERFACE_KNOWN, try to use the presence of
10104         a non-inline virtual function to control emitting of vtables.
10105         * class.c (finish_struct):  Build CLASSTYPE_METHODS list.
10106         * search.c (build_vbase_vtables_init):  Don't assemble_external
10107         (yet) if flag_vtable_hack.
10108         * class.c (build_vfn_ref):  Ditto.
10109
10110 Mon Feb 28 14:54:13 1994  Jason Merrill  (jason@deneb.cygnus.com)
10111
10112         * parse.y (component_decl): Don't include "typed_declspecs
10113         declarator ';'" speedup, since it breaks enums.
10114
10115 Fri Feb 25 15:43:44 1994  Per Bothner  (bothner@kalessin.cygnus.com)
10116
10117         * class.c (finish_struct):  Minor optimization for building
10118         fn_fields list.
10119
10120 Fri Feb 25 15:23:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
10121
10122         * decl.c (start_function): Fix detection of function overloading.
10123
10124 Thu Feb 24 22:26:19 1994  Mike Stump  <mrs@cygnus.com>
10125
10126         * lex.c (check_newline): #pragma interface can take a string
10127         argument, just like #pragma implementation.  #pragma implementation
10128         checks for garbage on the line, line #pragma interface does.  Main
10129         input files do not auto implement like named files, #pragma
10130         implementation must be used explicitly.
10131
10132 Thu Feb 24 17:09:01 1994  Jason Merrill  (jason@deneb.cygnus.com)
10133
10134         * parse.y (components): Handle list of one again.
10135         (notype_components): Ditto.
10136         (after_type_declarator1): Take maybe_raises out again.
10137
10138         * gxxint.texi (Parser): Document additional r/r conflict.
10139
10140 Wed Feb 23 14:42:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
10141
10142         * gxxint.texi (Parser): Add node.
10143
10144         * Makefile.in (stamp-parse): Update expected conflict count.
10145
10146         * parse.y (various): Replace "declmods declarator" with "declmods
10147         notype_declarator".  The comment saying that "declmods declarator ';'"
10148         corresponds to "int i;" was wrong; it corresponds to "const i;".
10149         (component_decl): Add "typed_declspecs declarator ';'" rule; this
10150         *does* correspond to "int i;".  Change "declmods components" to
10151         "declmods notype_components".
10152         (components): Don't deal with a list of one anymore.
10153         (notype_components): New nonterminal, corresponds to notype_declarator.
10154         ({after_,no}type_component_decl{,0}): More new nonterminals.
10155         ({after_,no}type_declarator): Fold in START_DECLARATOR token.
10156         Eliminates four reduce/reduce conflicts.
10157
10158         (expr): Depend on nontrivial_exprlist instead of nonnull_exprlist.
10159         (nontrivial_exprlist): New nonterminal: A list of at least two
10160         expr_no_commas's.
10161         (nonnull_exprlist): Depend on nontrival_exprlist.
10162         Eliminates four reduce/reduce conflicts.
10163
10164         (named_class_head): Move intermediate code block into separate
10165         nonterminal so that we can stick %prec EMPTY on it.
10166
10167         Add more %prec EMPTY's to eliminate remaining shift/reduce
10168         conflicts.
10169
10170         (after_type_declarator): Add maybe_raises to fndecl rules.
10171         (after_type_declarator_no_typename): Remove.
10172         For correctness.
10173
10174         Document remaining reduce/reduce conflicts.
10175
10176 Tue Feb 22 12:10:32 1994  Jason Merrill  (jason@deneb.cygnus.com)
10177
10178         * search.c (get_base_distance): Only bash BINFO_INHERITANCE_CHAIN
10179         (TYPE_BINFO (type)) if we care about the path.
10180
10181         * tree.c (lvalue_p): A COND_EXPR is an lvalue if both of the
10182         options are.
10183
10184 Mon Feb 21 19:59:40 1994  Mike Stump  <mrs@cygnus.com>
10185
10186         * Makefile.in (mostlyclean): lex.c is a source file, don't
10187         remove.
10188
10189 Sat Feb 19 01:27:14 1994  Jason Merrill  (jason@deneb.cygnus.com)
10190
10191         * parse.y: Eliminate 20 shift/reduce conflicts.
10192
10193 Fri Feb 18 11:49:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
10194
10195         * pt.c (type_unification): Add subr argument; if set, it means
10196         that we are calling ourselves recursively, so a partial match is OK.
10197         (unify): Support pointers to methods and functions.
10198         (tsubst): Support method pointers.
10199         * decl.c (build_ptrmemfunc_type): No longer static, so that
10200         tsubst can get at it.
10201
10202         * init.c (is_aggr_typedef): Pretend template type parms are
10203         aggregates.
10204         * decl2.c (build_push_scope): If cname refers to a template type
10205         parm, just grin and nod.        
10206
10207         * call.c (build_overload_call_real): Pass subr argument to
10208         type_unification.
10209         * pt.c (do_function_instantiation): Ditto.
10210         * class.c (instantiate_type): Ditto.
10211
10212         * search.c (get_base_distance): If BINFO is a binfo, use it and
10213         don't mess with its BINFO_INHERITANCE_CHAIN.
10214
10215         * cvt.c (convert_to_reference): Fix temporary generation.
10216         If ambiguous, return error_mark_node.
10217
10218         * init.c (build_new): Put back some necessary code.
10219
10220 Thu Feb 17 15:39:47 1994  Jason Merrill  (jason@deneb.cygnus.com)
10221
10222         * init.c (build_new): Deal with array types properly.
10223
10224         * search.c (get_binfo): Become a shell for get_base_distance.
10225         (get_binfo_recursive): Lose.
10226         (get_base_distance_recursive): Find the path to the via_virtual base
10227         that provides the most access.
10228         (get_base_distance): Ditto.
10229
10230         * parse.y (explicit_instantiation): Syntax is 'template class
10231         A<int>', not 'template A<int>'.
10232
10233         * typeck.c (convert_for_initialization): Remove bogus warning.
10234
10235         * parse.y (datadef): Revert patch of Oct 27.
10236
10237 Thu Feb 17 15:12:29 1994  Per Bothner  (bothner@kalessin.cygnus.com)
10238
10239         * class.c (build_vfn_ref):  Cast delta field to ptrdiff_type_node,
10240         rather than integer_type_node.  Does wonders for the Alpha.
10241
10242 Thu Feb 17 13:36:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
10243
10244         * decl.c (build_ptrmemfunc_type): Make sure that the pmf type
10245         goes onto the same obstack as its target type.
10246
10247 Wed Feb 16 00:34:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
10248
10249         * cvt.c (convert_to_reference): If converting via constructor
10250         on local level, go back to build_cplus_new approach.
10251
10252         * tree.c (build_cplus_new): If with_cleanup_p, set cleanup slot
10253         to error_mark_node to prevent expand_expr from building a cleanup
10254         for this variable.
10255
10256         * lex.c (default_assign_ref_body): Return *this from the memcpy
10257         version, too.
10258
10259         * decl.c (grok_reference_init): Just return if called with
10260         error_mark_node, don't worry about initializing non-const reference
10261         with temporary.
10262
10263         * cvt.c (convert_to_reference): Do the right thing for
10264         non-aggregate reference conversions, pedwarn when generating a
10265         non-const reference to a temporary.
10266
10267         * class.c (finish_struct): TYPE_HAS_COMPLEX_{INIT,ASSIGN}_REF and
10268         TYPE_NEEDS_CONSTRUCTING all depend on TYPE_USES_VIRTUAL_BASECLASSES
10269         again.
10270
10271 Tue Feb 15 19:47:19 1994  Jason Merrill  (jason@deneb.cygnus.com)
10272
10273         * decl.c (grok_reference_init): Pawn off a lot of the work on
10274         convert_to_reference.  Generally do the right thing.
10275
10276         * cvt.c (convert_to_reference): Conform to the initial comment;
10277         i.e. don't create temps if decl != error_mark_node.  Handle
10278         cleanups better for temps that do get created.  Don't pretend
10279         that we can use an 'A' to initialize a 'const double &' just by
10280         tacking on a NOP_EXPR.  Support LOOKUP_SPECULATIVELY.
10281
10282         * call.c (build_method_call): Set TREE_HAS_CONSTRUCTOR on
10283         constructor calls.      
10284
10285 Mon Feb 14 14:50:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
10286
10287         * decl.c (grok_reference_init): Make a temporary for initializing
10288         const reference from constant expression.
10289
10290 Mon Feb 14 11:31:31 1994  Per Bothner  (bothner@kalessin.cygnus.com)
10291
10292         * cp-tree.h, decl.c (set_identifier_local_value):  Deleted function.
10293         * decl.c (pushdecl):  Define decl in correct binding_level
10294         (which isn't always the inner_binding_level).
10295
10296         * cvt.c (build_up_reference):  Don't ever call expand_aggr_init.
10297         It's ugly, and I don't think it's the right thing to do.
10298
10299         * cp-tree.h, class.c, decl.c, decl2.c, sp/search.c: 
10300         Remove NEW_CLASS_SCOPING, assuming it is always 1.
10301         * decl.c (pop_decl_level):  Removed; manually inlined.
10302
10303 Sun Feb 13 19:04:56 1994  Jason Merrill  (jason@deneb.cygnus.com)
10304
10305         * class.h (candidate): Add basetypes field.
10306
10307         * call.c (build_method_call): Do access checking after choosing a
10308         function, not before.
10309
10310         * Makefile.in (cvt.o, call.o, method.o): Depend on class.h.
10311         (mostlyclean): Remove ../cc1plus.
10312
10313 Fri Feb 11 11:52:26 1994  Jason Merrill  (jason@deneb.cygnus.com)
10314
10315         * class.c (finish_struct): Don't allow adjusting access to a field
10316         of a base class if a local field has the same name.
10317
10318         * error.c (dump_type_prefix): Output basetype for METHOD_TYPEs.
10319
10320 hu Jan 13 17:55:51 EST 1994 Gnanasekaran Swaminathan (gs4t@virginia.edu)
10321
10322             * cp-tree.h (DESTRUCTOR_NAME_P): do not confuse AUTO_TEMP names
10323             with destructor names when either NO_DOLLAR_IN_LABEL or
10324             NO_DOT_IN_LABEL are not defined.
10325
10326             Now `template <class T, T f(T&), const T*> class A {...}' works.
10327
10328             * pt.c (grok_template_type): substitute template parm types
10329             with actual types in complex type as well.
10330             (coerce_template_parms): update the grok_template_type ()
10331             function call.
10332
10333         * pt.c (tsubst): Traverse method list using DECL_CHAIN.
10334
10335         * decl.c (grok_op_properties): Allow operator++/-- to have
10336         default arguments.
10337
10338         * typeck2.c (store_init_value): Don't abort when called to
10339         initialize a type that needs constructing with a CONSTRUCTOR.
10340
10341         * init.c (expand_aggr_init_1, CONSTRUCTOR case): If
10342         store_init_value fails, build and expand an INIT_EXPR.  If
10343         store_init_value succeeds, call expand_decl_init.
10344
10345 Fri Feb 11 02:49:23 1994  Mike Stump  <mrs@cygnus.com>
10346
10347         * class.c (build_vbase_path): Use complete_type_p instead of
10348         resolves_to_fixed_type_p to determine if the virtual bases are in
10349         their right place for the type of expr.  Cures problem of thinking a
10350         virtual base class is one place, when it is in fact someplace else.
10351
10352 Fri Feb 11 00:26:46 1994  Mike Stump  <mrs@cygnus.com>
10353
10354         * init.c (resolve_offset_ref): Make sure we first convert to
10355         intermediate type, if given, when dealing with members off `this'.
10356         Solves an incorrrect `type `foo' is not a base type for type
10357         `multiple'' when it is infact, a base type.
10358
10359 Thu Feb 10 21:49:35 1994  Mike Stump  <mrs@cygnus.com>
10360
10361         * class.c (modify_other_vtable_entries): Use get_binfo, instead
10362         of binfo_value.  Solves problem with compiler giving a `base class
10363         `B' ambiguous in binfo_value (compiler error)' on complex MI
10364         herarchies, when a virtual function is first defied in a virtual
10365         base class.
10366
10367 Thu Feb 10 17:19:32 1994  Mike Stump  <mrs@cygnus.com>
10368
10369         * class.c (build_vbase_path): Don't complain about ambiguous
10370         intermediate conversion when converting down to a virtual base
10371         class, even if they might seem to be ambiguous.
10372
10373 Thu Feb 10 12:18:26 1994  Jason Merrill  (jason@deneb.cygnus.com)
10374
10375         * typeck2.c (build_functional_cast): #if 0 out constructor
10376         inheritance code, improve error messages.
10377
10378         * class.c (finish_base_struct): Complain about base with only
10379         non-default constructors in derived class with no constructors.
10380
10381         * decl.c (grokdeclarator): Fix detection of virtual new/delete.
10382
10383 Wed Feb  9 22:02:32 1994  Mike Stump  <mrs@cygnus.com>
10384
10385         * search.c (build_mi_virtuals, add_mi_virtuals,
10386         report_ambiguous_mi_virtuals): Removed unneeded code.
10387         * class.c (finish_struct_bits): Ditto.
10388
10389 Wed Feb  9 11:27:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
10390
10391         * pt.c (end_template_instantiation): Push decl before
10392         pop_from_top_level.
10393
10394         * typeck2.c (build_m_component_ref): Make sure datum is of
10395         aggregate type.
10396
10397         * init.c (get_type_value): New function, returns
10398         IDENTIFIER_TYPE_VALUE or IDENTIFIER_CLASS_TYPE_VALUE or NULL_TREE.
10399
10400         * call.c (build_method_call): Don't die on call to destructor for
10401         non-type.
10402
10403         * decl.c (grokdeclarator): Complain about virtual op new and op
10404         delete, make static virtuals unvirtual instead of unstatic.
10405
10406         * typeck.c (build_c_cast): Also call default_conversion on
10407         methods.
10408
10409         * decl.c (grokdeclarator): Don't complain about anonymous
10410         bitfields.
10411
10412         * parse.y (simple_stmt, for loops): Move the continue point after
10413         the cleanups.
10414
10415         * class.c (finish_struct): Fix setting of
10416         TYPE_HAS_COMPLEX_INIT_REF.
10417
10418 Tue Feb  8 13:21:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
10419
10420         * init.c (build_new): Deal with `new double (1)'.
10421
10422         * class.c (finish_struct): TYPE_HAS_COMPLEX_*_REF are supersets of
10423         TYPE_HAS_REAL_*_REF, but TYPE_HAS_COMPLEX_INIT_REF is independent of
10424         TYPE_NEEDS_CONSTRUCTING.
10425
10426         * decl.c (duplicate_decls): Propagate access decls.
10427
10428         * typeck2.c (process_init_constructor): Accept empty_init_node
10429         for initializing unions.
10430
10431         * class.c, lex.c, cp-tree.h: Use
10432         TYPE_HAS_COMPLEX_ASSIGN_REF where TYPE_HAS_REAL_ASSIGN_REF was used
10433         before, use TYPE_HAS_COMPLEX_INIT_REF for TYPE_NEEDS_CONSTRUCTING in
10434         some places.
10435
10436         * decl.c (finish_decl): Don't complain about uninitialized const
10437         if it was initialized before.
10438
10439 Mon Feb  7 18:12:34 1994  Jason Merrill  (jason@deneb.cygnus.com)
10440
10441         * lex.c (default_assign_ref_body): Don't deal with vbases for
10442         now.
10443
10444         * decl.c (finish_decl): Fix reversed logic for objects and other
10445         things that need to be constructed but have no initializer.
10446
10447         * class.c (finish_struct): Don't set TYPE_HAS_* flags that are
10448         set by grok_op_properties or finish_decl.
10449
10450         * decl.c: Don't warn about extern redeclared inline unless
10451         -Wextern-inline is given.
10452         * decl2.c (lang_decode_option): Ditto.
10453         * cp-tree.h: Ditto.
10454
10455 Mon Feb  7 17:29:24 1994  Per Bothner  (bothner@kalessin.cygnus.com)
10456
10457         * decl.c (pushdecl_with_scope): Fix thinko.  Add forward
10458         declaration.
10459
10460         * decl.c (pushdecl_with_scope):  New function.
10461         * decl.c (pushdecl_top_level):  Use new function.
10462         * decl.c (pushtag):  Initialize newdecl.
10463         * decl.c (pushtag):  Push new type decl into correct scope.
10464
10465 Mon Feb  7 14:42:03 1994  Jason Merrill  (jason@deneb.cygnus.com)
10466
10467         * call.c, cvt.c, init.c, search.c, cp-tree.h:
10468         Eradicate LOOKUP_PROTECTED_OK.
10469
10470 Mon Feb  7 13:57:19 1994  Per Bothner  (bothner@kalessin.cygnus.com)
10471
10472         * decl.c (pushtag, xref_tag), cp-tree.h:  Add extra parameter
10473          'globalize' to signify implicit declarations.
10474         * decl.c (globalize_nested_type, maybe_globalize_type):  Removed.
10475         * decl.c (set_identifier_type_value_with_scope):  New function.
10476         * decl.c (set_identifier_local_value):  Simplify.
10477         * spew.c (yylex, do_addr):  Modify to return a _DEFN if a
10478         forward declaration (followed by ';' and not preceded by 'friend').
10479         * class.c, decl.c, except.c, init.c, parse.y,
10480         pt.c, search.c: Add new argument to calls to xref_tag and
10481         pushtag.
10482
10483 Mon Feb  7 00:22:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
10484
10485         * cp-tree.h (ACCESSIBLY_UNIQUELY_DERIVED_P): New macro, means what
10486         ACCESSIBLY_DERIVED_FROM_P meant before.
10487         (ACCESSIBLY_DERIVED_FROM_P): Now disregards ambiguity.
10488
10489         * cvt.c (build_up_reference): Call get_binfo with PROTECT == 1.
10490
10491         * search.c (get_base_distance_recursive): Members and friends of
10492         a class X can implicitly convert an X* to a pointer to a private or
10493         protected immediate base class of X.
10494         (get_binfo_recursive): Ditto.
10495         (get_base_distance): Ignore ambiguity if PROTECT < 0.
10496         (get_binfo): Lose multiple values of PROTECT.
10497         (compute_access): Protected is OK if the start of the
10498         search is an accessible base class of current_class_type.
10499
10500         * method.c (build_opfncall): Do check access on operator new here.
10501
10502         * decl.c (finish_function): Don't check access on operator new
10503         here.
10504
10505 Sun Feb  6 14:06:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
10506
10507         * decl.c (xref_tag): The base of a derived struct is NOT always
10508         public.  Duh.
10509
10510         * pt.c (do_explicit_instantiation): New function, called from
10511         parser to do explicit function instantiation.
10512         (type_unification): Allow the args list to be terminated with
10513         void_list_node.
10514         (do_pending_expansions): Look at i->interface for non-member
10515         templates.
10516
10517         * parse.y (datadef): Move explicit_instantiation here.
10518         (structsp): From here.
10519         (datadef): Complain about `int;'.
10520
10521 Sun Feb  6 12:33:18 1994  Per Bothner  (bothner@kalessin.cygnus.com)
10522
10523         * pt.c (end_template_instantiation), cp-tree.h:  Remove unused
10524         second parameter, and simplify first from a TREE_LIST where
10525         we only care about its TREE_VALUE to just the value (an IDENTIFIER).
10526         * pt.c (instantiate_member_templates):  Simplify argument list
10527         from a TREE_LIST to just an IDENTIFIER.
10528         * lex.c (yyprint):  PRE_PARSED_CLASS_DECL is now just an IDENTIFIER.
10529         * parse.y (template_instantiate_once):  Simplify accordingly.
10530         * decl.c (inner_binding_level): New.  Use various places to
10531         simplify.
10532
10533 Sun Feb  6 02:49:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
10534
10535         * typeck2.c (build_functional_cast): int() -> int(0).
10536
10537 Sat Feb  5 00:53:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
10538
10539         * class.c (finish_struct): Don't do a bitwise copy for op= if the
10540         class has a virtual function table.
10541
10542         * typeck.c (convert_for_initialization): Restore warnings about
10543         not using defined op=.  Should really be my_friendly_aborts, I
10544         s'pose.
10545
10546 Fri Feb  4 14:21:00 1994  Jason Merrill  (jason@deneb.cygnus.com)
10547
10548         * class.c (finish_struct): Tidy up conditions for doing bitwise
10549         copies of objects.
10550
10551         * decl.c (build_default_constructor): #if 0 out.
10552
10553         * *: Eradicate TYPE_GETS_{ASSIGNMENT,ASSIGN_REF,CONST_ASSIGN_REF,
10554         CONST_INIT_REF}, TYPE_HAS_REAL_CONSTRUCTOR.
10555
10556         * decl.c (grokdeclarator): Don't return void_type_node for
10557         friends being defined here.
10558
10559         * init.c (perform_member_init): Only do the init if it's useful.
10560
10561         * lex.c (default_copy_constructor_body): If we don't need to do
10562         memberwise init, just call __builtin_memcpy.
10563         (default_assign_ref_body): Ditto.
10564
10565         * decl.c (grokdeclarator): If friendp && virtualp, friendp = 0.
10566
10567 Fri Feb  4 13:02:56 1994  Mike Stump  <mrs@cygnus.com>
10568
10569         * lex.c (reinit_parse_for_method, cons_up_default_function):
10570         Don't give warn_if_unknown_interface warning when it came from a
10571         system header file.
10572         * pt.c (end_template_decl, instantiate_template): Ditto.
10573         * decl.c (start_decl): Ditto.
10574
10575 Fri Feb  4 00:41:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
10576
10577         * decl.c (grokdeclarator): Don't try to set TYPE_WAS_ANONYMOUS on
10578         enums.
10579
10580         * decl2.c (constructor_name_full): Use IS_AGGR_TYPE_CODE instead of
10581         IS_AGGR_TYPE, since we don't know it's a type.
10582
10583 Thu Feb  3 11:36:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
10584
10585         * decl.c (grokdeclarator): Don't complain about anonymous unions.
10586
10587         * cp-tree.h (TYPE_WAS_ANONYMOUS): This struct was originally
10588         anonymous, but had a name given to it by a typedef.
10589
10590         * decl.c (grokdeclarator): When renaming an anonymous struct, set
10591         TYPE_WAS_ANONYMOUS.
10592
10593         * decl2.c (constructor_name_full): Use TYPE_WAS_ANONYMOUS.
10594
10595         * cp-tree.h (DECL_UNDEFINED_FRIENDS): #if 0 out.
10596
10597         * init.c (xref_friend): Don't set up DECL_UNDEFINED_FRIENDS.
10598         (embrace_waiting_friends): Don't use DECL_UNDEFINED_FRIENDS.
10599         
10600         * decl.c (grokdeclarator): Set TYPE_NESTED_NAME properly on nested
10601         anonymous structs that get typedef'd.
10602
10603         * decl.c (grokdeclarator): Always return void_type_node for
10604         friends.
10605
10606         * error.c (dump_function_decl): Don't use DECL_CLASS_CONTEXT for
10607         friends.
10608         (dump_function_decl): Don't print out default args for
10609         a function used in an expression.
10610
10611         * decl.c (grokdeclarator): Give error on abstract declarator used
10612         in an invalid context (i.e. `void (*)();').
10613
10614         * error.c (cp_line_of): Support _TYPE nodes.
10615         (cp_file_of): Ditto.
10616
10617         * cvt.c (build_up_reference): Don't abort if passed a SAVE_EXPR;
10618         it can happen for the RHS of an assignment stmt where the LHS is
10619         a COND_EXPR.
10620
10621         * init.c (expand_aggr_init_1): Deal with bracketed initializer
10622         lists properly.
10623
10624         * class.c (finish_struct): Deal with enumerators and typedefs
10625         again.
10626
10627 Wed Feb  2 11:30:22 1994  Jason Merrill  (jason@deneb.cygnus.com)
10628
10629         * class.c (finish_struct): Tidy up loop over fields.
10630
10631         * errfn.c (cp_thing): Don't advance twice after a format.
10632
10633         * class.c (finish_struct): Complain about needing a constructor
10634         if a member has only non-default constructors, and don't try to
10635         generate a default constructor.
10636
10637         * decl.c (finish_decl): Also do the constructor thing if
10638         TYPE_NEEDS_CONSTRUCTING is set (for arrays).
10639
10640         * search.c (unuse_fields): New function: mark all fields in this
10641         type unused.
10642         (dfs_unuse_fields): Helper function.
10643
10644         * class.c (pushclass): If the new class is the same as the old
10645         class, still unuse the fields.
10646         (unuse_fields): Move to search.c.
10647
10648         * decl.c (grok_op_properties): Add friendp argument.
10649         (grokfndecl): Pass it.
10650         (start_method): Ditto.
10651
10652         * decl2.c (delete_sanity): Add use_global_delete parameter to catch
10653         ::delete calls.
10654
10655         * parse.y (unary_expr): Pass new parameter to delete_sanity.
10656
10657         * lex.c (default_copy_constructor_body): Don't choke if the union
10658         has no fields.
10659         (default_assign_ref_body): Ditto.
10660
10661         * call.c (compute_conversion_costs_ansi): Do the right thing for
10662         ellipsis matches.
10663
10664         * decl.c (push_to_top_level): Optimize.
10665
10666         * decl.c (start_function): Look for the lexical scope of a friend
10667         in DECL_CLASS_CONTEXT.
10668
10669         * init.c (do_friend): Set DECL_CLASS_CONTEXT on global friends.
10670
10671 Tue Feb  1 15:59:24 1994  Jason Merrill  (jason@deneb.cygnus.com)
10672
10673         * cp-tree.h (TREE_GETS_PLACED_NEW): New macro.
10674
10675         * init.c (init_init_processing): Don't assign BIN/BID to the
10676         IDENTIFIER_GLOBAL_VALUEs of their respective operators.
10677         (build_new): Check TREE_GETS_PLACED_NEW.
10678
10679         * decl.c (grok_op_properties): Don't set TREE_GETS_NEW for a decl of
10680         op new with placement, set TREE_GETS_PLACED_NEW.
10681
10682         * cp-tree.h (ANON_UNION_P): New macro.  Applies to decls.
10683
10684         * class.c (finish_struct): Don't treat anonymous unions like
10685         other aggregate members.  Do synthesize methods for unions without
10686         a name, since they may or may not be "anonymous unions".
10687
10688         * decl2.c (grok_x_components): Wipe out memory of synthesized methods
10689         in anonymous unions.
10690
10691         * lex.c (default_copy_constructor_body): Support unions.
10692         (default_assign_ref_body): Ditto.
10693
10694 Mon Jan 31 12:07:30 1994  Jason Merrill  (jason@deneb.cygnus.com)
10695
10696         * cp-tree.h: Fix documentation of LOOKUP_GLOBAL, add prototypes.
10697
10698         * error.c (args_as_string): New function (%A), like type_as_string
10699         except NULL_TREE -> "..."
10700
10701         * call.c (build_overload_call_real): Fix for new overloading.
10702
10703         * decl.c (grok_op_properties): Set all of the TYPE_OVERLOADS_* flags
10704         here.
10705
10706         * parse.y (operator_name): Instead of here.
10707
10708         * typeck2.c (build_functional_cast): Treat a TREE_LIST as a list
10709         of functions.
10710
10711         * call.c (build_overload_call_real): Support LOOKUP_SPECULATIVELY.
10712
10713         * method.c (build_opfncall): Don't need to massage return value
10714         any more, call build_overload_call with all flags.
10715
10716         * typeck.c (build_x_binary_op): Put back speculative call to
10717         build_opfncall.
10718         (build_x_unary_op): Ditto.
10719         (build_x_conditional_expr): Ditto.
10720
10721 Mon Jan 31 10:00:30 1994  Mike Stump  <mrs@cygnus.com>
10722
10723         * cvt.c (build_type_conversion_1): Change call to pedwarn into
10724         warning, and conditionalize upon warn_cast_qual.
10725
10726 Fri Jan 28 11:48:15 1994  Jason Merrill  (jason@deneb.cygnus.com)
10727
10728         * search.c (lookup_field): If xbasetype is a binfo, copy it to
10729         avoid clobbering its inheritance info.
10730
10731         * call.c (build_method_call): Don't overwrite basetype_path with
10732         TYPE_BINFO (inst_ptr_basetype) if they have the same type.
10733
10734         * search.c (compute_access): Fix handling of protected inheritance
10735         and friendship with the enclosing class.
10736
10737         * typeck2.c (store_init_value): Allow passing of TREE_CHAIN for
10738         initialization of arbitrary variable.
10739
10740         * typeck2.c (build_functional_cast): Only try calling a method if
10741         one exists.
10742
10743         * decl.c (grokdeclarator): Move handling of constructor syntax
10744         initialization into first loop for generality.
10745         (parmlist_is_random): Lose.
10746
10747         * lex.c (cons_up_default_function): Set TREE_PARMLIST on arguments
10748         to default function.
10749
10750 Thu Jan 27 19:26:51 1994  Jason Merrill  (jason@deneb.cygnus.com)
10751
10752         * decl.c (grokparms): Abort if we get called with something we don't
10753         expect.
10754
10755 Thu Jan 27 17:37:25 1994  Mike Stump  <mrs@cygnus.com>
10756
10757         * call.c (build_overload_call_real): Change argument complain to
10758         flags to match style of rest of code.  Pass it down to
10759         build_function_call_real as necessary.
10760         * call.c (build_overload_call, build_overload_call_maybe): Change
10761         argument complain to flags to match style of rest of code.
10762         * cp-tree.h (build_function_call_real): Added fourth flags
10763         argument.
10764         * cvt.c (convert_to_reference): Only give warning messages, if
10765         LOOKUP_COMPLAIN is set.
10766         * typeck.c (build_x_function_call): Change simple complain
10767         argument to build_overload_call_maybe and build_overload_call, to
10768         LOOKUP_COMPLAIN to match style of rest of code.
10769         * typeck2.c (build_functional_cast): Ditto.
10770         * typeck.c (build_function_call_real): Add flags, so that we can
10771         not complain, if we don't want to complain.  Complain about
10772         arguments, if we are complaining, otherwise don't.
10773         * typeck.c (build_function_call, build_function_call_maybe):
10774         Stick in flags argument.
10775         * typeck.c (build_x_binary_op, build_x_unary_op,
10776         build_x_conditional_expr, build_x_compound_expr): Follow style of
10777         build_x_indirect_ref, as it is more correct and more common.
10778
10779 Thu Jan 27 14:36:20 1994  Jason Merrill  (jason@deneb.cygnus.com)
10780
10781         * call.c (build_method_call): Don't check for being called with
10782         a pointer.
10783
10784         * decl2.c (finish_file): Don't play with DECL_CLASS_CONTEXT for the
10785         static initializer function.
10786
10787         * init.c (build_member_call): Use convert_force here, too.
10788
10789         * search.c (compute_access): Only treat static members specially
10790         if they are referenced directly.
10791
10792 Wed Jan 26 18:28:14 1994  Jason Merrill  (jason@deneb.cygnus.com)
10793
10794         * gxxint.texi (Access Control): New node.
10795
10796         * search.c (current_scope): New function; returns whichever of
10797         current_class_type and current_function_decl is the most nested.
10798         (compute_access): Total overhaul to make it clearer and more
10799         correct.  Don't use the cache for now; in the only situation where
10800         it was used before, it gained nothing.  This frees up three of the
10801         DECL_LANG_FLAGs for possible other use!
10802
10803         * cp-tree.h: #if 0 out DECL_PUBLIC & friends.
10804
10805         * typeck.c (build_component_ref_1): Don't check DECL_PUBLIC.
10806
10807         * call.c (build_method_call): Use convert_force to cast `this' --
10808         rely on the access checking for the method itself.
10809
10810         * init.c (is_friend): Do the nesting thing, handle types.  I am
10811         my own friend.
10812         (is_friend_type): Become a shell for is_friend.
10813         (add_friend): Never stick in ctype.
10814         Why are the friendship functions in init.c, anyway?
10815
10816 Wed Jan 26 17:50:00 1994  Mike Stump  <mrs@cygnus.com>
10817
10818         * cvt.c (build_type_conversion_1): Don't conditionalize call to
10819         pedwarn upon pedantic.
10820
10821 Wed Jan 26 17:20:46 1994  Mike Stump  <mrs@cygnus.com>
10822
10823         * cvt.c (convert_to_reference): Add 8.4.3 checking so that one
10824         gets a warning if one tries to initialize a non-const & from a
10825         non-lvalue.
10826         * cvt.c (convert_to_reference): Use %P format for argument
10827         numbers in warnings.
10828
10829 Wed Jan 26 14:35:06 1994  Mike Stump  <mrs@cygnus.com>
10830
10831         * init.c (build_delete): Follow style in call.c to construct the
10832         virtual call to the desctructor, as that code is right.  Fixes a
10833         problem of the compiler saying a pointer conversion is ambiguous.
10834
10835 Wed Jan 26 11:28:14 1994  Jason Merrill  (jason@deneb.cygnus.com)
10836
10837         * cp-tree.h (VTABLE_NAME_P): Change other occurrence of
10838         VTABLE_NAME_FORMAT to VTABLE_NAME.
10839
10840         * *: s/visibility/access/g
10841
10842 Tue Jan 25 18:39:12 1994  Jason Merrill  (jason@deneb.cygnus.com)
10843
10844         * typeck.c (build_modify_expr): Don't smash references if INIT_EXPR.
10845
10846 Tue Jan 25 13:54:29 1994  Mike Stump  <mrs@cygnus.com>
10847
10848         * init.c (build_delete): Back out Jan 17th & 18th pacthes, as
10849         they break libg++.
10850
10851 Tue Jan 25 13:11:45 1994  Jason Merrill  (jason@deneb.cygnus.com)
10852
10853         * decl.c (duplicate_decls): Fix pointer arithmetic.
10854
10855 Mon Jan 24 15:50:06 1994  Chip Salzenberg  (chip@fin.uucp)
10856
10857             [ cp-* changes propagated from c-* changes in 940114 snapshot ]
10858             * cp-parse.y (maybe_attribute): Allow multiple __attribute__
10859             clauses on a declaration.
10860
10861 Mon Jan 24 17:06:23 1994  Jason Merrill  (jason@deneb.cygnus.com)
10862
10863         * class.c (finish_struct): Do synthesize methods for anon
10864         structs, just not unions.
10865
10866 Mon Jan 24 13:50:13 1994  Kung Hsu  (kung@mexican.cygnus.com)
10867
10868         * decl.c (xref_tag): handle anonymous nested type.
10869         * decl.c (globalize_nested_type): add no globalize bit check.
10870         * spew.c (hack_more_ids) : templated nested decl not push top
10871         level.
10872
10873         * parse.y : get rid of 'goto do_components'. It is much better
10874         for debugging.
10875
10876         * decl.c (is_anon_name): get rid of the function and use the
10877         macro ANON_AGGRNAME_P.
10878         * pt.c : ditto.
10879
10880 Fri Jan 21 14:06:02 1994  Jason Merrill  (jason@deneb.cygnus.com)
10881
10882         * class.c (finish_struct): Don't synthesize any methods for
10883         anonymous structs/unions.
10884
10885         * typeck.c (build_modify_expr): Don't treat pmf's as class objects.
10886
10887 Thu Jan 20 18:56:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
10888
10889         * method.c (build_opfncall): Call build_indirect_ref on
10890         synthesized instance for operator delete.
10891
10892         * pt.c (type_unification): Don't abort if called with a list of
10893         types in ARGS.
10894
10895         * class.c (instantiate_type): Deal with function templates.
10896
10897 Thu Jan 20 16:55:35 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)
10898
10899         * Makefile.in (CC): Default to cc not gcc.
10900
10901 Thu Jan 20 13:47:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
10902
10903         * typeck.c (build_modify_expr): Call constructor if appropriate.
10904
10905         * decl.c (push_to_top_level): Clear out class-level bindings cache.
10906
10907 Wed Jan 19 13:51:22 1994  Jason Merrill  (jason@deneb.cygnus.com)
10908
10909         * call.c (resolve_scope_to_name): Work recursively (previously only
10910         looked down one level).
10911
10912         * lex.c (do_pending_inlines): If we're still dealing with the last
10913         batch of inlines, don't start working on a new one.
10914
10915         * Makefile.in (stamp-parse): Update conflict count.
10916         (TAGS): Fix.
10917
10918         * parse.y (explicit_instantiation): New rule; implements
10919         'template A<int>' syntax (though not 'template foo(int)' yet).
10920         (structsp): Add explicit_instantiation.
10921
10922 Tue Jan 18 13:53:05 1994  Jason Merrill  (jason@deneb.cygnus.com)
10923
10924         * class.c (finish_struct, etc.): Simplify decision to synthesize
10925         a destructor.
10926
10927         * call.c, class.c, cp-tree.h, decl.c, init.c,
10928         ptree.c, search.c, typeck.c, typeck2.c: Nuke
10929         TYPE_NEEDS_CONSTRUCTOR (change all calls to TYPE_NEEDS_CONSTRUCTING).
10930         * init.c (expand_aggr_init_1): Don't try non-constructor methods
10931         of initializing objects.
10932         (build_new): Don't try other methods if the constructor lookup fails.
10933
10934         * class.c (finish_base_struct): Set cant_have_default_ctor and
10935         cant_synth_copy_ctor properly.
10936         (finish_struct): Ditto.
10937
10938 Mon Jan 17 13:58:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
10939
10940         * typeck.c (build_modify_expr_1): #if 0 out again.
10941         (build_modify_expr): #if 0 out memberwise init code again.
10942
10943         * lex.c (default_copy_constructor_body): Be const-correct.
10944         (default_assign_ref_body): Ditto.
10945
10946         * init.c (perform_member_init): Use TYPE_HAS_CONSTRUCTOR to decide
10947         whether or not to use it, rather than TYPE_NEEDS_CONSTRUCTING.
10948         (expand_aggr_init): Disable silent conversion from initializer list
10949         to list of args for a constructor.
10950
10951         * class.c (base_info): Lose needs_default_ctor.
10952         (finish_base_struct): Ditto.
10953         (finish_struct): Ditto.
10954
10955         * decl.c (init_decl_processing): Don't turn off flag_default_inline
10956         just because flag_no_inline is on.
10957         (finish_decl): Use TYPE_HAS_CONSTRUCTOR to decide to use
10958         constructor.
10959
10960         * class.c (finish_struct): Synthesize default ctor whenever
10961         allowed.
10962
10963         * Makefile.in (TAGS): Don't try to run etags on cp-parse.y.
10964
10965 Sat Jan 15 18:34:33 1994  Mike Stump  <mrs@cygnus.com>
10966
10967         * Makefile.in, configure: Handle the C++ front-end in a
10968         subdirectory.
10969         * cp-*: Move C++ front-end to cp/*.
10970
10971 Fri Jan 14 14:09:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
10972
10973         * cp-typeck.c (build_function_call_real): Modify to match other
10974         instances of taking the address of the function.
10975
10976         * cp-class.c (finish_struct): Set TYPE_HAS_REAL_CONSTRUCTOR to 1 if
10977         there are non-synthesized constructors.
10978         Only set TYPE_NEEDS_CONSTRUCTOR if TYPE_HAS_REAL_CONSTRUCTOR.
10979         Always generate copy constructor if possible.
10980
10981         * cp-tree.h (lang_type): Add has_real_constructor bitfield.
10982         (TYPE_HAS_REAL_CONSTRUCTOR): Define.
10983
10984         * cp-lex.c (default_copy_constructor_body): Use init syntax
10985         for all bases.
10986
10987         * cp-type2.c (store_init_value): Only give error for initializer list
10988         if TYPE_HAS_REAL_CONSTRUCTOR.
10989
10990 Thu Jan 13 15:38:29 1994  Jason Merrill  (jason@deneb.cygnus.com)
10991
10992         * cp-tree.h (DECL_SYNTHESIZED): Add defn.
10993         (lang_decl): Add synthesized bitfield to decl_flags.
10994
10995         * cp-lex.c (cons_up_default_function): Use DECL_SYNTHESIZED to mark
10996         artificial methods, rather than a line # of 0.
10997
10998 Fri Jan 14 18:25:29 1994  Kung Hsu  (kung@mexican.cygnus.com)
10999
11000         * cp-decl (xref_tag): fix a bug in conflict type.
11001         * cp-parse.y : add SCOPED_NAME for uninstantiated template nested
11002         type reference.
11003         * cp-spew.c (yylex) : generated SCOPED_NAME token.
11004         * cp-lex.c (yyprint): handle SCOPED_NAME.
11005
11006 Fri Jan 14 17:00:29 1994  Mike Stump  <mrs@cygnus.com>
11007
11008         * cp-decl.c (pushdecl): Revert patch from Jan 11 19:33:03, as it is
11009         not right.
11010
11011 Thu Jan 13 14:00:35 1994  Kung Hsu  (kung@mexican.cygnus.com)
11012
11013         * cp-decl2.c (grok_x_components): fix a bug that enum type does not
11014         have type_flags.
11015
11016 Thu Jan 13 11:39:34 1994  Mike Stump  <mrs@cygnus.com>
11017
11018         Ensure that all vtable pointers are initialized with all the right
11019         values.
11020
11021         * cp-class.c (is_normal): Changed to reflect new meaning of
11022         CLASSTYPE_VFIELD_PARENT.
11023         * cp-class.c (maybe_fixup_vptrs): Use of
11024         CLASSTYPE_NEEDS_VIRTUAL_REINIT here is misguided.  Use
11025         BINFO_MODIFIED instead.
11026         * cp-class.c (finish_struct): Changed to reflect new meaning of
11027         CLASSTYPE_VFIELD_PARENT.
11028         * cp-decl.c (get_binfo_from_vfield): Removed, unneeded now.
11029         * cp-decl.c (finish_function): Use init_vtbl_ptrs, instead of open
11030         coding it here.
11031         * cp-init.c (init_vfields): Changed name to init_vtbl_ptrs, and
11032         re-implement.
11033         * cp-init.c (emit_base_init): Use new name init_vtbl_ptrs.
11034         * cp-tree.h (vfield_parent): Changed to integer.
11035         * cp-tree.h (CLASSTYPE_VFIELD_PARENT): Changed docs to reflect new
11036         meaning.
11037         * cp-tree.h (init_vtbl_ptrs): Added init_vtbl_ptrs.
11038
11039 Wed Jan 12 18:24:16 1994  Kung Hsu  (kung@mexican.cygnus.com)
11040
11041         * cp-decl.c (xref_tag): re-implement globalize nested type.
11042         * cp-decl2.c (grok_x_components): ditto.
11043         * cp-parse.y: ditto.
11044         * cp-tree.h (lang_type): add no_globalize bit in type_flags.
11045
11046 Wed Jan 12 14:08:09 1994  Jason Merrill  (jason@deneb.cygnus.com)
11047
11048         * cp-decl.c (grokdeclarator): Don't set TREE_PUBLIC on friend
11049         decls with a definition attached.
11050
11051         * cp-typeck.c (build_modify_expr): Undo previous change in the case
11052         of INIT_EXPRs.
11053
11054 Tue Jan 11 19:33:03 1994  Jason Merrill  (jason@deneb.cygnus.com)
11055
11056         * cp-typeck.c (build_modify_expr): Replace code for generating
11057         assignment semantics for classes with an error.
11058         (build_modify_expr_1): #if 0 out.
11059
11060         * cp-decl.c (pushdecl): Patch bogus design of pushdecl
11061         behavior for overloaded functions (it doesn't push anything).
11062
11063         * cp-class.c (finish_struct): When generating default op=,
11064         set TYPE_HAS_ASSIGNMENT.
11065
11066 Mon Jan 10 18:48:06 1994  Mike Stump  <mrs@cygnus.com>
11067
11068         * cp-cvt.c (convert): Make {double, clashing enum} -> enum
11069         invalid.
11070         * cp-typeck.c (convert_for_assignment): Simplify.
11071         * cp-decl2.c (warn_enum_clash): Removed.
11072         * invoke.texi (-Wenum-clash): Removed.
11073         * toplev.c (-Wenum-clash): Removed.
11074
11075 Mon Jan 10 17:48:37 1994  Kung Hsu  (kung@mexican.cygnus.com)
11076
11077         * cp-decl.c (finish_decl): fix incorrect popclass call.
11078
11079         * cp-decl.c (is_anon_name): new function, check whether the name
11080         is anonymous name generated by compiler.
11081         * cp-decl.c (grokdeclarator): allow nested SCOPE_REF
11082         * cp-spew.c (hack_more_ids): handle nested type in template.
11083         * cp-parse.y : handle nested type reference in uninstantiated
11084         template.
11085         * cp-call.c (build_method_call): handle uninstantiated template
11086         case.
11087         * cp-pt.c (search_nested_type_in_tmpl): new function, search nested 
11088         type in template.
11089         * cp-pt.c (lookup_nested_type_by_name): new function, lookup nested 
11090         type by name.
11091         * cp-pt.c (tsubst): handle nested type search by name.
11092
11093 Mon Jan 10 14:32:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
11094
11095         * cp-init.c (build_member_call): Propagate qualifiers to new type.
11096
11097         * cp-call.c (build_method_call): Count functions the new way.
11098
11099 Fri Jan  7 19:03:26 1994  Jason Merrill  (jason@deneb.cygnus.com)
11100
11101         * cp-decl.c (pushtag): Set DECL_ASSEMBLER_NAME for nested classes,
11102         too.
11103
11104 Tue Jan  4 16:45:51 1994  Kung Hsu  (kung@cirdan.cygnus.com)
11105
11106         * cp-parse.y: change to handle whether to globalize nested class.
11107         * cp-decl.c(xref_tag, maybe_globalize_type): Ditto.
11108
11109 Mon Jan  3 22:22:32 1994  Gerald Baumgartner  (gb@cygnus.com)
11110
11111         * Makefile.in cp-call.c cp-class.c cp-cvt.c cp-decl.c cp-decl2.c
11112         cp-error.c cp-init.c cp-lex.c cp-lex.h cp-method.c cp-parse.y
11113         cp-spew.c cp-tree.c cp-tree.h cp-type2.c cp-typeck.c cp-xref.c
11114         gplus.gperf toplev.c: Incorporated C++ signature extension.
11115         * cp-sig.c: New file, contains most of signature processing.
11116         * cp-hash.h: Regenerated from gplus.gperf.
11117
11118         * gcc.1 g++.1: Added explanation for  the `-fhandle-signatures'
11119         and `-fno-handle-signatures' command line flags.
11120
11121         * gcc.texi: Changed the last-modification date.
11122         * invoke.texi: Added `-fhandle-signatures' in the list of
11123         C++ language options.  Added explanation for this option.
11124
11125 Tue Dec 28 21:10:03 1993  Mike Stump  <mrs@cygnus.com>
11126
11127         * cp-init.c (expand_vec_init): Remove comptypes test, as it is too
11128         harsh here.
11129
11130 Tue Dec 28 13:42:22 1993  Mike Stump  <mrs@cygnus.com>
11131
11132         * cp-pt.c (do_pending_expansions): Decide to expand a template
11133         member function, based upon it's class type, not the class type of
11134         the first place it was declared.
11135
11136 Tue Dec 28 05:42:31 1993  Mike Stump  <mrs@cygnus.com>
11137
11138         * cp-class.c (is_normal): New routine, use to determine when the
11139         given binfo is the normal one.  (The one that should have the simple
11140         vtable name.)
11141         * cp-class.c (modify_other_vtable_entries): Use DECL_ASSEMBLER_NAME
11142         to check if two fndecls are `the same'.  Sometimes this routine can
11143         modify the main vtable, and normal should be 1, in that case, so use
11144         is_normal() to determine if this is the main vtable for the class.
11145         Don't recurse down virtual bases, as they are shared, and we take
11146         care of them elsewhere.
11147         * cp-class.c (modify_vtable_entries): If we have already updated the
11148         vtable with the new virtual, don't do it again.
11149         * cp-class.c (finish_struct): Set CLASSTYPE_VFIELD_PARENT as
11150         appropriate.  Do virtual function overriding in virtual bases, after
11151         normal overriding, so that the base function list in DECL_VINDEX is
11152         not overridden, before we have a chance to run through the list.
11153         Use DECL_ASSEMBLER_NAME to check if two fndecls are `the same'.
11154         Make sure we pass the right address into modify_vtable_entries.
11155         * cp-tree.h (CLASSTYPE_VFIELD_PARENT): New field to indicate which
11156         binfo is the one that has the vtable that we based our vtable on.
11157
11158 Fri Dec 24 09:40:52 1993  Michael Tiemann  (tiemann@blues.cygnus.com)
11159
11160         * cp-typeck.c (c_expand_start_case): Use default_conversion to
11161         convert expression from reference type if necessary.
11162
11163 Wed Dec 22 17:58:43 1993  Jason Merrill  (jason@deneb.cygnus.com)
11164
11165         * cp-typeck.c (build_unary_op): Make sure that it's a TREE_LIST before
11166         trying to read its TREE_VALUE.
11167
11168         * cp-class.c (finish_struct_methods): Clear DECL_IN_AGGR_P here.
11169         (finish_struct): Instead of here.
11170
11171 Tue Dec 21 14:34:25 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11172
11173         * cp-tree.c (list_hash_lookup_or_cons): Make sure the type doesn't
11174         have TYPE_PTRMEMFUNC_P set before we try to build its
11175         CLASSTYPE_ID_AS_LIST.
11176         (get_decl_list): Likewise, when trying to read it.
11177
11178         * cp-tree.h (VTABLE_NAME): No def with NO_{DOLLAR,DOT} defined.
11179         (VTABLE_NAME_P): Use it instead of VTABLE_NAME_FORMAT.
11180
11181 Mon Dec 20 13:35:03 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11182
11183         * cp-typeck.c (rationalize_conditional_expr): New function.
11184         (unary_complex_lvalue): Use it.
11185         (build_modify_expr): Use it, since trying to do an ADDR_EXPR of it
11186         with build_unary_op won't cut it.  Don't wrap the COND_EXPR with a
11187         SAVE_EXPR either.
11188
11189         * cp-decl2.c (explicit_warn_return_type): Deleted variable.
11190         (lang_decode_option): Set warn_return_type, not explicit_*, for
11191         -Wreturn-type and -Wall.  This is what rest_of_compilation uses to
11192         decide if it should go into jump_optimize or not.
11193         * cp-tree.h (explicit_warn_return_type): Deleted.
11194         * cp-decl.c (grokdeclarator): Use warn_return_type, not explicit_*.
11195         (finish_function): Also complain about no return in a non-void fn if
11196         we're being pedantic (don't rely on use of -Wreturn-type).
11197
11198 Fri Dec 17 15:45:46 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11199
11200         * cp-decl.c (grokdeclarator): Forbid declaration of a function as
11201         static if it's being done inside another function.
11202
11203         * cp-search.c (compute_visibility): Check for friendship both ways.
11204
11205 Fri Dec 17 14:28:25 1993  Jason Merrill  (jason@deneb.cygnus.com)
11206
11207         * cp-cvt.c (build_default_binary_type_conversion): Make error
11208         messages more helpful.
11209
11210         * cp-error.c (op_as_string): New function, returns "operator =="
11211         given EQ_EXPR or suchlike.
11212
11213 Fri Dec 17 13:28:11 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11214
11215         * cp-call.c (print_n_candidates): New function.
11216         (build_overload_call_real): Use it when we complain about a call
11217         being ambiguous.
11218
11219 Fri Dec 17 12:41:17 1993  Jason Merrill  (jason@deneb.cygnus.com)
11220
11221         * cp-call.c (build_method_call): Fix checking for static call
11222         context.
11223
11224         * cp-method.c (build_opfncall): Call build_indirect_ref on argument
11225         to operator new.
11226
11227         * cp-init.c (build_new): Don't mess with rval when building
11228         indirect ref.
11229
11230 Thu Dec 16 16:48:05 1993  Kung Hsu  (kung@cirdan.cygnus.com)
11231
11232         * cp-lex.c (default_assign_ref_body): add check when TYPE_NESTED_
11233         NAME(type) may not be exist. It's not a problem for old compiler.
11234
11235 Thu Dec 16 14:46:06 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11236
11237         * cp-tree.h (CLASSTYPE_ALTERS_VISIBILITIES_P): Delete macro, it's
11238         never used for anything.
11239         (struct lang_type, member type_flags): Delete field
11240         `alters_visibility', and up `dummy' by 1.
11241         * cp-class.c (finish_base_struct): Delete code that copies the
11242         setting of CLASSTYPE_ALTERS_VISIBILITIES_P.
11243         (finish_struct): Delete code that sets it.
11244
11245 Thu Dec 16 14:44:39 1993  Jason Merrill  (jason@deneb.cygnus.com)
11246
11247         * cp-decl.c, cp-init.c, cp-typeck.c: Fix arguments to
11248         build_method_call that I messed up before.
11249
11250         * cp-search.c (get_base_distance): If protect > 1, allow immediate
11251         private base.
11252
11253         * cp-class.c (finish_base_struct): Set cant_synth_* correctly.
11254         (finish_struct): Ditto.  Well, nigh-correctly; it won't deal
11255         properly with the case where a class contains an object of an
11256         ambiguous base class which has a protected op=.  Should be fixed
11257         when the access control code gets overhauled.
11258         (finish_struct_methods): Set TYPE_HAS_NONPUBLIC_* correctly.
11259
11260 Thu Dec 16 12:17:06 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11261
11262         * cp-lex.c (real_yylex): Turn the code back on that deals with
11263         __FUNCTION__ and __PRETTY_FUNCTION__.  Don't use lookup_name, to
11264         avoid the ambiguity problems that led to it being turned off in the
11265         first place.
11266
11267         * cp-method.c (hack_identifier): Also check for a TYPE_PTRMEMFUNC_P
11268         to see if something is a method.
11269
11270 Wed Dec 15 18:35:58 1993  Mike Stump  <mrs@cygnus.com>
11271
11272         * cp-typeck.c (build_modify_expr): Avoid error messages on small
11273         enum bit fields.
11274         * cp-typeck.c (convert_for_assignment): Add missing argument to
11275         cp_warning and cp_pedwarn calls.
11276
11277 Wed Dec 15 18:25:32 1993  Jason Merrill  (jason@deneb.cygnus.com)
11278
11279         * cp-parse.y (member_init): ANSI C++ doesn't forbid old-style base
11280         initializers; it's just anachronistic.
11281
11282         * cp-decl.c (finish_decl): Don't require external-linkage arrays
11283         to have a complete type at declaration time when pedantic.
11284
11285 Tue Dec 14 11:37:23 1993  Jason Merrill  (jason@deneb.cygnus.com)
11286
11287         * cp-decl.c (pushdecl): Don't set DECL_CONTEXT if it's already set.
11288
11289         * cp-call.c (build_method_call): Don't dereference pointer given
11290         as instance.
11291
11292         * cp-decl.c (finish_function): Don't pass pointer to
11293         build_method_call.
11294         (finish_function): Ditto.
11295
11296         * cp-typeck.c (build_x_function_call): Ditto.
11297
11298         * cp-method.c (build_component_type_expr): Ditto.
11299
11300         * cp-init.c (build_member_call): Ditto.
11301         (build_new): Ditto.
11302
11303 Mon Dec 13 18:04:33 1993  Kung Hsu  (kung@cirdan.cygnus.com)
11304
11305         * cp-decl.c (xref_tag): fix regression created by changes made 
11306         in Dec. 7 1993.
11307         * cp-decl.c (xref_defn_tag): fix parallel nested class problem.
11308
11309 Fri Dec 10 12:40:25 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11310
11311         * cp-call.c (compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print
11312         out the final evaluation of the function, so we can see if ELLIPSIS,
11313         USER, and EVIL were set at the end.
11314
11315         * cp-call.c (convert_harshness_ansi): When the parm isn't an lvalue,
11316         only go for setting TRIVIAL_CODE if we are dealing with types that
11317         are compatible.
11318
11319 Thu Dec  9 18:27:22 1993  Mike Stump  <mrs@cygnus.com>
11320
11321         * cp-decl.c (flag_huge_objects): New flag to allow large objects.
11322         * toplev.c (lang_options): Ditto.
11323         * cp-decl2.c (flag_huge_objects, lang_f_options): Ditto.
11324         * cp-decl.c (delta_type_node): New type for delta entries.
11325         * cp-tree.h (delta_type_node): Ditto.
11326         * cp-decl.c (init_decl_processing): Setup delta_type_node.
11327         * cp-decl.c (init_decl_processing, build_ptrmemfunc_type): Use
11328         delta_type_node instead of short_integer_type_node. 
11329         * cp-class.c (build_vtable_entry): Ditto.
11330
11331 Thu Dec  9 16:19:05 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11332
11333         * cp-tree.h (OPERATOR_TYPENAME_P): Define outside of
11334         NO_{DOLLAR,DOT} macro checks, so it always gets defined.
11335         (VTABLE_NAME_P): Define for NO_DOT && NO_DOLLAR_IN_LABEL.
11336
11337 Wed Dec  8 17:38:06 1993  Mike Stump  <mrs@cygnus.com>
11338
11339         * cp-decl.c (finish_decl): Make sure things that can go into
11340         "common", do go into common, if -fcommon is given.
11341
11342 Wed Dec  8 13:01:54 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11343
11344         * cp-call.c (print_harshness) [DEBUG_MATCHING]: New function.
11345         (compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print out
11346         argument matching diagnostics to make instantly clear what the
11347         compiler is doing.
11348
11349         * cp-call.c (convert_harshness_ansi): If the parm isn't an lvalue,
11350         then check to see if the penalty was increased due to
11351         signed/unsigned mismatch, and use a TRIVIAL_CODE if it wasn't.
11352
11353 Tue Dec  7 18:29:14 1993  Kung Hsu  (kung@cirdan.cygnus.com)
11354
11355         * cp-decl.c (xref_tag, pushtag): Fix nested class search/resolution
11356         problem.
11357
11358 Tue Dec  7 16:09:34 1993  Jason Merrill  (jason@deneb.cygnus.com)
11359
11360         * cp-class.c (finish_struct): Before synthesizing methods, if no
11361         methods have yet been declared then set nonprivate_method.  Don't
11362         set non_private method after synthesizing a method.
11363
11364         * cp-lex.c (extract_interface_info): If flag_alt_external_templates
11365         is set, tie emitted code to the location of template instantiation,
11366         rather than definition.
11367
11368         * cp-tree.h: Declare flag_alt_external_templates.
11369
11370         * cp-decl2.c (lang_decode_option): Support -falt-external-templates.
11371
11372         * toplev.c (lang_options): Ditto.
11373
11374 Mon Oct  4 12:50:02 1993  Chip Salzenberg  (chip@fin.uucp)
11375
11376         [changes propagated from 930810 snapshot]
11377         * cp-decl.c (init_decl_processing): Make long long available for use
11378         as SIZE_TYPE and PTRDIFF_TYPE.
11379         (finish_decl): Allow file-scope static incomplete array.
11380         (grokdeclarator): Don't pass on const and volatile fron function
11381         value type to function type.
11382         Warn here for volatile fn returning non-void type.
11383         * cp-parse.y (attrib): Accept attributes `volatile' with alias
11384         `noreturn', and `const'.
11385         * cp-typeck.c (default_conversion): Don't lose const and volatile.
11386         (build_binary_op_nodefault): Generate pedantic warning for comparison
11387         of complete pointer type with incomplete pointer type.
11388         (build_c_cast): Be careful that null pointer constant be INTEGER_CST.
11389
11390 Tue Dec  7 10:46:48 1993  Jason Merrill  (jason@deneb.cygnus.com)
11391
11392         * cp-init.c (expand_vec_init): When creating a temporary for copying
11393         arrays, use the type of the source, not the target.
11394
11395         * cp-cvt.c (convert): Pass an argument for errtype to
11396         convert_to_reference.
11397
11398         * cp-error.c (dump_expr, COMPONENT_REF & CALL_EXPR): Deal with
11399         methods, -> and `this'.
11400
11401 Mon Dec  6 17:12:33 1993  Jason Merrill  (jason@deneb.cygnus.com)
11402
11403         * cp-error.c (parm_as_string): New function; returns `this' or arg
11404         number.  Corresponds to %P.
11405         (dump_expr): Deal with method calls.
11406
11407         * cp-cvt.c (convert_to_reference): Stop using warn_for_assignment.
11408         * cp-typeck.c (convert_for_assignment): Ditto.
11409         (warn_for_assignment): Lose.
11410
11411 Mon Dec  6 11:33:35 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11412
11413         * cp-call.c (ideal_candidate_ansi): Delete code that was never
11414         doing anything useful.  Instead, sort once, and DO NOT wipe
11415         out any codes with EVIL_CODE, since that's what we use as a
11416         marker for the end of the list of candidates.
11417
11418         * cp-cvt.c (convert_to_aggr): Make sure to always set H_LEN.
11419
11420 Mon Dec  6 12:49:17 1993  Jason Merrill  (jason@deneb.cygnus.com)
11421
11422         * cp-init.c (get_aggr_from_typedef): New function, like
11423         is_aggr_typedef but returns the _TYPE.
11424
11425         * cp-call.c, cp-init.c, cp-method.c: Eradicate err_name.
11426
11427 Sun Dec  5 18:12:48 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11428
11429         * cp-lex.c (readescape): Pedwarn when a hex escape is out of range.
11430
11431 Thu Nov 25 23:50:19 1993  Chip Salzenberg  (chip@fin.uucp)
11432
11433         Delay language context change until beginning of next decl.
11434
11435         * cp-lex.h (c_header_level): Removed.
11436         (pending_lang_change): Declared.
11437         * cp-lex.c (c_header_level): Renamed from in_c_header, made static.
11438         (pending_lang_change): Defined.
11439         (check_newline): Rework code that recognizes line number and
11440         filename changes.  Instead of pushing and popping lang context,
11441         increment and decrement pending_lang_change.
11442         (do_pending_lang_change):  Push and pop lang context according
11443         to value of pending_lang_change.
11444         * cp-parse.y (extdefs): Use lang_extdef instead of extdef.
11445         (extdef): Same as extdef, but call do_pending_lang_change() first.
11446
11447 Mon Nov 15 15:39:15 1993  Chip Salzenberg  (chip@fin.uucp)
11448
11449         * cp-typeck.c (build_binary_op_nodefault): Warn for ordered
11450         compare of ptr with 0 only if pedantic in both cases.
11451
11452 Thu Nov 25 13:31:37 1993  Chip Salzenberg  (chip@fin.uucp)
11453
11454         Reinstate the below patch, which got lost in the Cygnus merge:
11455         Tue Nov 23 13:59:24 1993  Hallvard B Furuseth  (hbf@durin.uio.no)
11456         * cp-parse.y (maybe_type_qual): Don't fail to set $$.
11457
11458 Wed Nov 17 19:03:30 1993  Chip Salzenberg  (chip@fin.uucp)
11459
11460         * cp-parse.y (attrib): Allow "ident(ident)" like the C front end.
11461
11462 Fri Oct 22 20:43:37 1993  Paul Eggert  (eggert@twinsun.com)
11463
11464         * cp-lex.c (real_yylex): Diagnose floating point constants
11465         that are too large.
11466
11467 Wed Nov 17 19:10:37 1993  Chip Salzenberg  (chip@fin.uucp)
11468
11469         * cp-type2.c (build_functional_cast): ARM page 16: When a class
11470         and an object, function or enumerator are declared in the same
11471         scope with the same name, the class name is hidden.
11472
11473 Wed Nov 17 19:07:18 1993  Chip Salzenberg  (chip@fin.uucp)
11474
11475         * cp-call.c (convert_harshness_ansi): Distinguish float, double,
11476         and long double from each other when overloading.
11477         (compute_conversion_costs_{ansi,old}, build_method_call,
11478         build_overlay_call_real, convert_to_aggr): Always set and
11479         always use H_LEN member of candidate structure.
11480
11481 Mon Oct 11 23:10:53 1993  Chip Salzenberg  (chip@fin.uucp)
11482
11483         * cp-decl.c (duplicate_decls): Note redeclarations of library
11484         functions, and generate distinct warnings for them.
11485
11486 Mon Oct  4 12:26:49 1993  Chip Salzenberg  (chip@fin.uucp)
11487
11488         Support format warnings in G++.
11489
11490         * cp-tree.h: Protect against multiple inclusion.
11491         Declare all public functions in c-common.c (copy from c-tree.h).
11492         (STDIO_PROTO): Define.
11493         (warn_format): Declare.
11494         (record_format_info): Remove declaration.
11495         * cp-decl.c (init_decl_processing): Call init_function_format_info.
11496         * cp-decl2.c (lang_decode_option): Make "-Wall" include warn_format.
11497         * cp-typeck.c (build_function_call_real): Call check_function_format.
11498         (record_format_info): Remove -- obsolete stub.
11499
11500 Sat Jul 24 12:04:29 1993  Chip Salzenberg  (chip@fin.uucp)
11501
11502         * cp-decl.c (duplicate_decls): Don't warn for non-extern var decl
11503         following an extern one (for -Wredundant-decls).
11504         * cp-parse.y (primary): In statement expression case, if compstmt
11505         returns something other than a BLOCK, return it unchanged.
11506
11507 Thu Dec  2 20:44:58 1993  Chip Salzenberg  (chip@fin.uucp)
11508
11509         * cp-decl.c (warn_extern_redeclared_static): New function made
11510         from code extracted from pushdecl.
11511         (duplicate_decls, pushdecl): Call new function.
11512         (lookup_name_current_level): Allow for IDENTIFIER_GLOBAL_VALUE
11513         to be a TREE_LIST when function is declared in 'extern "C" {}'.
11514
11515 Fri Dec  3 16:01:10 1993  Jason Merrill  (jason@deneb.cygnus.com)
11516
11517         * cp-class.c (duplicate_tag_error): Use cp_error.
11518         (finish_base_struct): Check for ambiguity with direct base, and don't
11519         generate op= or copy ctor if it exists.
11520
11521 Fri Dec  3 15:32:34 1993  Kung Hsu  (kung@cirdan.cygnus.com)
11522
11523         * cp-init.c (expand_member_init): when initializer name is null,
11524         don't try to build it now because emit_base_init will handle it.
11525
11526 Fri Dec  3 12:28:59 1993  Jason Merrill  (jason@deneb.cygnus.com)
11527
11528         * cp-lex.c (init_lex): Initialize input_filename to "<internal>" for
11529         code such as ExceptionHandler::operator=.
11530
11531 Fri Dec  3 10:32:08 1993  Jason Merrill  (jason@deneb.cygnus.com)
11532
11533         * cp-decl.c (grokdeclarator): Don't try to print out dname when
11534         complaining about arrays of references if decl_context==TYPENAME,
11535         since it will be null.
11536
11537         * cp-decl2.c: Default to flag_ansi_overloading.
11538
11539 Thu Dec  2 18:05:56 1993  Kung Hsu  (kung@cirdan.cygnus.com)
11540
11541         * cp-call.c (build_method_call): use binfo from instance if it's
11542         different from binfo (basetype_path) passed from above.
11543
11544 Thu Dec  2 12:48:36 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11545
11546 Wed Nov 17 19:14:29 1993  Chip Salzenberg  (chip@fin.uucp)
11547
11548         cp-error.c (dump_expr): Use unsigned chars to output a
11549         TREE_REAL_CST in hex.
11550
11551 Thu Dec  2 11:05:48 1993  Jason Merrill  (jason@deneb.cygnus.com)
11552
11553         * cp-class.c (finish_struct): Fix typo in setting
11554         cant_synth_asn_ref.
11555
11556         * cp-tree.h (TYPE_NESTED_NAME): New macro, does
11557         DECL_NESTED_TYPENAME (TYPE_NAME (NODE)).
11558
11559         * cp-lex.c (default_copy_constructor_body): Change
11560         DECL_NAME (TYPE_NAME (btype)) to TYPE_NESTED_NAME (btype).
11561         (default_assign_ref_body): Ditto.
11562         (default_copy_constructor_body): Call operator= explicitly for
11563         base classes that have no constructor.
11564
11565 Thu Dec  2 10:47:15 1993  Michael Tiemann  (tiemann@blues.cygnus.com)
11566
11567         * cp-call.c (build_method_call): If the instance variable is
11568         converted to error_mark_node when we're trying to convert it to the
11569         base type of a method we're looking up, return error_mark_node.
11570
11571 Thu Dec  2 10:41:16 1993  Torbjorn Granlund  (tege@cygnus.com)
11572
11573         * cp-typeck.c (build_binary_op_nodefault): In *_DIV_EXPR *_MOD_EXPR
11574         cases, tests for unsigned operands by peeking inside a NOP_EXPR.
11575
11576 Wed Dec  1 13:33:34 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11577
11578         * cp-call.c (compute_conversion_costs_ansi): Use the size of struct
11579         harshness_code, not the size of short, for clearing out the
11580         ansi_harshness.
11581
11582         * cp-call.c (print_candidates): New function.
11583         (build_method_call): When we had some candidates, but didn't get a
11584         usable match, don't report that we got an error with the first
11585         candidate.  Instead, say there were no matches, and list the
11586         candidates with print_candidates.  In the second pass, make sure we
11587         clear out ever_seen, so we can accurately count the number of
11588         functions that qualified.
11589
11590 Wed Dec  1 09:53:59 1993  Torbjorn Granlund  (tege@cygnus.com)
11591
11592         * cp-typeck.c (build_binary_op_nodefault): Shorten for *_MOD_EXPR
11593         only if op1 is known to be != -1.
11594         (build_binary_op_nodefault): Handle *_DIV_EXPR likewise.
11595
11596 Tue Nov 30 14:07:26 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11597
11598         * cp-method.c (hack_identifier): If the field itself is private, and
11599         not from a private base class, say so.
11600
11601 Mon Nov 29 03:00:56 1993  Jason Merrill  (jason@deneb.cygnus.com)
11602
11603         * cp-decl.c (grokdeclarator): Always warn on initialization of
11604         const member.
11605
11606 Wed Nov 24 00:49:35 1993  Jason Merrill  (jason@deneb.cygnus.com)
11607
11608         * cp-class.c (finish_struct): Set TYPE_GETS_CONST_* properly.
11609         (finish_base_struct): Set cant_synth_asn_ref properly.
11610
11611         * cp-lex.c (cons_up_default_function): Add section for operator=.
11612         (default_assign_ref_body): New function, mostly cribbed from
11613         default_copy_constructor_body.
11614
11615         * cp-class.c (base_info): Add members cant_synth_copy_ctor,
11616         cant_synth_asn_ref, no_const_asn_ref.
11617         (finish_base_struct): Update no_const_asn_ref, note that you should
11618         update cant_synth_*, propagate TYPE_GETS_ASSIGN_REF.
11619         (finish_struct): Add decls for cant_synth_*, no_const_asn_ref, and
11620         initialize them properly.  Set no_const_asn_ref properly.  Set
11621         cant_synth_* in some of the situations where they should be set.
11622         Propagate TYPE_GETS_ASSIGN_REF.  Use cant_synth_copy_ctor.  Add call
11623         to cons_up_default_function for operator=.
11624
11625 Tue Nov 23 20:24:58 1993  Mike Stump  <mrs@cygnus.com>
11626
11627         * cp-cvt.c (convert_force): Add code to perform casting of pointer
11628         to member function types.
11629         * cp-typeck.c (build_ptrmemfunc): Add FORCE parameter to indicate
11630         when the conversion should be done, regardless.
11631         * cp-tree.h (build_ptrmemfunc): Ditto.
11632         * cp-type2.c (digest_init): Ditto.
11633         * cp-typeck.c (convert_for_assignment): Ditto.
11634
11635 Tue Nov 23 18:06:58 1993  Jason Merrill  (jason@deneb.cygnus.com)
11636
11637         * cp-error.c (dump_expr): Do the right thing for variables of
11638         reference type.
11639
11640         * cp-decl.c (grok_op_properties): Set TYPE_HAS_ASSIGN_REF
11641         and its kin properly.
11642         (xref_tag): Propagate TYPE_GETS_ASSIGN_REF.
11643
11644 Tue Nov 23 12:26:13 1993  Mike Stump  <mrs@cygnus.com>
11645
11646         * cp-method.c (build_opfncall): Don't count pointer to member
11647         functions as aggregates here, as we don't want to look up methods in
11648         them.  The compiler would core dump if we did, as they don't have
11649         normal names.
11650         * cp-typeck.c (build_indirect_ref): Improve wording on error
11651         message.
11652
11653 Mon Nov 22 14:22:23 1993  Jason Merrill  (jason@deneb.cygnus.com)
11654
11655         * cp-decl.c (grok_op_properties): Allow operator?: with pedwarn
11656         (since it's supported in other compiler bits).
11657
11658         * cp-method.c (report_type_mismatch): Use cp_error; ignore err_name
11659         argument.
11660
11661         * cp-error.c (dump_function_decl): Don't print return type for
11662         constructors and destructors.
11663
11664         * cp-cvt.c (cp_convert_to_pointer): Import code from
11665         convert_to_pointer so we can return error_mark_node in the case of an
11666         error, and to allow more meaningful error messages.
11667         (build_type_conversion): Don't go through void* when trying
11668         to convert to a pointer type.
11669
11670         * cp-decl.c (grokfndecl): Move call to grok_op_properties back
11671         after grokclassfn so that it's dealing with the right decl.
11672         (grok_op_properties): Don't assert !methodp for op new and op delete.
11673
11674         * cp-init.c (build_delete): Don't use TYPE_BUILT_IN (there are now
11675         no uses of it in the compiler).
11676
11677         * cp-call.c (build_scoped_method_call): Fix for destructors of simple
11678         types.
11679         (build_method_call): Ditto.
11680
11681 Fri Nov 19 12:59:38 1993  Jason Merrill  (jason@deneb.cygnus.com)
11682
11683         * cp-tree.c (count_functions): Abstraction function.
11684
11685         * cp-call.c (build_overload_call_real): Deal with new overloading
11686         properly, remove dead code.
11687
11688         * gcc.c (default_compilers): Generate and use .ii files in the
11689         intermediate stage of compiling C++ source.
11690
11691 Fri Nov 19 11:26:09 1993  Jim Wilson  (wilson@sphagnum.cygnus.com)
11692
11693         * cp-expr.c (cplus_expand_expr): Make call_target a valid memory
11694         address before using it, so it can be later safely compared.
11695
11696 Fri Nov 12 15:30:27 1993  Jason Merrill  (jason@deneb.cygnus.com)
11697
11698         * cp-pt.c (tsubst): Deal with new overloading.
11699
11700         * cp-typeck.c (fntype_p): is the arg function type?
11701         (comp_target_parms): pedwarn on conversion from (anything) to (...).
11702         (build_x_function_call): Deal with new overloading.
11703
11704         * cp-tree.c (decl_list_length): Deal with new overloading.
11705         (decl_value_member): Like value_member, but for DECL_CHAINs.
11706
11707         * cp-decl.c (duplicate_decls): Deal with new overloading.
11708         (start_decl): Ditto.
11709
11710         * cp-class.c (instantiate_type): Deal with new overloading.
11711
11712         * cp-call.c (convert_harshness_ansi): Deal with new overloading.
11713         (convert_harshness_old): Deal with new overloading.
11714         (build_overload_call_real): Ditto.
11715
11716 Mon Nov  8 13:50:49 1993  Jason Merrill  (jason@deneb.cygnus.com)
11717
11718         * cp-tree.c (get_unique_fn): New function; returns FUNCTION_DECL
11719         if unambiguous, NULL_TREE otherwise.
11720         (get_first_fn): Returns the first appropriate FUNCTION_DECL.
11721         (is_overloaded_fn): Returns whether or not the passed tree is
11722         a function or list of functions.
11723
11724         * cp-init.c (init_init_processing): use `get_first_fn' to find
11725         the FUNCTION_DEFN for new and delete.
11726
11727         * cp-decl.c (push_overloaded_decl): Use new overloading strategy, cut
11728         code size in half (I spit on special cases).
11729
11730 Tue Sep  7 20:03:33 1993  Jason Merrill  (jason@deneb.cygnus.com)
11731
11732         * cp-decl.c: Allow references and template type parameters as well