OSDN Git Service

86th Cygnus<->FSF quick merge
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 Tue May  7 20:39:57 1996  Mike Stump  <mrs@cygnus.com>
2
3         * cp-tree.h (build_overload_call_maybe): Removed.
4         * call.c (build_overload_call_real): Invert meaning of last arg to
5         be require_complete.
6         (build_overload_call): Ditto.
7         * typeck.c (build_x_function_call): Use build_overload_call_real
8         instead of build_overload_call_maybe.
9
10 Mon May  6 01:23:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
11
12         * decl2.c (finish_file): Don't try to emit functions that haven't
13         been compiled.
14
15 Fri May  3 09:30:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
16
17         * decl2.c (finish_vtable_vardecl): Oops.
18
19         * decl.c (maybe_push_to_top_level): Do save previous_class_*.
20         Also store the bindings from previous_class_values.
21         (pop_from_top_level): Restore them.
22
23 Thu May  2 21:56:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
24
25         * decl2.c (finish_vtable_vardecl): Only write out vtable if its
26         symbol has been referenced.
27         (finish_file): Re-join synthesis/vtable loop with inline emission
28         loop, disable inlining when an inline is output.
29
30 Thu May  2 17:20:02 1996  Mike Stump  <mrs@cygnus.com>
31
32         * except.c (init_exception_processing): Setup saved_in_catch.
33         (push_eh_cleanup): Reset __eh_in_catch.
34         (expand_start_catch_block): Set __eh_in_catch.
35
36 Thu May  2 16:21:17 1996  Mike Stump  <mrs@cygnus.com>
37
38         * except.c (push_eh_cleanup): Add tracking for whether or not we
39         have an active exception object.
40         (expand_builtin_throw): Use it to make sure a rethrow without an
41         exception object is caught.
42
43 Thu May  2 11:26:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
44
45         * decl.c (maybe_push_to_top_level): Clear out class-level bindings
46         cache.
47
48 Wed May  1 11:26:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
49
50         * decl2.c (finish_file): Also use sentries for vars with
51         DECL_ONE_ONLY or DECL_WEAK set (should any such happen to be
52         created).
53
54         * lex.c (handle_cp_pragma): Disable #pragma
55         interface/implementation if SUPPORTS_ONE_ONLY > 1.
56
57 Tue Apr 30 11:25:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
58
59         * method.c (emit_thunk): Wrap default case in
60         temporary/permanent_allocation.
61
62         * method.c (make_thunk): Use DECL_ONE_ONLY.
63         (emit_thunk): Call assemble_end_function.
64
65 Mon Apr 29 15:38:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
66
67         * decl2.c (import_export_vtable): Use DECL_ONE_ONLY.
68         (import_export_decl): Ditto.
69         (finish_prevtable_vardecl): Disable vtable hack if
70         SUPPORTS_ONE_ONLY > 1.
71
72 Mon Apr 29 14:32:47 1996  Mike Stump  <mrs@cygnus.com>
73
74         * typeck.c (build_modify_expr): PREINCREMENT_EXPR and
75         PREDECREMENT_EXPRs take two arguments, not one.
76
77 Mon Apr 29 00:27:53 1996  Jason Merrill  <jason@yorick.cygnus.com>
78
79         * class.c (build_vtable_entry): Don't build thunks for abstract
80         virtuals.
81
82         * lex.c (real_yylex): Fix handling of __PRETTY_FUNCTION__ like C
83         frontend.
84
85 Sat Apr 27 16:45:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
86
87         * class.c (set_rtti_entry): Use size_zero_node.
88         (build_vtable): Ditto.
89
90 Sat Apr 27 14:48:57 1996  Jason Merrill  <jason@phydeaux.cygnus.com>
91
92         * class.c (finish_struct_1): Pass size_zero_node to set_rtti_entry.
93         (prepare_fresh_vtable): Ditto.
94
95 Fri Apr 26 13:14:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
96
97         * method.c (emit_thunk): Call mark_used on the target function.
98
99         * call.c (build_method_call): Don't warn about pending templates.
100
101 Thu Apr 25 14:55:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
102
103         * decl2.c (finish_file): Fix list walking logic.
104
105         * typeck2.c (check_for_new_type): Only warn if -pedantic.
106
107 Wed Apr 24 15:41:15 1996  Bob Manson  <manson@charmed.cygnus.com>
108
109         * class.c (finish_struct_1): Remove old code for
110         dont_allow_type_definitions.
111         * cp-tree.h: Ditto.
112         * spew.c: Make sure cp-tree.h is included before parse.h, so the
113         definition of flagged_type_tree is found before it is used.
114         * lex.c: Ditto.
115         * parse.y: Added the ftype member to the type union, and changed a
116         number of rules to use it instead of ttype. Added calls to
117         check_for_new_type() as appropriate.
118         * typeck2.c (check_for_new_type): New function for checking
119         if a newly defined type appears in the specified tree.
120         * cp-tree.h: Add new type flagged_type_tree. Add a prototype
121         for check_for_new_type().
122
123 Wed Apr 24 00:36:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
124
125         * decl2.c (finish_file): Only use a sentry if the decl is public.
126
127         * pt.c (tsubst_expr, DECL_STMT): If we don't have an initializer,
128         don't pass LOOKUP_ONLYCONVERTING.
129
130 Tue Apr 23 17:18:47 1996  Bob Manson  <manson@charmed.cygnus.com>
131
132         * typeck.c (common_type): Fix the ARRAY_TYPE case so it
133         properly keeps track of const and volatile type modifiers.
134
135 Tue Apr 23 10:52:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
136
137         * tree.c (cp_tree_equal): C++ version of simple_cst_equal.
138         * pt.c (comp_template_args): Use it.
139
140         * rtti.c (get_tinfo_fn, build_dynamic_cast, expand_*_desc): Call
141         assemble_external for artificial function decls.
142
143         * decl.c (cp_finish_decl): Oops.
144
145 Mon Apr 22 17:28:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
146
147         * decl2.c (import_export_decl): Put static data member templates
148         into common storage, or make them weak, depending on whether they
149         are dynamically or statically initialized.
150         (get_sentry): New function.
151         (finish_file): Do import_export_decl for static data members before
152         building the init/fini functions.  Don't init/fini a variable that's
153         EXTERNAL.  Use a sentry for variables in common.  Fix mismatching
154         push/pop_temp_slots.
155         * decl.c (cp_finish_decl): If DECL_NOT_REALLY_EXTERN, do the
156         expand_static_init thang.
157         * method.c (get_id_2): New function.
158
159 Mon Apr 22 15:32:45 1996  Bob Manson  <manson@charmed.cygnus.com>
160
161         * parse.y (empty_parms): Make sure we use C++-style prototypes
162         when we're declaring member functions.
163
164 Sun Apr 21 10:08:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
165
166         * Makefile.in (CONFLICTS): 16 s/r conflicts.
167         * parse.y (self_template_type): New nonterminal.
168
169 Thu Apr 18 08:56:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
170
171         * decl.c (make_typename_type): Handle getting a TYPE_DECL for a
172         name.
173         * parse.y (base_class.1): Allow 'typename foo::bar'.
174
175         * lex.c (check_newline): Remove #pragma code that plays with the
176         input stream, since we now deal with tokens.  Clear nextchar when
177         we're done.
178         (handle_cp_pragma): Use real_yylex.
179         (handle_sysv_pragma): Don't do skipline here.  Only call real_yylex
180         in one place.
181
182         * lex.c (check_for_missing_semicolon): Handle SELFNAME.
183
184         * lex.c (handle_cp_pragma): Fix "#pragma implementation".
185
186 Wed Apr 17 16:51:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
187
188         * parse.y: New token SELFNAME for potential constructor.
189         * spew.c (yylex): Handle it.
190         * lex.c (identifier_type): Produce it.
191
192         * parse.y (complete_type_name): In :: case, don't push class binding.
193         (complex_type_name): Ditto.
194
195 Wed Apr 17 15:02:40 1996  Mike Stump  <mrs@cygnus.com>
196
197         * typeck.c (build_reinterpret_cast): Handle pointer to member
198         functions.
199
200 Wed Apr 17 12:28:26 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
201
202         * lex.c (handle_cp_pragma): New function, with decl, doing the cc1plus
203         pragmas.
204         (check_newline): Put the vtable/unit/implementation/interface pragma
205         code into handle_cp_pragma, replacing it with a call.
206         (handle_sysv_pragma): Give int return type, and take FINPUT and TOKEN
207         args.  Get the next token after handling the pragma token.
208
209 Wed Apr 17 10:28:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
210
211         * cvt.c (cp_convert_to_pointer): Avoid doing base analysis on pmfs.
212         (convert_to_pointer_force): Ditto.
213
214         * init.c (build_new): Fix array new without -fcheck-new.
215
216 Tue Apr 16 13:44:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
217
218         * cp-tree.h, call.c, class.c, decl.c, parse.y, pt.c, rtti.c,
219         tree.c: Lose TYPE_NESTED_NAME.
220
221         * parse.y (nested_name_specifier_1): Don't treat non-identifiers
222         as identifiers.
223
224         * tree.def: Add VEC_INIT_EXPR.
225         * expr.c (cplus_expand_expr): Handle it.
226         * init.c (build_new): Use it instead of the RTL_EXPR nastiness and
227         the extra file-scope symbol nastiness.
228
229 Mon Apr 15 16:21:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
230
231         * method.c (make_thunk): Thunks are static.
232         (emit_thunk): Use ASM_OUTPUT_MI_THUNK if it's defined.
233
234         * decl2.c (mark_vtable_entries): Emit thunks as needed.
235         (finish_file): Don't emit them here.
236
237 Sun Apr 14 11:34:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
238
239         * rtti.c (build_dynamic_cast): Handle null pointers.
240         (ifnonnull): New function.
241
242 Fri Apr 12 09:08:27 1996  Bob Manson  <manson@charmed.cygnus.com>
243
244         * call.c (build_method_call): Remember the original basetype we
245         were called with. Give an error message instead of trying
246         (incorrectly) to call a non-static member function through a
247         non-inherited class.
248
249         * search.c (expand_upcast_fixups): Mark the new fixup as
250         DECL_ARTIFICIAL.
251
252 Thu Apr 11 03:57:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
253
254         * init.c (build_new): Use a TARGET_EXPR for alloc_expr.
255
256         * class.c (set_rtti_entry): Fix for thunks.
257
258         * decl2.c (import_export_decl): Still emit typeinfo fns for
259         cv-variants of builtin types.
260
261         * rtti.c (expand_class_desc): Set up base_info_type_node here.
262         (init_rtti_processing): Instead of here.
263
264 Wed Apr 10 14:17:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
265
266         * rtti.c (init_rtti_processing): Do init regardless of -frtti.
267         (build_typeid): Only complain about taking dynamic typeid without
268         -frtti.
269
270         * decl2.c: flag_rtti defaults to 1.
271
272         * rtti.c (get_tinfo_var): The general class case is now smaller.
273         (init_rtti_processing): Pack the latter three fields of base_info
274         into 32 bits.
275
276 Wed Apr 10 13:50:14 1996  Mike Stump  <mrs@cygnus.com>
277
278         * init.c (expand_member_init): Don't dump if name is NULL_TREE.
279
280 Wed Apr 10 12:56:02 1996  Mike Stump  <mrs@cygnus.com>
281
282         * search.c (make_memoized_table_entry): Undefer the pop, if necessary.
283         (push_memoized_context): Split out code to undefer pop_type_level to
284         (clear_memoized_cache): here.
285         (pop_memoized_context): We can only handle one layer of deferral of
286         pop_type_level so clear the cache, if there was a previous level.
287
288 Tue Apr  9 23:06:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
289
290         * rtti.c (init_rtti_processing): Build up base_info_type_node.
291         (expand_class_desc): Use one pointer to an array of base_info
292         structs, passed using a CONSTRUCTOR.
293
294 Tue Apr  9 14:20:57 1996  Mike Stump  <mrs@cygnus.com>
295
296         * class.c (build_vbase_path): Remove block extern for
297         flag_assume_nonnull_objects here.
298         (build_vfn_ref): Split out functionality into build_vtbl_ref.
299         (build_vtbl_ref): New routine.
300         (build_vtable): Set up rtti info here.
301         (add_virtual_function): Note in CLASSTYPE_RTTI the best
302         place where we can get the rtti pointers from to avoid having to
303         search around for a place.
304         (finish_base_struct): Ditto.
305         (finish_struct_1): Ditto.  Never create totally new vtables with totally
306         new vtable pointers for rtti.  Disable code to layout vtable pointers
307         better until we want to break binary compatibility.
308         * rtti.c (build_headof_sub): New routine to convert down to a
309         sub-object that has an rtti pointer in the vtable.
310         (build_headof): Use it.  Also, use build_vtbl_ref now to be more
311         maintainable.
312         (build_dynamic_cast): Make sure we have saved it, if we need to.
313         * search.c (dfs_init_vbase_pointers): Disable code that deals with
314         a more efficient vtable layout, enable later.
315         * call.c (flag_assume_nonnull_objects): Moved declaration to
316         * cp-tree.h: here.  Declare build_vtbl_ref.
317         * pt.c (instantiate_class_template): Use NULL_TREE instead of 0 in
318         function calls that want a tree.
319
320 Tue Apr  9 12:10:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
321
322         * rtti.c (build_dynamic_cast): Handle downcasting to X* given
323         other X subobjects in the most derived type.  Ack.
324
325         * rtti.c (build_dynamic_cast): No need to strip cv-quals here,
326         get_typeid will do it for us.
327         (get_typeid_1): Break out call-building for expand_*_desc to use.
328         (get_typeid): Call it.
329         (expand_*_desc): Ditto.
330         * decl.c (init_decl_processing): Don't set TYPE_BUILT_IN on char *
331         and void *.
332         (init_decl_processing): Lose builtin_type_tdescs lossage.
333         * decl2.c (finish_vtable_vardecl): Remove obsolete code.
334
335 Mon Apr  8 17:23:23 1996  Bob Manson  <manson@charmed.cygnus.com>
336
337         * pt.c (tsubst): When calling set_nested_typename, use
338         TYPE_NESTED_NAME (current_class_type) instead of
339         current_class_name.
340
341         * decl.c (pushdecl): Ditto.
342         (pushdecl_class_level): Ditto.
343         (grokdeclarator): Use NULL_TREE instead of 0 in the call to
344         set_nested_typename.
345
346 Sun Apr  7 10:44:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
347
348         * rtti.c (synthesize_tinfo_fn): Handle arrays.
349
350         * cp-tree.h (DECL_REALLY_EXTERN): New macro.
351
352 Sat Apr  6 13:56:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
353
354         * rtti.c (throw_bad_cast): Use entry point __throw_bad_cast.
355         (init_rtti_processing): Lose bad_cast_type.
356         (build_dynamic_cast): Use throw_bad_cast.
357
358         * rtti.c (synthesize_tinfo_fn): Handle enums and pmfs.
359
360         * decl2.c (finish_file): Don't synthesize artificial functions
361         that are external and not inline.
362
363         * rtti.c (get_tinfo_fn): If at_eof, call import_export_decl.
364
365         * decl2.c (finish_file): Handle having new inlines added to
366         saved_inlines by synthesis.
367
368         * rtti.c (get_bad_cast_node): Don't require <typeinfo>.
369
370 Fri Apr  5 17:02:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
371
372         RTTI rewrite to initialize nodes as needed, not require that
373         users #include <typeinfo>, complete functionality and reduce wasted 
374         space.
375         * rtti.c (init_rtti_processing): New fn.
376         (build_typeid): The vtable entry is now a function.
377         (get_tinfo_var): New fn.
378         (get_tinfo_fn): Ditto.
379         (get_typeid): Use it.
380         (build_dynamic_cast): Declare and use entry point __dynamic_cast.
381         (build_*_desc): Rename to expand_*_desc and rewrite to use entry
382         points __rtti_*.
383         (add_uninstantiated_desc, get_def_to_follow, build_t_desc): Lose.
384         (synthesize_tinfo_fn): New fn.
385         * method.c (build_t_desc_overload): Lose.
386         (build_overload_with_type): More generic.
387         * decl.c (init_decl_processing): Call init_rtti_processing.
388         * class.c (set_rtti_entry): Use get_tinfo_fn.
389         * decl2.c (mark_vtable_entries): Mark the rtti function.
390         (finish_prevtable_vardecl): Don't build_t_desc.
391         (import_export_decl): Handle tinfo functions.
392         (finish_file): Ditto.
393         * typeck.c (inline_conversion): New fn.
394         (build_function_call_real): Use it.
395         * cp-tree.h: Add decls.
396
397         * method.c (hack_identifier): Also convert component_refs from
398         references.
399
400         * lex.c (cons_up_default_function): Use the type, not the name, in
401         declspecs.
402
403         * decl2.c (import_export_vtable): Fix weak vtables.
404
405 Fri Apr  5 13:30:17 1996  Bob Manson  <manson@charmed.cygnus.com>
406
407         * search.c (get_base_distance_recursive): Fix access checks for
408         protected bases.
409
410 Fri Apr  5 11:02:06 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
411
412         * call.c (unary_complex_lvalue): Delete unneeded decl, it's in
413         cp-tree.h.
414         (convert_harshness): Add prototypes wrapped by PROTO.
415         * decl2.c (grok_function_init): Likewise.
416         (do_toplevel_using_decl): Change to void return type.
417         * class.c (build_vtable_entry): Remove decl of make_thunk.
418         (merge_overrides): Fix order of arg definitions.
419         (finish_vtbls): Likewise.
420         (fixup_vtable_deltas): Likewise.
421         (modify_all_direct_vtables): Likewise.
422         (modify_all_indirect_vtables): Likewise.
423         * search.c (get_base_distance_recursive): Likewise.
424         (get_abstract_virtuals_1): Likewise.
425         (fixup_virtual_upcast_offsets): Likewise.
426         (lookup_fnfields_1): Add prototypes wrapped by PROTO.
427         * init.c (perform_member_init): Fix order of arg definitions.
428         (expand_aggr_init_1): Add prototypes wrapped by PROTO.
429         * cp-tree.h (make_thunk): Add decl.
430         (overload_template_name, push_template_decl): Add decls.
431         (do_toplevel_using_decl): Change to void return type.
432         (vec_binfo_member): Add decl.
433
434 Thu Apr  4 13:33:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
435
436         * typeck.c (mark_addressable, convert_for_assignment,
437         convert_for_initialization, pointer_int_sum, pointer_diff,
438         unary_complex_lvalue): Add prototypes wrapped by PROTO.
439         (convert_sequence): #if 0 fn decl, since definition also is.
440
441 Thu Apr  4 11:00:53 1996  Mike Stump  <mrs@cygnus.com>
442
443         * rtti.c (build_dynamic_cast): Make sure we strip qualifiers on
444         cast to pointer types for type searching.
445
446 Wed Apr  3 17:10:57 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
447
448         * typeck.c (get_delta_difference): Use cp_error, not error, in the
449         case where BINFO == 0.
450
451 Wed Apr  3 12:01:02 1996  Mike Stump  <mrs@cygnus.com>
452
453         * call.c (build_method_call): Fix wording of error messages so
454         constructors come out right.
455
456 Tue Apr  2 16:06:59 1996  Bob Manson  <manson@charmed.cygnus.com>
457
458         * decl.c (push_overloaded_decl): Don't warn about hidden
459         constructors when both the type and the function are declared
460         in a system header file.
461
462 Mon Apr  1 09:03:13 1996  Bob Manson  <manson@charmed.cygnus.com>
463
464         * class.c (finish_struct_1): Propagate the TYPE_PACKED
465         flag for the type to the type's fields.
466
467 Sat Mar 30 12:14:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
468
469         * parse.y (complex_parmlist, ELLIPSES): Take out ARM-based warning.
470
471 Fri Mar 29 15:51:36 1996  Bob Manson  <manson@charmed.cygnus.com>
472
473         * class.c (base_info, finish_base_struct): Replace 
474         needs_virtual_dtor with base_has_virtual.
475
476         (finish_struct_1): Remove the old code that tried to make default
477         destructors virtual. Use base_has_virtual when checking if we need
478         to add a vtable entry for the rtti code.
479
480 Fri Mar 29 14:02:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
481
482         * pt.c (push_template_decl): Complain about template decl with
483         inappropriate declaration.
484
485 Fri Mar 29 12:15:35 1996  Bob Manson  <manson@charmed.cygnus.com>
486
487         * typeck.c (build_x_unary_op): Remove bogus check for taking
488         the address of a member function.
489
490 Fri Mar 29 11:56:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
491
492         * parse.y (constructor_declarator): Only push the class if
493         we are not already in the class.
494
495 Fri Mar 29 09:41:02 1996  Jeffrey A. Law  <law@cygnus.com>
496
497         * method.c (emit_thunk): Remove current_call_is_indirect nonsense.
498         Add additional argument to INIT_CUMULATIVE_ARGS.
499
500 Thu Mar 28 16:41:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
501
502         * decl.c (shadow_tag): Fix error about anon union with methods.
503
504         * parse.y (self_reference): Only generate a self-reference if this
505         is a non-template class.
506         (opt.component_decl_list): Only use it if it was generated.
507
508         * parse.y (component_decl_1): Use constructor_declarator.
509         (fn.def2): Ditto.
510         (notype_component_declarator0): Ditto.
511
512 Thu Mar 28 15:11:35 1996  Bob Manson  <manson@charmed.cygnus.com>
513
514         * typeck.c (build_x_unary_op): Add checks for taking the address
515         of a TARGET_EXPR or of a member function, and give appropriate
516         warnings.
517
518 Thu Mar 28 14:49:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
519
520         * pt.c (process_template_parm): Allow template type parms to be
521         used as types for template const parms.
522
523 Wed Mar 27 15:51:19 1996  Mike Stump  <mrs@cygnus.com>
524
525         * init.c (expand_vec_init): Ensure the eh cleanups are on the
526         function_obstack.
527
528 Wed Mar 27 10:14:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
529
530         * decl.c (lookup_name_real): Be even more picky about the
531         ambiguous lookup warning.
532         (grokdeclarator): Tweak SCOPE_REF constructor declarators here.
533         * parse.y (constructor_declarator): Rather than here.
534
535         * parse.y (constructor_declarator): New nonterminal.
536         (fn.def1): Use it.
537         (explicit_instantiation): Ditto.
538
539 Tue Mar 26 13:41:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
540
541         Add implicit declaration of class name at class scope.
542         * decl.c (lookup_name_real): Restrict pedwarn about ambiguous lookup.
543         * parse.y (self_reference): New nonterminal.
544         (opt.component_decl_list): Use it.
545         (fn.def1): Add nested_name_specifier type_name cases.
546         * class.c (build_self_reference): New function.
547         (finish_struct): Handle access_default later, move self-reference
548         decl to the end.
549         * pt.c (lookup_template_class): Handle getting a TYPE_DECL.
550         * cp-tree.h: Adjust.
551
552         * pt.c (do_function_instantiation): Separate handling of member
553         functions and non-member functions properly.
554
555 Mon Mar 25 14:23:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
556
557         * pt.c (process_template_parm): Improve error for 'volatile class K'.
558
559         * class.c (finish_struct_1): Check the right slot for destructors.
560
561         * decl.c (start_enum): Complain about enum templates.
562
563 Mon Mar 25 13:25:31 1996  Mike Stump  <mrs@cygnus.com>
564
565         * init.c (resolve_offset_ref): Offset pointers to member data by one.
566         * typeck.c (unary_complex_lvalue): Ditto.
567
568 Mon Mar 25 13:30:42 1996  Bob Manson  <manson@charmed.cygnus.com>
569
570         * typeck.c (c_expand_return): Check for a returned local
571         array name, similar to the check for an ADDR_EXPR.
572
573 Mon Mar 25 13:07:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
574
575         * decl.c (cp_finish_decl): Don't build cleanups for static
576         variables here.
577
578 Fri Mar 22 17:57:55 1996  Mike Stump  <mrs@cygnus.com>
579
580         * typeck.c (build_modify_expr): Fix error messages to be more
581         accurate.
582         * cp-tree.h (assop_as_string): Parallel to op_as_string, but for
583         assignment operators.
584         * error.c (assop_as_string): Ditto.  Add support for `%Q' for
585         assignment operators.
586
587 Fri Mar 22 13:48:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
588
589         * decl.c (grokdeclarator): Call bad_specifiers for typedefs.  Also
590         give an error if initialized.  Pedwarn about nested type with the
591         same name as its enclosing class.
592
593         * pt.c (tsubst, case TYPE_DECL): Set DECL_CONTEXT.
594
595         * typeck.c (require_complete_type): Be sure to instantiate the
596         MAIN_VARIANT of the type.
597
598         * decl2.c (finish_file): Instantiate pending templates before
599         processing static constructors and destructors.
600
601         * pt.c (instantiate_decl): Don't instantiate functions at toplevel
602         unless at_eof.
603
604 Fri Mar 22 09:30:17 1996  Bob Manson  <manson@beauty.cygnus.com>
605
606         * decl2.c (delete_sanity): If error_mark_node is passed
607         in as an expression, quit while we're ahead.
608
609         * decl.c (grokdeclarator): Give an error message if `friend'
610         is combined with any storage class specifiers.
611
612 Wed Mar 20 14:51:55 1996  Jason Merrill  <jason@yorick.cygnus.com>
613
614         * parse.y (named_complex_class_head_sans_basetype): Don't crash on
615         definition of nonexistent nested type.
616
617         * error.c (dump_decl, case TYPE_DECL): Fix decision for whether or
618         not to say 'typedef'.
619
620 Wed Mar 20 00:11:47 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
621
622         * cp-tree.h (struct lang_type): Make search_slot a tree, not a char*.
623         * search.c (dfs_walk, dfs_init_vbase_pointers,
624         expand_upcast_fixups): Remove cast of CLASSTYPE_SEARCH_SLOT.
625         (dfs_find_vbases): Remove cast for CLASSTYPE_SEARCH_SLOT init.
626
627 Tue Mar 19 17:56:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
628
629         * except.c (build_throw): Support minimal parse.
630         * pt.c (tsubst_copy): Support THROW_EXPR.
631         * decl2.c (build_expr_from_tree): Ditto.
632
633         * pt.c (mangle_class_name_for_template): Always allocate
634         scratch_firstobj.
635
636 Tue Mar 19 16:34:31 1996  Bob Manson  <manson@beauty.cygnus.com>
637
638         * cvt.c (cp_convert_to_pointer): Give an appropriate error
639         when trying to cast from an incomplete type.
640
641 Tue Mar 19 16:00:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
642
643         * pt.c (instantiate_class_template): Don't bother setting up
644         CLASSTYPE_TAGS explicitly, as the nested types will add
645         themselves.
646
647 Tue Mar 19 15:48:43 1996  Bob Manson  <manson@beauty.cygnus.com>
648
649         * decl.c (shadow_tag): Remove old error check for usage of
650         an enum without a previous declaration.
651         (xref_tag): Add error message about usage of enums without a
652         previous declaration.
653
654 Tue Mar 19 09:21:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
655
656         * lex.c (do_identifier): Only do name consistency check if we're
657         parsing.
658
659         * pt.c (push_template_decl): Don't crash if we get a member defn
660         that doesn't match.
661
662         * decl.c (xref_tag_from_type): New function to do an xref without
663         always having to figure out code_type_node.
664         * cp-tree.h: Declare it.
665         * pt.c (instantiate_class_template): Use it for friend classes.
666         (lookup_template_class): Use it.
667
668         * typeck2.c (build_functional_cast): Pull out a single parm before
669         passing it to build_c_cast.
670
671 Tue Mar 19 09:07:15 1996  Bob Manson  <manson@beauty.cygnus.com>
672
673         * expr.c (do_case): Give an error message if a pointer is
674         given as a case value.
675
676 Mon Mar 18 21:57:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
677
678         * typeck.c (build_c_cast): Don't pull single TEMPLATE_DECL out of
679         an overload list.
680
681         * lex.c (cons_up_default_function): Really, now, interface hackery
682         does not apply to synthesized methods.
683
684 Mon Mar 18 18:20:57 1996  Mike Stump  <mrs@cygnus.com>
685
686         * call.c (build_method_call): Ctors and dtors now have special names
687         with respect to lookups.
688         * class.c (add_method): Ditto.
689         (grow_method): Ditto.
690         (finish_struct_methods): Ditto.
691         (warn_hidden): Ditto.
692         (finish_struct_1): Ditto.
693         * cvt.c (convert_to_reference): Ditto.
694         (convert_to_aggr): Ditto.
695         (cp_convert): Ditto.
696         * decl2.c (check_classfn): Ditto.
697         * init.c (expand_member_init): Ditto.
698         (expand_default_init): Ditto.
699         (expand_aggr_init_1): Ditto.
700         (build_offset_ref): Ditto.
701         (build_new): Ditto.
702         (build_delete): Ditto.
703         * lex.c (do_inline_function_hair): Ditto.
704         * search.c (lookup_field_1): Ditto.
705         (lookup_fnfields_here): Ditto.
706         (lookup_field): Ditto.
707         (lookup_fnfields): Ditto.
708         (get_virtual_destructor): Ditto.
709         (dfs_debug_mark): Ditto.
710         (dfs_pushdecls): Ditto.
711         (dfs_compress_decls): Ditto.
712         * tree.c (layout_basetypes): Ditto.
713         * typeck.c (build_component_ref): Ditto.
714         (build_x_function_call): Ditto.
715         (build_modify_expr): Ditto.
716         (convert_for_initialization): Ditto.
717         (build_functional_cast): Ditto.
718         * cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Ditto.
719         (CTOR_NAME): New.
720         (DTOR_NAME): New.
721         * decl.c (ctor_identifier): New.
722         (dtor_identifier): New.
723         (init_decl_processing): Set them.
724
725 Mon Mar 18 18:00:51 1996  Mike Stump  <mrs@cygnus.com>
726
727         * typeck.c (build_component_ref): Don't get confused by fields whose
728         context has no type name, like pointer to member functions.
729
730 Mon Mar 18 13:19:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
731
732         * decl.c (grokdeclarator): Handle typedef without declarator.
733
734         * pt.c (tsubst): Handle SCOPE_REF in declarator.
735
736         * parse.y (bad_parm): Catch another case of missing `typename'.
737
738         * lex.c (yyprint): Handle TYPE_DECLs.
739
740         * decl.c (start_function): Don't try to be clever.
741
742         * lex.c: Lose compiler_error_with_decl.
743         * typeck2.c: Lose error_with_aggr_type.
744         (incomplete_type_error): Use cp_* instead of old functions.
745         (readonly_error): Ditto.
746         * typeck.c (convert_arguments): Ditto.
747         * search.c (lookup_nested_field): Ditto.
748         * method.c (make_thunk): Ditto.
749         * decl.c (grokparms): Ditto.
750         * cp-tree.h: Update.
751
752         * tree.c (min_tree_cons): Call copy_to_permanent for the purpose
753         and value.
754
755 Mon Mar 18 11:25:52 1996  Bob Manson  <manson@beauty.cygnus.com>
756
757         * method.c (build_opfncall): When deleting a pointer to an
758         array, build a new pointer to the tree past any ARRAY_TYPE
759         nodes.
760
761 Mon Mar 18 10:11:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
762
763         * decl.c (lookup_name_real): Initialize local var TYPE to NULL_TREE.
764
765 Fri Mar 15 11:03:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
766
767         * pt.c (instantiate_decl): Only call import_export_decl if at_eof
768         and ! DECL_INLINE.
769
770         * decl.c (finish_function): Don't set nested based on
771         hack_decl_function_context.
772         * parse.y (function_try_block): Check for nested function.
773         (pending_inlines): Ditto.
774
775         * decl2.c (build_expr_from_tree): If a unary op already has a
776         type, just return it.
777
778         * decl2.c (finish_prevtable_vardecl): Use ADJUST_VTABLE_LINKAGE.
779
780         * decl2.c (walk_vtables): vardecl_fn returns int; return 1 if it does.
781         (finish_file): Check the return value of walk_vtables.
782         (finish_prevtable_vardecl): Return int.
783         (finish_vtable_vardecl): Ditto.
784         (prune_vtable_vardecl): Ditto.
785         * lex.c (set_vardecl_interface_info): Ditto.
786         * cp-tree.h: Adjust return types.
787
788         * class.c (delete_duplicate_fields_1): Don't complain about
789         duplicate nested types if they're the same type.
790         (finish_struct): Remove check for duplicate.
791         * decl2.c (grokfield): Don't check for typedef of anonymous type.
792
793 Thu Mar 14 10:00:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
794
795         * cp-tree.h: Lose SIGNATURE_GROKKING_TYPEDEF.
796
797         * decl.c (grokdeclarator): Lose special handling of class-level
798         typedef.  Lose SIGNATURE_GROKKING_TYPEDEF.  Set
799         SIGNATURE_HAS_OPAQUE_TYPEDECLS later.
800
801         * cvt.c (convert_pointer_to_real): Retain cv-quals in conversion.
802
803         * pt.c (tsubst_copy): Strip cv-quals from destructor name types.
804
805         * search.c (compute_access): Fix handling of anonymous union
806         members.
807         * class.c (finish_struct_anon): Propagate TREE_{PRIVATE,PROTECTED}
808         from anonymous unions to their members.
809
810         * typeck.c (build_x_function_call): For static member functions,
811         hand off to build_member_call.
812
813 Wed Mar 13 14:03:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
814
815         * typeck.c (build_component_ref): Handle OFFSET_REFs.
816
817         * init.c (expand_vec_init): Fix init == 0 case.
818
819 Tue Mar 12 14:36:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
820
821         * init.c (build_new): Pedwarn about init and array new.
822         (expand_vec_init): Handle lists, use convert_for_initialization
823
824         * typeck.c (convert_for_initialization): Pass LOOKUP_NO_CONVERSION
825         when converting to an aggregate type.
826         * cvt.c (cp_convert): Pass it through.
827
828         * typeck.c (build_conditional_expr): Handle user-defined
829         conversions to slightly different types.
830
831         * decl.c (grokdeclarator): Force an array type in a parm to be
832         permanent.
833
834         * decl2.c (do_using_directive): Sorry.
835         (do_namespace_alias): Ditto.
836         * lex.c (real_yylex): Warn about using the `namespace' keyword.
837
838 Sun Mar 10 22:26:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
839
840         * parse.y (datadef): Move call to note_list_got_semicolon up.
841
842 Fri Mar  8 11:47:26 1996  Mike Stump  <mrs@cygnus.com>
843
844         * tree.c (unsave_expr): Don't unsave, UNSAVE_EXPRs.
845
846 Fri Mar  8 11:29:06 1996  Mike Stump  <mrs@cygnus.com>
847
848         * decl.c (cp_finish_decl): The exception regions have to be
849         nested, not overlapping.  We start the exception region for a
850         decl, after it has been fully built, and all temporaries for it
851         have been cleaned up.
852
853 Thu Mar  7 17:46:06 1996  Mike Stump  <mrs@cygnus.com>
854
855         * tree.c (vec_binfo_member): Don't core dump if we have no bases.
856
857 Thu Mar  7 14:11:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
858
859         * tree.def: Add RETURN_INIT.
860         * pt.c (instantiate_decl): Handle RETURN_INIT.
861         * decl.c (store_return_init): Handle minimal_parse_mode.
862
863         * tree.c (cp_build_type_variant): Just return an error_mark_node.
864         * decl.c (make_typename_type): Don't try to get the file and line
865         of an identifier.
866         * typeck.c (comptypes): Handle TYPENAME_TYPE.
867
868 Wed Mar  6 18:47:50 1996  Per Bothner  <bothner@kalessin.cygnus.com>
869
870         * decl.c (poplevel): Make sure we clear out and restore old local
871         non-VAR_DECL values by default when they go out of scope.
872
873 Wed Mar  6 09:57:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
874
875         * method.c (build_overload_value): Use DECL_ASSEMBLER_NAME in
876         referring to addresses of variables and functions.
877
878         * error.c (dump_expr): Support SIZEOF_EXPR.
879
880         * init.c (do_friend): Use the return value of check_classfn.
881
882         * typeck.c (convert_arguments): Call complete_type.
883
884         * method.c (hack_identifier): After giving an error, set value to
885         error_mark_node.
886
887 Tue Mar  5 16:00:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
888
889         * tree.c (hack_decl_function_context): Kludge around DECL_CONTEXT
890         lossage for local classes.
891         * cp-tree.h: Declare it.
892         * decl.c (lookup_name_real): Evil, painful hack for local classes.
893         (grokfndecl): Set DECL_CLASS_CONTEXT and DECL_NO_STATIC_CHAIN here.
894         Use hack_decl_function_context.
895         (grokdeclarator): Don't set DECL_NO_STATIC_CHAIN here.
896         (start_function): Use hack_decl_function_context.
897         (finish_function): Ditto.
898         * method.c (synthesize_method): Ditto.
899         * lex.c (process_next_inline): Ditto.
900         (do_pending_inlines): Ditto.
901         * decl2.c (finish_file): Unset DECL_STATIC_FUNCTION_P when we're
902         done with it.
903
904 Mon Mar  4 22:38:39 1996  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
905
906         * sig.c (build_signature_pointer_or_reference_type): Align
907         signature pointers/references on 8-byte boundaries so they can be
908         grabbed 2 words at a time on a Sparc.
909
910 Tue Mar  5 10:21:01 1996  Jason Merrill  <jason@yorick.cygnus.com>
911
912         * method.c (hack_identifier): Requiring a static chain is now a
913         hard error.
914         * decl.c (grokdeclarator): Set DECL_NO_STATIC_CHAIN on nested
915         functions.
916
917 Mon Mar  4 20:03:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
918
919         * init.c (build_offset_ref): Call complete_type.
920
921         * decl.c (pop_from_top_level): Always pop previous_class_type.
922
923         * parse.y: Handle multiple decls in a for-init-statement.
924         * pt.c (tsubst_expr): Ditto.
925
926         * pt.c (tsubst): Use tsubst_expr for the second operand of an
927         ARRAY_REF.
928
929         * decl.c (maybe_push_to_top_level): Don't save previous_class_type.
930         (poplevel_class): Set it here.
931         (pop_from_top_level): Pop it here if we're returning to class scope.
932         * class.c (pushclass): Don't set it here.
933
934         * decl.c (maybe_push_to_top_level): Save current_template_parms,
935         and clear it if !pseudo.
936         (pop_from_top_level): Restore it.
937
938         * decl2.c (finish_file): Push the dummy each time we walk the list
939         of vtables.
940
941         * error.c (dump_expr): Support LOOKUP_EXPR and actually do
942         something for CAST_EXPR.
943         
944 Mon Feb 19 14:49:18 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
945
946         * cvt.c (cp_convert): Warn about implicit conversion of the
947         address of a function to bool, as it is always true.
948
949 Fri Feb 23 23:06:01 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
950
951         * typeck.c (c_expand_return): Fix warning for local externs returned.
952
953 Mon Mar  4 15:03:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
954
955         * tree.c (mapcar): Propagate const and volatile properly.
956
957         * typeck.c (complete_type): Be sure to instantiate the
958         MAIN_VARIANT of the type.
959
960         * method.c (synthesize_method): Class interface hackery does not
961         apply to synthesized methods.
962
963 Mon Mar  4 14:05:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
964
965         * pt.c (comp_template_args): Use comptypes rather than just
966         checking for TEMPLATE_TYPE_PARM equivalence.
967
968         * typeck.c (build_x_function_call): Call complete_type before
969         checking TYPE_OVERLOADS_CALL_EXPR.
970
971 Mon Mar  4 18:48:30 1996  Manfred Hollstein   <manfred@lts.sel.alcatel.de>
972
973         * g++.c (main): Check also for new define ALT_LIBM.
974
975 Fri Mar  1 13:09:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
976
977         * pt.c (instantiate_class_template): If we don't have a pattern
978         yet, that's OK.
979         (coerce_template_parms): If we see a local class, bail.
980
981         * decl.c (grok_reference_init): Make sure there's a type before
982         checking its code.
983
984         * pt.c (do_function_instantiation): Avoid crashing on invalid decls.
985         (push_template_decl): Ditto.
986
987         * parse.y (named_class_head): Set
988         CLASSTYPE_TEMPLATE_SPECIALIZATION here if we have basetypes.
989
990         * decl.c (xref_tag): Diagnose redeclaration of template
991         type-parameter name.
992
993         * error.c (dump_type): Handle anonymous template type parms.
994
995         * pt.c (instantiate_template): Use TYPE_MAIN_DECL instead of
996         TYPE_STUB_DECL.
997         (coerce_template_parms): Ditto.
998
999 Thu Feb 29 16:26:01 1996  Mike Stump  <mrs@cygnus.com>
1000
1001         * class.c (instantiate_type, case {ARRAY,INDIRECT}_REF,
1002         case ADDR_EXPR): Don't modify rhs if a subinstantiation fails.
1003
1004 Thu Feb 29 08:20:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
1005
1006         * pt.c (instantiate_template): Take the MAIN_VARIANT of the type
1007         before trying to get its STUB_DECL.
1008         (coerce_template_parms): Ditto.
1009
1010         * parse.y (template_type_parm): If they didn't use 'class',
1011         pretend they did after giving an error.
1012
1013         * pt.c (coerce_template_parms): Diagnose use of local class.
1014
1015         * decl.c (grok_reference_init): Use instantiate_type.
1016
1017         * error.c (dump_expr): Handle TEMPLATE_DECLs.
1018
1019         * parse.y (named_class_head): Diagnose mismatching types and tags.
1020
1021         * decl.c (pushdecl): Type decls and class templates clash with
1022         artificial type decls, not hide them.
1023
1024         * decl.c (redeclaration_error_message): Diagnose redefinition of
1025         templates properly.
1026         (duplicate_decls): Diagnose disallowed overloads for template
1027         functions, too.
1028
1029         * decl.c (start_decl): Call complete_type before checking for a
1030         destructor.
1031
1032         * pt.c (tsubst): Use tsubst_expr on the elts of a VEC.
1033
1034         * decl.c (xref_tag): A TEMPLATE_TYPE_PARM is a match.
1035
1036 Wed Feb 28 09:28:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
1037
1038         * decl.c (grok_op_properties): Don't check for operator++(int) in
1039         a template.
1040
1041         * tree.c (perm_manip): Return a copy of variable and function
1042         decls with external linkage.
1043
1044         * tree.def: Change some of the min tree codes to type "1".
1045         * pt.c (uses_template_parms): Handle 'e's, return 1 for LOOKUP_EXPRs.
1046         * method.c (build_overload_int): Emit something arbitrary for
1047         anything but an INTEGER_CST if we're in a template.
1048
1049         * decl.c (cp_finish_decl): Call complete_type before deciding
1050         whether or not to lay out the decl.
1051
1052         * lex.c (do_identifier): Check for DECL_INITIAL before using it.
1053
1054 Tue Feb 27 16:35:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
1055
1056         * typeck2.c (build_x_arrow): Call complete_type.
1057
1058         * pt.c (add_pending_template): Broken out.
1059         (lookup_template_class): If -fexternal-templates, call it for all
1060         the methods of implemented types.
1061         (instantiate_class_template): Instead of instantiating them here.
1062         (instantiate_decl): Handle -fexternal-templates earlier.
1063
1064 Tue Feb 27 15:51:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1065
1066         * search.c, lex.c, decl.c, class.c, cp-tree.h: Don't wrap the
1067         memoized lookup stuff inside GATHER_STATISTICS.
1068
1069 Tue Feb 27 10:38:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
1070
1071         * decl.c (start_decl): Complain about array of incomplete type
1072         here.
1073         (grokdeclarator): Not here.
1074
1075         * parse.y (template_parm): Expand full_parm inline so we can set
1076         the rule's precedence.
1077
1078         * pt.c (tsubst_expr): If we're in a template, just do tsubst_copy.
1079         (tsubst): tsubst_expr the DECL_INITIAL of FIELD_DECLs.
1080         * decl2.c (grokbitfield): Don't check for integer constant here.
1081         * class.c (finish_struct_1): Check here.
1082
1083         * decl.c (define_label): Make the min decl go on permanent_obstack.
1084
1085         * pt.c (unify): Don't handle CONST_DECLs.
1086         (uses_template_parms): Don't check DECL_INITIAL on a CONST_DECL.
1087         (tsubst_copy): Ditto.
1088
1089         * lex.c (do_identifier): Do pull the DECL_INITIAL out of a
1090         CONST_DECL for a template parm.
1091
1092 Mon Feb 26 12:48:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
1093
1094         * decl.c (grokdeclarator): Complain about array of incomplete type
1095         here.
1096         (start_decl_1): Not here.
1097
1098         * pt.c (tsubst): Handle pointer-to-function declarators.
1099
1100         * method.c (hack_identifier): If pedantic, diagnose local class
1101         methods that require a static chain.
1102
1103         * decl.c (grok_op_properties): No longer static.
1104         * cp-tree.h: Declare it.
1105         * pt.c (tsubst): Call it for operators.
1106         Use tsubst_copy for TREE_VECs.
1107
1108         * parse.y (template_arg): The expr has precedence like '>'.
1109
1110 Fri Feb 23 14:51:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
1111
1112         * pt.c (coerce_template_parms): Don't coerce an expression using
1113         template parms.
1114         (uses_template_parms): Also check DECL_INITIAL in CONST_DECLs.
1115         (tsubst): Don't use build_index_2_type if the max_value uses template
1116         parms.
1117         * method.c (build_overload_int): Emit something arbitrary for an
1118         expression using template parms.
1119
1120         * parse.y (template_close_bracket): New non-terminal to catch use
1121         of '>>' instead of '> >' in template class names.
1122         (template_type): Use it.
1123         * Makefile.in (CONFLICTS): Causes one more r/r conflict.
1124
1125         * tree.def: Add CAST_EXPR.
1126         * typeck2.c (build_functional_cast): Use CAST_EXPR instead of
1127         CONVERT_EXPR for minimal_parse_mode.
1128         * typeck.c (build_c_cast): Ditto.
1129         * pt.c (tsubst_copy): Ditto.
1130         * decl2.c (build_expr_from_tree): Ditto.
1131         * error.c (dump_expr): Ditto.
1132
1133 Fri Feb 23 10:36:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1134
1135         * except.c (SetTerminate, SetUnexpected): Put back global vars.
1136         (init_exception_processing): Put back decl/init of
1137         set_unexpected_fndecl and set_terminate_fndecl, needed to get the
1138         fns from libstdc++.
1139
1140         * decl.c (struct binding_level): Delete ACCEPT_ANY bitfield.
1141         (declare_uninstantiated_type_level, uninstantiated_type_level_p):
1142         Delete unused fns.
1143         * cp-tree.h (declare_uninstantiated_type_level,
1144         uninstantiated_type_level_p): Delete prototypes.
1145
1146 Thu Feb 22 19:36:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
1147
1148         * pt.c (tsubst_expr): Add default return.
1149
1150 Thu Feb 22 16:47:24 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1151
1152         * error.c (fndecl_as_string): Delete unused arg CNAME.
1153         * sig.c (build_signature_table_constructor,
1154         build_signature_method_call): Fix calls.
1155
1156         * class.c (the_null_vtable_entry): Delete var definition.
1157         (init_class_processing): Delete tree the_null_vtable_entry init.
1158         * decl.c (no_print_{functions, builtins}): Declare as static.
1159         (__tp_desc_type_node): #if 0 var definition.
1160         (init_type_desc): #if 0 init of __tp_desc_type_node.
1161         (vb_off_identifier): Move var decl into init_decl_processing.
1162         (current_function_assigns_this): Declare as static.
1163         (int_ftype_ptr_ptr_int, void_ftype_ptr_int_int): Delete var decls.
1164         (init_decl_processing): Delete init of void_ftype_ptr_ptr_int.
1165         Move decls of string_ftype_ptr_ptr and int_ftype_string_string here.
1166         * decl2.c (delete_sanity): Delete definition/mod of local var ELT_SIZE.
1167         * init.c (BI_header_type, BI_header_size): Declare as static.
1168         * pt.c (template_classes): Delete unused var.
1169         (add_pending_template): Delete decl for non-existent fn.
1170         (lookup_template_class): Delete vars CODE and TAG_CODE.
1171         (instantiate_template): Delete unused var TARGS.
1172         * cp-tree.h (vb_off_identifier, current_function_assigns_this):
1173         Delete decls.
1174         (__tp_desc_type_node): #if 0 var decl.
1175         (fndecl_as_string): Fix prototype.
1176
1177 Thu Feb 22 15:56:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
1178
1179         * tree.def: Add GOTO_STMT.
1180         * pt.c (tsubst_expr): Support goto and labels.
1181         * decl.c (define_label): Support minimal parsing.
1182         * parse.y (simple_stmt): Ditto.
1183
1184 Thu Feb 22 15:30:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1185
1186         * xref.c (GNU_xref_member): Only define/set var I if
1187         XREF_SHORT_MEMBER_NAMES is defined, to match when it's actually
1188         used.
1189         (GNU_xref_end_scope): Delete unused fifth arg TRNS.
1190         (GNU_xref_end): Fix call.
1191         * decl.c (poplevel, poplevel_class, finish_method): Fix calls.
1192         * cp-tree.h (GNU_xref_end_scope): Fix prototype.
1193
1194         * tree.c (build_exception_variant): Delete unused vars I, A, T,
1195         T2, and CNAME.
1196         (layout_vbasetypes): Delete unused var NONVIRTUAL_VAR_SIZE.
1197         (mapcar): Delete unused var CODE.
1198         (build_cplus_new): Delete unused arg WITH_CLEANUP_P.
1199         (break_out_cleanups): Fix call.
1200         (bot_manip): Likewise.
1201         * call.c (build_method_call): Likewise.
1202         * cvt.c (build_up_reference, convert_to_reference, cp_convert):
1203         Likewise.
1204         * typeck.c (unary_complex_lvalue, build_modify_expr,
1205         convert_for_initialization): Likewise.
1206         * typeck2.c (build_functional_cast): Likewise.
1207         * cp-tree.h (build_cplus_new): Fix prototype.
1208
1209         * repo.c (open_repo_file): Delete unused var Q.
1210         (repo_compile_flags, repo_template_declared,
1211         repo_template_defined, repo_class_defined, repo_inline_used,
1212         repo_vtable_used, repo_tinfo_used): #if 0 unused fns.
1213         (repo_get_id, repo_vtable_used): Declare as static. 
1214         * cp-tree.h (mark_{decl,class}_instantiated, finish_repo): Add
1215         prototypes.
1216
1217 Thu Feb 22 14:53:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
1218
1219         * parse.y (pending_inlines): Add function_try_block case.
1220
1221         * pt.c (unify): Fix for template const parms.
1222
1223 Thu Feb 22 13:24:15 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1224
1225         * lex.c (extract_interface_info): Delete forward decl.
1226         (default_copy_constructor_body, default_assign_ref_body): Delete
1227         decls for non-existent functions.
1228         (synth_firstobj, inline_text_firstobjs): Delete unused vars.
1229         (init_lex): Delete setting them.
1230         (cons_up_default_function): Delete unused vars FUNC_BUF,
1231         FUNC_LEN, and COMPLEX.  Delete code setting COMPLEX.  Delete old
1232         #if 0'd synth code.
1233         (toplevel, expression_obstack): Delete unused extern decls.
1234         (tree_node_kind): Delete unused enum.
1235         (tree_node_counts, tree_node_sizes): Wrap with #ifdef
1236         GATHER_STATISTICS.
1237         (tree_node_kind_names): Delete unused extern decl.
1238         (synth_obstack): Delete unused var.
1239         (init_lex): Don't set it.
1240         (init_parse): Add decl before use.
1241         (reduce_count): Only define #ifdef GATHER_STATISTICS && REDUCE_LENGTH.
1242         (current_unit_{name, language}): Delete unused vars. 
1243         (check_newline): Don't bother setting them, just accept the #pragma.
1244         * cp-tree.h (init_repo, peek_yylex): Add prototypes.
1245         (current_unit_{name, language}): Delete decls.
1246
1247         * search.c: Wrap all of the memoized functions, macros, and
1248         variables inside #ifdef GATHER_STATISTICS.
1249         (lookup_field, lookup_fnfields): Likewise.
1250         (init_search_processing): Likewise.
1251         (reinit_search_statistics): Wrap whole function.
1252         * lex.c (reinit_lang_specific): Wrap call to reinit_search_statistics.
1253
1254         * decl.c (finish_function): Only call pop_memoized_context if
1255         GATHER_STATISTICS is defined.
1256         (start_function): Likewise for push_memoized_context.
1257         * class.c (pushclass, popclass): Likewise.
1258
1259         * cp-tree.h (CLASSTYPE_MTABLE_ENTRY): Move definition from here...
1260         * search.c (CLASSTYPE_MTABLE_ENTRY): ... to here.
1261
1262         * cvt.c (cp_convert): Delete unused local var FORM.
1263         * cp-tree.h (can_convert, can_convert_arg, real_lvalue_p): Add
1264         prototypes.
1265
1266 Thu Feb 22 13:19:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
1267
1268         * pt.c (do_poplevel): Oops; really return what we get from
1269         poplevel this time.
1270
1271 Thu Feb 22 11:41:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1272
1273         * cp-tree.h (is_aggr_type): Add prototype.
1274
1275         * cp-tree.h ({push,pop}_cp_function_context): Add decls.
1276         * method.c ({push,pop}_cp_function_context): Delete decls.
1277         * except.c (start_eh_unwinder, end_eh_unwinder): Declare as void.
1278         (SetUnexpected, SetTerminate): Delete unused vars.
1279         (init_exception_processing): Don't set SetUnexpected or
1280         SetTerminate.  Don't set SET_UNEXPECTED_FNDECL or SET_TERMINATE_FNDECL.
1281         (output_exception_table_entry): Delete unused array LABEL.
1282         (expand_internal_throw): Delete unused var PARAMS.
1283         (expand_start_catch_block): Delete unused var CLEANUP.
1284         (emit_exception_table): Delete unused var EH_NODE_DECL.
1285         (expand_builtin_throw): Delete unused vars UNWIND_AND_THROW and
1286         GOTO_UNWIND_AND_THROW.  Don't set them.
1287         (end_eh_unwinder): Add top decl.
1288         (pop_rtl_from_perm): Delete unused decl of PERMANENT_OBSTACK.
1289         (exception_section, push_rtl_perm, do_function_call,
1290         lang_interim_eh, push_eh_cleanup, eh_outer_context,
1291         expand_end_eh_spec, end_eh_unwinder): Declare as static.
1292         (saved_pc, saved_throw_type, saved_throw_value, saved_cleanup,
1293         throw_used): Likewise.
1294         * cp-tree.h (expand_end_eh_spec): Delete prototype.
1295
1296         * search.c (dfs_mark, dfs_mark_vtable_path,
1297         dfs_unmark_vtable_path, dfs_mark_new_vtable,
1298         dfs_unmark_new_vtable, dfs_clear_search_slot,
1299         dfs_search_slot_nonempty_p, bfs_markedp, bfs_unmarkedp,
1300         bfs_marked_vtable_pathp, bfs_unmarked_vtable_pathp,
1301         bfs_marked_new_vtablep, bfs_unmarked_new_vtablep): #if 0 unused
1302         functions.
1303         (n_fields_searched, n_calls_lookup_field, n_calls_lookup_field_1,
1304         n_calls_lookup_fnfields, n_calls_lookup_fnfields_1,
1305         n_calls_get_base_type, n_outer_fields_searched, n_contexts_saved):
1306         Only define #ifdef GATHER_STATISTICS.
1307         (reinit_search_statistics): Only init some vars if GATHER_STATISTICS
1308         is defined.
1309         (vbase_decl): Delete var definition.
1310         (init_search): Delete old decl.
1311         (init_vbase_pointers): Delete building of VBASE_DECL, since it's
1312         never actually used.
1313         (expand_indirect_vtbls_init): Delete init of VBASE_DECL.
1314         (get_base_distance_recursive): Delete unused fourth arg
1315         BASETYPE_PATH.  Fix call .
1316         (get_base_distance): Fix call.
1317         (push_class_decls): Delete unused var ID.
1318         (make_memoized_table_entry): Declare as static.
1319         (breadth_first_search): Declare as static.
1320         (tree_has_any_destructor_p): Declare as static.
1321         (pop_class_decls): Delete unused arg pop_class_decls.
1322         * class.c (popclass): Fix call to pop_class_decls.
1323         * cp-tree.h (make_memoized_table_entry, breadth_first_search,
1324         tree_has_any_destructor_p): Delete prototypes.
1325
1326         * rtti.c (build_ptmf_desc): Delete unused arg TYPE.
1327         (build_t_desc): Fix call.  Delete unused vars ELEMS and TT.
1328         (build_dynamic_cast): Delete unused local vars TMP1 and RETVAL.
1329         (build_user_desc): Delete unused var T.
1330         (build_class_desc): Delete unused vars T and OFF.
1331         (build_t_desc): Delete unused var NAME_STRING.
1332         (build_headof): Make static.
1333         (get_bad_cast_node): Likewise.
1334         (get_def_to_follow): Likewise.
1335         * cp-tree.h (init_type_desc): Add prototype.
1336         (build_headof): Remove prototype.
1337
1338 Thu Feb 22 00:54:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
1339
1340         * pt.c (tsubst): Only look for matching decls at file scope for
1341         non-member functions.
1342
1343         * call.c (build_scoped_method_call): Handle scoped destructor
1344         calls in templates.
1345
1346         * decl.c (*_top_level): Also save previous_class_values.
1347
1348         * pt.c (tsubst_expr): Support do {} while loops.
1349         * parse.y (simple_stmt): Ditto.
1350         * tree.def: Ditto.
1351
1352         * method.c (build_overload_identifier): For a class nested in a
1353         template class, don't mangle in the template parms from our
1354         context.
1355
1356         * lex.c, cp-tree.h: Remove support for template instantiations in
1357         the pending_inlines code.
1358         * pt.c: Remove dead functions and unused arguments.
1359         (uses_template_parms): TYPENAME_TYPEs always use template parms.
1360         * parse.y: Stop passing anything to end_template_decl.
1361         * tree.c (print_lang_statistics): Only print tinst info #ifdef
1362         GATHER_STATISTICS.
1363
1364 Wed Feb 21 16:57:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1365
1366         * init.c (expand_recursive_init{,_1}): Delete decls. 
1367         (sort_member_init): Delete unused var INIT.
1368         (emit_base_init): Delete unused var X.
1369         (build_offset_ref): Delete unused var CNAME.
1370         (sort_member_init): Delete unused var FIELDS_TO_UNMARK.
1371         (emit_base_init): Delete unused local var BASE.  Delete extern
1372         decl of IN_CHARGE_IDENTIFIER.
1373         (build_delete): Delete unused local var VIRTUAL_SIZE.
1374
1375         * init.c (build_vec_delete): Delete unused third arg ELT_SIZE.
1376         (build_delete): Fix call.
1377         * decl2.c (delete_sanity): Likewise.
1378         * cp-tree.h (build_vec_delete): Update prototype.
1379
1380         * typeck.c (common_base_type): Delete unused var TMP.
1381         (build_binary_op): Delete local var ARGS_SAVE.
1382         (build_array_ref): Delete unused var ITYPE.
1383         (c_expand_return): Delete unused var USE_TEMP.
1384
1385         * typeck.c (compexcepttypes): Delete unused arg STRICT.
1386         (comptypes): Fix calls.
1387         * decl.c (duplicate_decls): Likewise.
1388         * cp-tree.h (compexcepttypes): Delete extra arg.
1389
1390         * decl2.c (check_classfn): Delete unused second arg CNAME.
1391         * decl.c (start_decl, grokfndecl): Fix calls.
1392         * init.c (do_friend): Likewise.
1393         * cp-tree.h (check_classfn): Update prototype.
1394
1395         * cp-tree.h (signature_error, import_export_vtable,
1396         append_signature_fields, id_in_current_class, mark_used,
1397         copy_assignment_arg_p): Add decls.
1398         * decl2.c (mark_used): Delete decl.
1399
1400         * class.c (n_*): Wrap with #ifdef GATHER_STATISTICS.
1401
1402         * class.c (get_vtable_entry): Diable unused function.
1403         (doing_hard_virtuals): Delete unused static global var.
1404         (finish_struct_1): Don't init DOING_HARD_VIRTUALS.
1405         (prepare_fresh_vtable): Delete unused vars PATH and RESULT.
1406         (overrides): Delete unused vars RETTYPE and BASE_RETTYPE.
1407         (modify_one_vtable): Delete unused var OLD_RTTI.
1408         (finish_struct_anon): Delete unused vars OFFSET and X.
1409         (finish_struct_bits): Delete unused var METHOD_VEC.
1410         (get_basefndecls): Delete unused var PURPOSE.  Delete unused
1411         for-scope local variable METHODS.
1412
1413         * call.c (user_harshness): Delete unused/unneeded arg PARM.
1414         (ideal_candidate): Delete unused args BASETYPE and PARMS.
1415         (build_method_call): Delete unused args passed into ideal_candidate.
1416         (build_overload_call_real): Likewise.  Delete unused var OVERLOAD_NAME.
1417         * cp-tree.h (synthesize_method): Add decl.
1418
1419         * decl.c (note_level_for_for): Give void return type.
1420         (pushdecl_nonclass_level): Likewise.
1421         (finish_function): Delete unused vars VFIELDS and ALLOCATED_THIS.
1422         (poplevel): Delete unused var IMPLICIT_TRY_BLOCK.
1423         (suspend_binding_level): Delete unused var LEVEL.
1424         (duplicate_decls): Delete unused var CTYPE.
1425         (duplicate_decls): Delete unused var PREVIOUS_C_DECL.
1426         (init_decl_processing): Delete unused vars FLOAT_ENDLINK and
1427         PTR_ENDLINK.
1428         (grokdeclarator): Delete unused var C.
1429         (grokdeclarator): Delete unused var SIZE_VARIES.
1430         (grokparms): Delete unused var SAW_VOID.
1431         (start_function): Delete unused var OLDDECL.
1432         (cplus_expand_expr_stmt): Delete unused var
1433         REMOVE_IMPLICIT_IMMEDIATELY. 
1434
1435         * cp-tree.h (pushdecl_nonclass_level): Fix prototype.
1436
1437         * Makefile.in (CONFLICTS): Update to 12 shift/reduce.
1438
1439 Wed Feb 21 00:06:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
1440
1441         * tree.c (build_min): Set TREE_COMPLEXITY to lineno.
1442         (build_min_nt): Ditto.
1443         * pt.c (do_pushlevel): Emit line note.
1444         (do_poplevel): Return what we get from poplevel.
1445         (tsubst_expr): Set lineno from TREE_COMPLEXITY in stmt nodes.
1446         * parse.y: Use do_pushlevel and do_poplevel.
1447         * cp-tree.h: Declare do_poplevel.
1448         
1449         * cp-tree.h: Declare at_eof.
1450         * decl.c (cp_finish_decl): Pass it to rest_of_decl_compilation.
1451         * decl2.c (import_export_decl): Renamed from import_export_inline.
1452         (finish_file): Call it to do interface handling for statics.
1453         * pt.c (tsubst_copy): Call mark_used on variables and functions
1454         used here.
1455
1456         * decl2.c (finish_file): Don't emit statics we can't generate.
1457         * pt.c (instantiate_decl): Don't set interface on instantiations
1458         we can't generate.
1459
1460         * cp-tree.h (struct tinst_level): Change 'classname' to 'decl'.
1461         * tree.c (print_lang_statistics): Print max template depth.
1462         * pt.c (push_tinst_level): Dump entire instantiation context.
1463         (instantiate_class_template): Use it and pop_tinst_level.
1464         (instantiate_decl): Ditto.
1465
1466         * call.c class.c cp-tree.h decl.c decl2.c error.c lex.c method.c
1467         pt.c ptree.c tree.def: Remove all traces of UNINSTANTIATED_P_TYPE.
1468
1469 Tue Feb 20 18:21:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
1470
1471         * call.c class.c cp-tree.h cvt.c decl.c decl2.c error.c expr.c
1472         init.c lex.c method.c parse.y pt.c repo.c search.c spew.c tree.c
1473         tree.def typeck.c typeck2.c xref.c: Massive, systemic changes for
1474         the new template implementation.
1475
1476 Tue Feb 20 17:14:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1477
1478         * decl2.c (check_cp_case_value): Use STRIP_TYPE_NOPS.
1479
1480 Thu Feb 15 18:44:42 1996  Mike Stump  <mrs@cygnus.com>
1481
1482         * decl.c (cp_finish_decl): Delay emitting the debug information for
1483         a typedef that has been installed as the canonical typedef, if the
1484         type has not yet been defined.
1485
1486 Thu Feb 15 09:39:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
1487
1488         * decl2.c (grokfield): Still call pop_nested_class for access decls.
1489
1490 Wed Feb 14 17:30:04 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1491
1492         * decl.c (lookup_label): Call label_rtx.
1493
1494         * decl.c (make_binding_level): New function.
1495         (pushlevel, pushlevel_class): Call it instead of explicit
1496         duplicate calls to xmalloc.
1497
1498         * decl.c (init_decl_processing): Delete useless build_pointer_type
1499         call.
1500
1501         * decl.c (float_ftype_float, ldouble_ftype_ldouble): Add definitions.
1502         (sizet_ftype_string): Delete variable.
1503         (init_decl_processing): Add built-in functions fabsf, fabsl,
1504         sqrtf, sqrtl, sinf, sin, sinl, cosf, cos, cosl.  New local
1505         variable strlen_ftype, used for strlen.
1506
1507 Wed Feb 14 16:21:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
1508
1509         * decl.c (push_to_top_level): Start from current_binding_level
1510         again for now; the stl hacks depend on g++ being broken in this
1511         way, and it'll be fixed in the template rewrite.
1512
1513         * tree.def: Add USING_DECL.
1514         * decl2.c (do_class_using_decl): Implement.
1515         (grokfield): Pass access decls off to do_class_using_decl instead of
1516         grokdeclarator.
1517         * error.c (dump_decl): Handle USING_DECLs.
1518         * decl.c (grokdeclarator): Remove code for handling access decls.
1519         * class.c (finish_struct_1): Adjust accordingly, treat using-decls
1520         as access decls for now.
1521         (finish_struct): Don't check USING_DECLs for other uses of the name.
1522
1523         * search.c (get_matching_virtual): Use cp_error_at.
1524
1525 Wed Feb 14 10:36:58 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1526
1527         * typeck.c (comptypes): Default COMP_TYPE_ATTRIBUTES to 1, to
1528         match c-typeck.c.
1529         (self_promoting_args_p): Move the check that TYPE is non-nil
1530         before trying to look at its main variant.
1531         (unsigned_type, signed_type): Add checking of DI/SI/HI/QI nodes.
1532
1533         * cp-tree.h (DECL_WAITING_FRIENDS, SET_DECL_WAITING_FRIENDS):
1534         Delete macros.
1535         * init.c (xref_friend, embrace_waiting_friends): Delete functions.
1536         (do_friend): Delete call to xref_friend.
1537         * class.c (finish_struct_1): Delete call to embrace_waiting_friends.
1538
1539         * typeck.c (convert_sequence): #if 0 unused function.
1540
1541         * cp-tree.h (DECL_IN_MEMORY_P): New macro w/ the check that used to
1542         be in decl_in_memory_p.
1543         (decl_in_memory_p): Delete decl.
1544         * expr.c (decl_in_memory_p): Delete fn.
1545         * typeck.c (mark_addressable): Use DECL_IN_MEMORY_P.
1546
1547         * decl.c (cp_finish_decl): Use DECL_IN_MEMORY_P.
1548
1549 Tue Feb 13 12:51:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
1550
1551         * class.c (finish_struct_1): Check for a pure-specifier on a
1552         non-virtual function here.
1553
1554         * decl2.c (grok_function_init): Don't check whether the function
1555         is virtual here.
1556         (grokfield): Don't call check_for_override here.
1557
1558         * decl.c (push_to_top_level): Start from inner_binding_level,
1559         check class_shadowed in class levels.
1560
1561 Mon Feb 12 17:46:59 1996  Mike Stump  <mrs@cygnus.com>
1562
1563         * decl.c (resume_level): Ignore things that don't have names, instead
1564         of core dumping.
1565
1566 Mon Feb 12 15:47:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1567
1568         * decl2.c (grokfield): Set DECL_VINDEX properly for FUNCTION_DECLs.
1569
1570 Sat Feb 10 17:59:45 1996  Jason Merrill  <jason@yorick.cygnus.com>
1571
1572         * class.c (finish_struct_1): Set DECL_VINDEX properly on a
1573         synthesized dtor.
1574
1575         * parse.y (complete_type_name): Bind global_scope earlier.
1576         (complex_type_name): Ditto.
1577         (qualified_type_name): Remove.
1578
1579 Thu Feb  8 15:15:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
1580
1581         * decl.c (grokfndecl): Move code that looks for virtuals in base
1582         classes...
1583         * class.c (check_for_override): ... to a new function.
1584         (finish_struct_1): Call it.
1585
1586         * cp-tree.h: Declare warn_sign_compare.
1587
1588         * typeck.c (build_binary_op_nodefault): Check warn_sign_compare
1589         rather than extra_warnings to decide whether to warn about
1590         comparison of signed and unsigned.
1591
1592         * decl2.c (lang_decode_option): Handle warn_sign_compare.  -Wall
1593         implies -Wsign-compare.  -Wall doesn't imply -W.
1594
1595 Wed Feb  7 15:27:57 1996  Mike Stump  <mrs@cygnus.com>
1596
1597         * typeck.c (build_component_ref): Fix to handle anon unions in base
1598         classes as well.
1599
1600 Wed Feb  7 14:29:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1601
1602         * class.c (resolves_to_fixed_type_p): Delete code dealing with
1603         a WITH_CLEANUP_EXPR, since we don't generate them any more.
1604         * cvt.c (build_up_reference): Likewise.
1605         * decl.c (grok_reference_init): Likewise.
1606         (cp_finish_decl): Likewise.
1607         * error.c (dump_expr): Likewise.
1608         * tree.c (real_lvalue_p): Likewise.
1609         (lvalue_p): Likewise.
1610         (build_cplus_new): Likewise.
1611         (unsave_expr_now): Likewise.
1612         * typeck.c (unary_complex_lvalue, build_modify_expr,
1613         c_expand_return): Likewise.
1614
1615 Tue Feb  6 13:39:22 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1616
1617         Make the C++ front-end pay attention to attributes for structures.
1618         * class.c (finish_struct): New argument ATTRIBUTES, passed down into
1619         finish_struct_1.
1620         (finish_struct_1): New argument ATTRIBUTES; call cplus_decl_attributes.
1621         Take out old round_up_size use and setting the DECL_ALIGN possibly
1622         using it.  Take out setting of TYPE_ALIGN to round_up_size, which
1623         can override what the attribute set.
1624         * cp-tree.h (finish_struct): Update prototype.
1625         * parse.y (template_instantiate_once): Pass a NULL_TREE for the
1626         attributes to finish_struct.
1627         (structsp): For a CLASS decl, add maybe_attribute to rule and pass that
1628         value down into finish_struct.
1629         * Makefile.in (CONFLICTS): Switch to 7 shift/reduce conflicts.
1630
1631 Tue Feb  6 13:12:15 1996  Per Bothner  <bothner@kalessin.cygnus.com>
1632
1633         * decl.c (poplevel):  Re-word dead for local handling.
1634         (pushdecl):  Remove useless DECL_DEAD_FOR_LOCAL test.
1635         (cp_finish_decl):  If is_for_scope, check for duplicates so
1636         we can disable is_for_scope.  Otherwise, preserve_temp_slots.
1637
1638         * lex.c (do_identifier):  Use global binding in preference of
1639         dead for local variable.
1640
1641 Mon Feb  5 17:46:46 1996  Mike Stump  <mrs@cygnus.com>
1642
1643         * init.c (initializing_context): Handle anon union changes, the
1644         context where fields of anon unions can be initialized now has to be
1645         found by walking up the TYPE_CONTEXT chain.
1646
1647 Fri Feb  2 14:54:04 1996  Doug Evans  <dje@charmed.cygnus.com>
1648
1649         * decl.c (start_decl): #ifdef out code to set DECL_COMMON
1650         if ASM_OUTPUT{,_ALIGNED}_BSS is defined.
1651         (obscure_complex_init): If bss is supported, always set
1652         DECL_INITIAL to error_mark_node.
1653
1654 Thu Feb  1 16:19:56 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1655
1656         * init.c (is_friend): Make sure there's a context before we see if
1657         it's an aggr type.
1658
1659 Thu Feb  1 15:44:53 1996  Mike Stump  <mrs@cygnus.com>
1660
1661         * init.c (is_friend): Classes are not friendly with nested classes.
1662
1663 Thu Feb  1 15:27:37 1996  Doug Evans  <dje@charmed.cygnus.com>
1664
1665         * lex.c (check_newline): Pass last character read to HANDLE_PRAGMA,
1666         and record its result.
1667
1668 Thu Feb  1 09:27:01 1996  Mike Stump  <mrs@cygnus.com>
1669
1670         * class.c (finish_struct_anon): Switch around code to not move anon
1671         union elements around, nor mess up their contexts, nor offsets,
1672         instead we now build up the right number of COMPONENT_REFs for all
1673         the anon unions that may be present at build_component_ref time.
1674         * typeck.c (lookup_anon_field): New routine to handle field lookup
1675         on fields without names.  We find them, based upon their unique type
1676         instead.
1677         * typeck.c (build_component_ref): Allow FIELD_DECL components.
1678         Handle finding components in anonymous unions, and ensure that a
1679         COMPONENT_REF is built for each level as necessary.
1680
1681 Tue Jan 30 18:18:23 1996  Mike Stump  <mrs@cygnus.com>
1682
1683         * cvt.c (build_up_reference): Make the INDIRECT_BIND case come after
1684         code that ensures that copy ctors are used if appropriate.
1685
1686 Tue Jan 30 17:35:14 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1687
1688         * init.c (build_vec_delete): Only give an error if base isn't an
1689         error_mark_node.
1690
1691 Mon Jan 29 17:09:06 1996  Mike Stump  <mrs@cygnus.com>
1692
1693         * spew.c (do_aggr): `new struct S;' isn't a forward declaration.
1694         (yylex): If we see `new', keep slurping.
1695
1696 Thu Jan 25 18:31:36 1996  Mike Stump  <mrs@cygnus.com>
1697
1698         * class.c (finish_struct_1): Move code for handling anon unions...
1699         (finish_struct_anon): to here.  Fixup so that we do the offset
1700         calculations right, and so that the fields are physically moved to
1701         the containers's chain.
1702
1703 Thu Jan 25 18:27:37 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1704
1705         * decl.c (grokdeclarator): Avoid trying to get an operand off an
1706         identifier node.
1707
1708 Wed Jan 24 11:25:30 1996  Jim Wilson  <wilson@chestnut.cygnus.com>
1709
1710         * typeck.c (pointer_int_sum): Use TYPE_PRECISION (sizetype) not
1711         POINTER_SIZE to agree with expr.c.
1712
1713 Thu Jan 25 13:01:23 1996  Mike Stump  <mrs@cygnus.com>
1714
1715         * search.c (lookup_field): Don't report ambiguities if protect is 0,
1716         instead return NULL_TREE.
1717
1718 Wed Jan 24 13:01:26 1996  Mike Stump  <mrs@cygnus.com>
1719
1720         * class.c (finish_struct_1): Call warn_hidden if we want warnings
1721         about overloaded virtual functions.
1722         (warn_hidden): New routine to warn of virtual functions that are
1723         hidden by other virtual functions, that are not overridden.
1724         (get_basefndecls): New routine, used by warn_hidden.
1725         (mark_overriders): New routine, used by warn_hidden.
1726         * search.c (get_matching_virtual): Remove old warning that just
1727         isn't very useful.
1728
1729 Tue Jan 23 12:26:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1730
1731         * decl.c (output_builtin_tdesc_entries): #if 0 the function definition.
1732
1733         * typeck.c (null_ptr_cst_p): Delete unused fn.
1734         (build_function_call_maybe): Delete unused fn.
1735
1736         * expr.c (extract_init): #if 0 the code after unconditional return 0
1737         for now.
1738
1739         Delete old cadillac code.
1740         * edsel.c: Remove file.
1741         * Make-lang.in (CXX_SRCS): Take edsel.c off the list.
1742         * Makefile.in (CXX_OBJS): Delete edsel.o.
1743         (edsel.o): Delete rule.
1744         * cp-tree.h (flag_cadillac): Delete var decl.
1745         * lang-options.h: Delete "-fcadillac" and "-fno-cadillac".
1746         * decl2.c (flag_cadillac): Delete var definition.
1747         (lang_decode_option): Delete handling of -fcadillac and -fno-cadillac.
1748         (grokfield): Delete code depending on flag_cadillac.
1749         (finish_anon_union): Likewise.
1750         * class.c (finish_struct_1): Likewise.
1751         (pushclass): Likewise.
1752         (popclass): Likewise.
1753         (push_lang_context): Likewise.
1754         (pop_lang_context): Likewise.
1755         * decl.c (init_decl_processing): Likewise.
1756         (start_decl): Likewise.
1757         (cp_finish_decl): Likewise.
1758         (xref_tag): Likewise.
1759         (finish_enum): Likewise.
1760         (start_function): Likewise.
1761         (finish_function): Likewise.
1762         (finish_stmt): Likewise.
1763         * lex.c (lang_init): Likewise.
1764         (check_newline): Likewise.
1765
1766         * lex.c (do_pending_inlines): Delete synthesized method kludge.
1767
1768         Delete defunct, ancient garbage collection implementation.
1769         * rtti.c: New file with the RTTI stuff from gc.c.
1770         * gc.c: Removed file (moved the remaining stuff into rtti.c).
1771         * Makefile.in (CXX_OBJS): Replace gc.o with rtti.o.
1772         (rtti.o): New rule, replacing gc.o.
1773         * Make-lang.in (CXX_SRCS): Replace gc.c with rtti.c.
1774         * cp-tree.h: Delete gc-related fn decls.
1775         (DECL_GC_OFFSET): Delete macro.
1776         (flag_gc): Delete extern decl.
1777         * decl.c (current_function_obstack_index): Delete var decl.
1778         (current_function_obstack_usage): Delete var decl.
1779         (start_function): Delete clearing of current_function_obstack_index
1780         and current_function_obstack_usage.
1781         (init_decl_processing): Delete code relying on -fgc.
1782         Delete call to init_gc_processing.
1783         (cp_finish_decl): Delete calls to build_static_gc_entry and
1784         type_needs_gc_entry.  Delete gc code setting DECL_GC_OFFSET.
1785         (store_parm_decls): Delete -fgc calls to cp_expand_decl_cleanup
1786         and to expand_expr of a __gc_main call.
1787         (maybe_gc_cleanup): Delete var decl.
1788         (finish_function): Delete call to expand_gc_prologue_and_epilogue.
1789         * decl2.c (flag_gc): Delete var decl.
1790         (lang_f_options): Delete offering of -fgc.
1791         (lang_decode_option): Delete -fgc and -fno-gc handling.
1792         (get_temp_regvar): Delete gc code.
1793         * init.c (build_new): Delete gc code.
1794         * lex.c (init_lex): Delete checking of flag_gc.
1795
1796         * typeck.c (convert_arguments): Delete gc code.
1797         (build_component_addr): Delete -fgc warning.
1798         (build_modify_expr): Delete gc code.
1799
1800         * decl2.c (build_push_scope): Delete fn.
1801         * cp-tree.h (build_push_scope): Delete decl.
1802
1803         * search.c (clear_search_slots): Delete fn.
1804         * cp-tree.h (clear_search_slots): Delete decl.
1805
1806         * search.c (tree_needs_constructor_p): Delete fn.
1807         * cp-tree.h (tree_needs_constructor_p): Delete decl.
1808
1809         * tree.c (id_cmp): Delete fn.
1810
1811         * tree.c (set_fnaddr_from_vtable_entry): Delete fn.
1812         * cp-tree.h (set_fnaddr_from_vtable_entry): Delete decl.
1813
1814         * tree.c (decl_value_member): Delete fn.
1815         * cp-tree.h (decl_value_member): Delete decl.
1816
1817         * tree.c (list_hash_lookup_or_cons): Delete fn.
1818         * cp-tree.h (list_hash_lookup_or_cons): Delete decl.
1819
1820         * method.c (cplus_exception_name): Delete fn.
1821         (EXCEPTION_NAME_{PREFIX, LENGTH}): Delete macros.
1822
1823         * spew.c (shift_tokens): Delete fn.
1824
1825 Mon Jan 22 17:49:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
1826
1827         * except.c (init_exception_processing): Pass 1 to needs_pop in calls
1828         to cp_finish_decl.
1829         * parse.y: Ditto.
1830
1831 Mon Jan 22 17:34:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1832
1833         * tree.c (build_cplus_staticfn_type): Delete function definition;
1834         never used.
1835         * cp-tree.h (build_cplus_staticfn_type): Delete decl.
1836
1837         * tree.c (virtual_member): Delete function definition; never used.
1838         * cp-tree.h (virtual_member): Delete decl.
1839
1840 Fri Jan 19 18:03:14 1996  Mike Stump  <mrs@cygnus.com>
1841
1842         * typeck.c (build_component_ref): Handle getting vbase pointers
1843         out of complex multiple inheritance better.
1844
1845 Fri Jan 19 16:27:40 1996  Mike Stump  <mrs@cygnus.com>
1846
1847         * typeck.c (build_object_ref): Make sure we use the real type, not
1848         any reference type.
1849
1850 Fri Jan 19 16:01:47 1996  Mike Stump  <mrs@cygnus.com>
1851
1852         * tree.c (build_exception_variant): Don't create new types if we
1853         don't have to, also build new types on the right obstack.
1854
1855 Fri Jan 19 14:09:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
1856
1857         * decl.c (store_bindings): Split out from push_to_top_level.
1858         (push_to_top_level): Call it for b->type_shadowed on class binding
1859         levels.
1860
1861 Fri Jan 19 13:53:14 1996  Mike Stump  <mrs@cygnus.com>
1862
1863         * search.c (expand_upcast_fixups): Fix so that offsets stored in
1864         vbase_offsets are always right.  Fixes a problem where virtual base
1865         upcasting and downcasting could be wrong during conversions on this
1866         during virtual function dispatch at ctor/dtor time when dynamic
1867         vtable fixups for deltas are needed.  This only sounds easier than
1868         it is.  :-)
1869         (fixup_virtual_upcast_offsets): Change to reflect new calling
1870         convention for expand_upcast_fixups.
1871
1872 Fri Jan 19 12:23:08 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1873
1874         * decl2.c (grokbitfield): Strip the NOPs from WIDTH before we
1875         check that it's usable as the bitfield width.
1876
1877 Wed Jan 17 21:22:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1878
1879         * decl2.c (grokfield): Call cplus_decl_attributes with the attrlist.
1880         Pass a null tree to grokdeclarator for its ATTRLIST arg, since it's
1881         only ever used for functions in it.
1882
1883 Wed Jan 17 12:10:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
1884
1885         * parse.y (qualified_type_name): Use the TYPE_DECL, not the type.
1886         (nested_type): Ditto.
1887         (nested_name_specifier): Use lastiddecl.
1888
1889         * decl.c (grokdeclarator): Adjust accordingly.
1890         * init.c (expand_member_init): Ditto.
1891         * parse.y (base_class): Ditto.
1892         * typeck2.c (build_functional_cast): Ditto.
1893
1894         * typeck2.c (build_functional_cast): Fill in name after we've
1895         checked for non-aggr type.
1896
1897 Wed Jan 17 10:18:01 1996  Mike Stump  <mrs@cygnus.com>
1898
1899         * decl2.c (warn_pointer_arith): Default to on.
1900
1901 Tue Jan 16 12:45:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
1902
1903         * lex.c (is_rid): New function.
1904         * decl.c (grokdeclarator): Diagnose reserved words used as
1905         declarator-ids.
1906
1907 Tue Jan 16 11:39:40 1996  Jason Merrill  <jason@yorick.cygnus.com>
1908
1909         * tree.c (get_decl_list): Don't lose cv-quals.
1910
1911         * decl.c (grokdeclarator): Fix SCOPE_REF handling and diagnose
1912         typespecs used as declarator-ids.
1913
1914 Tue Jan 16 11:09:42 1996  Mike Stump  <mrs@cygnus.com>
1915
1916         * decl.c (poplevel): When poping a level, don't give a warning for
1917         any subblocks that already exist.
1918
1919 Tue Jan 16 00:25:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
1920
1921         * typeck.c (build_object_ref): Finish what I started.
1922
1923         * parse.y (qualified_type_name): Don't check TYPE_BUILT_IN.
1924
1925         * decl2.c (constructor_name_full): Handle TEMPLATE_TYPE_PARMs.
1926
1927         * decl.c (grokdeclarator): Also accept TEMPLATE_TYPE_PARM as a
1928         scope.
1929
1930 Mon Jan 15 16:19:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
1931
1932         * decl.c (xref_tag): Handle passing a type in directly.
1933
1934         * parse.y (qualified_type_name): Pull out the type.
1935         (nested_type): Ditto.
1936         Take types directly instead of as identifiers.
1937         * call.c (build_scoped_method_call): Take types directly instead of
1938         as identifiers.
1939         * decl.c (xref_basetypes): Ditto.
1940         * init.c (expand_member_init): Ditto.
1941         (build_member_call): Ditto.
1942         (build_offset_ref): Ditto.
1943         * typeck2.c (build_scoped_ref): Ditto, remove bogus code.
1944         * method.c (do_build_assign_ref): Ditto.
1945         * decl.c (grokdeclarator): Handle a type appearing as the
1946         declarator-id for constructors.
1947         * method.c (do_build_copy_constructor): current_base_init_list now
1948         uses the types directly, not their names.
1949         * init.c (sort_base_init): Ditto.
1950         (expand_member_init): Ditto.
1951         * init.c (is_aggr_type): New function, like is_aggr_typedef.
1952
1953 Mon Jan 15 08:45:01 1996  Jeffrey A Law  (law@cygnus.com)
1954
1955         * tree.c (layout_basetypes): Call build_lang_field_decl instead
1956         of build_lang_decl if first arg is a FIELD_DECL.
1957         (tree_copy_lang_decl_for_deferred_output): Reverse test for when
1958         to copy DECL_MAIN_VARIANT and DECL_CHAIN.
1959
1960 Thu Jan 11 14:55:07 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1961
1962         * decl.c (cp_finish_decl): Only clear TREE_USED if DECL_NAME is
1963         non-empty.
1964         * except.c (expand_start_catch_block): Set TREE_USED to avoid
1965         warnings about the catch handler.
1966
1967 Mon Jan  8 17:35:12 1996  Jason Merrill  <jason@yorick.cygnus.com>
1968
1969         * typeck.c (build_modify_expr): Use a COMPOUND_EXPR instead of
1970         expand_target_expr.
1971
1972 Thu Jan  4 12:30:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
1973
1974         Fix access control to use trees rather than integers.
1975         * class.c (access_{default, public, protected, private,
1976         default_virtual, public_virtual, private_virtual}_node): Add
1977         definitions.
1978         (init_class_processing): Do creation of those nodes.
1979         * cp-tree.h (access_type): Delete enum decl.
1980         (access_{default, public, protected, private, default_virtual,
1981         public_virtual, private_virtual}_node): Add decls.
1982         (compute_access): Change return type.
1983         * search.c (compute_access): Have tree return type, instead of enum.
1984         (lookup_field): Declare THIS_V and NEW_V to be tree nodes.
1985         * lex.c (real_yylex): Use yylval.ttype for giving the value of the
1986         access_* node for each of RID_{PUBLIC, PRIVATE, PROTECTED}.
1987         * parse.y (VISSPEC): Make ttype rather than itype.
1988         (base_class_access_list): Likewise.
1989         * *.[cy]: Change all refs of `access_public' to `access_public_node',
1990         etc.
1991         * call.c (build_method_call): Make ACCESS be a tree.
1992         * class.c (alter_access, finish_struct_1, filter_struct): Likewise.
1993         * cvt.c (convert_to_aggr): Likewise.
1994         * init.c (build_offset_ref, resolve_offset_ref, build_delete):
1995         Likewise.
1996         * method.c (hack_identifier): Likewise.
1997         * typeck.c (build_component_ref_1, build_component_ref): ): Likewise.
1998
1999 Thu Jan  4 11:02:20 1996  Mike Stump  <mrs@cygnus.com>
2000
2001         * typeck.c (pointer_int_sum, pointer_diff): Make code agree with C
2002         frontend, and make it more consistent with respect to
2003         warn_pointer_arith.
2004
2005 Tue Jan  2 00:13:38 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
2006
2007         * decl.c (pushdecl): Check for duplicate parameter names.
2008
2009 Wed Jan  3 09:25:48 1996  Mike Stump  <mrs@cygnus.com>
2010
2011         * decl.c (expand_static_init): Call assemble_external for atexit.
2012
2013 Wed Jan  3 07:55:19 1996  Mike Stump  <mrs@cygnus.com>
2014
2015         * except.c (do_unwind): Remove some generated dead code.
2016         (eh_outer_context): New routine, factor out some common code from
2017         expand_builtin_throw and end_eh_unwinder.  Add code to do return
2018         address masking for the PA.
2019         (expand_builtin_throw): Use eh_outer_context instead of open coding
2020         it here.
2021         (end_eh_unwinder): Ditto.
2022
2023 Tue Jan  2 17:00:56 1996  Mike Stump  <mrs@cygnus.com>
2024
2025         * except.c (expand_throw): Call assemble_external for __empty, if we
2026         use it.
2027
2028 Thu Dec 28 11:13:15 1995  Mike Stump  <mrs@cygnus.com>
2029
2030         * except.c (expand_builtin_throw): Use RETURN_ADDR_OFFSET instead of
2031         NORMAL_RETURN_ADDR_OFFSET.
2032         (end_eh_unwinder): Ditto.
2033
2034 Wed Dec 27 22:18:16 1995  Mike Stump  <mrs@cygnus.com>
2035
2036         * gc.c (build_dynamic_cast): Make sure we don't cast away const
2037         when dealing with references, and make sure we handle dynamic
2038         casting to a cv qualified reference.
2039
2040 Thu Dec 21 23:50:35 1995  Mike Stump  <mrs@cygnus.com>
2041
2042         * except.c (struct eh_context): New structure top hold eh context
2043         information.
2044         (push_eh_context): New routine.
2045         (pop_eh_context): Ditto.
2046         * decl.c (push_cp_function_context): Use them.
2047         (pop_cp_function_context): Ditto.
2048
2049 Wed Dec 20 12:42:51 1995  Jason Merrill  <jason@yorick.cygnus.com>
2050
2051         * decl2.c (finish_file): Also prune uninteresting functions in the
2052         inline emission loop.
2053
2054 Wed Dec 20 02:32:07 1995  Jeffrey A Law  (law@cygnus.com)
2055
2056         * sig.c (build_signature_table_constructor): Mark functions
2057         in the signature as referenced.
2058
2059 Tue Dec 19 22:36:56 1995  Jason Merrill  <jason@yorick.cygnus.com>
2060
2061         * decl2.c (finish_file): Do all the vtable/synthesis stuff before
2062         the inline emission stuff.
2063
2064 Mon Dec 18 15:51:33 1995  Jason Merrill  <jason@yorick.cygnus.com>
2065
2066         * cp-tree.h, decl2.c (flag_weak): New flag to control the use of
2067         weak symbols.   
2068         * lang-options.h: Add -f{no-,}weak.
2069         * decl.c (init_decl_processing): If the target does not support weak
2070         symbols, don't use them.
2071         * decl2.c, pt.c: s/SUPPORTS_WEAK/flag_weak/.
2072
2073 Sun Dec 17 21:13:23 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
2074
2075         * init.c (expand_member_init): warning for base init after members.
2076
2077 Sun Dec 17 22:06:56 1995  Jeffrey A Law  (law@cygnus.com)
2078
2079         * tree.c (tree_copy_lang_decl_for_deferred_output): Handle
2080         CONST_DECLs correctly.
2081
2082 Fri Dec 15 15:32:18 1995  Jason Merrill  <jason@yorick.cygnus.com>
2083
2084         * cvt.c (build_expr_type_conversion): Don't convert to a reference
2085         type.
2086
2087 Thu Dec 14 16:05:58 1995  Mike Stump  <mrs@cygnus.com>
2088
2089         * method.c (report_type_mismatch): Improve wording for volatile
2090         mismatches.
2091
2092 Thu Dec 14 14:16:26 1995  Mike Stump  <mrs@cygnus.com>
2093
2094         * init.c (expand_aggr_init_1): Use expand_aggr_init_1 instead of
2095         expand_assignment, as the later doesn't handle things that have
2096         copy constructors well.  The compiler would do bitwise copying,
2097         instead of ctor calling in some cases.
2098
2099 Wed Dec 13 17:05:54 PST 1995  Paul Eggert  <eggert@twinsun.com>
2100
2101         * g++.c (my_strerror): Return "cannot access" if errno is 0.
2102         (pfatal_with_name, perror_exec): Don't assume that
2103         the returned value from my_strerror contains no '%'s.
2104         (concat): Remove.
2105         (sys_nerror): Declare only if HAVE_STRERROR is not defined.
2106
2107 Wed Dec 13 16:22:38 1995  Jason Merrill  <jason@yorick.cygnus.com>
2108
2109         Lose CLASSTYPE_METHODS/DECL_NEXT_METHOD chain; make
2110         TYPE_METHODS/TREE_CHAIN mean what they used to. 
2111         * decl2.c (constructor_name_full): Refer to CLASSTYPE_METHOD_VEC
2112         instead of TYPE_METHODS.
2113         * decl.c (duplicate_decls): Lose references to DECL_NEXT_METHOD.
2114         * tree.c (tree_copy_lang_decl_for_deferred_output): Ditto.
2115         * cp-tree.h (CLASSTYPE_METHODS): Lose.
2116         (CLASSTYPE_METHOD_VEC): Point to lang_spec->methods instead of
2117         TYPE_METHODS.
2118         (struct lang_decl): Lose next_method field.
2119         (DECL_NEXT_METHOD): Lose.
2120         * class.c (finish_struct_methods): Don't mess with TYPE_METHODS.
2121         (finish_struct): Just use TYPE_METHODS; we don't need fn_fields
2122         anymore.
2123         (finish_struct_methods): Don't mess with the TREE_CHAINs in
2124         fn_fields.
2125
2126         * search.c (add_conversions): Don't use TREE_CHAIN to traverse method
2127         vector.
2128
2129         * call.c (build_method_call): Synthesize here even when not inlining.
2130         * typeck.c (build_function_call_real): Ditto.
2131
2132 Wed Dec 13 15:02:39 1995  Ian Lance Taylor  <ian@cygnus.com>
2133
2134         * cp/lex.c (check_newline): If DBX_DEBUGGING_INFO and write_symbols
2135         == DBX_DEBUG, call dbxout_start_new_source_file and
2136         dbxout_resume_previous_source_file when appropriate.
2137
2138 Tue Dec 12 20:38:55 1995  Mike Stump  <mrs@cygnus.com>
2139
2140         * except.c (start_anon_func): Push to the top level.
2141         (end_anon_func): Pop from the top level.
2142
2143 Mon Dec 11 18:56:14 1995  Mike Stump  <mrs@cygnus.com>
2144
2145         * cp-tree.h (build_cleanup): New routine to build cleanups.
2146         * decl.c (expand_static_init): Use build_cleanup to build a cleanup
2147         call at ctor time and use atexit to run it later.
2148         * decl2.c (build_cleanup): New routine, taken from finish_file.
2149         (finish_file): Use build_cleanup instead, and don't put function
2150         local statics in global dtor list.
2151         
2152 Wed Dec  6 14:34:29 1995  Mike Stump  <mrs@cygnus.com>
2153
2154         * except.c (expand_throw): Ensure that we have cleanups, if we try
2155         and expand cleanups.
2156
2157 Wed Dec  6 11:48:21 1995  Mike Stump  <mrs@cygnus.com>
2158
2159         * except.c (expand_throw): Add logic to manage dynamic cleanups for
2160         the EH object.
2161         (expand_end_catch_block): Use the magic of expand_goto, instead of
2162         emit_jump so that we get the cleanup for any catch clause parameter
2163         and the cleanup for the exception object.  Update to reflect label
2164         changes.
2165         (push_eh_cleanup): New routine to register a cleanup for an
2166         exception object.
2167         (empty_fndecl): Used to default cleanup actions to
2168         nothing.
2169         (init_exception_processing): Setup empty_fndecl.  Setup
2170         saved_cleanup.
2171         (expand_start_catch_block): Update to reflect label changes.  Call
2172         push_eh_object to register the cleanup for the EH object.
2173         (start_anon_func): New routine to start building lambda expressions
2174         from trees.
2175         (end_anon_func): New routine to end them.
2176         (struct labelNode): Change so that we can use tree labels, or rtx
2177         labels.
2178         (saved_cleanup): Object to check for dynamic cleanups for the
2179         exception handling object.
2180         (push_label_entry): Change so that we can use tree labels, or rtx
2181         labels.
2182         (pop_label_entry): Ditto.
2183         (top_label_entry): Ditto.
2184         (expand_start_all_catch): Use tree label instead of rtx label, so
2185         that we can get the magic of expand_goto.
2186         (expand_end_all_catch): Update to reflect label changes.
2187
2188         * class.c (build_vfn_ref): Remove building_cleanup logic, as we now
2189         use UNSAVE_EXPRs.
2190         typeck.c (get_member_function_from_ptrfunc): Remove remnants of
2191         building_cleanup logic, as we now use UNSAVE_EXPRs.
2192         * cp-tree.h (unsave_expr): Declare it.
2193         * decl.c (building_cleanup): Remove.
2194         (maybe_build_cleanup): Remove building_cleanup logic, and use
2195         UNSAVE_EXPR instead.
2196
2197 Sun Dec  3 01:34:58 1995  Mike Stump  <mrs@cygnus.com>
2198
2199         * gc.c (build_t_desc): Update error message to say <typeinfo>.
2200
2201 Thu Nov 30 12:30:05 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2202
2203         * decl.c (pushdecl): Only warn about shadowing a local variable if
2204         warn_shadow is true.
2205
2206 Sun Nov 26 16:06:55 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
2207
2208         * typeck.c (build_binary_op_nodefault): Added warning about
2209         comparisons between different enum types with -Wall, unless
2210         -fenum-int-equiv set.
2211
2212 Wed Nov 22 15:44:02 1995  Mike Stump  <mrs@cygnus.com>
2213
2214         * class.c (finish_struct_1): Skip down to the inner type in
2215         multidimensional arrays.  Ensures ctors will be made for types that
2216         need constructing.
2217
2218 Wed Nov 22 14:19:22 1995  Mike Stump  <mrs@cygnus.com>
2219
2220         * decl.c (last_dtor_insn): New to track the last compiler generated
2221         insn in a dtor.
2222         (store_parm_decls): Set it.
2223         (finish_function): Use it to see if the dtor is empty.  Avoid doing
2224         vtable setup all the time, if we can.
2225         (struct cp_function): Add last_dtor_insn.
2226         (push_cp_function_context): Save it.
2227         (pop_cp_function_context): Restore it.
2228
2229 Wed Nov 22 11:52:19 1995  Paul Russell  <Rusty.Russell@adelaide.maptek.com.au>
2230
2231         * typeck.c (build_unary_op): Set TREE_NO_UNUSED_WARNING to avoid
2232         warnings.
2233
2234 Tue Nov 21 17:15:23 1995  Mike Stump  <mrs@cygnus.com>
2235
2236         * typeck.c (expand_target_expr): Make sure targets get put into the
2237         current temp_slot_level, so that the free_temp_slots call will reuse
2238         them.
2239
2240 Tue Nov 21 13:32:03 1995  Mike Stump  <mrs@cygnus.com>
2241
2242         * class.c (finish_struct_1): Delay delta fixups for virtual bases
2243         until after we have done the hard virtuals, to avoid a bogus `every
2244         virtual function must have a unique final overrider' for virtual
2245         functions that are only overridden by hard virtuals.
2246
2247 Thu Nov  9 13:35:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
2248
2249         * pt.c (do_function_instantiation): Don't try to find a file-scope
2250         template for a member function.
2251
2252 Tue Nov 14 06:20:35 1995  Mike Stump  <mrs@cygnus.com>
2253
2254         * g++.c (main): Add handling of -nodefaultlibs.
2255
2256 Mon Nov 13 15:45:34 1995  Mike Stump  <mrs@cygnus.com>
2257
2258         * cp-tree.h (INDIRECT_BIND): Add a way for the frontend to
2259         distinguish between direct bindings of reference variables, and
2260         indirect bindings of reference variables.
2261         * cvt.c (build_up_reference): Use it.
2262         * typeck.c (convert_arguments): Use it to indicate this is an
2263         indirect binding.
2264         * decl.c (cp_finish_decl): Ensure that we reuse stack slots as fast
2265         as they are unused.
2266         (expand_static_init): Diotto.
2267         (cplus_expand_expr_stmt): Ditto.
2268         * decl2.c (finish_file): Ditto.
2269         * init.c (perform_member_init): Ditto.
2270         (emit_base_init): Ditto.
2271         (expand_aggr_vbase_init_1): Ditto.
2272
2273 Fri Nov 10 09:19:31 1995  Jeffrey A Law  (law@cygnus.com)
2274
2275         * tree.c (tree_copy_lang_decl_for_deferred_output): Handle
2276         copying of DECL_ARGUMENTS field.
2277         (tree_copy_lang_type_for_deferred_output): Handle disgusting
2278         re-use of TYPE_LANG_SPECIFIC for pointer to member function
2279         type nodes.
2280
2281 Fri Nov 10 09:18:09 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2282
2283         * decl.c (push_namespace): Rewrite to use build_lang_decl, so we
2284         get a DECL_LANG_SPECIFIC node.
2285         * cp-tree.h (lang_decl_flags): Add new member `level'.
2286         (NAMESPACE_LEVEL): Don't use decl.arguments, instead use the
2287         decl_flags level member.
2288
2289 Mon Nov  6 18:36:13 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2290
2291         * call.c (build_method_call): Make sure instance has a
2292         TYPE_LANG_SPECIFIC node before we dive into it.  
2293
2294 Sat Nov  4 20:01:52 1995  Jason Molenda  (crash@phydeaux.cygnus.com)
2295
2296         * method.c (make_thunk): use TREE_SET_CODE to set thunk's tree code.
2297
2298 Thu Nov  2 17:56:57 1995  Mike Stump  <mrs@cygnus.com>
2299
2300         * decl.c (duplicate_decls): When smashing decls, smash staticness in
2301         the usual way.
2302
2303 Thu Nov  2 16:44:02 1995  Mike Stump  <mrs@cygnus.com>
2304
2305         * decl.c (poplevel): Handle the merging of subblocks of cleanups
2306         when finishing blocks that have already been created (usually due to
2307         the fixup goto code).  Fixes bad debugging information.
2308
2309 Wed Nov  1 12:33:53 1995  Jason Merrill  <jason@yorick.cygnus.com>
2310
2311         * method.c (hack_identifier): Don't abort when we get a TREE_LIST
2312         that's not a list of overloaded functions.
2313
2314 Wed Nov  1 11:38:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2315
2316         * decl2.c (mark_vtable_entries): Check DECL_LANG_SPECIFIC on fn
2317         before trying to use DECL_ABSTRACT_VIRTUAL_P.
2318
2319 Tue Oct 31 11:56:55 1995  Jason Merrill  <jason@yorick.cygnus.com>
2320
2321         * decl2.c (mark_used): New function for hooking into setting of
2322         TREE_USED on decls.
2323         * call.c (build_method_call): Use it.
2324         * class.c (instantiate_type): Ditto.
2325         * init.c (build_offset_ref): Ditto.  Don't call assemble_external
2326         for all like-named functions.
2327         * method.c (hack_identifier): Ditto.
2328         (emit_thunk): Don't call assemble_external.
2329         (make_thunk): Create thunk as a FUNCTION_DECL so that it
2330         gets the right mode and ENCODE_SECTION_INFO works.
2331         
2332         * parse.y: Use mark_used.  Pass operator names to do_identifier.
2333         * lex.c (do_identifier): Handle operator names.
2334
2335         * decl2.c (grokclassfn): Tweak __in_chrg attributes.
2336
2337 Thu Oct 26 20:58:59 1995  Jeffrey A Law  (law@cygnus.com)
2338
2339         * cp/tree.c (tree_copy_lang_decl_for_deferred_output): Handle
2340         FIELD_DECLs and VAR_DECLs correctly.
2341
2342 Thu Oct 26 16:45:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2343
2344         * errfn.c: Include stdio.h.
2345         (cp_sprintf): Take out decl of sprintf, and cast sprintf to errorfn*.
2346
2347 Wed Oct 25 18:58:41 1995  Mike Stump  <mrs@cygnus.com>
2348
2349         * typeck2.c (digest_init): Always convert initializers to the
2350         right type.
2351
2352 Wed Oct 25 13:25:24 1995  Mike Stump  <mrs@cygnus.com>
2353
2354         * init.c (member_init_ok_or_else): Don't allow member initializers
2355         for indirect members, as it is invalid.
2356
2357 Wed Oct 25 11:35:28 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2358
2359         * decl.c (grokdeclarator): Don't allow `friend signed ()'.
2360
2361 Fri Oct 20 10:30:59 1995  Mike Stump  <mrs@cygnus.com>
2362
2363         * parse.y (for.init.statement): Catch compound statements inside for
2364         initializations, if we're being pedantic.
2365
2366 Fri Oct 20 10:03:42 1995  Mike Stump  <mrs@cygnus.com>
2367
2368         * decl.c (lookup_tag): Return NULL_TREE if we don't find what we are
2369         looking for.
2370
2371 Thu Oct 19 14:26:10 1995  Mike Stump  <mrs@cygnus.com>
2372
2373         * error.c (dump_expr): Don't core dump when a boolean expression is
2374         used as a default argument.
2375
2376 Thu Oct 19 10:36:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
2377
2378         * class.c (finish_struct_bits): Check aggregate_value_p instead of
2379         RETURN_IN_MEMORY.
2380
2381 Wed Oct 18 18:12:32 1995  Jason Merrill  <jason@yorick.cygnus.com>
2382
2383         * class.c (finish_struct_bits): Also set TREE_ADDRESSABLE on a
2384         BLKmode type that would otherwise be returned in registers.
2385
2386 Mon Oct 16 12:32:19 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2387
2388         * g++.c (WITHLIBC): New macro.
2389         (main): Declare saw_libc.  Use WITHLIBC if `-lc' was used; set
2390         saw_libc and pass it at the end if it was set.
2391
2392 Wed Oct 11 16:30:34 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2393
2394         * parse.y (fn.def1): Call split_specs_attrs in
2395         declmods notype_declarator case.
2396
2397 Sun Nov 26 14:47:42 1995  Richard Kenner  <kenner@mole.gnu.ai.mit.edu>
2398
2399         * Version 2.7.2 released.
2400
2401 Mon Nov 20 14:05:00 1995  Mike Stump  <mrs@cygnus.com>
2402
2403         * g++.c (pfatal_with_name): Add missing third argument to concat.
2404
2405 Thu Oct 26 13:59:54 1995  Mike Stump  <mrs@cygnus.com>
2406
2407         * init.c (expand_aggr_init): Handle cv qualifiers on the object's
2408         type.
2409
2410 Sat Nov 11 08:25:55 1995  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2411
2412         * Version 2.7.1 released.
2413
2414 Thu Nov  2 17:02:47 1995  Jason Merrill  <jason@yorick.cygnus.com>
2415
2416         * call.c (convert_harshness): Handle references to arrays.
2417
2418 Fri Oct 27 14:20:21 1995  Jason Merrill  <jason@yorick.cygnus.com>
2419
2420         * typeck.c (comp_target_types): Check multi-level pointer
2421         conversions in both directions.
2422
2423 Tue Oct 17 21:39:05 1995  Jason Merrill  <jason@yorick.cygnus.com>
2424
2425         * parse.y (explicit_instantiation): Fix 'extern template' with no
2426         return type.
2427
2428 Mon Oct 16 14:35:20 1995  Jason Merrill  <jason@yorick.cygnus.com>
2429
2430         * parse.y (explicit_instantiation): Support automatic instantiation
2431         of constructors.
2432         (named_class_head_*): Support out-of-class definition of nested
2433         types.
2434
2435 Wed Oct 11 12:20:56 1995  Mike Stump  <mrs@cygnus.com>
2436
2437         * search.c (envelope_add_decl): New routine.  Fix so that
2438         methods are hidden in the same way that other members are.
2439         (dfs_pushdecls): Cleanup and move functionality out of line,
2440         into envelope_add_decl. 
2441
2442 Tue Oct 10 15:46:01 1995  Mike Stump  <mrs@cygnus.com>
2443
2444         * typeck.c (mark_addressable): Only call assemble_external if we
2445         have started the output file.
2446
2447 Tue Oct 10 11:27:18 1995  Jason Merrill  <jason@yorick.cygnus.com>
2448
2449         * decl.c (start_function): Fix earlier cv-quals change.
2450
2451 Mon Oct  9 23:53:05 1995  Mike Stump  <mrs@cygnus.com>
2452
2453         * parse.y (complex_direct_notype_declarator): Only push the class if
2454         we are not already in the class.
2455
2456 Mon Oct  9 11:22:03 1995  Doug Evans  <dje@canuck.cygnus.com>
2457
2458         * decl.c (duplicate_decls): Call merge_machine_decl_attributes.
2459         Update olddecl's attributes too.
2460         (grokdeclarator): #if 0 out call to build_decl_attribute_variant.
2461         * typeck.c (common_type): Call merge_machine_type_attributes.
2462
2463 Fri Oct  6 14:44:27 1995  Mike Stump  <mrs@cygnus.com>
2464
2465         * typeck.c (mark_addressable): Add missing call to
2466         assemble_external.
2467
2468 Wed Oct  4 22:05:23 1995  Jeff Law  (law@hurl.cygnus.com
2469
2470         * cp/decl.c (deplicate_decls): Merge in deferred output
2471         status for variables.
2472         * cp/tree.c (tree_copy_lang_decl_for_deferred_output): New
2473         function to copy the g++ specific parts of a DECL node.
2474         (tree_copy_lang_type_for_deferred_output): Similarly for
2475         TYPE nodes.
2476
2477 Wed Oct  4 15:06:39 1995  Mike Stump  <mrs@cygnus.com>
2478
2479         * decl.c (store_parm_decls): Make sure the unwinder start comes
2480         before the exception specification start.
2481         * except.c (expand_exception_blocks): Make sure the unwinder end
2482         comes after the terminate protected catch clause region and after
2483         the end of the exception specification region.
2484
2485 Wed Oct  4 12:47:02 1995  Jason Merrill  <jason@yorick.cygnus.com>
2486
2487         * lex.c (real_yylex): Fix identifier case for linemode.
2488         (handle_sysv_pragma): Don't abort when we see a pragma we don't
2489         recognize.
2490
2491 Tue Oct  3 14:09:46 1995  Mike Stump  <mrs@cygnus.com>
2492
2493         * decl.c (store_parm_decls): Add a call to start_eh_unwinder.
2494         * except.c (init_exception_processing): __throw doesn't take any
2495         arguments.
2496         (expand_builtin_throw): Ditto.  Always use Pmode, instead of SImode
2497         for all pointers.  Use expand_builtin_return_addr to unwind the
2498         first level off the stack.
2499         (do_unwind): Always use Pmode, instead of SImode for all pointers.
2500         (expand_exception_blocks): Add a call to end_eh_unwinder.
2501         (start_eh_unwinder, end_eh_unwinder): New routines to build machine
2502         independent stack unwinders for function/method calls.
2503         
2504 Mon Oct  2 17:20:42 1995  Mike Stump  <mrs@cygnus.com>
2505
2506         * tree.c (unsave_expr_now): Make sure we process the argument list
2507         of any called functions.  Fixes incorrect code generation for
2508         cleanups.
2509
2510 Mon Oct  2 13:04:16 1995  Mike Stump  <mrs@cygnus.com>
2511
2512         * typeck.c (get_member_function_from_ptrfunc): Save function if it
2513         needs it.  Cures core dump on things like (this->*(f()))().
2514
2515 Sat Sep 23 22:51:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2516
2517         * decl.c (start_function): Conform to gcc cv-quals convention (no
2518         expression has a cv-qualified type) in RESULT_DECLs.
2519         * method.c (make_thunk): Ditto.
2520
2521 Fri Sep 22 10:21:13 1995  Mike Stump  <mrs@cygnus.com>
2522
2523         * decl.c (pushtag): Add in the namespace name for the tag.
2524
2525 Thu Sep 21 13:11:13 1995  Mike Stump  <mrs@cygnus.com>
2526
2527         * parse.y (maybe_base_class_list, base_class_list, base_class,
2528         base_class_access_list): Make sure we see the typenames for base
2529         classes.
2530         * lex.c (see_typename): Instead of failing to see a typename when
2531         there is no next token, perfer a typename, and get the next token.
2532
2533 Wed Sep 20 12:35:27 1995  Michael Meissner  <meissner@cygnus.com>
2534
2535         * decl.c (init_decl_processing): Add __builtin_expect.
2536
2537 Tue Sep 19 16:48:11 1995  Mike Stump  <mrs@cygnus.com>
2538
2539         * cvt.c (cp_convert_to_pointer): Don't allow leftover conversions to
2540         or from pointer to member functions, they must all be handled before
2541         this point.
2542
2543 Fri Sep 15 17:14:47 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2544
2545         * init.c (resolve_offset_ref): Fix wording of non-static member
2546         being referenced as a static.
2547
2548 Fri Sep 15 12:39:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2549
2550         * typeck.c (build_indirect_ref): Only bash pointer if we actually
2551         call build_expr_type_conversion.
2552
2553 Thu Sep 14 18:24:56 1995  Jason Merrill  <jason@deneb.cygnus.com>
2554
2555         * cvt.c (build_expr_type_conversion): Handle conversion from
2556         reference.
2557         * typeck.c (build_indirect_ref): Avoid infinite recursion.
2558
2559 Thu Sep 14 17:23:28 1995  Mike Stump  <mrs@cygnus.com>
2560
2561         * decl.c (expand_start_early_try_stmts): New routine to start a try
2562         block at the start of the function, for function-try-blocks.
2563         * cp-tree.h (expand_start_early_try_stmts): Declare it.
2564         * parse.y (function_try_block): Use it, instead of doing it here, as
2565         we don't want to include rtl.h here, as that conflicts with RETURN
2566         in the parser.
2567
2568 Wed Sep 13 18:32:24 1995  Mike Stump  <mrs@cygnus.com>
2569
2570         * lex.c (reinit_parse_for_block): Support saving inline
2571         function-try-blocks, uses peekyylex.
2572         * parse.y (eat_saved_input): New rule, permit the parser to see that
2573         END_OF_SAVED_INPUT is ok, as it can see this when parsing the
2574         handlers of a function-try-block.
2575         (fndef): Use it.
2576         (component_decl): Make sure TRY and RETURN can come after fn.def2.
2577         * spew.c (peekyylex): New routine to peek at what will come next.
2578
2579 Wed Sep 13 16:52:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2580
2581         * typeck.c (comptypes): Tighten up comparisons of template type
2582         parms.
2583
2584         * decl.c (duplicate_decls): Turn off whining about virtual functions
2585         redeclared inline for now.
2586
2587 Wed Sep 13 11:13:40 1995  Mike Stump  <mrs@cygnus.com>
2588
2589         * decl.c (store_in_parms): New routine to put things before we
2590         put base inits.
2591         * cp-tree.h (store_in_parms): Declare it.
2592         * decl.c (store_parm_decls): Use it to makr sure the starting of the
2593         eh spec comes before base inits.
2594         (finish_function): Use sequences instead of the obsolete
2595         reorder_insns.
2596         * parse.y (fndef): Enhance readability and maintainability.  Update
2597         to include function_try_block syntax.
2598         (function_try_block): Add.
2599
2600 Tue Sep 12 17:43:07 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2601
2602         * call.c (convert_harshness): Use comptypes, not ==, to check if
2603         TYPE and PARMTYPE are equivalent on a function type.
2604
2605 Tue Sep 12 17:31:33 1995  Douglas Rupp  (drupp@cs.washington.edu)
2606
2607         * Make-lang.in (cc1plus) : Removed unnecessary $(exeext).
2608
2609 Mon Sep 11 23:24:07 1995  Mike Stump  <mrs@cygnus.com>
2610
2611         * except.c (expand_throw): Never allocate storage for thrown pointer
2612         to objects.
2613
2614 Mon Sep 11 19:36:45 1995  Mike Stump  <mrs@cygnus.com>
2615
2616         * except.c (expand_start_catch_block): Pointers to objects come
2617         back from catch matching already dereferenced, don't dereference
2618         again.
2619
2620 Mon Sep 11 15:46:28 1995  Mike Stump  <mrs@cygnus.com>
2621
2622         * except.c (expand_throw): Only decay the throw expression, don't do
2623         any default conversions.  This is so that one can throw and catch
2624         characters, and not have them match integers.
2625
2626 Mon Sep 11 13:46:45 1995  Mike Stump  <mrs@cygnus.com>
2627
2628         * error.c (dump_aggr_type): Deal with anonymous unions that don't
2629         have a TYPE_NAME.
2630
2631 Fri Sep  8 20:40:27 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2632
2633         * lex.c (handle_sysv_pragma): Deal with getting a comma from yylex.
2634
2635 Fri Sep  8 15:51:41 1995  Mike Stump  <mrs@cygnus.com>
2636
2637         * except.c (expand_end_eh_spec): Handle empty EH specifications.
2638
2639 Fri Sep  8 15:27:22 1995  Mike Stump  <mrs@cygnus.com>
2640
2641         * cp-tree.h (expand_start_eh_spec): Declare new routine.
2642         (expand_end_eh_spec): Ditto.
2643         * decl.c (store_parm_decls): Call expand_start_eh_spec to process
2644         exception specifications.
2645         * except.c (expand_leftover_cleanups): Remove unused parameter.
2646         (expand_end_catch_block): Ditto.
2647         (expand_exception_blocks): Ditto.
2648         (expand_start_eh_spec): New routine to mark the start of an
2649         exception specification region.
2650         (expand_end_eh_spec): New routine to mark the end of an exception
2651         specification region.
2652         (expand_exception_blocks): Call expand_end_eh_spec to process
2653         exception specifications.
2654
2655 Fri Sep  8 14:40:48 1995  Per Bothner  <bothner@kalessin.cygnus.com>
2656
2657         * lex.c (do_identifier):  Use global binding in preference of
2658         dead for local variable.
2659
2660 Wed Sep  6 19:32:59 1995  Mike Stump  <mrs@cygnus.com>
2661
2662         * cp-tree.h (build_exception_variant): Remove used first argument.
2663         * decl.c (duplicate_decls): Ditto.
2664         (grokfndecl): Ditto.
2665         (revert_static_member_fn): Ditto.
2666         * decl2.c (grok_method_quals): Ditto.
2667         * tree.c (build_exception_variant): Ditto.
2668         * typeck.c (common_type): Ditto.
2669         * decl2.c (grokclassfn): After changing the type, call
2670         build_exception_variant, if necessary.
2671
2672 Tue Sep  5 15:56:27 1995  Mike Stump  <mrs@cygnus.com>
2673
2674         * except.c (expand_throw): Run cleanups for the throw expression.
2675
2676 Wed Aug 30 15:24:38 1995  Stephen L. Favor  (sfavor@tigger.intecom.com)
2677
2678         * except.c (expand_builtin_throw): Moved gen_label_rtx calls beyond
2679         the store_parm_decls call which does initialization in the emit_*
2680         code concerning label numbering.
2681         
2682 Thu Aug 31 09:01:07 1995  Mike Stump  <mrs@cygnus.com>
2683
2684         * except.c (expand_internal_throw): Let the frontend be responsible
2685         for managing all frontend EH parameters, the backend routine only
2686         needs to deal with backend values.  type and value are no longer
2687         passed to __throw.
2688         (init_exception_processing): Ditto.
2689         (expand_start_all_catch): Ditto.
2690         (expand_end_all_catch): Ditto.
2691         (expand_leftover_cleanups): Ditto.
2692         (expand_end_catch_block): Ditto.
2693         (expand_builtin_throw): Ditto.
2694         (expand_throw): Ditto.
2695         
2696 Tue Aug 29 15:04:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2697
2698         * cp-tree.h (DECL_REAL_CONTEXT): Give the real declaration context
2699         for a decl.
2700         * decl.c (cp_finish_decl): Use it.
2701
2702 Tue Aug 29 10:30:27 1995  Mike Stump  <mrs@cygnus.com>
2703
2704         * except.c (expand_internal_throw): Oops, almost forgot type and
2705         value are now trees.
2706
2707 Mon Aug 28 17:57:45 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2708
2709         Fix the attribute handling to make sure they get noted before we
2710         create the function's RTL, in case they can affect that.
2711         * decl.c (grokfndecl): New arg ATTRLIST.  Run
2712         cplus_decl_attributes before creating the decl's rtl.
2713         (grokdeclarator): New arg ATTRLIST, passed down into grokfndecl.
2714         (shadow_tag, groktypename, start_decl, start_method): Pass a
2715         NULL_TREE to grokdeclarator's new last arg.
2716         * decl2.c (grokfield): New arg ATTRLIST, passed into grokdeclarator.
2717         (grokbitfield, grokoptypename): Pass a NULL_TREE to
2718         grokdeclarator's new last arg.
2719         * except.c (expand_start_catch_block): Likewise.
2720         * pt.c (process_template_parm, end_template_decl,
2721         do_function_instantiation): Likewise.
2722         * cp-tree.h (grokfield): Add arg.
2723         (grokdeclarator): Move the prototype from here...
2724         * decl.h: ...to here.
2725         * lex.c (cons_up_default_function): Pass NULL_TREE to grokfield
2726         ATTRLIST argument.
2727         * parse.y: Create a list for the grokfield arg where appropriate,
2728         and pass it down instead of calling cplus_decl_attributes.
2729
2730 Mon Aug 28 15:07:24 1995  Mike Stump  <mrs@cygnus.com>
2731
2732         * except.c: Always allow turning on exception handling.  Allow cross
2733         compilations to use EH.
2734
2735 Thu Aug 24 17:39:24 1995  Mike Stump  <mrs@cygnus.com>
2736
2737         * except.c (saved_pc, saved_throw_type, saved_throw_value): Use
2738         trees, instead of rtxs, and don't depend on using special machine
2739         dependent registers.
2740         (expand_internal_throw): Ditto.
2741         (init_exception_processing): Ditto.
2742         (expand_start_all_catch): Ditto.
2743         (expand_end_all_catch): Ditto.
2744         (expand_start_catch_block): Ditto.
2745         (expand_leftover_cleanups): Ditto.
2746         (expand_end_catch_block): Ditto.
2747         (expand_builtin_throw): Ditto.
2748         (expand_throw): Ditto.
2749
2750 Wed Aug 23 17:25:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2751
2752         * cvt.c (build_expr_type_conversion): Handle conversions to
2753         reference types.
2754
2755 Wed Aug 23 15:33:59 1995  Mike Stump  <mrs@cygnus.com>
2756
2757         * except.c (do_unwind): Work around backend bug with -fpic.
2758
2759 Tue Aug 22 17:20:07 1995  Per Bothner  <bothner@kalessin.cygnus.com>
2760
2761         * decl2.c (flag_new_for_scope):  Add a new mode that follows ANSI
2762         for-scoping, but supports (and warns about) old programs.
2763         Make the new mode (with value 1) the default.
2764         (lang_f_options):  The on-value for flag_new_for_scope is now 2.
2765         * cp-tree.h (DECL_DEAD_FOR_LOCAL, DECL_ERROR_REPORTED): New macros
2766         (DECL_SHADOWED_FOR_VAR):  Likewise.
2767         * decl.c (struct binding_level):  New fields dead_vars_from_for
2768         and is_for_scope.
2769         (note_level_for_for):  New function.
2770         (poplevel):  Special processing if is_for_scope.
2771         (pushdecl):  Warn if for-scope variable shadows local.
2772         * lex.c (do_identifier):  Handle old (non-ANSI) for scoping,
2773         and warn if conflicts.
2774         * parse.y (FOR):  Call note_level_for_for.
2775
2776 Mon Aug 21 10:28:31 1995  Jason Merrill  <jason@deneb.cygnus.com>
2777
2778         * decl2.c (import_export_inline): Class interface hackery does not
2779         apply to synthesized methods.
2780
2781 Sun Aug 20 16:29:00 1995  Mike Stump  <mrs@cygnus.com>
2782
2783         * search.c (virtual_context): Find the right context more often.
2784         Solves a `recoverable compiler error, fixups for virtual function'
2785         problem.
2786
2787 Sun Aug 20 13:53:24 1995  Mike Stump  <mrs@cygnus.com>
2788
2789         * except.c (expand_start_all_catch): Ensure that we always transfer
2790         control to the right EH handler, by rethrowing the end label on the
2791         region, instead of hoping we are nested and falling through.
2792         (expand_leftover_cleanups): Ditto.
2793         (end_protect): Since we now rethrow the end label, put a
2794         nop after it, so that outer regions are recognized.
2795         * init.c (build_vec_delete_1): New routine to handle most of vector
2796         deleting, all code moved here from build_vec_delete.
2797         (build_array_eh_cleanup): Use build_vec_delete_1 to do all the real
2798         work.
2799         (expand_vec_init): If the array needs partial destructing, setup an
2800         EH region to handle it.
2801         (build_vec_delete): Move lots of code to build_vec_delete_1, use
2802         build_vec_delete_1 to do the grunt work.
2803         
2804 Sat Aug 19 14:25:33 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2805
2806         Handle decl attributes properly for function definitions without
2807         previous attribute-loaded declarations.
2808         * decl.c (start_function): New arg ATTRS.  Add a call to
2809         cplus_decl_attributes with it before we create the RTL.
2810         * cp-tree.h (start_function): Update prototype.
2811         * parse.y (fn.def1): Pass ATTRS into start_function instead of
2812         trying to call cplus_decl_attributes too late.  Pass a NULL_TREE
2813         for other use.
2814         * decl2.c (finish_file): Pass NULL_TREE as fourth arg to
2815         start_function.
2816         * method.c (synthesize_method): Likewise.
2817         * except.c (expand_builtin_throw): Likewise for start on __throw.
2818
2819 Sat Aug 19 13:36:08 1995  Mike Stump  <mrs@cygnus.com>
2820
2821         * class.c (set_rtti_entry): Turn on -fvtable-thunk -frtti support.
2822         This changes -fvtable-thunks vtable layout, so a recompile will be
2823         necessary, if you use -fvtable-thunks.
2824         (get_vtable_entry): Use n, instead of i to be consistent with the
2825         rest of the compiler.
2826         (get_vtable_entry_n): Ditto.
2827         (add_virtual_function): Add a slot for the tdesc, if -fvtable-thunks
2828         are being used.
2829         (finish_struct_1): Ditto.
2830         (skip_rtti_stuff): New routine to collapse similar code from many
2831         different parts of the compiler.  I think I got them all.
2832         (modify_one_vtable): Use it.
2833         (fixup_vtable_deltas1): Ditto.
2834         (override_one_vtable): Ditto.
2835         * decl2.c (mark_vtable_entries): Ditto.
2836         * tree.c (debug_binfo): Ditto.
2837         * search.c (expand_upcast_fixups): Ditto.
2838         (get_abstract_virtuals_1): Ditto.  Use virtuals, instead of tmp to
2839         consistent with the rest of the compiler.
2840         (get_abstract_virtuals): Ditto.
2841         * cp-tree.h (skip_rtti_stuff): New routine, declare it.
2842         * gc.c (build_headof): Support -fvtable-thunk and -frtti together.
2843         (build_typeid): Ditto.
2844         (build_classof): Remove old style way of doing rtti.  Remove support
2845         for `classof' and `headof'.
2846         * gxx.gperf: Ditto.
2847         * hash.h: Ditto.
2848         * parse.y: Ditto.
2849
2850 Fri Aug 18 17:31:58 1995  Jason Merrill  <jason@deneb.cygnus.com>
2851
2852         * decl.c (start_function): Clear ctor_label and dtor_label.
2853
2854         * class.c (finish_struct_1): Fix handling of access decls.
2855
2856 Tue Aug 15 19:21:54 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2857
2858         * class.c (finish_struct): Only do minimal processing here, so it
2859         can be used for class template definitions, as well.
2860         (finish_struct_1): New function with the rest of the code.
2861
2862 Tue Aug 15 09:46:16 1995  Mike Stump  <mrs@cygnus.com>
2863
2864         * class.c (prepare_fresh_vtable): On second though, always build the
2865         offset (see Aug 10 change), unless -fvtable-thunks is given.  It
2866         does this by calling the new routine set_rtti_entry.
2867         (finish_struct): Ditto.
2868         (set_rtti_entry): New routine to update the rtti information at the
2869         start of the vtable.
2870
2871 Mon Aug 14 12:21:22 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
2872
2873         * error.c (dump_decl, case IDENTIFIER_NODE): Only work on a dtor
2874         if it's declared in the C++ language spec.
2875         (dump_function_decl): Likewise.
2876         (dump_function_name): Likewise.
2877         (ident_fndecl): Make sure we got something back from lookup_name.
2878         * decl.c (start_function): Likewise.
2879
2880 Fri Aug 11 16:52:15 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2881
2882         * call.c (build_method_call): Don't call build_new when calling a
2883         constructor without an instance.
2884
2885 Thu Aug 10 20:00:17 1995  Mike Stump  <mrs@cygnus.com>
2886
2887         * class.c (prepare_fresh_vtable): Always build the offset to the
2888         complete object, as it doesn't cost much.  This allows dynamic_cast
2889         to void * to work when -frtti isn't given.
2890         (finish_struct): Ditto.
2891
2892 Thu Aug 10 16:31:28 1995  Mike Stump  <mrs@cygnus.com>
2893
2894         * except.c (build_eh_type): Split out some functionality to new
2895         routine named build_eh_type_type.
2896         (build_eh_type_type): New routine.
2897         (expand_start_catch_block): Use build_eh_type_type, as we never want
2898         the dynamic type of the catch parameter, just the static type.
2899         Fixes core dumps when -frtti is used and one catchs pointers to
2900         classes.
2901
2902 Thu Aug 10 14:55:29 1995  Mike Stump  <mrs@cygnus.com>
2903
2904         * except.c (expand_builtin_throw): Since we now use normal calling
2905         conventions for __throw, we have to remove the first layer off the
2906         stack, so that the next context we search for handlers is the outer
2907         context instead of the context that had the call to __throw, if we
2908         don't immediately find the desired context.
2909
2910 Tue Aug  8 17:44:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2911
2912         * tree.c (cp_expand_decl_cleanup): Returns int, not tree.
2913         * cp-tree.h: Update.
2914
2915         * parse.y (template_type_parm): Add support for `typename'.
2916
2917 Tue Aug  8 12:06:31 1995  Mike Stump  <mrs@cygnus.com>
2918
2919         * except.c (expand_internal_throw): New internal routine to throw a
2920         value.
2921         (expand_end_all_catch, expand_leftover_cleanups): All throwers
2922         changed to use `expand_internal_throw' instead of jumping to throw
2923         label.
2924         (expand_end_catch_block, expand_throw): Ditto.
2925         (throw_label): Removed.
2926         (expand_builtin_throw): Changed so that EH parameters are passed by
2927         normal function call conventions.  Completes Aug 4th work.
2928
2929 Fri Aug  4 17:17:08 1995  Mike Stump  <mrs@cygnus.com>
2930
2931         * cp-tree.h (expand_builtin_throw): Declare it.
2932         * decl2.c (finish_file): Call expand_builtin_throw.
2933         * except.c (make_first_label): Remove.
2934         (init_exception_processing): Don't use a LABEL_REF for throw_label,
2935         instead use a SYMBOL_REF, this is so that we don't use LABEL_REFs in
2936         other functions that don't really appear in those functions.  This
2937         solves a problem where cc1plus consumed exponential amounts of
2938         memory when -Wall was used.
2939         (expand_end_all_catch, expand_leftover_cleanups,
2940         expand_end_catch_block, expand_throw): Change all uses of
2941         throw_label to match new style.
2942         (do_unwind): Rename parameter to inner_throw_label, as it is now
2943         different from throw_label.  Also, assume that our caller will wrap
2944         the passed label with a LABEL_REF, if needed.
2945         (expand_builtin_throw): Make external, change so that the generated
2946         throw is now a real function.
2947         (expand_exception_blocks): Never generate throw code inside another
2948         function.
2949
2950 Fri Aug  4 12:20:02 1995  Mike Stump  <mrs@cygnus.com>
2951
2952         * decl.c (grokdeclarator): Move checking of mutable const objects
2953         and mutable static objects down, as we might decide during parsing
2954         to unset staticp or constp (for example, when const is part of the
2955         object being pointed to).
2956
2957 Thu Aug  3 17:13:43 1995  Mike Stump  <mrs@cygnus.com>
2958
2959         * except.c (output_exception_table_entry): Enhance portability to
2960         weird machines.
2961         (emit_exception_table): Ditto.
2962
2963 Thu Aug  3 16:41:38 1995  Mike Stump  <mrs@cygnus.com>
2964
2965         * typeck.c (build_ptrmemfunc): Handle casting of pointer to
2966         non-virtual member functions.
2967
2968 Wed Aug  2 11:58:25 1995  Mike Stump  <mrs@cygnus.com>
2969
2970         * gc.c (build_typeid): Strip cv qualifiers so that const T&, T&, T
2971         and const T all match.
2972
2973 Wed Aug  2 11:25:33 1995  Mike Stump  <mrs@cygnus.com>
2974
2975         * except.c (build_eh_type): Strip cv qualifiers so that const T&,
2976         T&, T and const T all match.
2977
2978 Tue Aug  1 14:20:16 1995  Mike Stump  <mrs@cygnus.com>
2979
2980         * except.c: Fix up comments, cleanup code and eliminate exceptNode,
2981         exceptStack, exceptstack, push_except_stmts, pop_except_stmts,
2982         new_except_stack, push_last_insn, pop_last_insn, insn_save_node and
2983         InsnSave.  Also, numerous speed improvements, and correctness
2984         improvements.  Double faulting in all situations should now be
2985         handled correctly.
2986         (expand_start_all_catch): Instead of having many terminate protected
2987         regions, just have one.
2988         (expand_start_catch_block): No longer have to protect
2989         false_label_rtx, as it isn't used for EH region marking.
2990         (expand_end_catch_block): Expand out EH cleanups here by using
2991         expand_leftover_cleanups.
2992         (expand_end_all_catch): Use sequences instead of playing with insn
2993         links directly.
2994         (expand_exception_blocks): Ditto.  Also protect all catch clauses
2995         with one terminate region.
2996
2997 Mon Jul 31 13:24:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
2998
2999         * method.c (report_type_mismatch): Don't talk about an object
3000         parameter for non-methods.
3001
3002 Sun Jul 30 13:13:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3003
3004         * class.c (finish_struct): Catch private and protected members of
3005         anonymous unions here.
3006         * decl2.c (finish_anon_union): And here.
3007         * parse.y: Instead of here.
3008
3009         * errfn.c (ARGSLIST): Support passing four args.
3010         * error.c (cv_as_string): New function.
3011         (cp_printers): Add it.
3012         * call.c (build_method_call): Report 'const' at end of pseudo-decl.
3013
3014         * method.c (report_type_mismatch): Deal with a bad_arg of 0.
3015
3016         * init.c (expand_aggr_init): Handle volatile objects, too.
3017
3018 Sat Jul 29 13:42:03 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3019
3020         * decl.c (struct binding_level): Keep list of incomplete decls.
3021         (print_binding_level): Use list_length to count them.
3022         (pushdecl): Build up the list.
3023         (hack_incomplete_structures): Walk it and prune completed decls.
3024
3025 Fri Jul 28 15:26:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3026
3027         * typeck.c (comp_target_types): Don't check const and volatile for
3028         function types.
3029         (comp_ptr_ttypes_real): Ditto.
3030
3031 Thu Jul 27 15:40:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3032
3033         * typeck.c (comp_target_types): Fix.
3034
3035 Thu Jul 27 15:10:48 1995  Mike Stump  <mrs@cygnus.com>
3036
3037         * cp-tree.h (unsave_expr_now, build_unsave_expr,
3038         cp_expand_decl_cleanup): Declare new routines.
3039         * decl.c (cp_finish_decl, store_parm_decls,
3040         hack_incomplete_structures): Change all cals from
3041         expand_decl_cleanup to cp_expand_decl_cleanup.
3042         * gc.c (protect_value_from_gc): Ditto.
3043         * expr.c (cplus_expand_expr): Handle UNSAVE_EXPRs.
3044         * tree.c (unsave_expr): New routine to build an UNSAVE_EXPR.
3045         (unsave_expr_now): Backend routine used by tree expander.
3046         (cp_expand_decl_cleanup): Wrap second argument in an UNSAVE_EXPR to
3047         work around a limitation in the backend.  The backend uses the
3048         cleanups multiple times, on disjoint control flows, so we cannot
3049         pass unsaved SAVE_EXPRs to the backend.
3050         * tree.def (UNSAVE_EXPR): New tree code.
3051         * typeck.c (c_expand_return): Move goto/return code up inside
3052         conditional, as we don't always want to do this, we only want to do
3053         this when we don't otherwise finish with this control flow.
3054
3055 Thu Jul 27 10:38:43 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
3056
3057         * parse.y (typespec): Only complain about typeof if we're not
3058         getting it from a system header.
3059
3060 Thu Jul 27 10:26:23 1995  Doug Evans  <dje@canuck.cygnus.com>
3061
3062         Clean up prefix attribute handling.
3063         * parse.y (reserved_declspecs): Link prefix attributes with declspecs.
3064         (declmods): Likewise.
3065         (all rules that reference typed_declspecs and declmods): Call
3066         split_specs_attrs or strip_attrs to separate declspecs and attrs.
3067         (lang_extdef): Delete resetting of prefix_attributes.
3068         (template_def, notype_declarator rule): Use NULL_TREE for
3069         prefix_attributes.
3070         (condition): Use NULL_TREE for prefix_attributes.
3071         (setattrs): Deleted.
3072         (nomods_initdcl0): Set prefix_attributes to NULL_TREE.
3073         (component_decl): Delete resetting of prefix_attributes.
3074         (component_decl_1, notype_components rule): Use NULL_TREE for
3075         prefix_attributes.
3076         (simple_stmt): Delete resetting of prefix_attributes.
3077
3078 Mon Jul 24 13:37:53 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3079
3080         * call.c (convert_harshness): Deal with reference conversions before
3081         others.  Actually do array->pointer decay.  Call comp_target_types
3082         with pointer types rather than their targets.
3083
3084         * typeck.c (comp_target_types): Avoid assigning D const * to B *.
3085
3086 Mon Jul 24 08:54:46 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
3087
3088         * pt.c (to_be_restored): Move decl to global scope.
3089
3090 Sat Jul 22 12:22:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3091
3092         * decl.c (start_decl): Put back clearing of DECL_IN_AGGR_P.
3093
3094 Fri Jul 21 17:09:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3095
3096         * decl.c (grokdeclarator): Downgrade error about 'extern int A::i'
3097         to pedwarn.
3098
3099         * pt.c (instantiate_template): Also avoid instantiation if the
3100         function has already been declared to be a specialization.
3101
3102         * decl2.c (check_classfn): Ignore cname argument, and return the
3103         matching function.
3104
3105         * decl.c (start_decl): Handle declarations of member functions
3106         outside of the class (i.e. specialization declarations).
3107
3108 Thu Jul 20 10:34:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3109
3110         * class.c (finish_struct): Don't mess with the type of bitfields.
3111
3112         * various.c: s/TYPE_POINTER_TO/build_pointer_type/.
3113
3114 Thu Jul 20 01:43:10 1995  Mike Stump  <mrs@cygnus.com>
3115
3116         * init.c (expand_aggr_init): Assume LOOKUP_ONLYCONVERTING if init
3117         is not a parameter list (TREE_LIST).
3118         (expand_default_init): If LOOKUP_ONLYCONVERTING is set, then set
3119         LOOKUP_NO_CONVERSION so that we don't allow two-level conversions,
3120         but don't set it otherwise.
3121
3122 Wed Jul 19 20:32:01 1995  Mike Stump  <mrs@cygnus.com>
3123
3124         * init.c (expand_default_init): Don't allow two-level conversions
3125         during construction.
3126
3127 Wed Jul 19 18:06:37 1995  Mike Stump  <mrs@cygnus.com>
3128
3129         * gc.c (build_headof): The type of dyncasting to a pointer to cv
3130         void, should be pointer to cv void.
3131
3132 Wed Jul 19 17:25:43 1995  Mike Stump  <mrs@cygnus.com>
3133
3134         * gc.c (build_dynamic_cast): Allow casting in const.
3135
3136 Wed Jul 19 16:34:27 1995  Mike Stump  <mrs@cygnus.com>
3137
3138         * typeck.c (build_const_cast): If we are passed error_mark_node,
3139         return it.
3140
3141 Wed Jul 19 15:24:48 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
3142
3143         * class.c (push_nested_class): Make sure TYPE is non-nil.
3144
3145         * cvt.c (type_promotes_to): Watch for error_mark_node on the
3146         incoming TYPE.
3147
3148 Wed Jul 19 13:23:12 1995  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
3149
3150         * cp-tree.h (SIGTABLE_VT_OFF_NAME): Renamed from SIGTABLE_OFFSET_NAME.
3151         (SIGTABLE_VB_OFF_NAME): New macro.
3152         (vt_off_identifier): Renamed from offset_identifier.
3153         (vb_off_identifier): Added extern declaration.
3154
3155         * decl.c (vt_off_identifier): Renamed from offset identifier.
3156         (vb_off_identifier): New variable to hold the identifier for the
3157         sigtable field vb_off.
3158         (init_decl_processing): Initialize vb_off_identifier.
3159         Renamed vt_off_identifier from offset_identifier.
3160         * sig.c (build_signature_method_call): Renamed offset_identifier and
3161         local variable offset to vt_off_identifer and vt_off, respecitively.
3162         * sig.c (build_signature_table_constructor): Renamed offset to vt_off.
3163
3164         * decl.c (init_decl_processing): Add vb_off field to
3165         sigtable_entry_type.  Reorder fields so that pfn gets properly
3166         aligned at a 64 bit boundary on the Alpha.
3167         * sig.c (build_signature_table_constructor): Build the constructor
3168         according to the new layout.  Set the vb_off field to -1 for now.
3169
3170         * decl.c (init_decl_processing): Align sigtable_entry_type on word
3171         boundaries instead of double word boundaries to save space.
3172
3173 Tue Jul 18 16:58:37 1995  Mike Stump  <mrs@cygnus.com>
3174
3175         * cvt.c (cp_convert): Always call build_cplus_new for a ctor.
3176
3177 Tue Jul 18 14:24:53 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
3178
3179         * parse.y (opt.component_decl_list): Only forbid private/protected
3180         in anonymous unions.  We need to make this know when the type is
3181         defined for an object, to not give the error.
3182
3183 Mon Jul 17 14:22:44 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
3184
3185         * parse.y (opt.component_decl_list): Don't allow access control
3186         as private or protected for union members.
3187
3188 Sun Jul 16 14:01:00 1995  Jim Wilson  <wilson@chestnut.cygnus.com>
3189
3190         * lex.c (check_newline): For 'p' case, move goto skipline line to
3191         before end brace for 'pragma'.
3192
3193 Fri Jul  7 13:55:58 1995  Mike Stump  <mrs@cygnus.com>
3194
3195         * g++.1: Tiny updates.
3196
3197 Fri Jul  7 13:05:20 1995  Mike Stump  <mrs@cygnus.com>
3198
3199         * decl.c (cp_finish_decl): Only destruct local static variables if
3200         they are constructed, and only construct the first time control
3201         passes completely through its declaration (if not initialized with a
3202         constant-expression).
3203         (expand_static_init): Ditto.
3204
3205 Wed Jul  5 14:05:04 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
3206
3207         * typeck.c (comptypes, case OFFSET_REF): If either offset basetype
3208         is a TEMPLATE_TYPE_PARM, give a match.
3209
3210 Fri Jun 30 15:42:57 1995  Mike Stump  <mrs@cygnus.com>
3211
3212         * method.c (build_overload_value): Handle encoding of null pointer
3213         constants (or any pointer with a constant numeric value) for
3214         templates.
3215
3216 Fri Jun 30 13:45:51 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
3217
3218         * call.c (convert_harshness): Add QUAL_CODE when we're faced with
3219         const vs non-const for void conversions.
3220
3221 Fri Jun 30 10:19:52 1995  Mike Stump  <mrs@cygnus.com>
3222
3223         * except.c (expand_start_all_catch): Fix problem with finding an
3224         outer nested try block when there is no code to separate it from an
3225         inner try block.
3226
3227 Fri Jun 30 02:22:26 1995  Mike Stump  <mrs@cygnus.com>
3228
3229         * search.c (dfs_pushdecls): Consume 2 or 3 orders of magnitude less
3230         memory please when virtual bases are used.
3231
3232 Thu Jun 29 19:03:47 1995  Mike Stump  <mrs@cygnus.com>
3233
3234         * class.c (build_vbase_path): Avoid testing things that cannot be
3235         null to see if they are null.
3236         * cvt.c (convert_pointer_to_vbase): Remove code that doesn't work.
3237         * decl.c (finish_function): Pass a type into the new
3238         convert_pointer_to_vbase instead of a binfo.
3239         * search.c (convert_pointer_to_vbase): Rewritten to use get_vbase
3240         and convert_pointer_to_real.
3241         (expand_indirect_vtbls_init): Use convert_pointer_to_vbase instead
3242         of the more cryptic call to get_vbase.
3243
3244 Thu Jun 29 09:35:05 1995  Mike Stump  <mrs@cygnus.com>
3245
3246         * decl.c (BOOL_TYPE_SIZE): Fix broken SLOW_BYTE_ACCESS check.
3247
3248 Thu Jun 29 03:43:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3249
3250         * pt.c (instantiate_template): Don't strip 'this' twice.
3251
3252         * pt.c (coerce_template_parms): Allow null pointer constants.
3253
3254         * decl.c (revert_static_member_fn): But only if DECL_ARGUMENTS is
3255         set.
3256
3257 Wed Jun 28 18:39:03 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3258
3259         * decl.c (revert_static_member_fn): Also remove 'this' from
3260         DECL_ARGUMENTS.
3261         * decl2.c (check_classfn): Don't revert this function until we get a
3262         match.
3263
3264 Wed Jun 28 14:07:27 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
3265
3266         * parse.y (component_decl): Clear PREFIX_ATTRIBUTES here.
3267
3268 Wed Jun 28 11:05:13 1995  Mike Stump  <mrs@cygnus.com>
3269
3270         * decl2.c (finish_file): Handle global vector news.
3271         * init.c (build_new): Encode vector news so that later we will know
3272         how many elements there are.
3273
3274 Mon Jun 26 13:38:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3275
3276         * expr.c (cplus_expand_expr): Don't mess with temp slots.
3277
3278         * decl2.c (warn_if_unknown_interface): Don't crash if tinst_for_decl
3279         returns null.
3280
3281         * decl2.c (check_classfn): Use revert_static_member_fn.
3282         * decl.c (revert_static_member_fn): Diagnose static member functions
3283         declared const or volatile.
3284
3285         * decl2.c (grokfield): Check for missing default args here, too.
3286         (check_default_args): Function to do the checking.
3287         * decl.c (pushdecl): Use it.
3288
3289         * decl.c (pushdecl): Don't warn about shadowing a member of `this'
3290         if there is no `this'.
3291
3292 Sun Jun 25 11:34:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3293
3294         * call.c (build_method_call): Downgrade 'called before definition'
3295         to a warning, as it ought to go away after Monterey.
3296
3297 Sat Jun 24 14:18:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3298
3299         * pt.c (coerce_template_parms): Don't do extra checking on pointer
3300         to member arguments.
3301
3302         * class.c (finish_struct): const and reference members don't prevent
3303         a class from being an aggregate.
3304
3305         * class.c (finish_struct): Signatures are always aggregates.
3306
3307 Fri Jun 23 17:20:29 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3308
3309         * decl2.c (check_classfn): Improve error message.
3310
3311         * pt.c (tsubst): Handle PROMOTE_PROTOTYPES.
3312
3313 Thu Jun 22 01:50:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3314
3315         * typeck.c (comptypes): Don't ignore method quals.
3316
3317         * class.c (finish_struct): Non-abstract virtuals are always USED.
3318
3319         * decl.c (build_ptrmemfunc_type): The underlying union type isn't
3320         IS_AGGR_TYPE, either.
3321         * class.c (finish_struct): Use CLASSTYPE_NON_AGGREGATE instead.
3322         * cp-tree.h: Ditto.
3323
3324         * cp-tree.h (lang_type): Add aggregate.
3325         (CLASSTYPE_AGGREGATE): New macro.
3326         (TYPE_NON_AGGREGATE_CLASS): Ditto.
3327         * class.c (finish_struct): Determine whether a class is an
3328         aggregate.
3329         * decl.c (cp_finish_decl): Check TYPE_NON_AGGREGATE_CLASS instead of
3330         TYPE_NEEDS_CONSTRUCTING.
3331         * typeck2.c (digest_init): Check TYPE_NON_AGGREGATE_CLASS for
3332         subobjects, too.
3333
3334         * pt.c (tsubst, PARM_TYPE): Propagate DECL_ARTIFICIAL.
3335
3336         * decl.c (start_function): For pre-parsed functions, layout all of
3337         the parm decls again.
3338         (grokvardecl): TREE_PUBLIC depends on DECL_THIS_EXTERN, not
3339         DECL_EXTERNAL.
3340
3341         * pt.c (coerce_template_parms): Improve checking for invalid
3342         template parms.
3343
3344 Wed Jun 21 12:01:16 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
3345
3346         * decl.c (grokdeclarator): Forbid declaration of a static member
3347         with the same name as its enclosing class.
3348
3349 Mon Jun 19 10:28:14 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3350
3351         * decl.c (finish_function): Clear current_class_decl.
3352
3353         * typeck.c (build_conditional_expr): Use convert (boolean_type_node
3354         instead of truthvalue_conversion.
3355
3356         * class.c (finish_struct): A data member with the same name as the
3357         class doesn't suppress constructors.
3358
3359 Fri Jun 16 18:11:39 1995  Gerald Baumgartner  (gb@alexander.cs.purdue.edu)
3360
3361         * decl.c (start_function): If current_class_decl is a signature
3362         pointer, don't dereference it but set C_C_D to current_class_decl.
3363
3364 Fri Jun 16 17:06:28 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3365
3366         * decl.c (duplicate_decls): Complain about virtual functions
3367         redeclared to be inline.
3368
3369 Fri Jun 16 13:20:38 1995  Mike Stump  <mrs@cygnus.com>
3370
3371         * decl.c (get_unique_name): New routine to name unnamed namespaces.
3372         (push_namespace): Use get_unique_name for naming unnamed namespaces.
3373
3374 Thu Jun 15 15:00:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3375
3376         * parse.y: Call cplus_decl_attributes with prefix_attributes where
3377         appropriate.
3378
3379 Wed Jun 14 19:24:49 1995  Mike Stump  <mrs@cygnus.com>
3380
3381         * search.c (get_vbase): New routine to switch hierarchies from the
3382         CLASSTYPE_VBASECLASSES to the normal one.
3383         (expand_indirect_vtbls_init): Use get_vbase to figure out how we
3384         want to convert to a vbase pointer.
3385
3386 Mon Jun 12 17:50:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3387
3388         * pt.c (instantiate_class_template): Add the new instantiation to
3389         template_classes.
3390         (do_pending_expansions): Call instantiate_member_templates on all of
3391         the classes in template_classes.
3392
3393 Mon Jun 12 12:36:59 1995  Mike Stump  <mrs@cygnus.com>
3394
3395         * decl.c (complete_array_type): Fill in the TYPE_DOMAIN of our
3396         TYPE_MAIN_VARIANT if it is not filled in.
3397         * init.c (build_delete): If the TYPE_DOMAIN is not set, give an
3398         error instead of core dumping.
3399
3400 Mon Jun 12 10:41:40 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3401
3402         * call.c (can_convert): Also check for distance > 0.
3403         (can_convert_arg): Ditto.
3404         (user_harshness): Ditto.
3405
3406 Fri Jun  9 19:17:21 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3407
3408         * g++.c (MATH_LIBRARY): Provide default.
3409         (main): Always link with the math library if we link with libstdc++.
3410
3411         * decl.c (start_function): Complain about redefinition of a function
3412         even when the pending_inline version is compiled after the other
3413         version.
3414
3415 Thu Jun  8 15:44:38 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3416
3417         * gc.c (build_dynamic_cast): Build up a reference to a parameter of
3418         aggregate type.
3419
3420 Wed Jun  7 15:31:57 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3421
3422         * init.c (build_vec_delete): Resolve an offset ref before we try to
3423         use it.
3424
3425 Wed Jun  7 14:19:32 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3426
3427         * typeck.c (build_modify_expr): If the class lacks a constructor or
3428         assignment operator, return error_mark_node.
3429         (common_type): Use build_cplus_array_type.
3430
3431 Tue Jun  6 09:41:27 1995  Mike Stump  <mrs@cygnus.com>
3432
3433         * class.c (dont_allow_type_definitions): New variable set when types
3434         cannot be defined.
3435         (finish_struct): Use it.
3436         * cp-tree.h (dont_allow_type_definitions): Define it.
3437         * parse.y (primary, handler_seq): Set it.
3438
3439 Mon Jun  5 18:49:38 1995  Mike Stump  <mrs@cygnus.com>
3440
3441         * method.c (build_opfncall): Use DECL_CHAIN, not TREE_CHAIN for
3442         results from lookup_fnfields.  Always give warning/error on bad
3443         code.
3444
3445 Mon Jun  5 11:39:37 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3446
3447         * init.c (member_init_ok_or_else): Don't allow initialization of
3448         an ancestor's member from within a constructor.
3449
3450 Mon Jun  5 11:20:34 1995  Gerald Baumgartner  (gb@alexander.cs.purdue.edu)
3451
3452         * sig.c (build_signature_table_constructor): Use DECL_CONTEXT
3453         instead of DECL_CLASS_CONTEXT for calculating the vfield offset so
3454         abstract virtual functions are handled correctly.
3455
3456         * sig.c (build_signature_table_constructor): Store the correct
3457         delta in signature table entries.  It does not yet work for
3458         classes with virtual base classes as implementations of signatures.
3459         (build_signature_method_call): Add the delta to the object_ptr
3460         before generating the function call.
3461
3462         * call.c (build_method_call): Make instance_ptr the signature
3463         pointer itself instead of dereferencing the optr.
3464         * sig.c (build_signature_method_call): Dereference the optr for the
3465         direct and virtual calls.
3466
3467         * sig.c (build_signature_table_constructor): Make the tag for
3468         default implementations -1 instead of 2.
3469         (build_signature_method_call): Change the generated conditional
3470         expression correspondingly.
3471
3472         * sig.c (build_signature_pointer_constructor): Deleted the sorry
3473         message that said we can't handle multiple inheritance for
3474         implementations of signatures
3475         (build_signature_method_call): Use the offset from the sigtable
3476         entry instead of the vptr field from the signature pointer for
3477         building a virtual function call.
3478
3479         * class.c (build_vfn_ref): Deleted signature specific code, we don't
3480         call this function anymore from build_signature_method_call.
3481
3482         * cp-tree.h (SIGNATURE_VPTR_NAME): Deleted.  We use the right vptr
3483         field in the object now instead of in the signature pointer/ref. 
3484         (build_vptr_ref): Deleted extern declaration.
3485         * sig.c (build_vptr_ref): Deleted.
3486         (build_signature_pointer_or_reference_type): Deleted construction of
3487         the vptr field.
3488         (build_signature_pointer_constructor): Deleted initialization of/
3489         assignment to the vptr field.
3490
3491         * sig.c (build_signature_table_constructor): Convert the signature
3492         table entry fields to their correct types.
3493
3494         * sig.c (build_signature_table_constructor): Don't call digest_init
3495         for the fields of a sigtable entry, it's wasted time.
3496
3497         * sig.c (build_signature_table_constructor): Correctly set the
3498         offset and index fields of a sigtable entry.  Build the constructor
3499         the way digest_init does, digest_init can't handle initializing an
3500         anonymous union inside a struct.
3501         (build_signature_method_call): Use the index field instead of the
3502         delta field to get the vtable index.
3503
3504         * decl.c (init_decl_processing): Fix number of fields for building
3505         sigtable_entry_type.
3506
3507         * cp-tree.h (tag_identifier, offset_identifier): Added extern decls.
3508         (SIGTABLE_CODE_NAME): Renamed to SIGTABLE_TAG_NAME.
3509         (SIGTABLE_PFN_NAME): Deleted, we'll use VTABLE_PFN_NAME instead.
3510         * decl.c (tag_identifier, offset_identifier): New variables to
3511         hold the identifiers for the sigtable fields tag and offset.
3512         (init_decl_processing): Initialize these variables.
3513         (init_decl_processing): Use these variables to build the
3514         sigtable_entry_type structure.  Rename the code and offset fields
3515         to tag and delta, respectively; add offset and index fields. Changed
3516         types of fields from short_integer_type_node to delta_type_node.
3517         * sig.c (build_signature_table_constructor): Rename code and offset
3518         to tag and delta, respectively.
3519         (build_signature_method_call): Ditto.  Use above variables.
3520
3521 Thu Jun  1 17:03:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3522
3523         * decl.c (lookup_name_real): Don't try to look anything up in an
3524         erroneous object.
3525
3526 Fri Jun  2 10:30:14 1995  Mike Stump  <mrs@cygnus.com>
3527
3528         * method.c (build_overload_int): New routine.  Break out
3529         functionality from build_overload_value so we can reuse it.
3530         (build_overload_value): Handle pointer to member functions as value
3531         parameters for templates.
3532         (build_overload_identifier): Since template parameters are shared
3533         among all instantiations, we have to substitute in the real types
3534         in TREE_TYPE (parm).
3535         pt.c (coerce_template_parms): Ditto.
3536         (push_template_decls): Ditto.
3537         (grok_template_type): Deleted as template parameters are shared
3538         among all instantiations.
3539
3540 Wed May 31 19:10:32 1995  Mike Stump  <mrs@cygnus.com>
3541
3542         * decl.c (grokdeclarator): Always give errors on constant overflow
3543         for array indices.
3544
3545 Wed May 31 11:39:43 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3546
3547         * typeck.c (commonparms): Don't abort if simple_cst_equal returns < 0.
3548         (build_c_cast): Don't tack on a NON_LVALUE_EXPR when casting to
3549         reference type.
3550         (build_indirect_ref): Fix check for *&.
3551
3552 Fri Jun 16 06:54:03 1995  Mike Stump  <mrs@cygnus.com>
3553
3554         * Version 2.7.0 released.
3555
3556 Fri Jun 16 15:07:29 1995  Richard Kenner  (kenner@vlsi1.ultra.nyu.edu)
3557
3558         * Make-lang.in (DEMANGLER_PROG): Add LIBS.
3559
3560 Thu Jun 15 15:00:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3561
3562         * decl.c (define_function): Don't set DECL_INTERFACE_KNOWN.
3563
3564 Wed Jun  7 20:00:31 1995  Mike Stump  <mrs@cygnus.com>
3565
3566         * *.[chy]: Change all callers of finish_decl to cp_finish_decl.
3567         * decl.c (finish_decl): New routine to handle call backs from the
3568         mid end (declare_hidden_char_array).
3569
3570 Wed Jun  7 19:02:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3571
3572         * decl.c (start_function): Handle setting C_C_D here.
3573         (set_C_C_D): Removed.
3574         (struct saved_scope): Remove class_decl.
3575         (push_to_top_level): Don't save current_class_decl.
3576         (pop_from_top_level): Don't restore current_class_decl or C_C_D.
3577         (struct cp_function): Add C_C_D.
3578         (push_cp_function_context): Save C_C_D.
3579         (pop_cp_function_context): Restore C_C_D.
3580
3581 Fri Jun  2 11:05:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3582
3583         * decl.c (set_C_C_D): New function.  suspend_momentary before
3584         building C_C_D.
3585         (pop_from_top_level): Call it.
3586         (start_function): Ditto.
3587         (pop_cp_function_context): Ditto.
3588
3589         * class.c, cp-tree.h, decl.c, decl2.c, parse.y: Lose all references
3590         to current_vtable_decl, CLASSTYPE_INST_VAR and CLASSTYPE_VTBL_PTR.
3591
3592         * decl.c (push_cp_function_context): Save current_class_decl.
3593         (pop_cp_function_context): Restore current_class_decl and set C_C_D.
3594         (pop_from_top_level): Don't use CLASSTYPE_INST_VAR to set C_C_D.
3595         (start_function): Ditto.
3596
3597         * class.c (popclass): Don't mess with current_class_decl,
3598         current_vtable_decl, or C_C_D.
3599
3600 Mon May 29 12:45:10 1995  Paul Eggert  <eggert@twinsun.com>
3601
3602         * Make-lang.in (c++.mostlyclean): Remove $(DEMANGLER_PROG).
3603
3604 Wed May 24 15:55:18 1995  Richard Kenner  (kenner@vlsi1.ultra.nyu.edu)
3605
3606         * decl.c (duplicate_decls): Check simple_cst_equal result against 0.
3607         * decl2.c (finish_anon_union): Likewise.
3608         * method.c (largest_union_member): Likewise.
3609
3610 Wed May 24 14:41:11 1995  H.J. Lu  (hjl@nynexst.com)
3611
3612         * Make-lang.in (cxxmain.o): Replace single quotes with backslashes.
3613
3614 Mon May 22 17:38:48 1995  Richard Kenner  (kenner@vlsi1.ultra.nyu.edu)
3615
3616         * Make-lang.in (g++, g++-cross, cc1plus, DEMANGLER_PROG):
3617         Use $@ instead of output name so works even if have .exe.
3618         (cxxmain.o): Use cp if ln -s fails.
3619         (c++.install-man): Use $(exeext) in executable names.
3620         (c++.mostlyclean, stage[1-4]): Use $(objext) in object file names.
3621         * Makefile.in (../cc1plus): Use $(exeext) in name of executable.
3622
3623 Wed May 24 01:39:03 1995  Jason Merrill  <jason@deneb.cygnus.com>
3624
3625         * call.c (build_method_call): parms can be null, duh.
3626
3627 Tue May 23 01:32:09 1995  Jason Merrill  <jason@deneb.cygnus.com>
3628
3629         * call.c (build_method_call): If convert_arguments failed, just bail.
3630
3631 Fri May 19 10:31:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3632
3633         * cvt.c (convert_force): Pass LOOKUP_NORMAL to cp_convert.
3634
3635         * tree.c (copy_to_permanent): Oops.
3636
3637 Fri May 19 10:01:07 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
3638
3639         * cp-tree.h (break_out_target_exprs): Add decl.
3640
3641 Thu May 18 13:02:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3642
3643         * decl.c (start_function): Move *all* interface handling stuff after
3644         the pushdecl.
3645
3646         * tree.c (mapcar): Renamed from make_deep_copy and generalized.
3647         (perm_manip): Return t if permanent, otherwise 0.
3648         (copy_to_permanent): Use them.
3649         (bot_manip): Helper for break_out_target_exprs.
3650         (break_out_target_exprs): New function.  Uses mapcar.
3651
3652         * typeck.c (convert_arguments): Use it.
3653
3654         * method.c (hack_identifier): Use convert_from_reference to
3655         dereference a reference.
3656
3657 Wed May 17 17:54:54 1995  Mike Stump  <mrs@cygnus.com>
3658
3659         * call.c (convert_harshness): Move reference bashing before pointer
3660         to member bashing.
3661
3662 Wed May 17 16:57:53 1995  Mike Stump  <mrs@cygnus.com>
3663
3664         * cvt.c (convert_to_reference): Only complain, if complaints are
3665         wanted.
3666         * typeck.c (build_function_call_real): Ditto.  If LOOKUP_SPECULATIVELY
3667         is set and something won't work, return NULL_TREE.
3668         * cvt.c (cp_convert): Ditto.  Pass flags down to build_method_call.
3669         (convert): Pass LOOKUP_NORMAL to cp_convert.
3670         * typeck.c (convert_for_assignment): Ditto.
3671         (convert_force): Pass LOOKUP_COMPLAIN to cp_convert.
3672         (convert_arguments): Get out early if we get an error_mark_node.
3673         (convert_for_initialization): Use cp_convert instead of convert so
3674         that we can pass flags down.
3675         * cp-tree.h (LOOKUP_SPECULATIVELY): Added documentation.
3676
3677 Wed May 17 01:43:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3678
3679         * typeck2.c (store_init_value): Don't take the MAIN_VARIANT of the
3680         decl type.
3681
3682         * class.c (finish_struct): Don't complain about a class with no
3683         user-defined constructors but with a member that has no default
3684         constructor, as this is OK for aggregates.
3685
3686         * expr.c (cplus_expand_expr, NEW_EXPR): If this is an explicit
3687         constructor call, mark slot addressable.
3688
3689 Tue May 16 18:37:51 1995  Douglas Rupp  (drupp@cs.washington.edu)
3690
3691         * g++.c: Changed WINNT to _WIN32.
3692
3693 Tue May 16 12:40:16 1995  Jason Merrill  <jason@lisa.cygnus.com>
3694
3695         * lex.c (handle_sysv_pragma): Don't use token_buffer.
3696
3697 Tue May 16 12:05:26 1995  Mike Stump  <mrs@cygnus.com>
3698
3699         * call.c (resolve_scope_to_name): Add initial semantic support for
3700         namespaces.
3701         * class.c (finish_struct): Ditto.
3702         * cp-tree.h (NAMESPACE_LEVEL): Ditto.
3703         * cvt.c (build_up_reference, convert_to_reference): Ditto. 
3704         * decl.c (binding_level::namespace_p, suspend_binding_level): Ditto.
3705         (resume_binding_level, toplevel_bindings_p): Ditto
3706         (namespace_bindings_p, declare_namespace_level): Ditto.
3707         (resume_level, push_namespace, pop_namespace): Ditto.
3708         (pop_everything, pushtag, duplicate_decls, pushdecl): Ditto.
3709         (implicitly_declare, lookup_namespace_name, lookup_name_real): Ditto.
3710         (start_decl, make_temporary_for_reference), Ditto.
3711         (obscure_complex_init, finish_decl, expand_static_init): Ditto.
3712         (grokvardecl, grokdeclarator, parmlist_is_exprlist): Ditto.
3713         (store_parm_decls, hack_incomplete_structures): Ditto.
3714         * decl2.c (get_temp_name, finish_anon_union, current_namespace): Ditto.
3715         (push_namespace, pop_namespace, do_namespace_alias): Ditto.
3716         (do_toplevel_using_decl, do_class_using_decl): Ditto.
3717         * error.c (dump_decl): Ditto.
3718         * init.c (build_member_call, build_offset_ref): Ditto.
3719         * lex.c (identifier_type): Ditto.
3720         * parse.y (lang_extdef, using_decl, extdef, component_decl_1): Ditto.
3721         (nested_name_specifier_1): Ditto.
3722         * spew.c (yylex): Ditto.
3723         * tree.def (NAMESPACE_DECL): Ditto.
3724
3725 Tue May 16 11:55:35 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3726
3727         * decl.c (push_overloaded_decl): Return the new decl even if it
3728         can't be pushed.
3729
3730 Tue May 16 11:00:37 1995  Jason Merrill  <jason@lisa.cygnus.com>
3731
3732         * typeck.c (decay_conversion): Split out from default_conversion.
3733         (default_conversion): Call it.
3734         (build_binary_op): Ditto.
3735         (build_binary_op_nodefault): Use decay_conversion for truth ops.
3736
3737 Mon May 15 12:47:56 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3738
3739         * decl.c (warn_extern_redeclared_static): This is a pedwarn.
3740         (duplicate_decls): Always use the old decl's linkage info.  Don't
3741         play with linkage of consts.
3742         (pushdecl): Don't play with linkage of consts.
3743         (redeclaration_error_message): Don't complain about an old public
3744         decl and a new non-public decl here.
3745         (grokvardecl): Handle linkage of consts here.
3746         (grokdeclarator): An 'extern inline' is public.  Pass constp to
3747         grokvardecl.
3748         (start_function): Wait until after the pushdecl to do some linkage
3749         stuff.
3750
3751         * decl2.c (import_export_vtable): Make duplicates weak rather than
3752         static if supported.
3753         (import_export_inline): Ditto.
3754         * pt.c (do_pending_expansions): Ditto.
3755
3756         * class.c (build_vbase_path): flag_assume_nonnull_objects only
3757         affects reference conversion.
3758
3759         * init.c (emit_base_init): Build up an RTL_EXPR and add it to
3760         rtl_expr_chain.
3761         * decl.c, decl2.c: s/base_init_insns/base_init_expr/.
3762
3763 Tue May 16 07:06:28 1995  Paul Eggert  <eggert@twinsun.com>
3764
3765         * method.c (numeric_output_need_bar): Renamed from misspelling.
3766
3767         * typeck.c (build_ptrmemfunc): Fix misspellings in messages.
3768
3769 Sun May 14 10:26:22 1995  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3770
3771         * lang-options.h, lang-specs.h: New files.
3772
3773 Thu May 11 00:31:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3774
3775         * typeck.c (default_conversion): Don't check for BLKmode before
3776         pulling out the decl_constant_value.
3777
3778         * decl.c (start_function): Clear named_labels and shadowed_labels.
3779
3780         * typeck.c (build_function_call_real): Also synthesize methods here.
3781
3782 Wed May 10 00:55:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3783
3784         * decl2.c (finish_file): Synthesize exported methods before the
3785         reconsider loop.
3786
3787         * parse.y: Move declaration of flag_new_for_scope to file scope.
3788
3789 Tue May  9 19:10:33 1995  Mike Stump  <mrs@cygnus.com>
3790
3791         * decl2.c: Add flag_new_for_scope for new -ffor-scope flag.
3792         * parse.y (FOR): Conditionalize the pushing and poping of scope for
3793         the for-init-statement upon the new flag_new_for_scope.
3794         * parse.y (try_block): Simplify and use compstmt.
3795
3796 Mon May  8 12:41:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3797
3798         * decl.c (define_function): Mark function decl artificial.
3799
3800 Sun May  7 00:51:28 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3801
3802         * parse.y (simple_stmt, FOR): Put back push/pop for condition scope.
3803
3804         * decl2.c (grokclassfn): DECLs don't have cv-qualified types.
3805         * tree.c (build_cplus_method_type): Ditto.
3806
3807         * cp-tree.h (SET_DECL_ARTIFICIAL): Just set DECL_ARTIFICIAL to 1.
3808
3809         * typeck.c (build_function_call_real): If convert_arguments failed,
3810         just bail.
3811         (convert_arguments): If one of the arguments is error_mark_node,
3812         just bail.
3813
3814 Sat May  6 02:39:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3815
3816         * decl.c (duplicate_decls): Don't check DECL_NOT_REALLY_EXTERN for
3817         decls that don't include it.
3818
3819 Fri May  5 14:23:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3820
3821         * decl.c (duplicate_decls): Decls that have DECL_INTERFACE_KNOWN or
3822         DECL_NOT_REALLY_EXTERN set aren't extern decls.
3823
3824         * typeck.c (build_indirect_ref): Don't call default_conversion for a
3825         parameter of reference_type.
3826         * cvt.c (convert_from_reference): Just use build_indirect_ref.
3827
3828         * pt.c (do_type_instantiation): Only instantiate member functions
3829         that actually come from templates.
3830
3831 Fri May  5 09:46:05 1995  Mike Stump  <mrs@cygnus.com>
3832
3833         * parse.y: Generalized cleanup of poplevels, and compound statements
3834         and compound statements in try blocks.  Rewritten `for' rule so that
3835         the scope of variables declared in the for clause is shortened to
3836         span just to the end of the statement, instead of the whole
3837         containing block.
3838
3839 Fri May  5 00:37:14 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3840
3841         * call.c (convert_harshness): Handle pointers to members better.
3842
3843 Thu May  4 16:00:26 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3844
3845         * decl2.c (delete_sanity): Do access control here.
3846         * init.c (build_delete): Instead of here.
3847
3848         * Make-lang.in: Build c++filt.
3849
3850 Wed May  3 02:59:53 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3851
3852         * decl2.c (cplus_decl_attributes): If we just modified a TYPE_DECL,
3853         update our IDENTIFIER_TYPE_VALUE.
3854
3855 Fri Apr 28 07:58:41 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3856
3857         * lex.c (cons_up_default_function): Fix linkage of #pragma
3858         implemented functions.
3859
3860 Thu Apr 27 16:56:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3861
3862         * method.c (build_overload_name): Simplify and fix repeated type
3863         folding.
3864
3865         * decl.c (grokdeclarator): Prohibit pointers to void or reference
3866         members.
3867
3868 Thu Apr 27 09:49:07 1995  Mike Stump  <mrs@cygnus.com>
3869
3870         * typeck2.c (process_init_constructor): Make sure initializers are
3871         fully digested.
3872
3873 Thu Apr 27 01:11:55 1995  Jason Merrill  <jason@python.cygnus.com>
3874
3875         * lex.c (cons_up_default_function): Always defer synthesis.
3876
3877 Thu Apr 27 00:20:37 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3878
3879         * decl2.c (mark_inline_for_output): Don't play with pending_inline
3880         stuff.
3881
3882 Wed Apr 26 17:48:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3883
3884         * call.c (user_harshness): New function; like build_type_conversion,
3885         but doesn't actually build anything.
3886         (compute_conversion_costs): Use it instead of build_type_conversion.
3887
3888 Wed Apr 26 17:11:25 1995  Jason Merrill  <jason@deneb.cygnus.com>
3889
3890         * typeck.c (build_function_call_real): Improve error message for
3891         calling a non-function.
3892
3893         * method.c (hack_identifier): Lose check for calling a data member.
3894
3895 Wed Apr 26 16:59:13 1995  Mike Stump  <mrs@cygnus.com>
3896
3897         * typeck2.c (build_functional_cast): Remove very old cruft.
3898         Seems like good code is generated without it.
3899
3900 Wed Apr 26 00:47:16 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3901
3902         * method.c (do_build_assign_ref): Fix handling of anonymous unions.
3903         (do_build_copy_constructor): Ditto.
3904
3905         * parse.y (simple_stmt, SWITCH): Call {push,pop}_switch.
3906
3907         * decl.c (push_switch): New function.
3908         (pop_switch): Ditto.
3909         (define_case_label): Check for jumping over initialization.
3910
3911         * call.c (build_method_call): Check for an inline function being
3912         called before its definition has been seen.
3913         * typeck.c (build_function_call_real): Ditto.
3914
3915         * decl.c (duplicate_decls): Check for a function being redeclared
3916         inline after its address has been taken.
3917
3918         * typeck.c (build_conditional_expr): Handle related class lvalues.
3919
3920 Tue Apr 25 13:20:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3921
3922         * pt.c (do_pending_expansions): Don't expand unused templates.
3923
3924         * parse.y (component_decl): Accept a lone semicolon.
3925
3926 Tue Apr 25 00:25:56 1995  Jason Merrill  <jason@rtl.cygnus.com>
3927
3928         * call.c (build_method_call): Don't allow an RTL_EXPR to serve as the
3929         object parameter anymore.
3930
3931         * expr.c (cplus_expand_expr): Don't create RTL_EXPRs with no insns.
3932
3933 Mon Apr 24 12:35:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3934
3935         * parse.y (simple_stmt, decl case): Clear prefix_attributes.
3936         (lang_extdef): Ditto.
3937
3938         * parse.y (maybe_parmlist): New rule for use in declarators where
3939         this could either be a list of expressions or parameters.  Calls
3940         suspend_momentary before deciding which.
3941         (direct_after_type_declarator): Use it.
3942         (complex_direct_notype_declarator): Use it.
3943
3944         * pt.c (tsubst): Propagate attributes const and noreturn.
3945
3946         * typeck.c (build_modify_expr): If warn_synth, call build_opfncall
3947         before doing the default thing.
3948
3949 Thu Apr 27 21:49:36 1995  Doug Evans  <dje@cygnus.com>
3950
3951         * typeck.c (common_type): Call lookup_attribute instead of
3952         value_member.
3953
3954 Tue Apr 25 18:07:43 1995  Richard Kenner  (kenner@vlsi1.ultra.nyu.edu)
3955
3956         * Make-lang.in: Change "realclean" to "maintainer-clean".
3957
3958 Sun Apr 23 12:32:38 1995  Mike Stump  <mrs@cygnus.com>
3959
3960         * decl2.c (finish_file): Fix broken linked list handling.
3961
3962 Fri Apr 21 18:08:43 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3963
3964         * class.c (finish_base_struct): Don't set TYPE_HAS_COMPLEX_*_REF
3965         as often.
3966         (finish_struct): Ditto.
3967
3968         * various: Use TYPE_HAS_TRIVIAL_* instead of TYPE_HAS_COMPLEX_*.
3969
3970         * cp-tree.h (TYPE_HAS_TRIVIAL_INIT_REF): New macro.
3971         (TYPE_HAS_TRIVIAL_ASSIGN_REF): New macro.
3972
3973 Fri Apr 21 15:52:22 1995  Jason Merrill  <jason@python.cygnus.com>
3974
3975         * typeck.c (c_expand_return): Only expand a returned TARGET_EXPR if
3976         it is of the same type as the return value.
3977
3978 Fri Apr 21 03:01:46 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
3979
3980         * decl2.c (finish_file): Reconsider if synthesizing a method wrote
3981         out its assembly.
3982
3983         * typeck.c (convert_for_initialization): Don't call a trivial copy
3984         constructor.
3985
3986         * typeck2.c (store_init_value): Only abort if the type has a
3987         non-trivial copy constructor.
3988
3989         * typeck.c (c_expand_return): If we're returning in a register and
3990         the return value is a TARGET_EXPR, expand it.  Only do
3991         expand_aggr_init if we're returning in memory.
3992         (expand_target_expr): Function to expand a TARGET_EXPR.
3993         (build_modify_expr): Use it.
3994
3995         * tree.c (build_cplus_new): Layout the slot.
3996
3997         * expr.c (cplus_expand_expr): Use expand_call to expand the call
3998         under a NEW_EXPR, so the target is not discarded.
3999
4000 Thu Apr 20 14:59:31 1995  Mike Stump  <mrs@cygnus.com>
4001
4002         * gc.c (build_dynamic_cast): Tighten error checking.
4003
4004 Thu Apr 20 11:23:54 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4005
4006         * expr.c (cplus_expand_expr): Only abort if the returned target is
4007         different from what we expected if the type has a non-trivial copy
4008         constructor.
4009
4010         * decl2.c (cplus_decl_attributes): Attributes applied to a template
4011         really apply to the template's result.
4012
4013         * tree.c (lvalue_p): Check IS_AGGR_TYPE instead of TREE_ADDRESSABLE
4014         to decide whether to consider a CALL_EXPR an lvalue.
4015
4016         * class.c (finish_struct_bits): Only set TREE_ADDRESSABLE if the
4017         type has a non-trivial copy constructor.
4018
4019         * decl.c (start_function): If interface_known, unset
4020         DECL_NOT_REALLY_EXTERN on the function.
4021
4022 Wed Apr 19 16:53:13 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4023
4024         * pt.c (do_function_instantiation): Handle explicit instantiation of
4025         member functions.
4026         (do_type_instantiation): Handle 'inline template class foo<int>',
4027         meaning just spit out the vtable.
4028
4029         * lex.c (cons_up_default_function): Set DECL_NOT_REALLY_EXTERN on
4030         the consed functions.
4031
4032         * decl2.c (import_export_inline): Set DECL_INTERFACE_KNOWN.
4033
4034 Wed Apr 19 16:28:17 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4035
4036         * call.c, class.c, decl2.c, gc.c, init.c, parse.y, pt.c, search.c,
4037         typeck.c: Include output.h.
4038
4039 Wed Apr 19 14:57:21 1995  Gerald Baumgartner  (gb@alexander.cs.purdue.edu)
4040
4041         * call.c (build_method_call): Allow a signature member functions to
4042         be called from a default implementation.
4043
4044 Wed Apr 19 10:21:17 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4045
4046         * repo.c (finish_repo): Remember what directory we are in.
4047
4048         * search.c (expand_upcast_fixups): Don't mess with abort_fndecl.
4049
4050         * repo.c: Use obstacks instead of fixed-size buffers.  Don't spit
4051         out the second copy of the symbol name.  Don't remember COLLECT_GCC.
4052
4053 Wed Apr 19 02:32:40 1995  Mike Stump  <mrs@cygnus.com>
4054
4055         * search.c (virtual_context): New function to get the virtual
4056         context of a function.
4057         (expand_upcast_fixups): New function to generate runtime vtables.
4058         (fixup_virtual_upcast_offsets): Ditto.
4059         (expand_indirect_vtbls_init): Use fixup_virtual_upcast_offsets to
4060         ensure that the this offsets for upcasts from virtual bases into
4061         other virtual bases or non-virtual bases are correct at construction
4062         time and destruction time.
4063         * class.c (fixup_vtable_deltas): Modify to fixup all offsets in all
4064         vtables in all virtual bases, instead of just one vtable in each
4065         virtual base.
4066         (fixup_vtable_deltas1): Ditto.
4067
4068 Tue Apr 18 03:57:35 1995  Michael Meissner  (meissner@cygnus.com)
4069
4070         * Makefile.in (lex.o): Add dependency on c-pragma.h.
4071
4072         * lex.c (handle_sysv_pragma): Use NULL_PTR and NULL_TREE as
4073         appropriate, instead of 0.
4074
4075 Mon Apr 17 12:28:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4076
4077         * decl.c (pushdecl): Use decls_match, not duplicate_decls, for
4078         comparing local and global decls.
4079
4080 Fri Apr 14 01:46:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4081
4082         * typeck.c (convert_arguments): Only prohibit passing to ... of
4083         types with non-trivial copy constructors.
4084
4085         * repo.c (repo_template_used): Don't try to mess with no id.
4086
4087 Fri Apr 14 23:32:50 1995  Per Bothner  <bothner@rtl.cygnus.com>
4088
4089         * decl.c (duplicate_decls):  Use cp_warning_at for redundant-decls.
4090
4091 Thu Apr 13 15:37:42 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4092
4093         * cp-tree.h (current_tinst_level): Delete declaration, since it's
4094         static inside pt.c.
4095
4096         * typeck.c (build_modify_expr): Catch incompatible array assignment.
4097
4098         * parse.y (attribute_list, attrib): Rewrite actions to feed the
4099         right stuff to decl_attributes.
4100
4101 Thu Apr 13 11:24:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4102
4103         * search.c (dfs_debug_mark): Check for magic virtual like
4104         import_export_vtable.
4105
4106         * typeck.c (build_binary_op_nodefault): Don't call cp_pedwarn with
4107         four args.
4108
4109 Wed Apr 12 12:02:57 1995  Jason Merrill  <jason@deneb.cygnus.com>
4110
4111         * decl2.c (finish_file): Move prevtable pass before needs_messing_up
4112         decision.
4113
4114 Tue Apr 11 11:20:27 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4115
4116         * decl.c (finish_decl): If we're writing out a static data member of
4117         a class, we want the debug info for that class.
4118
4119         * gc.c (build_t_desc): Check linkage of a class properly.
4120
4121         * class.c (finish_struct): Set the 'headof' offset for the main
4122         vtable properly.
4123         (prepare_fresh_vtable): Fix typeinfo pointer here.
4124         (modify_one_vtable): Instead of here.
4125
4126 Mon Apr 10 12:15:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4127
4128         * repo.c (repo_get_id): New function to return the interesting
4129         identifier for a repo entity.
4130         (repo_template_used): Use it.
4131         (repo_template_instantiated): Mark the id as chosen.
4132         (init_repo): Record whether or not the id was chosen.
4133         (finish_repo): Note if an id was newly chosen.
4134
4135         * pt.c (do_function_instantiation): Call repo_template_instantiated.
4136         (do_type_instantiation): Ditto.  Don't diagnose multiple
4137         instantiation.
4138
4139         * decl2.c (finish_file): Use DECL_NOT_REALLY_EXTERN when deciding
4140         whether or not to synthesize a method.
4141
4142         Undo these changes:
4143         * class.c (finish_vtbls): build more vtables if flag_rtti is on.
4144         * class.c (modify_all_direct_vtables): ditto.
4145         * init.c (expand_direct_vtbls_init): expand more vtables if
4146         flag_rtti is on.
4147
4148 Sat Apr  8 17:45:41 1995  Mike Stump  <mrs@cygnus.com>
4149
4150         * gc.c (build_headof): Use ptrdiff_type_node instead of
4151         integer_type_node on pointer arithmetic.
4152
4153 Sat Apr  8 11:57:04 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4154
4155         * typeck.c (build_modify_expr): Undo previous change.
4156
4157 Thu Apr  6 01:23:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4158
4159         * Makefile.in (compiler): Remove ../cc1plus before rebuilding it.
4160
4161         * repo.c (get_base_filename): Put the .rpo file in the directory
4162         with the object file, not the source.
4163
4164         * typeck.c (build_conditional_expr): Handle pmf's better.
4165
4166         * repo.c (finish_repo): Also use ASM_OUTPUT_LABELREF to print out
4167         the name of the symbol.
4168
4169 Wed Apr  5 15:24:12 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4170
4171         * repo.c (open_repo_file): Make repo filename DOS-compliant.
4172         (*): Also write a new repo file if some previously-used
4173         templates are no longer used.  Only remember the identifier.
4174
4175         * lex.c (cons_up_default_function): If this function belongs to a
4176         template class, call repo_template_used for it.
4177
4178         * repo.c (repo_template_used): Using a class means using its vtable,
4179         if any.
4180         (finish_repo): Ditto.
4181
4182         * typeck.c (build_modify_expr): Only wrap TARGET_EXPRs in RTL_EXPRs
4183         if the type has a complex copy constructor.
4184
4185         * decl2.c (lang_decode_option): -frepo implies
4186         -fno-implicit-templates.
4187
4188         * decl.c (start_function): Clear current_{base,member}_init_list.
4189
4190         * lex.c (init_lex): Also unset *_eq if ! flag_operator_names.
4191
4192 Tue Apr  4 16:11:08 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4193
4194         * decl.c (struct cp_function): Add {base,member}_init_list.
4195         (push_cp_function_context): Save current_{base,member}_init_list.
4196         (pop_cp_function_context): Restore them.
4197
4198 Mon Apr  3 16:55:08 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4199
4200         * repo.c (get_base_filename): Take filename parm, fix logic bug.
4201
4202         * typeck.c (build_compound_expr): Do not warn about a compound expr
4203         in which the first expression has no side effects.
4204         (build_x_compound_expr): Warn here instead.
4205         (build_conditional_expr): Don't warn about a conditional expression
4206         between an enum and the type it promotes to.
4207
4208         * init.c (build_new): Handle initialization of arrays of builtins
4209         properly.
4210
4211 Mon Apr  3 15:08:04 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4212
4213         * repo.c: Include config.h to get definitions of bcopy and rindex
4214         on systems that don't have them (e.g., SVR4).
4215
4216 Mon Apr  3 14:41:55 1995  Mike Stump  <mrs@cygnus.com>
4217
4218         * decl2.c (finish_table): Pass NULL_TREE instead of init to
4219         finish_decl so that it won't try and do error checking on the
4220         initializer.
4221
4222 Mon Apr  3 10:45:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4223
4224         * repo.c (get_base_filename): Analyze COLLECT_GCC_OPTIONS to
4225         determine whether this compile used -c -o.
4226         (open_repo_file): Use get_base_filename.  Remove the extension.
4227         (finish_repo): Spit out the values of main_input_filename,
4228         COLLECT_GCC and COLLECT_GCC_OPTIONS.
4229
4230         * parse.y (structsp): Add TYPENAME_KEYWORD complex_type_name.
4231
4232 Sun Apr  2 23:43:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4233
4234         * search.c (compute_access): Don't try to do access control on
4235         nested types.
4236
4237 Fri Mar 31 10:14:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4238
4239         * repo.c: New file to handle things repo.
4240
4241         * pt.c (instantiate_template): Call repo_template_used if the
4242         definition is accessible.
4243         (mark_function_instantiated): Split out from
4244         do_function_instantiation.
4245         (mark_class_instantiated): Split out from do_type_instantiation.
4246
4247         * parse.y (template_instantiate_once): Call repo_template_used.
4248
4249         * lex.c (lang_init): Call init_repo.
4250
4251         * decl2.c: Handle flag_use_repository.
4252         (finish_file): Call finish_repo.
4253
4254         * decl.c (start_method): Call repo_template_used if this is a
4255         template method.
4256
4257         * Makefile.in (CXX_OBJS): Add repo.o.
4258         (repo.o): Add dependencies.
4259
4260         * Make-lang.in (CXX_SRCS): Add repo.c.
4261
4262         * decl.c (start_function): If DECL_INTERFACE_KNOWN and
4263         DECL_NOT_REALLY_EXTERN are both set, unset DECL_EXTERNAL.
4264
4265         * typeck.c (build_binary_op_nodefault): Identify the invalid operand
4266         types used.
4267
4268         * decl.c (duplicate_decls): Propagate DECL_NOT_REALLY_EXTERN.
4269
4270 Thu Mar 30 17:54:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4271
4272         * typeck.c (build_binary_op_nodefault): Tidy up use of build_type
4273         and result_type.  When checking for comparison between signed
4274         and unsigned, use result_type rather than the (possibly shortened)
4275         type of op0.  Also, don't warn about equality comparison of a
4276         signed operand to an unsigned constant that fits in the signed
4277         type.
4278
4279         * method.c (do_build_copy_constructor): Reverse
4280         current_base_init_list after we've built it up.
4281
4282 Thu Mar 30 14:35:18 1995  Mike Stump  <mrs@cygnus.com>
4283
4284         * except.c (build_throw): Never warn about the value of throw not
4285         being used.
4286
4287 Thu Mar 30 13:16:54 1995  Mike Stump  <mrs@cygnus.com>
4288
4289         * except.c (expand_start_catch_block): Check for bad catch parameter
4290         declarations.
4291
4292 Thu Mar 30 13:06:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4293
4294         * decl.c (finish_function): Only set DECL_NOT_REALLY_EXTERN if
4295         DECL_EXTERNAL is not already set.
4296
4297 Thu Mar 30 11:26:24 1995  Mike Stump  <mrs@cygnus.com>
4298
4299         * method.c (emit_thunk): Let poplevel know that the last level is
4300         for a function so it can create a BLOCK_NODE and set DECL_INITIAL.
4301
4302 Thu Mar 30 11:15:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4303
4304         * decl2.c (import_export_inline): Don't set DECL_NOT_REALLY_EXTERN
4305         here.
4306
4307         * decl.c (grokdeclarator): OK, don't abort if we see a decl with
4308         METHOD_TYPE.
4309         (finish_function): Set DECL_EXTERNAL and DECL_NOT_REALLY_EXTERN on
4310         all deferred inlines.
4311
4312 Wed Mar 29 19:35:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4313
4314         * cp-tree.h (DECL_THIS_INLINE): New macro.
4315         (DECL_NOT_REALLY_EXTERN): New macro.
4316         (DECL_THIS_STATIC): New macro.
4317
4318         * decl.c: Lose all references to current_extern_inline.  Break
4319         inline semantics into DECL_INLINE for actual inlining and
4320         DECL_THIS_INLINE for the linkage wierdness.  Use DECL_THIS_STATIC.
4321         * decl2.c: Use DECL_NOT_REALLY_EXTERN to indicate that we want to
4322         emit an inline here.  Associated changes.
4323         * lex.c: Ditto.
4324         * pt.c: Ditto.
4325         * typeck.c: Ditto.
4326
4327         * call.c (build_method_call): Don't bother trying to handle inlines
4328         specially.
4329         * cvt.c (convert_to_aggr): Ditto.
4330
4331         * pt.c (do_function_instantiation): Handle instantiation of
4332         public inlines, too.
4333
4334 Wed Mar 29 16:04:25 1995  Mike Stump  <mrs@cygnus.com>
4335
4336         * except.c (init_exception_processing): Change the interface for
4337         __throw_type_match and add decl for new rtti matching routine
4338         __throw_type_match_rtti.
4339         (build_eh_type): New routine to build a run time descriptor for the
4340         expression given. 
4341         (expand_start_catch_block): Update to use new calling convention for
4342         the matcher.
4343         (expand_throw): Update to use build_eh_type.
4344
4345 Mon Mar 27 07:14:33 1995  Warner Losh   <imp@village.org>
4346
4347         * g++.c: Removed __NetBSD__ from conditional.
4348         Declare strerror if HAVE_STRERROR is defined; otherwise
4349         declare sys_errlist and sys_nerr.
4350         (my_strerror): New function.
4351
4352 Tue Mar 28 14:16:35 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4353
4354         * search.c (get_binfo): Don't try to be so clever.
4355
4356         * tree.c (copy_to_permanent): Also suspend_momentary().
4357
4358         * cvt.c (cp_convert_to_pointer): Hand off to convert_fn_pointer even
4359         if the types are the same.
4360
4361         * decl.c (start_function): Handle extern inlines more like C++ says
4362         we should.
4363
4364         * init.c (build_member_call): Hand constructor calls off to
4365         build_functional_cast.
4366
4367         * typeck2.c (build_functional_cast): Use DECL_NESTED_TYPENAME to get
4368         the name of the type.
4369
4370 Tue Mar 28 13:13:56 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4371
4372         * decl.c (grokdeclarator): Check for the decl returned by
4373         grokfndecl to be null before using build_decl_attribute_variant.
4374
4375 Mon Mar 27 18:04:41 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4376
4377         * init.c (build_new): Use build_pointer_type instead of
4378         TYPE_POINTER_TO.
4379
4380 Fri Mar 24 12:11:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4381
4382         * typeck.c (build_conditional_expr): Handle pmfs.
4383         (convert_for_assignment): Fix pmf support.
4384
4385         * cvt.c (convert_fn_ptr): Support !flag_vtable_thunks.
4386         (cp_convert_to_pointer): Handle pmfs.
4387         (cp_convert): Pass pmfs to cp_convert_to_pointer.
4388
4389         * typeck.c (common_type): Handle inheritance for pmfs.
4390
4391         * typeck2.c (build_m_component_ref): Do access control.
4392
4393         * typeck.c (comp_target_types): Check for conversion to void *
4394         before checking trickier conversions.
4395
4396         * decl.c (duplicate_decls): Propagate DECL_ABSTRACT_VIRTUAL_P.
4397
4398         * pt.c (push_tinst_level): Complain if template instantiation depth
4399         is greater than max_tinst_depth.
4400
4401         * typeck.c (common_type): Assume that we can call common_type to
4402         unify the target type of a pointer.
4403
4404 Thu Mar 23 00:48:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4405
4406         * decl2.c (finish_file): Don't synthesize methods at
4407         finish_vtable_prevardecl time.  Do synthesize methods that are not
4408         used, but are public and not external.
4409
4410         * cvt.c (build_type_conversion): Only give an error if for_sure.
4411
4412         * typeck.c (comp_target_types): Only support pointer conversions if
4413         nptrs > 0.
4414
4415 Wed Mar 22 19:30:15 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4416
4417         * init.c (build_new): Catch use of an initializer list where it
4418         shouldn't be.
4419
4420 Wed Mar 22 16:21:07 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4421
4422         * init.c (build_new): Wrap alloc_expr in an RTL_EXPR if nelts is
4423         non-constant.
4424
4425         * decl2.c: temp_name_counter is now public.
4426
4427         * decl.c (struct cp_function): Add temp_name_counter field.
4428         (push_cp_function_context): Save it.
4429         (pop_cp_function_context): Restore it.
4430
4431         * typeck.c (common_type): Handle unifying function types, and unify
4432         unmatched things to void* with a compiler_error, rather than
4433         silently like before.
4434
4435 Wed Mar 22 15:10:34 1995  Mike Stump  <mrs@cygnus.com>
4436
4437         * decl2.c (finish_prevtable_vardecl, finish_vtable_vardecl): Revert
4438         Brendan's last change and fix latent problem that causes TD entries
4439         to not come out when the things that need them has yet to be
4440         expanded.
4441
4442 Wed Mar 22 15:12:00 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4443
4444         * typeck.c (build_binary_op_nodefault, comparison ops): Update type0
4445         and type1, since we might have changed op0 or op1.
4446
4447 Wed Mar 22 13:33:45 1995  Jason Merrill  <jason@python.cygnus.com>
4448
4449         * typeck.c (common_type): Don't mess up templates.
4450
4451 Wed Mar 22 04:56:00 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4452
4453         * typeck.c (common_type): Handle ptms properly.  Also handle 
4454         T* -> void*.
4455         (build_binary_op_nodefault): New variable build_type controls what
4456         type is given to the expression when it is created.  Set this to
4457         boolean_type_node for comparison ops instead of using result_type.
4458         (comp_target_types): Allow T * -> void *.
4459
4460         * cvt.c (cp_convert_to_pointer): Do access control when converting
4461         ptms, too.
4462
4463 Tue Mar 21 17:25:06 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4464
4465         * parse.y (extern_lang_string): Catch use of linkage specs that
4466         aren't all naming the same language.
4467
4468         * class.c (finish_struct): Delete accidental duplicate code.
4469
4470 Tue Mar 21 14:00:57 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4471
4472         * typeck.c (build_binary_op_nodefault): Disable pedwarns about
4473         comparing functions and incomplete types.
4474
4475         * decl.c (finish_function): Only unset current_function_decl if
4476         !nested.
4477         (duplicate_decls): Last change went too far; we only want to stop
4478         checking for value/reference ambiguity.
4479
4480 Tue Mar 21 01:26:39 1995  Mike Stump  <mrs@cygnus.com>
4481
4482         * gc.c (build_generic_desc): Zap the DECL_SIZE so that we can lay it
4483         out fresh, as the new type may be larger.
4484
4485 Mon Mar 20 19:01:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4486
4487         * expr.c (extract_init): Try to expand the RTL for the
4488         initialization and figure out what it will look like so we can avoid
4489         run-time initialization.  Disabled for now.
4490         (extract_scalar_init): Helper for scalar initialization.
4491         (extract_aggr_init): Helper for aggregate initialization.
4492
4493         * decl.c (duplicate_decls): Don't complain about ambiguous
4494         declarations.
4495         (obscure_complex_init): Now returns a tree.  Call extract_init if
4496         we're optimizing and this is a toplevel decl.
4497         (finish_decl): Update accordingly.
4498
4499         * lex.c (check_newline): If we're just changing files (not pushing
4500         or popping), update input_file_stack->name.
4501
4502 Mon Mar 20 17:55:04 1995  Mike Stump  <mrs@cygnus.com>
4503
4504         * pt.c (type_unification): Only TEMPLATE_DECLs are handled right now
4505         in the transitive unification code.
4506
4507 Mon Mar 20 16:07:50 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4508
4509         * decl.c (shadow_tag): Don't allow inline, virtual, or explicit on
4510         non-functions.
4511         (grokdeclarator): Don't allow friends to be defined in local classes.
4512
4513 Sat Mar 18 04:03:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4514
4515         * decl2.c (finish_prevtable_vardecl): Use DECL_DECLARED_STATIC
4516         rather than DECL_SAVED_INSNS to decide whether or not this method
4517         was declared inline.
4518
4519         * method.c (synthesize_method): Turn off DECL_INLINE if
4520         function_cannot_inline_p thinks we're too large.
4521
4522         * typeck.c (build_indirect_ref): Use build_expr_type_conversion.
4523
4524 Fri Mar 17 17:47:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4525
4526         * class.c (instantiate_type): Handle pmfs.
4527
4528         * typeck.c (convert_for_assignment): Check types when assigning one
4529         pmf to another.
4530
4531         * decl.c (define_label): Fix logic for printing out the name of the
4532         label in an error message.
4533
4534         * error.c (dump_expr): Support ARRAY_REF.
4535
4536 Fri Mar 17 17:43:02 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4537
4538         * decl2.c (finish_vtable_vardecl): Call build_t_desc here.
4539         (finish_prevtable_vardecl): Instead of here.
4540
4541 Fri Mar 17 14:40:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4542
4543         * decl.c (expand_static_init): Also use expand_aggr_init if the
4544         initializer is a TREE_LIST.     
4545         (grokdeclarator): Only pedwarn about extra qualification if -pedantic.
4546
4547         * pt.c (unify): Fix unification of return type.
4548
4549         * expr.c (fixup_result_decl): Use store_expr, rather than
4550         emit_move_insn, to move the return value into the place where
4551         callers will expect it.
4552
4553 Thu Mar 16 22:05:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4554
4555         * init.c (build_offset_ref): Call assmble_external on functions.
4556         * typeck.c (build_component_ref): Ditto.
4557
4558 Thu Mar 16 20:28:16 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4559
4560         * decl.c (struct saved_scope): Add members base_init_list and
4561         member_init_list.
4562         (push_to_top_level): Save current_base_init_list and
4563         current_member_init_list to them.
4564         (pop_from_top_level): Put it back.
4565
4566 Thu Mar 16 19:21:14 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4567
4568         * pt.c (instantiate_template): Call assemble_external.  
4569
4570 Thu Mar 16 18:07:54 1995  Brendan Kehoe  (brendan@phydeaux.cygnus.com)
4571
4572         * class.c: Include rtl.h, to get NULL_RTX.
4573         (finish_struct): Also zero out DECL_SAVED_INSNS, to avoid problems
4574         on hosts with different sizes for each part of the union.
4575         * tree.c: Also include rtl.h.
4576         (layout_basetypes): Same change for DECL_SAVED_INSNS.
4577
4578 Thu Mar 16 13:57:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4579
4580         * pt.c (unify): Fix array domain unification for 64-bit targets.
4581
4582         * decl2.c (finish_file): Push bizarre type decl before walking the
4583         vtables the first time.
4584         (walk_vtables): OK, don't set prev to vars if the vardecl_fn messed
4585         with TREE_CHAIN (prev).
4586
4587         * init.c (emit_base_init): Use convert_pointer_to_real instead of
4588         convert_pointer_to when converting to a direct base.
4589
4590 Wed Mar 15 20:26:29 1995  Mike Stump  <mrs@cygnus.com>
4591
4592         * pt.c (type_unification): Handle transitive unification better.
4593
4594 Wed Mar 15 13:56:16 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4595
4596         * decl2.c (walk_vtables): Always set prev to vars.
4597         (mark_vtable_entries): Call assemble_external on the vtable entries.
4598
4599         * class.c (finish_struct): Set the vtable's size to NULL_TREE before
4600         calling layout_decl, so that it gets updated properly.
4601
4602         Finally re-enable dynamic synthesis.  This time it works.
4603         * method.c (synthesize_method): Pass decl_function_context (fndecl)
4604         to {push,pop}_cp_function_context.
4605         * decl.c (push_cp_function_context): Now takes a tree argument.
4606         (pop_cp_function_context): Ditto.
4607         * call.c (build_method_call): Enable synthesis.
4608         * lex.c (cons_up_default_function): Ditto.
4609
4610 Tue Mar 14 19:14:19 1995  Doug Evans  <dje@chestnut.cygnus.com>
4611
4612         * parse.y (setattrs): Chain onto prefix_attributes rather than
4613         setting it.
4614
4615 Wed Mar 15 13:00:00 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4616
4617         * decl.c (pushdecl): Check if the type of the VAR_DECL is an
4618         error_mark_node before trying to read TYPE_LANG_SPECIFIC. 
4619
4620 Mon Mar 13 21:00:28 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4621
4622         * decl.c (grokdeclarator, case ARRAY_REF): Wrap the exp with fold,
4623         and convert the size and integer_one_node to the index type.
4624
4625 Mon Mar 13 08:01:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4626
4627         * typeck.c (get_member_function_from_ptrfunc): Save the instance
4628         argument, and tack it onto the front of the COND_EXPR to make the
4629         semantics come out right.  Grab the instance argument from
4630         '*instance_ptrptr', rather than having it passed in separately.
4631         
4632         * various: Change various consed-up comparison operations to have
4633         boolean type.  Remove the instance argument in calls to
4634         get_member_function_from_ptrfunc.
4635
4636         * error.c (dump_expr): Dump true and false as "true" and "false".
4637
4638         * decl2.c (finish_file): Also set DECL_STATIC_FUNCTION_P on the
4639         global init function.
4640
4641         * decl.c (finish_function): Only set DECL_EXTERNAL here if the
4642         inline function is public.
4643
4644 Sat Mar 11 00:58:03 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4645
4646         * init.c (is_friend): Be more careful about checking
4647         DECL_CLASS_CONTEXT on non-member functions.
4648
4649         * decl2.c (finish_vtable_vardecl): Don't bother calling
4650         assemble_external here.
4651         (prune_vtable_vardecl): New function that just splices out the
4652         vtable decl from the top-level decls.
4653         (import_export_inline): Unset DECL_EXTERNAL at first.
4654         (finish_file): Don't bother calling assemble_external here.  Do
4655         splice out all of the vtables.
4656
4657 Fri Mar 10 14:42:29 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4658
4659         * decl.c (finish_function): If we're not emitting the function yet,
4660         call assemble_external for it.
4661
4662         * decl2.c (finish_prevtable_vardecl): Don't call mark_vtable_entries
4663         here.
4664         (finish_vtable_vardecl): Don't do the linkage deduction thing here.
4665         Also don't splice out the current vtable if it is unused.
4666         (finish_file): Move the second walk_vtables and the synthesis check
4667         inside the 'reconsider' loop.  Move thunk emission after the
4668         'reconsider' loop.
4669
4670 Thu Mar  9 16:28:16 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4671
4672         * pt.c (tsubst): Don't bother calling cp_build_type_variant, since it
4673         was passing bogus values for readonly and volatile from the original
4674         template decl, not the resultant type of the tsubst call.
4675
4676         * class.c (duplicate_tag_error): Use cp_error_at to point out the
4677         previous definition of the tag.
4678
4679 Thu Mar  9 10:46:17 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4680
4681         * decl.c (start_function): Clear base_init_insns and protect_list.
4682         (struct cp_function): Add base_init_insns field.
4683         (push_cp_function_context): Also save base_init_insns.
4684         (pop_cp_function_context): Also restore base_init_insns.
4685
4686 Wed Mar  8 13:31:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4687
4688         * init.c (member_init_ok_or_else): Check for initializing a static
4689         member here.
4690         (emit_base_init): Instead of here.
4691
4692 Tue Mar  7 16:03:26 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4693
4694         * call.c (build_method_call): Disable synthesis as needed.
4695         * lex.c (cons_up_default_function): Ditto.
4696
4697 Tue Mar  7 10:14:29 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4698
4699         * parse.y: New rules to allow attributes in a prefix position.
4700         (prefix_attributes): New variable.  Pass it into cplus_decl_attributes.
4701         (setattr): New rule.
4702         (reserved_declspecs, declmods): Catch attributes here.
4703         * decl2.c (cplus_decl_attributes): Add PREFIX_ATTRIBUTES argument.
4704         * decl.c (duplicate_decls): Pass DECL_MACHINE_ATTRIBUTES to
4705         descendent typedef.
4706         (grokdeclarator): Added code to support machine attributes.
4707         * Makefile.in (stamp-parse): Expect 5 shift/reduce failures.
4708
4709 Mon Mar  6 15:07:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4710
4711         * call.c (build_method_call): Don't synthesize methods outside of a
4712         function.
4713
4714         Make base initialization more re-entrant so that synthesis on the
4715         fly will work (and, eventually, template instantation on the fly).
4716         * init.c (sort_member_init): Don't bother with members that can't be
4717         initialized.  Reorganize a bit.  Don't initialize base members here.
4718         (sort_base_init): New function, like sort_member_init, but for base
4719         classes.  Steals some code from emit_base_init.
4720         (emit_base_init): Simplify.  Call sort_{member,base}_init before
4721         doing any initialization, so we don't have to save
4722         current_{member,base}_init_list in push_cp_function_context.
4723         (expand_aggr_vbase_init_1): Adjust for sort_base_init.
4724         (expand_aggr_vbase_init): Simplify.
4725         * decl.c (struct cp_function): Add protect_list field.
4726         (push_cp_function_context): Also save protect_list.
4727         (pop_cp_function_context): Also restore protect_list.
4728         * call.c (build_method_call): Enable synthesis at point of call.
4729         * lex.c (cons_up_default_function): Ditto.
4730
4731         * parse.y: Turn -ansi checks back into -pedantic checks.
4732
4733         * init.c (build_new): Fix -fcheck-new for array new.
4734
4735 Sat Mar  4 15:55:42 1995  Fergus Henderson  <fjh@cs.mu.oz.au>
4736
4737         * typeck.c (build_compound_expr): warn if left-hand operand of
4738         comma expression has no side-effects.
4739
4740 Fri Mar  3 15:16:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4741
4742         * parse.y (primary): Change 'object qualified_id *' rules to 'object
4743         overqualified_id *'.
4744
4745 Fri Mar  3 12:48:17 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4746
4747         * parse.y (unary_expr): Catch doing sizeof an overloaded function.
4748         Make the error look the same as the one we issue in c_sizeof.
4749
4750         * typeck.c (build_binary_op_nodefault): Give an error for trying
4751         to compare a pointer-to-member to `void *'.
4752
4753 Fri Mar  3 11:28:50 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4754
4755         * typeck.c (build_unary_op): Handle bool increment with smoke and
4756         mirrors here, rather than in expand_increment where it belongs,
4757         because Kenner doesn't agree with me.
4758
4759 Fri Mar  3 00:08:10 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4760
4761         * decl.c (grokparms): Catch a PARM_DECL being used for a default
4762         argument as well.
4763
4764 Thu Mar  2 20:05:54 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4765
4766         * init.c (build_new): Don't allow new on a function type.
4767
4768         * parse.y (primary): Avoid a crash when seeing if the arg is of
4769         the same type as that given for the typespec in an explicit dtor call.
4770
4771 Thu Mar  2 00:49:38 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4772
4773         * decl.c (finish_function): Change test for calling
4774         mark_inline_for_output.
4775
4776 Wed Mar  1 11:23:46 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4777
4778         * typeck.c (build_modify_expr): Complain if
4779         build_default_binary_type_conversion fails.
4780
4781         * init.c (expand_default_init): Handle arguments of unknown type
4782         properly.
4783
4784         * cvt.c (build_expr_type_conversion): Only complain about ambiguity
4785         if 'complain'.
4786         * various: Pass 'complain'.
4787
4788         * typeck.c (comptypes): Be more picky about comparing UPTs.
4789
4790 Wed Mar  1 11:03:41 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4791
4792         * decl.c (grokdeclarator): If declarator is null, say that the
4793         type used has an incomplete type.
4794
4795 Wed Mar  1 10:06:20 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4796
4797         * pt.c (instantiate_template): Copy the template arguments to the
4798         permanent_obstack.  Also use simple_cst_equal to compare them when
4799         looking for a previous instantiation.
4800
4801         * tree.c (make_deep_copy): Support copying INTEGER_TYPEs (assuming
4802         they are array domain types).
4803
4804 Tue Feb 28 23:24:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4805
4806         * cp-tree.h: Define WANT_* constants for passing to
4807         build_expr_type_conversion.
4808         * cvt.c (build_expr_type_conversion): New function to build
4809         conversion to one of a group of suitable types.
4810         (build_default_binary_type_conversion): Use it.
4811         * decl2.c (grok_array_decl): Ditto.
4812         * typeck.c (build_unary_op): Ditto.
4813         (build_array_ref): Tidy up a bit.
4814         (build_binary_op): Ditto.
4815
4816 Tue Feb 28 19:57:31 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4817
4818         * decl.c (grokdeclarator): Don't allow decl of an argument as `void'.
4819
4820 Tue Feb 28 17:23:36 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4821
4822         * parse.y (typed_declspecs1): Add 'typespec reserved_typespecquals
4823         reserved_declspecs' rule.
4824
4825         * parse.y (expr_or_declarator): Remove notype_qualified_id rule.
4826         (direct_notype_declarator): Ditto.
4827         (complex_direct_notype_declarator): Add notype_qualified_id rule.
4828
4829         * lex.c (real_yylex): Handle :> digraph properly.
4830
4831 Tue Feb 28 12:26:29 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4832
4833         * decl.c (grokdeclarator): Check if it's a friend, not if it's
4834         non-virtual, that's being initialized.  Move the check up to
4835         before FRIENDP would get cleared.  Catch an unnamed var/field
4836         being declared void.  Say just `field' instead of `structure field'
4837         in the error message.  Only go for the operator name if DECLARATOR
4838         is non-null.
4839
4840 Tue Feb 28 00:08:01 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4841
4842         * decl.c (start_function): Complain about abstract return type.
4843         (grokdeclarator): Complain about declaring constructors and
4844         destructors to be const or volatile.  Complain about declaring
4845         destructors to be static.
4846
4847         * pt.c (uses_template_parms): Handle pmfs.
4848
4849         * decl.c (grokdeclarator): Don't call variable_size for array bounds
4850         that only depend on template constant parameters.
4851
4852 Mon Feb 27 15:38:16 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4853
4854         * error.c (dump_decl): Only look to see if it's a vtable if we
4855         actually have a name to check out.
4856
4857 Mon Feb 27 13:37:53 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4858
4859         * cvt.c (convert_to_aggr): Lose misleading shortcut.
4860
4861 Sun Feb 26 17:27:32 1995  Doug Evans  <dje@canuck.cygnus.com>
4862
4863         * decl.c (set_nested_typename): Always set DECL_IGNORED_P,
4864         not just for dwarf.
4865
4866 Sun Feb 26 00:10:18 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4867
4868         * decl.c (grokdeclarator): Don't allow a static member to be
4869         declared `register'.
4870
4871         * init.c (make_friend_class): Move up to a pedwarn for the warning
4872         about a class declaring friends with itself.
4873
4874         * decl.c (grokdeclarator): You can't do `volatile friend class foo'
4875         or `inline friend class foo'.  Only try to make a friend out of
4876         TYPE if we didn't already reset it to integer_type_node.
4877
4878 Sat Feb 25 22:32:03 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4879
4880         * decl.c (grokdeclarator): Don't allow initialization of a
4881         non-virtual function.
4882
4883         * decl.c (start_function): Do a pedwarn if we're changing `main'
4884         to have an int return type.
4885
4886 Sat Feb 25 00:02:05 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4887
4888         * typeck.c (build_modify_expr): Handle simple assignment from
4889         TARGET_EXPRs by building up an RTL_EXPR to force expansion.  Whew.
4890
4891 Fri Feb 24 18:27:14 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4892
4893         * decl.c (grokdeclarator): Also don't allow virtual outside of a
4894         class decl for a scope method definition performed at global binding.
4895
4896         * init.c (build_offset_ref): Don't allow creation of an OFFSET_REF
4897         of a bitfield.
4898
4899         * decl.c (grokdeclarator): Don't allow a const to be declared mutable.
4900
4901         * typeck.c (build_binary_op): Return an error_mark_node if either
4902         one of the args turned into an error_mark_node when we tried to
4903         use default_conversion.
4904
4905         * typeck.c (build_unary_op): Forbid using postfix -- on a bool.
4906
4907         * decl.c (grokdeclarator): Allow `signed' and `unsigned' to be
4908         used on `__wchar_t'.
4909
4910 Fri Feb 24 13:59:53 1995  Mike Stump  <mrs@cygnus.com>
4911
4912         * except.c (end_protect_partials): Do it the right way.
4913
4914 Wed Feb 22 15:42:56 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4915
4916         * typeck.c (build_binary_op_nodefault): Upgrade warning about
4917         comparing distinct pointer types to pedwarn.
4918
4919         * typeck2.c (digest_init): Cope with extra braces.
4920
4921         * typeck.c (build_binary_op_nodefault): Use tree_int_cst_sgn instead
4922         of INT_CST_LT (..., interger_zero_node).
4923
4924 Wed Feb 22 14:45:52 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4925
4926         * except.c [!TRY_NEW_EH] (end_protect_partials): Define dummy
4927         function for systems that don't have EH.
4928
4929 Tue Feb 21 19:18:31 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4930
4931         * call.c (can_convert_arg): Like can_convert, but takes an arg as
4932         well.
4933
4934         * pt.c (type_unification): Allow implicit conversions for parameters
4935         that do not depend on template parameters.
4936
4937 Tue Feb 21 18:43:48 1995  Douglas Rupp  (drupp@cs.washington.edu)
4938
4939         * Make-lang.in, config-lang.in: ($exeext): New macro.
4940         * Make-lang.in: Try a "cp" if "ln" fails.
4941         * cp-tree.h (decl_attributes): Added argument.
4942         * decl2.c (cplus_decl_attribute): Add arg to decl_attributes.
4943         * cp/g++.c: Added #ifdefs for sys/file.h and process.h for NT.
4944         Modified spawnvp to have to correct number of arguments for OS/2, NT.
4945
4946 Tue Feb 21 18:36:55 1995  Mike Stump  <mrs@cygnus.com>
4947
4948         * decl.c (finish_function): Add calls to end_protect_partials to end
4949         the exception region that protects constructors so that partially
4950         constructed objects can be partially destructed when the constructor
4951         throws an exception.
4952         * init.c (perform_member_init, sort_member_init, emit_base_init):
4953         Added support for partially constructed objects.
4954         * init.c (build_partial_cleanup_for): New routine to do partial
4955         cleanups of a base class.
4956         * decl2.c (finish_file): Move the emitting of the exception table
4957         down, after we emit all code that might have exception regions in
4958         them.
4959         * except.c (end_protect_partials, might_have_exceptions_p): New
4960         routines.
4961         (emit_exception_table): Always output table if called.
4962         * cp-tree.h (protect_list, end_protect_partials,
4963         might_have_exceptions_p, emit_exception_table): Added.
4964
4965 Tue Feb 21 16:05:59 1995  Brendan Kehoe  (brendan@lisa.cygnus.com)
4966
4967         * gc.c (build_typeid): Pass a NULL_TREE, not the bogus, unused
4968         address of a local variable.
4969         * class.c (build_vfn_ref): Only try to build the PLUS_EXPR if we
4970         were given a non-null PTR_TO_INSTPTR.
4971
4972 Tue Feb 21 01:53:18 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4973
4974         * decl.c (duplicate_decls): Always lay out the merged decl.
4975
4976         * decl2.c (finish_vtable_vardecl): Don't do vtable hack on templates.
4977         (finish_prevtable_vardecl): Ditto.
4978
4979         * method.c (synthesize_method): Set interface_{unknown,only}
4980         according to the settings for our class, not the file where it comes
4981         from.
4982
4983 Sat Feb 18 12:26:48 1995  Mike Stump  <mrs@cygnus.com>
4984
4985         * except.c: Handle systems that define __i386__ but not __i386.
4986
4987 Fri Feb 17 15:31:31 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
4988
4989         * decl2.c (reparse_decl_as_expr): Support being called without a
4990         type argument.
4991
4992         * parse.y (primary): Add '(' expr_or_declarator ')'.  Adds 4 r/r
4993         conflicts.  Sigh.
4994
4995 Fri Feb 17 12:02:06 1995  Mike Stump  <mrs@cygnus.com>
4996
4997         * parse.y (template_def, fndef, fn.def1, return_init, condition,
4998         initdcl0, initdcl, notype_initdcl0, nomods_initdcl0,
4999         component_decl_1, after_type_component_declarator0,
5000         notype_component_declarator0, after_type_component_declarator,
5001         notype_component_declarator, after_type_component_declarator,
5002         full_parm, maybe_raises, exception_specification_opt): Fix up,
5003         include exception_specification_opt maybeasm maybe_attribute and
5004         maybe_init if missing.  Rename maybe_raises to
5005         exception_specification_opt to match draft wording.  Use maybe_init
5006         to simplify rules.
5007
5008 Fri Feb 17 01:54:46 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5009
5010         * init.c (build_new): Set TREE_NO_UNUSED_WARNING on COMPOUND_EXPRs
5011         built for news of scalar types.
5012
5013 Thu Feb 16 17:48:28 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5014
5015         * typeck.c (build_binary_op_nodefault): Update code for warning
5016         about signed/unsigned comparisons from C frontend.  Realize that the
5017         code in the C frontend is, if anything, even more bogus.  Fix it.
5018         (build_binary_op): Undo default_conversion if it wasn't useful.
5019
5020         * typeck.c (build_unary_op, ADDR_EXPR): Lose bogus special case for
5021         PRE*CREMENT_EXPR.
5022
5023         * decl2.c (import_export_vtable): Don't try the vtable hack
5024         if the class doesn't have any real non-inline virtual functions.
5025         (finish_vtable_vardecl): Don't bother trying to find a non-inline
5026         virtual function in a non-polymorphic class.
5027         (finish_prevtable_vardecl): Ditto.
5028
5029         * decl2.c (import_export_vtable): Use and set DECL_INTERFACE_KNOWN.
5030
5031         * cp-tree.h (DECL_INTERFACE_KNOWN): Use DECL_LANG_FLAG_5.
5032
5033         * init.c (expand_virtual_init): Always call assemble_external.
5034
5035         * class.c (build_vfn_ref): Always call assemble_external.
5036         (build_vtable): Always call import_export_vtable.
5037         (prepare_fresh_vtable): Ditto.
5038         (add_virtual_function): Don't bother setting TREE_ADDRESSABLE.
5039
5040 Thu Feb 16 03:28:49 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5041
5042         * class.c (finish_struct): Use TYPE_{MIN,MAX}_VALUE to determine
5043         whether an enumerated type fits in a bitfield.
5044
5045 Wed Feb 15 15:38:12 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5046
5047         * class.c (grow_method): Update method_vec after growing the class
5048         obstack.
5049
5050 Wed Feb 15 13:42:59 1995  Mike Stump  <mrs@cygnus.com>
5051
5052         * parse.y (handler_seq): Push a level for the catch parameters.
5053
5054 Wed Feb 15 12:42:57 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5055
5056         * init.c (emit_base_init): Update BINFO_INHERITANCE_CHAIN on my
5057         bases, in case they've been clobbered.
5058
5059 Wed Feb 15 12:07:29 1995  Mike Stump  <mrs@cygnus.com>
5060
5061         * class.c (finish_base_struct): Set up BINFO_INHERITANCE_CHAIN here,
5062         so that one day it will always be valid.
5063         * tree.c (propagate_binfo_offsets, layout_vbasetypes): Ditto.
5064
5065         * cp-tree.h (copy_binfo): Removed, unused.
5066         * tree.c (copy_binfo): Ditto.
5067
5068 Wed Feb 15 00:05:30 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5069
5070         * init.c (build_new): Save the allocation before calling
5071         expand_vec_init on it.
5072
5073         * decl.c (finish_enum): The TYPE_PRECISION of the enum type mush
5074         match the TYPE_PRECISION of the underlying type for constant folding
5075         to work.
5076
5077 Tue Feb 14 15:31:25 1995  Mike Stump  <mrs@cygnus.com>
5078
5079         * except.c (push_eh_entry, expand_start_all_catch,
5080         expand_leftover_cleanups, expand_end_catch_block): Keep track of
5081         the context in which the exception region occurs.
5082         (build_exception_table): If the region was not output, don't output
5083         the entry in the eh table for it.
5084
5085 Tue Feb 14 02:15:43 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5086
5087         * init.c (expand_default_init): Only use a previous constructor call
5088         if it's a call to our constructor.  Does the word "Duh" mean
5089         anything to you?
5090
5091         * decl.c (grokparms): Fine, just don't call
5092         convert_for_initialization at all.  OK?  Happy now?
5093
5094 Mon Feb 13 02:23:44 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5095
5096         * cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Make sure that the class
5097         method vector has a second element before returning it.
5098
5099         * decl.c (grokparms): Don't strip REFERENCE_TYPE before calling
5100         convert_for_initialization.
5101
5102 Sun Feb 12 03:57:06 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5103
5104         * typeck.c (build_modify_expr): Compare function name to
5105         constructor_name (current_class_type) instead of current_class_name.
5106
5107         * decl.c (grokparms): Don't do anything with the return value of
5108         convert_for_initialization.
5109
5110         * error.c (dump_decl): Also dump_readonly_or_volatile on the decl.
5111
5112         * decl.c (duplicate_decls): Tweak error message.
5113
5114         * typeck.c (build_const_cast): Implement checking.
5115         (build_reinterpret_cast): Implement some checking.
5116
5117         * cp-tree.h (CONV_FORCE_TEMP): Require a new temporary when
5118         converting to the same aggregate type.
5119         (CONV_STATIC_CAST): Include it.
5120         (CONV_C_CAST): Ditto.
5121         * cvt.c (convert_force): Use CONV_C_CAST instead of CONV_OLD_CONVERT.
5122         (cp_convert): Only force a new temporary if CONV_FORCE_TEMP.
5123
5124 Fri Feb 10 16:18:52 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5125
5126         * typeck.c (build_c_cast): Use non_lvalue to tack something on
5127         where necessary.
5128
5129         * decl.c (auto_function): Now a function.
5130         * except.c (init_exception_processing): terminate, unexpected,
5131         set_terminate, and set_unexpected have C++ linkage.
5132
5133         * typeck.c (build_unary_op, TRUTH_NOT_EXPR): Use convert instead of
5134         truthvalue_conversion for converting to bool, as it handles
5135         user-defined conversions properly.
5136         (condition_conversion): Ditto.
5137
5138         * except.c (expand_throw): Don't call convert_to_reference.
5139         Pass the correct parameters to build_new.
5140
5141         * method.c (do_build_assign_ref): Don't use access control when
5142         converting to a base reference here.
5143         (do_build_copy_constructor): Or here.
5144
5145         * init.c (build_new): Unset TREE_READONLY on the dereferenced
5146         pointer before assigning to it.
5147
5148         * decl.c (maybe_build_cleanup): Don't bother stripping const here.
5149
5150         * decl2.c (delete_sanity): You can now delete pointer to const.
5151
5152 Fri Feb 10 13:28:38 1995  Jason Merrill  <jason@python.cygnus.com>
5153
5154         * decl.c (finish_function): Don't rely on actual parameters being
5155         evaluated left-to-right.
5156         * except.c (expand_end_catch_block): Ditto.
5157
5158 Fri Feb 10 00:52:04 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5159
5160         * tree.c (real_lvalue_p): Like lvalue_p, but class temps aren't
5161         considered lvalues.
5162         * cvt.c (convert_to_reference): Use real_lvalue_p instead of
5163         lvalue_p.
5164
5165         * cvt.c (build_type_conversion_1): Don't call convert on aggregate
5166         types.
5167         (convert_to_reference): Fix erroneous text substitution.
5168
5169         * typeck2.c (initializer_constant_valid_p): Update from C frontend.
5170         Add new argument to all callers.
5171
5172         * typeck.c (convert_arguments): Check for error_mark_node before
5173         trying to do anything with the actual parameter.
5174
5175         * typeck.c (condition_conversion): Build up a CLEANUP_POINT_EXPR and
5176         fold it.
5177         (bool_truthvalue_conversion): Remove.  Fix all callers to call
5178         truthvalue_conversion instead.
5179         (various): Fold CLEANUP_POINT_EXPRs.
5180
5181         * parse.y (conditions): Call condition_conversion rather than
5182         building up a CLEANUP_POINT_EXPR.
5183
5184         * pt.c (end_template_decl): Don't warn_if_unknown_interface here
5185         under -falt-external-templates.
5186
5187 Thu Feb  9 05:24:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5188
5189         * init.c (build_new): Complain about new of const type without
5190         initializer.  Other cleanup.
5191
5192         * call.c (compute_conversion_costs): Don't call
5193         build_type_conversion with a reference type; convert to the target
5194         type and check its lvaluetude.
5195         * cvt.c (convert_to_reference): Ditto.
5196
5197         * cvt.c (build_type_conversion_1): There will never be any need to
5198         dereference references here now.
5199
5200 Thu Feb  9 00:37:47 1995  Mike Stump  <mrs@cygnus.com>
5201
5202         * except.c (expand_builtin_throw): Make sure we only `use' the
5203         value of return_val_rtx.
5204
5205 Wed Feb  8 15:45:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5206
5207         * parse.y (structsp): Don't complain about declaring a type being
5208         defined to be a friend.
5209
5210         * decl2.c (warn_if_unknown_interface): Note the template in question
5211         and the point of instantiation, for -falt-external-templates.
5212         * lex.c (reinit_parse_for_method): Pass the decl to
5213         warn_if_unknown_interface.
5214         * pt.c (instantiate_template): Ditto.
5215         (end_template_decl): Ditto.
5216
5217         * decl.c (set_nested_typename): Set IDENTIFIER_TYPE_VALUE on the
5218         nested name again, to make local classes work a bit better.
5219
5220         * typeck.c (build_function_call_real): Dereference reference after
5221         checking for incomplete type.
5222
5223         * init.c (build_new): Accept new of const and volatile types.
5224
5225 Wed Feb  8 14:04:16 1995  Jason Merrill  <jason@deneb.cygnus.com>
5226
5227         * decl.c (grokdeclarator): Fix error message.
5228
5229 Wed Feb  8 03:16:15 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5230
5231         * typeck.c (convert_for_initialization): Do bash arrays when
5232         converting to a reference to non-array.
5233
5234 Tue Feb  7 15:50:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5235
5236         * cvt.c (cp_convert): Don't call convert_to_reference, or
5237         automatically dereference references.  Do pass reference conversions
5238         to cp_convert_to_pointer.
5239         (cp_convert_to_pointer): Support references.
5240
5241         * call.c (build_method_call): Don't build up a reference to the
5242         parameter here; let build_overload_call handle that.
5243
5244         * typeck.c (build_c_cast): Call convert_to_reference directly if
5245         converting to a reference type.
5246         * method.c (do_build_copy_constructor): Ditto.
5247         * method.c (do_build_copy_constructor): Ditto.
5248         (do_build_assign_ref): Ditto.
5249
5250         * call.c (build_method_call): Dereference a returned reference.
5251         * typeck.c (build_function_call_real): Ditto.
5252
5253         * decl.c (xref_basetypes): Check for unions with basetypes here.
5254         (xref_tag): Instead of here.
5255
5256         * pt.c (process_template_parm): Template type parm decls are
5257         artificial.
5258
5259 Mon Feb  6 04:32:09 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5260
5261         * parse.y (typed_declspecs): Add missing semicolon.
5262         (do_xref_defn): Resurrect.
5263         (named_class_head_sans_basetype): Move template specialization
5264         definition cases to named_class_head_sans_basetype_defn.
5265
5266         * decl2.c (grokfield): Call pushdecl_class_level after setting the
5267         TYPE_NAME, not before.
5268
5269 Sun Feb  5 02:50:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5270
5271         * call.c (convert_harshness): Don't call sorry here.  Don't allow
5272         conversions between function pointer types if pedantic.
5273
5274         * pt.c (overload_template_name): Pass globalize=1 to xref_tag.
5275
5276         * lex.c (cons_up_default_function): Use the full name for the return
5277         type of op=.
5278
5279         * decl.c (set_nested_typename): Don't worry about anonymous types,
5280         as they already have a unique name.
5281         (pushdecl): Remove redundant set_nested_typename
5282         (xref_tag): Split out base handling into xref_basetypes.
5283
5284         * cp-tree.h (TYPE_INCOMPLETE): New macro; TEMPLATE_TYPE_PARMs are
5285         not considered incomplete even though their definition is unknown.
5286
5287         * decl.c (xref_defn_tag): Lose.
5288         (xref_tag): xref_next_defn = ! globalize.
5289         (pushdecl): Don't set DECL_NESTED_TYPENAME on artificial decls.  The
5290         ones that should have it set will have it set by pushtag.
5291         (pushdecl_class_level): Ditto.
5292         (pushtag): Tidy up a bit.
5293         (set_nested_typename): Push a decl for the nested typename from
5294         here, rather than from xref_defn_tag.
5295
5296         * parse.y (do_xref): Lose.
5297         (named_class_head): If we see 'class foo:' we know it's a
5298         definition, so don't worry about base lists for non-definitions.
5299
5300         * pt.c (push_template_decls): Template parm decls are artificial.
5301
5302         * decl.c (duplicate_decls): Restore check for qualifier
5303         disagreement for non-functions.
5304         (decls_match): Remove check for qualifier disagreement.
5305
5306 Fri Feb  3 14:58:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5307
5308         * decl.c (grok_reference_init): Convert initializer from
5309         reference.
5310         * typeck.c (convert_for_initialization): Ditto.
5311
5312         * decl.c (duplicate_decls): Propagate DECL_NESTED_TYPENAME.
5313
5314         * cvt.c (cp_convert): Don't convert to the same class type by just
5315         tacking on a NOP_EXPR.
5316         (convert_to_reference): Use comp_target_types instead of comptypes
5317         so that we don't allow conversions two levels down.
5318
5319 Thu Feb  2 15:07:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5320
5321         * class.c (build_vbase_path): Bash types to make the backend happy.
5322         * cvt.c (build_up_reference): Bash the types bashed by
5323         build_vbase_path to be reference types instead of pointer types.
5324         (convert_to_reference): Ditto.
5325
5326         * typeck.c (build_c_cast): Don't strip NOPs if we're converting to a
5327         reference type.
5328
5329         * parse.y (structsp): Put back error for 'struct B: public A;'.
5330
5331 Wed Feb  1 23:02:06 1995  Mike Stump  <mrs@cygnus.com>
5332
5333         * except.c: Add support for mips systems that don't define __mips
5334         but do define mips, like Ultrix.
5335
5336 Wed Feb  1 22:39:07 1995  Mike Stump  <mrs@cygnus.com>
5337
5338         * except.c: Add support for exception handling on the Alpha.
5339
5340 Wed Feb  1 10:12:14 1995  Mike Stump  <mrs@cygnus.com>
5341
5342         * decl2.c (finish_file): Fix bug in Jan 31st change.
5343
5344 Tue Jan 31 16:59:15 1995  Gerald Baumgartner  (gb@lorenzo.cs.purdue.edu)
5345
5346         * sig.c (build_signature_pointer_or_reference_type): Don't set
5347         IS_AGGR_TYPE for signature pointers/reference so expand_default_init
5348         doesn't expect to find a copy constructor.
5349         * call.c (build_method_call): Treat signature pointers/reference
5350         as if IS_AGGR_TYPE were set.
5351
5352 Tue Jan 31 13:28:56 1995  Mike Stump  <mrs@cygnus.com>
5353
5354         * gc.c (get_typeid): Pawn off error messages to build_t_desc.
5355         (build_t_desc): Inform the user here if they try and build
5356         with -frtti and don't include <typeinfo.h>.
5357
5358         * decl2.c (finish_prevtable_vardecl): Support rescanning.
5359         (finish_file): Move finish_prevtable_vardecl up to before the global
5360         initializers are done as tdecls are initialized in the global
5361         initializer.  Also Pick up any new tdecls or vtables needed by
5362         synthesized methods.
5363
5364         * class.c (finish_struct): Simplify.  We have to do rtti scanning at
5365         end, so we might as well do all of it there.
5366
5367 Tue Jan 31 05:35:02 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5368
5369         * call.c (build_method_call): Fix -fthis-is-variable for 32-bit
5370         targets, too.
5371
5372 Tue Jan 31 00:11:04 1995  Mike Stump  <mrs@cygnus.com>
5373
5374         * decl2.c (finish_prevtable_vardecl): New routine, mostly split from
5375         finish_vtable_vardecl.  It has the first half functionality from
5376         that routine.
5377         * decl2.c (finish_vtable_vardecl): Update to not include stuff not
5378         in  finish_prevtable_vardecl.
5379         * decl2.c (finish_file): Call finish_prevtable_vardecl.
5380         * gc.c (build_generic_desc): Allow it to be called when not at the
5381         global binding layer, but behave as if we were.
5382         (build_t_desc): Rearrange a bit so that it really works and is
5383         easier to follow.
5384         * class.c (finish_struct): Don't decide on tdecls here, as we have
5385         to wait until the end of the file in general to decide whether or
5386         not they come out.
5387
5388 Mon Jan 30 01:00:40 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5389
5390         * init.c (build_delete): Check access to operator delete before
5391         calling the destructor.
5392         * method.c (build_opfncall, DELETE_EXPR): build_method is allowed to
5393         return error_mark_node.
5394         * call.c (build_method_call): Use the one-argument op delete even if
5395         it's an error.
5396
5397         * init.c (build_new): Fix -fthis-is-variable support.
5398         * call.c (build_method_call): Ditto.
5399
5400         * call.c (convert_harshness): Make conversion from a pointer to bool
5401         worse than conversion to another pointer.
5402
5403 Sat Jan 28 16:46:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5404
5405         * init.c (build_new): Check new return value if -fcheck-new.
5406
5407         * lex.c (check_newline): Clear end_of_file when we're done, too.
5408
5409 Sat Jan 28 10:38:39 1995  Mike Stump  <mrs@cygnus.com>
5410
5411         * decl2.c (finish_vtable_vardecl): Make rtti TD tables follow
5412         vtables whereever they go.
5413
5414         * gc.c (build_t_desc): Remove old way of setting it up, as it wasn't
5415         right.
5416
5417 Sat Jan 28 09:10:44 1995  Mike Stump  <mrs@cygnus.com>
5418
5419         * decl2.c (finish_vtable_vardecl): Now set the
5420         interface/implementation of vtables on the first virtual function,
5421         if one exists, otherwise we use the old method.  This is a major win
5422         in terms of cutting down the size of objects and executables in
5423         terms of text space and data space.  Now most of the savings that
5424         #pragma interface/implementation gives is automatic in a fair number
5425         of cases.
5426
5427 Sat Jan 28 04:57:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5428
5429         * decl.c (grokdeclarator): Discard the template parameters in a
5430         template constructor declaration so that the function is always
5431         named constructor_name (ctype).
5432
5433         * lex.c (check_newline): Use ungetc to put back the character before
5434         calling HANDLE_PRAGMA.
5435
5436 Fri Jan 27 17:23:47 1995  Mike Stump  <mrs@cygnus.com>
5437
5438         * decl2.c (check_classfn): If the cname is T<int> and fn_name is T,
5439         make sure we still match them.
5440
5441 Fri Jan 27 16:32:10 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5442
5443         * parse.y: Add END_OF_LINE token.
5444
5445         * lex.c (check_newline): Set linemode when we see a # directive, and
5446         unset it when we're done.  Turn all 'return's into 'goto skipline'.
5447         Fix all uses of '\n', since we won't see it anymore.  Put back the
5448         character we read before checking for a sysv or target pragma.
5449         (real_yylex): If we see an EOF in linemode, return END_OF_LINE.
5450         (handle_sysv_pragma): Don't look at the input stream; quit when we
5451         see an END_OF_LINE token.
5452
5453         * input.c (getch): Return EOF if we're in line mode and at the end
5454         of a line.
5455         (put_back): Don't put back an EOF.
5456
5457 Thu Jan 26 19:26:34 1995  Mike Stump  <mrs@cygnus.com>
5458
5459         * except.c (expand_throw): Do the newing of the exception object
5460         before we load the type descriptor or the address so that we don't
5461         wipe any of the values out.
5462
5463 Thu Jan 26 19:20:00 1995  Mike Stump  <mrs@cygnus.com>
5464
5465         * except.c (init_exception_processing): Don't use r12 on the rs6000.
5466
5467 Tue Jan 24 16:36:31 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5468
5469         * decl.c (grokparms): Don't try to build up a reference at this point.
5470
5471         * typeck2.c (build_functional_cast): Don't assume that a NOP_EXPR
5472         will suffice to convert from integer_zero_node.
5473
5474 Wed Jan 25 15:02:09 1995  David S. Miller  (davem@nadzieja.rutgers.edu)
5475
5476         * class.c (instantiate_type): Change error message text.
5477         * typeck2.c (store_init_value): Likewise.
5478
5479 Mon Jan 23 21:57:14 1995  Mike Stump  <mrs@cygnus.com>
5480
5481         * pt.c (tsubst): When we copy a node, don't forget to copy
5482         TREE_CHAIN, we use it later.
5483
5484 Mon Jan 23 03:33:47 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5485
5486         * typeck.c (convert_for_assignment): Initialize variable before use.
5487
5488 Fri Jan 20 01:17:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5489
5490         * g++.c (main): Link with both libstdc++ and libg++ if called as
5491         something ending with "g++", otherwise only libstdc++.  Move -lm to
5492         the end of the line.
5493
5494 Thu Jan 19 15:43:11 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5495
5496         * call.c (build_method_call): Don't mess with 'this' before calling
5497         compute_conversion_costs.
5498
5499 Wed Jan 18 15:40:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5500
5501         * search.c (get_matching_virtual): Give line number for previous
5502         declaration.
5503
5504         * call.c (convert_harshness): Handle conversions to references
5505         better.
5506
5507         * cvt.c (build_up_reference): OK, handle {MIN,MAX}_EXPR *properly*.
5508
5509 Wed Jan 18 15:21:38 1995  Mike Stump  <mrs@cygnus.com>
5510
5511         * class.c (instantiate_type): Use DECL_CHAIN to walk lists instead,
5512         as the TREE_CHAIN for methods will take us to the next differently
5513         named function, DECL_CHAIN won't.
5514
5515 Wed Jan 18 14:26:59 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5516
5517         * tree.c (lvalue_p): Handle {MIN,MAX}_EXPR.
5518
5519         * decl2.c (lang_decode_option): -Wall implies -Wparentheses.
5520         warn_parentheses defaults to 0.
5521
5522         * decl.c (grokparms): Put back call to require_instantiated_type.
5523
5524 Tue Jan 17 19:56:15 1995  Mike Stump  <mrs@cygnus.com>
5525
5526         * except.c (exception_section): Use the data section on the rs6000.
5527         Change calling convention for named_section.
5528
5529 Wed Jan 17 18:20:57 1994  Fergus Henderson <fjh@munta.cs.mu.oz.au>
5530
5531         * cp-tree.h : Make if (x=0) warn with wall
5532         * parse.y : Make if (x=0) warn with wall
5533
5534 Tue Jan 17 14:12:00 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5535
5536         * decl.c (BOOL_TYPE_SIZE): BITS_PER_WORD if SLOW_BYTE_ACCESS,
5537         BITS_PER_UNIT otherwise.
5538
5539         * search.c (get_matching_virtual): Don't check the binfo if the
5540         types are the same.
5541
5542         * cvt.c (cp_convert): Just call truthvalue_conversion to convert to
5543         bool.
5544
5545 Mon Jan 16 13:28:48 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5546
5547         * various: Use boolean_type_node, boolean_true_node,
5548         boolean_false_node.
5549
5550         * search.c (get_matching_virtual): Allow covariant returns that
5551         don't require pointer adjustment.
5552
5553         * typeck.c (build_conditional_expr): Don't call default_conversion
5554         on ifexp.
5555
5556         * cvt.c (build_up_reference): Handle MIN_EXPR and MAX_EXPR.
5557
5558         * decl.c (grokdeclarator): Upgrade warning about &const to pedwarn.
5559
5560 Sun Jan 15 22:17:32 1995  dcb@lovat.fmrco.COM (David Binderman)
5561
5562         * pt.c (do_function_instantiation): Free targs once we're done.
5563
5564 Sun Jan 15 22:17:32 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5565
5566         * decl.c (BOOL_TYPE_SIZE): Defaults to BITS_PER_WORD.
5567         (init_decl_processing): Use BOOL_TYPE_SIZE instead of CHAR_TYPE_SIZE
5568         for bool.
5569
5570 Sat Jan 14 05:33:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5571
5572         * decl2.c (finish_file): We need to mess up if there are any
5573         variables in the list, not just if there is one with a constructor.
5574
5575 Fri Jan 13 14:42:55 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5576
5577         * decl.c (duplicate_decls): Propagate DECL_STATIC_{CON,DE}STRUCTOR.
5578         (finish_function): Handle DECL_STATIC_{CON,DE}STRUCTOR.
5579         (finish_function): Trust rest_of_compilation.
5580
5581         * decl2.c (finish_file): Also call functions designated as static
5582         constructors/destructors.
5583
5584         * decl.c (grokdeclarator): Allow access decls of operator functions.
5585         (grokparms): Only do convert_for_initialization if the initializer
5586         has a type.
5587         (duplicate_decls): Put back push_obstacks_nochange call.
5588
5589         * lex.c (real_yylex): Downgrade complaint about the escape sequence
5590         being too large from pedwarn to warning.
5591
5592         * decl.c (grokdeclarator): Don't complain about long long in system
5593         headers.
5594
5595         * lex.c (real_yylex): Handle digraphs.
5596
5597 Thu Jan 12 12:17:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5598
5599         * decl.c (init_decl_processing): -f{no-,}strict-prototype only
5600         affects C linkage declarations now.
5601
5602         * typeck.c (comp_target_types): Grok simple contravariant conversions.
5603         (common_type): t1 and t2 are interchangeable.
5604
5605         * various: Test return value of comp_target_types differently in
5606         different places; it now returns -1 for a contravariant conversion
5607         (which is fine in symmetric cases).
5608
5609         (common_type): Prefer long double to double even when
5610         they have the same precision.
5611
5612         * decl.c (grokparms): Call convert_for_initialization to check
5613         default arguments.
5614
5615         * init.c (build_new): void_type_node has a size (of 0).
5616
5617         * decl.c (decls_match): Also check for agreement of TREE_READONLY
5618         and TREE_THIS_VOLATILE.
5619         (push_class_level_binding): Properly handle shadowing of
5620         nested tags by fields.
5621
5622         * search.c (dfs_pushdecls): Ditto.
5623
5624         * decl2.c (finish_file): Don't second-guess self-initialization.
5625
5626         * cvt.c (convert_to_reference): Work with expr directly, rather than
5627         a copy.
5628
5629         * decl.c (push_overloaded_decl): Only shadow artificial TYPE_DECLs.
5630
5631         * init.c (add_friend): Downgrade duplicate friend message from
5632         pedwarn to warning.
5633
5634         * decl.c (duplicate_decls): Push obstacks before calling common_type.
5635
5636 Thu Jan 12 17:15:21 1995  Michael Ben-Gershon  <mybg@cs.huji.ac.il>
5637
5638         * except.c (push_eh_entry): set LABEL_PRESERVE_P flag for
5639         exception table labels.
5640         (expand_start_all_catch): Ditto.
5641         (expand_leftover_cleanups): Ditto.
5642         (expand_end_catch_block): Ditto.
5643         * except.c (make_first_label): new function.
5644         (expand_start_all_catch): add a call to make_first_label() before
5645         using a label as a jump destination.
5646         (expand_end_all_catch): Ditto.
5647         (expand_leftover_cleanups): Ditto.
5648         (expand_end_catch_block): Ditto.
5649         (expand_builtin_throw): Ditto.
5650         (expand_throw): Ditto.
5651         * except.c: Add ARM processor support for exception handling.
5652
5653 Thu Jan 12 12:17:24 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5654
5655         (complete_array_type): Copy code from C frontend.
5656
5657         * lex.c (real_yylex): Don't multiply the length of a wide string
5658         literal by WCHAR_BYTES.
5659
5660         * decl.c (pushdecl): Check for redeclaration of wchar_t here.
5661         (duplicate_decls): Instead of here.
5662         (define_label): Complain about a label named wchar_t.
5663         (grokdeclarator): Complain about declarations of
5664         operator-function-ids as non-functions.
5665
5666         * typeck.c (unary_complex_lvalue): Also wrap prefix -- and ++ in
5667         COMPOUND_EXPRs.
5668         (build_unary_op): Wrap unary plus in a NON_LVALUE_EXPR.
5669
5670         * lex.c (real_yylex): Don't skip whitespace when reading the next
5671         character after ->.
5672
5673 Wed Jan 11 16:32:49 1995  Mike Stump  <mrs@cygnus.com>
5674
5675         * except.c: Allow cc1plus to be built with native compiler on rs6000.
5676         (expand_start_all_catch): Add assemble_external calls for various
5677         routines we call.
5678         (expand_leftover_cleanups): Ditto.
5679         (expand_start_catch_block): Ditto.
5680         (do_unwind): Ditto.
5681         (expand_builtin_throw): Ditto.
5682
5683 Wed Jan 11 01:05:42 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5684
5685         * decl.c (pushtag): Only look for a previous decl in the current
5686         binding level.  Use explicit global scope in DECL_NESTED_TYPENAME.
5687
5688         * gxx.gperf: Add __signature__ and __sigof__ keywords.
5689
5690         * decl2.c (lang_decode_option): -ansi does not set flag_no_asm.  It
5691         does set flag_no_gnu_keywords and flag_operator_names.
5692
5693         * lex.c (init_lex): 'overload' is not a keyword unless -traditional.
5694         Unset extension keywords if -fno-gnu-keywords.
5695         Allow operator names ('bitand') if -foperator-names.
5696         Never unset 'asm'; -fno-asm only affects 'typeof'.
5697
5698         * decl.c (lookup_name_real): The got_object special lookup only
5699         applies to types.
5700
5701 Tue Jan 10 18:07:51 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5702
5703         * spew.c (yylex): Also use DECL_NESTED_TYPENAME if got_object is set.
5704
5705         * parse.y (primary): Unset got_object after all rules that use the
5706         'object' nonterminal.
5707         (object): Set got_object.
5708
5709         * lex.h: Declare got_object.
5710
5711         * decl.c (lookup_name_real): Also lookup names in the context of an
5712         object specified.
5713
5714 Tue Jan 10 14:30:30 1995  Mike Stump  <mrs@cygnus.com>
5715
5716         * typeck.c (get_member_function_from_ptrfunc): Use ptrdiff_type_node
5717         for things that have to be added to pointers, not size_type.  Cures
5718         problems with pointer to members on Alphas.
5719         (build_binary_op_nodefault): Ditto.
5720         (get_delta_difference_: Ditto.
5721         (build_ptrmemfunc): Ditto.
5722
5723 Tue Jan 10 01:49:25 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5724
5725         * decl.c (pushtag): Stick the new decl in TYPE_NAME before pushing
5726         it.
5727
5728         * typeck.c (build_component_ref): Don't build up a COMPONENT_REF
5729         when dealing with overloaded member functions; just act like
5730         build_offset_ref.
5731         (commonparms): Remove misleading comment.
5732
5733         * decl.c (duplicate_decls): Complain about repeated default
5734         arguments here.
5735         (redeclaration_error_message): Instead of here.
5736         (pushdecl): Complain about missing default arguments here.
5737         (grokparms): Instead of here.
5738         (lookup_name_current_level): Also match on DECL_ASSEMBLER_NAME.
5739         (grok_reference_init): Do not complain about missing initializer if
5740         declared 'extern'.
5741
5742         * search.c (lookup_field): Don't return a TYPE_DECL if there is a
5743         function alternative and want_type is not set.
5744
5745 Mon Jan  9 18:16:23 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5746
5747         * decl.c (pushtag): Don't set TYPE_NAME to an identifier.  Do push
5748         the decl when the type has no TYPE_NAME.
5749         (lookup_nested_type): Don't assume that type has TYPE_NAME set.
5750         (lookup_name_real): Call lookup_field with want_type =
5751         prefer_type.
5752
5753         * search.c (lookup_field): Handle want_type properly in the presence
5754         of fields with the same name.
5755
5756         * decl.c (set_nested_typename): Set nested name for file-scope types
5757         to include leading ::.
5758         (pushdecl): Set the nested typename if the decl doesn't have one,
5759         rather than if the type's canonical decl doesn't have one.
5760
5761 Mon Jan  9 03:44:33 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5762
5763         * typeck.c (convert_for_assignment): Complain about contravariance
5764         violation here.
5765         (comp_target_types): Instead of here.
5766         (build_unary_op): resolve_offset_ref before checking for a valid
5767         type.
5768
5769         * spew.c (yylex): Decrement looking_for_typename after we see a
5770         _DEFN.
5771
5772         * decl.c (pushdecl): Don't install an artificial TYPE_DECL in
5773         IDENTIFIER_LOCAL_VALUE if we already have a decl with that name.
5774
5775         * typeck.c (convert_for_assignment): Converting pointers to bool
5776         does not need a cast.
5777
5778 Sun Jan  8 18:16:45 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5779
5780         * class.c (instantiate_type): Initialize nsubsts parm.
5781
5782         * pt.c (do_function_instantiation): Ditto.
5783
5784 Sat Jan  7 14:37:05 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5785
5786         * pt.c (tsubst): Use TREE_STATIC instead of DECL_INLINE &&
5787         DECL_SAVED_INSNS to determine whether or not we've seen a definition
5788         of this function.
5789         (instantiate_template): Ditto.
5790
5791         * call.c (convert_harshness): Allow const reference binding when
5792         called from the overloading code, but not when called from
5793         can_convert (since it isn't a conversion).
5794         (convert_harshness): Put back some disabled code.
5795
5796 Fri Jan  6 14:10:57 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5797
5798         * call.c (convert_harshness): There is no implicit conversion from
5799         void* to other pointer types (unless the parameter is (void*)0).
5800         (convert_harshness): Non-lvalues do not convert to reference types.
5801
5802         * class.c (finish_struct_methods): Still set
5803         TYPE_HAS_{INT,REAL}_CONVERSION.
5804
5805         * call.c (can_convert): Don't use aggregate initialization.
5806
5807         * cp-tree.h: Declare lookup_conversions.
5808
5809 Thu Jan  5 21:08:00 1995  Mike Stump  <mrs@cygnus.com>
5810
5811         * parse.y (simple_stmt): Fix duplicate case value error messages to
5812         be more readable.
5813
5814 Wed Jan  4 16:44:19 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5815
5816         * cvt.c (build_type_conversion): Total rewrite to use
5817         convert_harshness instead of reproducing conversion logic here.  Now
5818         much shorter.
5819
5820         * call.c (convert_harshness): Support conversions to bool.
5821         (can_convert): Checks whether a conversion is less harsh
5822         than USER_CODE, for build_type_conversion.
5823
5824         * search.c (add_conversions): Function for passing to dfs_walk which
5825         adds all the type conversion operators in the current type to a list.
5826         (lookup_conversions): Calls dfs_walk with add_conversions and return
5827         the list.
5828         (dfs_walk): Don't require a qfn.
5829
5830         * cp-tree.h: Lose CLASSTYPE_CONVERSIONS hackery.
5831         (CLASSTYPE_FIRST_CONVERSION): Points to elt 1 of CLASSTYPE_METHOD_VEC.
5832
5833         * class.c (finish_struct_bits): Lose CLASSTYPE_CONVERSIONS hackery.
5834         (grow_method): A separate function for building onto the growing
5835         method vector.
5836         (finish_struct_methods): Use it.  Put all type conversion operators
5837         right after the constructors.  Perhaps we should sort the methods
5838         alphabetically?
5839
5840 Mon Jan  2 14:42:58 1995  Jason Merrill  <jason@phydeaux.cygnus.com>
5841
5842         * call.c (build_method_call): Lose another misleading shortcut.
5843
5844 Fri Dec 30 17:57:30 1994  Mike Stump  <mrs@cygnus.com>
5845
5846         * gc.c (build_bltn_desc): Handle bool as a built-in type.
5847
5848 Fri Dec 30 14:20:21 1994  Mike Stump  <mrs@cygnus.com>
5849
5850         * tree.c (layout_vbasetypes): Ensure that we don't loose alignment
5851         on the complete type because of small virtual bases.
5852
5853 Fri Dec 30 12:22:29 1994  Mike Stump  <mrs@cygnus.com>
5854
5855         * decl.c (n_incomplete): Bump n_incomplete up to int to match C
5856         front end.
5857         (pushdecl): Also count decls pushed that are of a type being defined
5858         as incomplete things.
5859         * class.c (finish_struct): Move hack_incomplete_structures up to
5860         just after we set it as not being defined, so that the decls we
5861         build for RTTI don't count as incomplete.
5862
5863 Thu Dec 29 18:20:57 1994  Mike Stump  <mrs@cygnus.com>
5864
5865         * pt.c (tsubst): Fix problem with defining constructors in templated
5866         classes with virtual bases.
5867
5868 Wed Dec 28 08:31:00 1994  Mike Stump  <mrs@cygnus.com>
5869
5870         * parse.y (TYPEID): Strip top-level cv-qualifiers on typeid
5871         expressions.
5872         * gc.c (build_typeid): Ditto.
5873
5874 Thu Dec 22 17:26:33 1994  Mike Stump  <mrs@cygnus.com>
5875
5876         * cvt.c (build_up_reference): Fix breakage introduced on Nov 29,
5877         don't assert on complex AGGR inits.
5878
5879 Thu Dec 22 14:32:31 1994  Mike Stump  <mrs@cygnus.com>
5880
5881         * method.c (build_overload_value): Handle pointer to members as
5882         template arguments.
5883
5884 Thu Dec 22 13:09:07 1994  Mike Stump  <mrs@cygnus.com>
5885
5886         * typeck.c (unary_complex_lvalue): Don't call sorry if we know how
5887         to do take the address of a data member for a pointer to data
5888         member.
5889
5890 Thu Dec 22 10:04:19 1994  Mike Stump  <mrs@cygnus.com>
5891
5892         * decl.c (grokdeclarator): Use the typedef name for linkage if the
5893         type doesn't otherwise have a name.
5894
5895         * decl2.c (grokfield): Ditto.
5896
5897         * class.c (finish_struct): Since we reuse the TYPE_DECL for the
5898         DECL_NAME of enums, structs and classes, we have to avoid trying to
5899         put it in the TYPE_FIELDS again.
5900
5901 Wed Dec 21 11:07:05 1994  Mike Stump  <mrs@cygnus.com>
5902
5903         * decl2.c (check_classfn): Ignore this parameter on static functions
5904         when checking to see if we match.
5905
5906 Tue Dec 20 17:47:02 1994  Mike Stump  <mrs@cygnus.com>
5907
5908         * typeck.c (unary_complex_lvalue): Handle address of non-left most
5909         pointers to members by calling get_delta_difference.
5910
5911 Mon Dec 19 22:40:53 1994  Mike Stump  <mrs@cygnus.com>
5912
5913         * decl2.c (check_classfn): Don't use decls_match yet, as it modifies
5914         static functions to early.
5915
5916 Thu Dec 19 22:37:48 1994  Mike Stump  <mrs@cygnus.com>
5917
5918         * method.c (make_thunk): Handle encoding of positive thunk offsets.
5919
5920 Sat Dec 17 13:29:50 1994  Doug Evans  <dje@canuck.cygnus.com>
5921
5922         * Make-lang.in (.PHONY): Tell GNU make C++ and c++ are phony targets.
5923
5924 Thu Dec 15 16:32:12 1994  Mike Stump  <mrs@cygnus.com>
5925
5926         * decl2.c (check_classfn): Use decls_match to check if this has
5927         already been declared, as the DECL_ASSEMBLER_NAME may have been
5928         changed via asm("new_name").
5929         * decl.c (decls_match): Make public.
5930
5931 Thu Dec 15 15:17:55 1994  Mike Stump  <mrs@cygnus.com>
5932
5933         * *.[chy] (expand_aggr_init) Add fourth argument to handle
5934         distinction between = init and (init) style of initializations.
5935         * *.[chy] (finish_decl): Add fifth argument to to handle
5936         distinction between = init and (init) style of initializations.
5937
5938 Tue Dec 13 19:16:05 1994  Mike Stump  <mrs@cygnus.com>
5939
5940         Fix some random `explicit' bugs.
5941
5942         * cvt.c (convert_to_reference): Add third parameter to
5943         convert_force.
5944         (convert_force): Ditto.
5945         * call.c (build_method_call): Ditto.
5946         * decl2.c (setup_vtbl_ptr): Ditto.
5947         * init.c (expand_virtual_init): Ditto.
5948         (build_member_call): Ditto.
5949         (build_delete): Ditto.
5950         (build_vbase_delete): Ditto.
5951         * typeck.c (build_component_addr): Ditto.
5952         (build_c_cast): Ditto.
5953         (build_modify_expr): Ditto.
5954         * cp-tree.h (CONV_NONCONVERTING): Ditto. Add so that we can
5955         distinguish the context in which the conversion appears.  Add thrid
5956         argument to build_c_cast.
5957         * cvt.c (cp_convert): Pass whether or not we want to consider
5958         non-converting constructors down to build_method_call.
5959         * decl2.c (reparse_absdcl_as_casts): Add third argument to
5960         build_c_cast.
5961         * gc.c (build_m_desc): Ditto.
5962         * init.c (build_new): Ditto.
5963         * parse.y (expr_no_commas): Ditto.
5964         (primary): Ditto.
5965         * typeck.c (build_x_function_call): Ditto.
5966         (build_static_cast): Ditto.
5967         (build_reinterpret_cast): Ditto.
5968         (build_const_cast): Ditto.
5969         (build_c_cast): Ditto.
5970         (build_ptrmemfunc): Ditto.
5971         * typeck2.c (build_functional_cast): Ditto.
5972         * init.c (expand_aggr_init): Added LOOKUP_ONLYCONVERTING to
5973         expand_aggr_init_1 as inits are converted to the destination type.
5974
5975 Tue Dec 13 16:18:57 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5976
5977         * Make-lang.in (cc1plus): Depends on c-pragma.o.
5978
5979         * Makefile.in (OBJ{DEP,}S): Add ../c-pragma.o.
5980
5981         * lex.c (check_newline): If the #pragma is not recognized by g++,
5982         try machine-specific ones too.
5983         (handle_sysv_pragma): Copied from c-lex.c.
5984
5985 Mon Dec 12 23:53:06 1994  Mike Stump  <mrs@cygnus.com>
5986
5987         * except.c (expand_throw): Fix Dec 6th change, build_new likes a
5988         reference better.
5989
5990 Mon Dec 12 18:01:00 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
5991
5992         * typeck.c (build_binary_op): Lose checks on TYPE_PTRMEMFUNC_P with
5993         IS_AGGR_TYPE, since now they will not both be set on the same type.
5994
5995         * pt.c (do_pending_expansions): Don't clear TREE_PUBLIC on
5996         instantiations controlled by -fexternal-templates.
5997
5998         * decl.c (duplicate_decls): Don't complain about different values of
5999         __attribute__ ((const)) and ((noreturn)).
6000
6001 Fri Dec  9 18:17:37 1994  Doug Evans  <dje@cygnus.com>
6002
6003         * Makefile.in (BISONFLAGS): Delete --yacc.
6004         (PARSE_H): Depend on $(PARSE_C), for parallel makes.
6005         (PARSE_C): Undo last patch.
6006
6007 Fri Dec  2 10:44:36 1994  Mike Stump  <mrs@cygnus.com>
6008
6009         * Makefile.in (BISONFLAGS): Add --yacc so that output winds up in
6010         y.tab.c.
6011
6012 Thu Dec  8 17:39:46 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
6013
6014         * decl.c (finish_decl): Don't call obscure_complex_init for decls
6015         of indeterminate size.
6016
6017 Wed Dec  7 16:49:22 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
6018
6019         * decl.c (obscure_complex_init): Function to tweak the decl to
6020         prevent expand_decl from tring to initialize it.
6021         (finish_decl): Use it rather than writing the same code in three
6022         different places.
6023
6024         * parse.y (bad_parm): Stop trying to support parms without types.
6025
6026 Wed Dec  7 12:06:56 1994  Mike Stump  <mrs@cygnus.com>
6027
6028         * decl2.c (grokfield): Make asm specs on static member functions
6029         work.
6030
6031 Tue Dec  6 15:43:20 1994  Mike Stump  <mrs@cygnus.com>
6032
6033         * except.c (expand_throw): Make a copy of the thrown object.
6034
6035 Tue Dec  6 14:16:34 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
6036
6037         * parse.y: : has lower precedence than =.
6038
6039 Tue Dec  6 12:46:17 1994  Mike Stump  <mrs@cygnus.com>
6040
6041         * decl.c (pushdecl): Use DECL_NAME of VAR_DECLs to avoid namespace
6042         manglings.
6043         (grokvardecl): Add namespace into variable name.
6044
6045 Tue Dec  6 11:26:55 1994  Mike Stump  <mrs@cygnus.com>
6046
6047         * decl2.c (current_namespace_id): New routine to transform a simple
6048         name into a name in a namespace.
6049         * decl.c (grokdeclarator): Use it.
6050         * decl2.c (get_namespace_id): Find the name of the current
6051         namespace.
6052         (push_namespace, pop_namespace): Complete out missing
6053         functionality.
6054
6055 Mon Dec  5 17:11:51 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
6056
6057         * class.c (finish_struct): Don't use LONG_LONG_TYPE_SIZE, as it may
6058         not be defined.  Fix warning message for enums and restore warning
6059         for non-enums.
6060
6061         * decl2.c (push_namespace): Dummy function.
6062         (pop_namespace): Ditto.
6063         (do_namespace_alias): Ditto.
6064         (do_using_decl): Ditto.
6065         (do_using_directive): Ditto.
6066
6067         * parse.y: New token NSNAME for namespace names.
6068         (extdef): Add namespace, using definitions.
6069         (using_decl): New rule for using declarations.
6070         (any_id): New rule for identifiers with any degree of scoping.
6071         (identifier): Add NSNAME.
6072         (notype_identifier): Ditto.
6073         (component_decl): Add using_decl.
6074         (nested_name_specifier): Add NSNAME SCOPE.
6075
6076         * typeck.c (convert_for_assignment): Handle conversions between
6077         enums and bool.
6078
6079         * decl.c (duplicate_decls): Only propagate DECL_MAIN_VARIANT on
6080         FUNCTION_DECLs.
6081
6082 Mon Dec  5 13:03:16 1994  Mike Stump  <mrs@cygnus.com>
6083
6084         * class.c (finish_struct): Give an error if one tries to declare a
6085         bit-field's size greater than a long long, as the backend will dump.
6086         It is not an error to declare an enum bit-field greater than its
6087         precision.  Warn if an enum bit-field is too small to hold all
6088         its values.
6089
6090 Mon Dec  5 11:41:50 1994  Mike Stump  <mrs@cygnus.com>
6091
6092         * typeck.c (convert_for_assignment): Use cp_convert instead of
6093         convert so that we don't get static casts.
6094
6095 Sun Dec  4 11:59:01 1994  Mike Stump  <mrs@cygnus.com>
6096
6097         * cvt.c (cp_convert): Don't complain about int->enum conversion if
6098         we are doing static casts.
6099
6100 Fri Dec  2 18:32:41 1994  Mike Stump  <mrs@cygnus.com>
6101
6102         * error.c (dump_expr): Do something more intelligent with SAVE_EXPRs
6103         when dumping expressions in error messages.
6104
6105 Fri Dec  2 17:04:27 1994  Mike Stump  <mrs@cygnus.com>
6106
6107         * gc.c (build_dynamic_cast): Change interface to libg++, ensure that
6108         the return type is the right type, and make references work.
6109
6110 Fri Dec  2 16:36:43 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
6111
6112         * decl.c (poplevel): Don't be confused by function-scope
6113         declarations of non-nested functions.
6114         (duplicate_decls): Propagate DECL_MAIN_VARIANT.
6115         (pushdecl): Use duplicate_decls to copy info from old decl into new
6116         function-scope one rather than doing it here.
6117
6118         * decl2.c (mark_inline_for_output): Deal with the DECL_MAIN_VARIANT
6119         of this decl, in case this is a function-scope declaration.
6120
6121         * decl.c (finish_enum): Make sure that the type has the right
6122         precision when we call fixup_*_type.
6123
6124 Tue Nov 29 19:12:07 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
6125
6126         * cvt.c (build_up_reference): Strip superfluous NOP_EXPRs; we do
6127         want to build up references to rvalues if possible.
6128         (cp_convert): Stick on a NOP_EXPR when converting to the same type.
6129
6130 Tue Nov 29 11:28:59 1994  Mike Stump  <mrs@cygnus.com>
6131
6132         * parse.y (maybe_raises): Handle throw ().
6133         * parse.y (ansi_raise_identifier): grok type-ids in exception
6134         specifications.
6135         * tree.c (build_exception_variant): Use list compare to check if
6136         two exception specifications match.
6137         * decl.c (duplicate_decls, bad_specifiers): Enhance wording on error
6138         messages.
6139         * call.c (build_method_call): Remove TREE_RAISES.
6140         * cvt.c (convert_to_aggr): Ditto.
6141         * typeck.c (build_function_call_real, convert_arguments): Ditto.
6142         * init.c (expand_aggr_init_1): Ditto.
6143
6144 Tue Nov 29 09:50:39 1994  Mike Stump  <mrs@cygnus.com>
6145
6146         * except.c: Add support for m68k and mips exception handling
6147         support.
6148
6149 Tue Nov 29 08:48:33 1994  Mike Stump  <mrs@cygnus.com>
6150
6151         * except.c (expand_end_all_catch): Throw into outer context, if we
6152         fall off end of catch handlers.
6153
6154 Mon Nov 28 16:44:41 1994  Mike Stump  <mrs@cygnus.com>
6155
6156         * Makefile.in: Make is easier to decide where parse.[ch] will be
6157         built.
6158
6159 Thu Nov 17 20:11:24 1994  Doug Evans  <dje@cygnus.com>
6160
6161         * cp/Make-lang.in (CXX_INSTALL_NAME) Use program_transform_name.
6162         (GXX_INSTALL_NAME) Likewise.
6163         (CXX_CROSS_NAME) Use program_transform_cross_name.
6164         (GXX_CROSS_NAME) Likewise.
6165         (c++.install-man): Use program_transform_name on g++.1.
6166         (c++.uninstall): Likewise.
6167
6168 Mon Nov 28 13:53:03 1994  Mike Stump  <mrs@cygnus.com>
6169
6170         * parse.y (THROW): Fix precedence of throw expressions.
6171
6172 Mon Nov 28 13:15:16 1994  Mike Stump  <mrs@cygnus.com>
6173
6174         * typeck.c (build_unary_op): Allow promotions from bool to int on
6175         unary ~.
6176
6177 Sun Nov 27 00:16:21 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
6178
6179         * method.c (build_overload_name): Use DECL_ASSEMBLER_NAME for
6180         classes when appropriate.
6181         (build_overload_nested_name): When dealing with a function context,
6182         use ASM_FORMAT_PRIVATE_NAME to tweak the name of the function to
6183         avoid conflicts between local classes of the same name.
6184
6185 Wed Nov 23 17:59:42 1994  Mike Stump  <mrs@cygnus.com>
6186
6187         * gxx.gperf, parse.y, lex.h, hash.h, lex.c (init_lex), delc.c
6188         (duplicate_decls, grokdeclarator), cp-tree.h: Add support for
6189         `explicit'.
6190         * cvt.c (convert_to_reference, cp_convert, build_type_conversion_1,
6191         build_type_conversion): Use LOOKUP_ONLYCONVERTING in
6192         build_method_calls so that non-converting constructors are not used.
6193         * call.c (build_method_call): If we shouldn't use a non-converting
6194         constructor, then don't.
6195
6196 Wed Nov 23 14:46:56 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
6197
6198         * call.c (build_method_call): Don't try to synthesize methods yet.
6199
6200 Tue Nov 22 12:45:21 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
6201
6202         * pt.c (push_template_decls): Create CONST_DECLs for template
6203         constant parameters, not VAR_DECLs.
6204
6205 Sat Nov 19 15:28:31 1994  Jim Wilson  (wilson@chestnut.cygnus.com)
6206
6207         * typeck.c (build_binary_op_nodefault): Can shorten shift only if
6208         shift count is less than size in bits of arg0.
6209
6210 Thu Nov 17 15:30:50 1994  Mike Stump  <mrs@cygnus.com>
6211
6212         * gxx.gperf, hash.h, lex.c (init_lex, real_yylex), parse.y: Add new
6213         ANSI keywords and, and_eq, bitand, bitor, explicit, namespace, not,
6214         not_eq, or, or_eq, typename, using, xor, xor_eq to g++.  Still need
6215         to add support for explicit, namespace, typename, and using, support
6216         for the rest is already in.
6217
6218 Fri Nov  4 19:04:18 1994  Mike Stump  <mrs@cygnus.com>
6219
6220         * gc.c (get_bad_cast_node): New routine to support compile time
6221         throws of bad_cast.
6222         * gc.c (build_dynamic_cast): Support throwing of bad_cast at compile
6223         time.
6224
6225 Fri Nov  4 11:12:00 1994  Mike Stump  <mrs@cygnus.com>
6226
6227         * except.c: Add hppa support.
6228
6229 Fri Nov  4 10:50:50 1994  Mike Stump  <mrs@cygnus.com>
6230
6231         * except.c: Add rs6000 support.
6232
6233 Thu Nov  3 14:24:23 1994  Mike Stump  <mrs@cygnus.com>
6234
6235         * except.c (do_unwind): Add i[34]86 support.
6236
6237 Thu Nov  3 00:10:46 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6238
6239         * pt.c (do_pending_expansions): Unset TREE_PUBLIC on implicit
6240         instantiations.
6241
6242 Wed Nov  2 15:08:24 1994  Kung Hsu  (kung@mexican.cygnus.com)
6243
6244         * decl.c (finish_function): emit types used in method parameters
6245         into symbol table.
6246
6247 Wed Nov  2 15:05:47 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6248
6249         * pt.c (process_template_parm): Allow pointer to member function
6250         template parameter types.
6251         (uses_template_parms): Handle pointer to member function
6252         CONSTRUCTORs.
6253
6254         * g++.c (main): Cast first argument of bzero to (char *).
6255         Pass -lstdc++ instead of -lg++ unless we are invoked as 'g++'.
6256
6257 Mon Oct 31 14:50:48 1994  Kung Hsu  (kung@mexican.cygnus.com)
6258
6259         * gc.c (build_dynamic_cast): rewrite to make it work.
6260         * class.c (finish_vtbls): build more vtables if flag_rtti is on.
6261         * class.c (modify_all_direct_vtables): ditto.
6262         * init.c (expand_direct_vtbls_init): expand more vtables if
6263         flag_rtti is on.
6264         * decl.c (init_type_desc): add default return.
6265
6266 Tue Oct 25 17:13:09 1994  Kung Hsu  (kung@mexican.cygnus.com)
6267
6268         * tree.c (debug_binfo): get rid of the initial size entry of
6269         vtable.
6270         * cp-tree.h: change flag_dossier to flag rtti, define type
6271         descriptor type nodes.
6272         * decl.c (init_type_desc): new function to initialize type
6273         descriptor type nodes.
6274         * decl.c (record_builtin_type): change flag_dossier to flag_rtti.
6275         * lex.c (init_lex): ditto.
6276         * decl.c : change variable flag_dossier to flag_rtti.
6277         * decl.c (duplicate_decls): get rid initial size entry of vtable.
6278         * decl.c (hack_incomplete_structures): take out assert 164.
6279         * search.c (get_abstract_virtuals_1): ditto.
6280         * search.c (dfs_init_vbase_pointers): change CLASSTYPE_DOSSIER to
6281         CLASSTYPE_RTTI.
6282         * parse.y: ditto.
6283         * class.c (prepare_fresh_vtable): for virtual bases, get right
6284         offset.
6285         * class.c (add_virtual_function): change flag_dossier to
6286         flag_rtti.
6287         * class.c (modify_one_vtable): modify the right rtti entry.
6288         * class.c (override_one_vtable): get rid of size entry.
6289         * class.c (finish_struct): change flag_dossier to flag_rtti, and
6290         build extra vtables, build type descriptors for polymorphic
6291         classes.
6292         * gc.c (build_headof): make headof() works correctly with new
6293         rtti.
6294         * gc.c (build_typeid): make this function work with new rtti.
6295         * gc.c (get_typeid): make this function work with new rtti.
6296         * gc.c (build_bltn_desc): new function for new rtti.
6297         * gc.c (build_user_desc): ditto.
6298         * gc.c (build_class_desc): ditto.
6299         * gc.c (build_ptr_desc): ditto.
6300         * gc.c (build_attr_desc): ditto.
6301         * gc.c (build_func_desc): ditto.
6302         * gc.c (build_ptmf_desc): ditto.
6303         * gc.c (build_ptmd_desc): ditto.
6304         * gc.c (build_t_desc): ditto.
6305         * gc.c : comment out old build_t_desc, build_i_desc, build_m_desc.
6306
6307 Tue Oct 25 13:37:41 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6308
6309         * call.c (convert_harshness): Check for TREE_UNSIGNED differences
6310         after checking for integral conversions.
6311
6312 Wed Nov 30 19:13:50 1994  Mike Stump  <mrs@cygnus.com>
6313
6314         * Version 2.6.3 released.
6315
6316 Thu Nov 17 10:56:50 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
6317
6318         * typeck2.c (build_m_component_ref): Check the basetype of the
6319         member pointer against the main variant of the object type.
6320
6321 Mon Nov 14 14:21:52 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
6322
6323         * cvt.c (convert_to_reference): Make sure that the original expr
6324         gets its type back when converting a reference.
6325
6326         * method.c (build_overload_name): Clear numeric_outputed_need_bar here.
6327         (build_decl_overload): Instead of here.
6328
6329 Tue Nov  8 17:11:24 1994  Jason Merrill  <jason@phydeaux.cygnus.com>
6330
6331         * cvt.c (cp_convert): Don't build a TARGET_EXPR if we're not in a
6332         function.
6333
6334         * typeck.c (convert_for_initialization): Handle initialization from
6335         a TARGET_EXPR.
6336
6337 Sun Nov  6 01:34:24 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6338
6339         * pt.c (lookup_nested_type_by_name): Fix list-walking logic.
6340         (tsubst): When replacing a TEMPLATE_TYPE_PARM, propagate
6341         TYPE_READONLY and TYPE_VOLATILE from the argument.
6342         (unify): When unifying with a TEMPLATE_TYPE_PARM, remove cv-quals
6343         present in parm from arg.
6344         (type_unification): Strip REFERENCE_TYPE from the argument type.
6345         (unify): Don't strip REFERENCE_TYPE from the argument type.
6346
6347 Sat Nov  5 22:42:15 1994  Greg McGary  (gkm@magilla.cichlid.com)
6348
6349         * pt.c (do_type_instantiation): Check to see if there's a
6350         IDENTIFIER_TEMPLATE on a class before calling
6351         instantiate_member_templates().
6352
6353 Sat Nov 12 06:35:42 1994  Mike Stump  <mrs@cygnus.com>
6354
6355         * Version 2.6.2 released.
6356
6357 Thu Nov  3 18:48:19 1994  Paul Eggert  <eggert@twinsun.com>
6358
6359         * Makefile.in (spew.o, lex.o, pt.o):
6360         Depend on $(srcdir)/parse.h, not parse.h.
6361
6362 Tue Nov  1 19:19:41 1994  Mike Stump  <mrs@cygnus.com>
6363
6364         * Version 2.6.1 released.
6365
6366 Sun Oct 23 13:19:55 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6367
6368         * decl2.c: Declare flag_access_control.
6369         (struct lang_f_options): Add access-control.
6370         * expr.c (cplus_expand_expr, NEW_EXPR): Unset flag_access_control
6371         for the call to expand_aggr_init to copy the object out of the
6372         pcc_struct_return slot.
6373         * search.c (compute_access): if (!flag_access_control) return
6374         access_public.
6375
6376 Fri Oct 21 00:32:54 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6377
6378         * lex.c (cons_up_default_function): Don't try to defer method
6379         synthesis now.
6380
6381         * decl.c (init_decl_processing): Use __pure_virtual for abort_fndecl
6382         instead of abort, since the OSF/1 dynamic linker doesn't like to see
6383         relocation entries for abort.
6384
6385         * tree.c (array_type_nelts_total): Use sizetype, not
6386         integer_type_node.
6387         (array_type_nelts_top): Ditto.
6388
6389 Thu Oct 20 15:48:27 1994  Mike Stump  <mrs@cygnus.com>
6390
6391         * decl.c (grokdeclarator): Added handling for catch parameters
6392         (CATCHPARM).
6393         * except.c (expand_start_catch_block): Use the new CATCHPARM context
6394         instead of NORMAL.
6395         * except.c (expand_throw): Don't let convert_to_reference complain
6396         about what we are doing.
6397
6398 Thu Oct 20 12:55:24 1994  Jim Wilson  (wilson@cygnus.com)
6399
6400         * method.c (emit_thunk): Call instantiate_virtual_regs.
6401
6402 Wed Oct 19 14:15:33 1994  Mike Stump  <mrs@cygnus.com>
6403
6404         * except.c (expand_exception_blocks): Make sure throw code doesn't
6405         get put in function that won't be output.
6406
6407 Mon Oct 17 18:03:15 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6408
6409         * decl.c (init_decl_processing): Make alloca a builtin.
6410
6411 Thu Oct 27 21:10:25 1994  Craig Burley  (craig@burley)
6412
6413         * g++.c (main): Only decrement "added" and set "library" to
6414         NULL when "library" != NULL (just like 940829 fix).
6415
6416 Mon Oct 17 15:56:11 1994  Mike Stump  <mrs@cygnus.com>
6417
6418         * except.c (expand_start_catch_block): Make sure the false label
6419         gets onto the permanent obstack, as it is used for the exception
6420         table.
6421
6422 Fri Oct 14 18:54:48 1994  Mike Stump  <mrs@cygnus.com>
6423
6424         * class.c (modify_one_vtable): Since the DECL_CONTEXT of fndecl can
6425         be set just below, use current_fndecl instead.
6426
6427 Fri Oct 14 15:12:22 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6428
6429         * init.c (expand_aggr_vbase_init_1): Don't call expand_aggr_init_1
6430         with LOOKUP_SPECULATIVELY.
6431         (expand_default_init): Abort if build_method_call returns NULL_TREE.
6432
6433         * typeck.c (build_modify_expr): Don't just build a MODIFY_EXPR if
6434         the rhs is a TARGET_EXPR.
6435
6436         * parse.y (left_curly): Anonymous types are not affected by #pragma
6437         interface/implementation.
6438
6439         * method.c (synthesize_method): Don't call setup_vtbl_ptr for the
6440         default constructor if it isn't needed.
6441
6442         * lex.c (cons_up_default_function): Do synthesize methods for
6443         anonymous types if necessary.
6444
6445 Thu Oct 13 17:44:55 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6446
6447         * method.c (build_decl_overload): Set numeric_outputed_need_bar to 0.
6448
6449 Wed Oct 12 13:27:57 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6450
6451         * typeck.c (build_modify_expr): Understand how to copy an aggregate.
6452
6453         * init.c (expand_default_init): Ditto.  Also remove some of the
6454         crufty code that assumes methods will not be synthesized properly.
6455
6456         * lex.c (cons_up_default_function): If the containing type has no
6457         name, these functions should never need to be called, so just
6458         declare them.
6459
6460         * lex.c (real_yylex): Use HOST_BITS_PER_WIDE_INT to determine the
6461         bitmask for lexing character constants.
6462
6463         * call.c (build_method_call): Disable code that tries to do tricky
6464         stuff with a default parameter that is a constructor call, but
6465         actually does other tricky stuff that breaks things.
6466
6467 Wed Oct 12 16:14:01 1994  Benoit Belley  <belley@cae.ca>
6468
6469         * decl.c (finish_enum): Disable code which forces enums to be signed,
6470         since this conflicts with their use as bitfields. type_promotes_to
6471         handles promotion of enums of underlying unsigned types to signed
6472         integer types.
6473
6474 Wed Oct 12 13:24:03 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6475
6476         * cvt.c (type_promotes_to): Also promote enums to long if
6477         appropriate.
6478
6479         * typeck.c (default_conversion): Don't expect type_promotes_to to
6480         return a main variant.
6481
6482 Wed Oct 12 12:19:45 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6483
6484         * call.c (build_scoped_method_call): Don't lose side effects in the
6485         object expression when calling a non-existent destructor.
6486
6487 Fri Sep  2 19:05:21 1994  Rohan Lenard  (rjl@iassf.easams.com.au)
6488
6489         * call.c (build_scoped_method_call): Remove erroneous error message
6490         when destructor call is written as a scoped call.
6491
6492 Tue Oct 11 23:48:31 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6493
6494         * various: Cast pointer arguments to bzero and bcopy to char *.
6495
6496 Tue Oct 11 19:34:32 1994  Mike Stump  <mrs@cygnus.com>
6497
6498         * class.c (get_derived_offset): Added a type parameter to limit how
6499         far up the CLASSTYPE_VFIELD_PARENT chain we search.
6500         * class.c (modify_one_vtable, fixup_vtable_deltas): When forming the
6501         offset to put into the vtable for the this parameter, make sure we
6502         don't offset from a parent of the DECL_CONTEXT of the function.
6503
6504 Tue Oct 11 16:10:52 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6505
6506         * pt.c (do_function_instantiation): Set DECL_EXTERNAL and
6507         TREE_STATIC when setting DECL_INTERFACE_KNOWN.
6508         (do_type_instantiation): Ditto.
6509
6510         * lex.c (cons_up_default_function): Set DECL_INTERFACE_KNOWN,
6511         DECL_EXTERNAL and TREE_STATIC as appropriate.
6512
6513         * decl2.c (finish_file): Also synthesize methods that don't have
6514         DECL_EXTERNAL set.  Set interface_unknown before doing so.
6515
6516         * decl.c (start_function): If DECL_INTERFACE_KNOWN is set on the
6517         function decl, don't muck with TREE_PUBLIC and DECL_EXTERNAL.
6518
6519 Mon Oct 10 00:56:53 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6520
6521         * lex.c (cons_up_default_function): Mark methods in a template class
6522         as template instances.  Store the values of interface_unknown and
6523         interface_only for do_pending_inlines.
6524         (do_pending_inlines): Use them.
6525
6526         * decl2.c (finish_file): If we haven't seen a definition of a
6527         function declared static, make the decl non-PUBLIC so compile_file
6528         can give an error.
6529
6530 Sun Oct  9 02:42:29 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6531
6532         * method.c (do_build_copy_constructor): Handle anonymous unions.
6533         (do_build_assign_ref): Ditto.
6534         (largest_union_member): Move from lex.c.
6535
6536 Sat Oct  8 14:59:43 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6537
6538         Re-implement g++'s vague linkage independent of TREE_PUBLIC.
6539         * pt.c (instantiate_member_templates): Lose redundant
6540         -fexternal-templates handling.
6541         (tsubst): Set TREE_PUBLIC and DECL_EXTERNAL on new decls.  Don't set
6542         TREE_STATIC or DECL_INTERFACE_KNOWN.
6543         (do_pending_expansions): Predicate on DECL_INTERFACE_KNOWN instead
6544         of DECL_EXTERNAL for explicit instantiations.
6545         (do_function_instantiation): Do the new thing.
6546         (do_type_instantiation): Ditto.
6547         (instantiate_template): Deal with member templates defined in a .cc
6548         file with -fexternal-templates.
6549         * except.c (expand_exception_blocks): Use DECL_LINKAGE_KNOWN to
6550         decide whether to stick builtin_throw here.
6551         * decl2.c (import_export_inline): Predicate on DECL_INTERFACE_KNOWN
6552         rather than TREE_PUBLIC.  Generally fix rules.
6553         (finish_file): Use DECL_INITIAL to determine whether or not a method
6554         has been synthesized, rather than TREE_ASM_WRITTEN.
6555         * decl.c (warn_extern_redeclared_static): Use DECL_PUBLIC instead of
6556         TREE_PUBLIC.
6557         (pushdecl): Ditto.
6558         (duplicate_decls): Ditto.  Deal with DECL_DECLARED_STATIC and
6559         DECL_INTERFACE_KNOWN. 
6560         (redeclaration_error_message): Fix checking for conflicting linkage.
6561         (define_function): Set DECL_INTERFACE_KNOWN.
6562         (grokfndecl): Function decls are PUBLIC until we are sure about
6563         their linkage.  Set DECL_DECLARED_STATIC as needed.
6564         (start_function): Deal with linkage.  Move pushdecl after linkage
6565         magic.
6566         (finish_function): Don't set TREE_ASM_WRITTEN on discarded inlines.
6567         * cp-tree.h (lang_decl_flags): Add interface_known and
6568         declared_static.
6569         (DECL_INTERFACE_KNOWN): New macro.
6570         (DECL_DECLARED_STATIC): New macro.
6571         (DECL_PUBLIC): New macro.
6572
6573         Clean up bogus use of TREE_PUBLIC.
6574         * class.c (alter_access): Fix mistaken use of TREE_PUBLIC (it
6575         doesn't correspond to TREE_PROTECTED and TREE_PRIVATE).
6576         * init.c (do_friend): Don't arbitrarily set TREE_PUBLIC.
6577
6578 Wed Oct  5 13:44:41 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6579
6580         * call.c (build_overload_call_real): Don't immediately do
6581         array->pointer conversion.
6582
6583         * pt.c (type_unification): If not passing to a reference, strip
6584         cv-quals.  Also handle array->pointer conversion.
6585
6586 Tue Oct  4 17:45:37 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6587
6588         * decl.c (grokdeclarator): Don't warn about applying const to a
6589         const typedef or template type parameter.
6590
6591         * decl2.c (finish_file): Also synthesize methods after walking the
6592         vtables.  Ugly ugly ugly.
6593
6594 Mon Oct  3 15:02:41 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6595
6596         * various: Remove lingering remnants of old exception handling code.
6597
6598         * decl2.c (finish_file): Synthesize methods before walking the
6599         vtables, so that the vtables get emitted as needed.
6600
6601         * decl.c (shadow_tag): Remove obsolete code for pushing tags and
6602         dealing with exceptions.
6603
6604 Mon Oct  3 13:05:27 1994  Ian Lance Taylor  <ian@sanguine.cygnus.com>
6605
6606         * Make-lang.in (g++-cross): Depend upon version.o and $(LIBDEPS).
6607
6608 Mon Oct  3 02:59:28 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6609
6610         * decl2.c (finish_file): Fix inline handling.
6611
6612 Sun Oct  2 00:21:56 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6613
6614         * decl.c (grokdeclarator): Handle redundant scope even better.
6615         ({push,pop}_cp_function_context): Take toplev parameter.
6616
6617         * method.c (synthesize_method): Pass toplev parameter to
6618         {push,pop}_cp_function_context depending on decl_function_context
6619         (fndecl).
6620
6621         * typeck.c (build_x_unary_op): Unary & on OFFSET_REFs is always the
6622         built-in version.
6623
6624         * method.c (synthesize_method): Don't be confused by __in_chrg
6625         parameter.
6626
6627         * class.c (popclass): Set C_C_D like start_function does.
6628
6629         * decl.c (grokdeclarator): Handle redundant scope better.
6630
6631         * parse.y (expr_or_declarator): Add '(' expr_or_declarator ')' rule.
6632         (direct_notype_declarator): Ditto.
6633         (complex_direct_notype_declarator): Remove it here.
6634
6635 Sat Oct  1 21:42:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
6636
6637         * init.c (resolve_offset_ref): Fix types used in resolving .*
6638         expressions.
6639
6640 Sat Oct  1 15:18:49 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
6641
6642         Beginnings of work to synthesize methods only when needed.
6643         * call.c (build_method_call): Synthesize methods as necessary
6644         (currently never necessary).
6645         * class.c (popclass): Don't try to set C_C_D here, as it'll end up
6646         on the wrong obstack.
6647         * decl.c (push_cp_function_context): Mostly copied from
6648         push_c_function_context.
6649         (pop_cp_function_context): Similarly.
6650         (finish_function): Reverse order of poplevel and pop_nested_class so
6651         that current_class_decl is restored properly.  
6652         (start_function): Ditto.
6653         (finish_function): Add parameter 'nested'.  Don't call
6654         permanent_allocation if (nested).
6655         * various: Pass extra parameter to finish_function.     
6656         * decl2.c (finish_file): Reorganize end-of-file inline handling,
6657         synthesizing methods as necessary.
6658         * lex.c (cons_up_default_function): Call mark_inline_for_output.
6659         Only synthesize methods immediately if #pragma implementation
6660         (currently disabled).
6661         (do_pending_inlines): Call synthesize_method.
6662         * method.c (synthesize_method): New function; all method synthesis
6663         goes through here.  Calls do_build_assign_ref and
6664         do_build_copy_constructor.
6665         (build_default_constructor): Remove.
6666         (build_dtor): Ditto.
6667         (build_assign_ref): Rename to do_build_assign_ref and remove stuff
6668         done by synthesize_method.
6669         (build_copy_constructor): Similarly.
6670
6671 Thu Sep 29 16:58:52 1994  Mike Stump  <mrs@cygnus.com>
6672
6673         * typeck.c (c_expand_return): Use magic so the backend can fixup the
6674         assignment into the return register, so cleanups won't clobber it.
6675
6676 Thu Sep 29 13:08:50 1994  Jason Merrill  (jason@deneb.cygnus.com)
6677
6678         * method.c (hack_identifier): Don't call assemble_external for
6679         template decls.
6680
6681         * decl.c (finish_decl): Also end temporary allocation if the decl in
6682         question has a type of error_mark_node.
6683
6684 Wed Sep 28 21:45:00 1994  Mike Stump  <mrs@cygnus.com>
6685
6686         * typeck.c (build_modify_expr): When optimizing ?: on lhs, make sure
6687         that if the ?: was a reference type, that the subparts will be also.
6688
6689 Wed Sep 28 16:14:04 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
6690
6691         * except.c (register_exception_table): Use Pmode, not PTRmode.
6692
6693 Fri Sep 23 13:54:27 1994  Jason Merrill  (jason@deneb.cygnus.com)
6694
6695         * lex.c (do_pending_inlines): Do method synthesis after the
6696         pending_inlines have been reversed.
6697
6698 Thu Sep 22 12:53:03 1994  Per Bothner  (bothner@kalessin.cygnus.com)
6699
6700         * decl2.c (finish_file):  Fix Brendan's fix:  Only call
6701         register_exception_table if there is a non-empty exception table.
6702
6703 Thu Sep 22 12:03:46 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
6704
6705         * decl2.c (finish_file): Only do register_exception_table if
6706         -fhandle-exceptions is being used.
6707
6708 Wed Sep 21 19:01:51 1994  Per Bothner  (bothner@kalessin.cygnus.com)
6709
6710         * except.c (output_exception_table_entry):  Simplify
6711         by using assemble_integer.
6712         (build_exception_table):  Change to return a count.
6713         Cleanup to use standard macros, instead of hard-wired
6714         sparc asm format.  Don't make __EXCEPTION_TABLE__ global.
6715         (register_exception_table):  New function.  Generate call to builtin.
6716         * decl2.c (finish_file):  Call register_exception_table.
6717         * cp-tree.h (build_exception_table):  Fix prototype.
6718
6719 Wed Sep 21 13:20:42 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
6720
6721         * tree.c (break_out_calls): Don't try to duplicate the DECL_INITIAL.
6722
6723         * decl2.c (delete_sanity): Give an error at trying to delete a
6724         function.
6725
6726 Wed Sep 21 11:47:10 1994  Jason Merrill  (jason@deneb.cygnus.com)
6727
6728         * lex.c (cons_up_default_function): Mark synthesized destructors
6729         inline.
6730
6731         * decl.c (duplicate_decls): Ignore redeclarations of wchar_t as
6732         something other than __wchar_t, complaining if -pedantic and not in
6733         a system header.
6734
6735 Tue Sep 20 09:43:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
6736
6737         * decl.c (xref_tag): Set up BINFO_INHERITANCE_CHAIN on base binfos
6738         here.
6739
6740         * typeck.c (build_modify_expr): Require complete type after checking
6741         for error_mark_node.
6742
6743         * call.c (build_method_call): Print parmtypes when complaining of
6744         ambiguous call.
6745
6746         * typeck.c (build_modify_expr): Handle assignment to array from
6747         non-array.
6748
6749         * decl.c (lookup_name_real): Deal with got_scope == error_mark_node.
6750
6751         * call.c (build_method_call): Don't bother with the exact match.
6752
6753 Mon Sep 19 00:51:39 1994  Jason Merrill  (jason@deneb.cygnus.com)
6754
6755         * init.c (expand_aggr_init): If we munge the type of the variable,
6756         also munge the type of the initializer.
6757
6758         * decl.c (grokdeclarator): Use <= when comparing to RID_LAST_MODIFIER.
6759         (init_decl_processing): Push artificial declaration of wchar_t so
6760         people don't have to declare it before they can use it.
6761
6762         * error.c (cp_line_of): return lineno in lieu of 0.
6763
6764         * typeck.c (convert_for_assignment): Handle conversion of pmfs to
6765         int and bool.
6766         (build_component_ref): Fold the COMPONENT_REF in case it can be
6767         reduced.
6768
6769         * typeck2.c (store_init_value): Don't pedwarn about non-constant
6770         bracketed initializers for automatic variables.
6771
6772 Sun Sep 18 10:12:12 1994  Jason Merrill  (jason@deneb.cygnus.com)
6773
6774         * error.c (dump_decl): Don't say `typedef enum foo foo'.
6775
6776         * decl.c (start_decl): Don't set TREE_PUBLIC on template decls just
6777         because they're affected by #pragma i/i.  We'll deal with that when
6778         they get instantiated.
6779
6780         * typeck.c (build_unary_op): Clean up cruft in ADDR_EXPR case.
6781
6782         * class.c (instantiate_type): Set TREE_CONSTANT on instantiated
6783         ADDR_EXPRs if appropriate.
6784
6785         * decl.c (build_ptrmemfunc_type): Unset IS_AGGR_TYPE on pmf types.
6786
6787         * typeck.c (build_ptrmemfunc): Handle &overloaded_method as an
6788         initializer properly.
6789         * typeck2.c (digest_init): Ditto.
6790
6791         * tree.c (cp_build_type_variant): Like c_build_type_variant, except
6792         it uses build_cplus_array_type.
6793         * *.c: Use cp_build_type_variant instead of c_build_type_variant.
6794
6795         * pt.c (do_type_instantiation): Don't try to instantiate nested
6796         enums.
6797
6798 Tue Sep 13 10:56:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
6799
6800         * cvt.c (build_up_reference): Handle preincrement and predecrement
6801         properly.
6802
6803 Tue Sep 13 09:51:59 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
6804
6805         * decl.c (finish_decl): Only lay out the rtl for DECL if it is, in
6806         fact, static.
6807
6808 Mon Sep 12 14:40:30 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
6809
6810         * decl.c (finish_decl): Lay out the rtl for DECL before doing
6811         grok_reference_init, in case it's static.
6812
6813 Mon Sep 12 12:45:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
6814
6815         * class.c (finish_struct): Don't synthesize constructors if the
6816         class has a field with the same name as the class.  Don't die on
6817         classes with no constructors or destructors.  Don't die if the head
6818         and tail of the class are in different files.
6819
6820         * decl.c (grokdeclarator): Don't treat a function pointer field
6821         with the same name as the class as a constructor.
6822
6823 Fri Sep  9 13:17:00 1994  Jason Merrill  (jason@deneb.cygnus.com)
6824
6825         * typeck.c (build_c_cast): Pull constant values out of their
6826         variables here.
6827
6828         * decl.c (duplicate_decls): Only propagate DECL_CHAIN in
6829         FUNCTION_DECLs and TEMPLATE_DECLs.
6830
6831 Thu Sep  8 10:07:48 1994  Jason Merrill  (jason@deneb.cygnus.com)
6832
6833         * decl.c (duplicate_decls): Propagate DECL_CHAIN in all DECLs that
6834         have it.
6835
6836         * pt.c (unify): REALs and INTEGERs only unify with their own genus.
6837         (instantiate_member_templates): Don't muck with DECL_EXTERNAL and
6838         TREE_PUBLIC unless -fexternal-templates.
6839
6840 Wed Sep  7 13:17:10 1994  Jason Merrill  (jason@deneb.cygnus.com)
6841
6842         * pt.c (do_type_instantiation): Call instantiate_member_templates.
6843         Deal with specializations.
6844         (tsubst): Don't stick the mangled name in DECL_NAME for function
6845         instantiations.  Don't push them, either.
6846
6847         * decl2.c (grokfield): Move code for generating the
6848         DECL_ASSEMBLER_NAME for static members from here.
6849         * method.c (build_static_name): To here.
6850         * decl.c (grokvardecl): Call build_static_name.
6851         (duplicate_decls): Keep old DECL_ASSEMBLER_NAME.
6852
6853 Mon Sep  5 12:49:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
6854
6855         * call.c (build_method_call): if -Wsynth, warn when selecting
6856         synthesized op= over user-supplied one cfront would select.
6857         * decl2.c (lang_decode_option): Handle -Wsynth.
6858
6859 Fri Sep  2 15:11:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
6860
6861         * decl.c (finish_enum): Overhaul to fix several bugs.
6862         (start_enum): Disable useless code.
6863
6864 Thu Sep  1 16:04:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
6865
6866         * typeck.c (c_expand_return): Warn about returning a reference to a
6867         temporary.
6868         (convert_arguments): Increment argument counter when using default
6869         arguments, too.
6870
6871 Wed Aug 31 14:29:22 1994  Jason Merrill  (jason@deneb.cygnus.com)
6872
6873         * decl.c (finish_decl): If the type of decl is error_mark_node,
6874         don't bother trying to do anything.
6875
6876         * typeck.c (convert_for_initialization): If the rhs contains a
6877         constructor call, pretend the lhs type needs to be constructed.
6878
6879         * init.c (expand_default_init): If we stick the object inside the
6880         initializer, mark the initializer used.
6881
6882 Tue Aug 30 13:50:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
6883
6884         * method.c (build_assign_ref): return *this;
6885         (build_assign_ref): Fix base assignment order.
6886         (build_copy_constructor): Fix member init order.
6887
6888 Mon Aug 29 13:54:39 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
6889
6890         * g++.c (main): Remember to clear out SAW_SPECLANG after we see
6891         its argument.
6892
6893 Sat Aug 27 09:36:03 1994  Jason Merrill  (jason@deneb.cygnus.com)
6894
6895         * method.c (build_copy_constructor): Also copy virtual bases.
6896
6897 Fri Aug 26 17:05:15 1994  Jason Merrill  (jason@deneb.cygnus.com)
6898
6899         * lex.c (do_pending_inlines): Clear out pending_inlines before doing
6900         any synthesis.  Also first set deja_vu on all pending_inlines.
6901
6902         * method.c (build_assign_ref): Use build_member_call to invoke base
6903         operator=, rather than build_modify_expr.  And use
6904         build_reference_type instead of TYPE_REFERENCE_TO.
6905         (build_copy_constructor): Use TYPE_NESTED_NAME to identify the
6906         basetype.
6907
6908         * decl2.c (grokfield): Don't complain about undefined local class
6909         methods.
6910
6911         * class.c (finish_struct): Don't try to synthesize methods here.
6912         * lex.c (do_pending_inlines): Instead, synthesize them here.
6913         (init_lex): Initialize synth_obstack.
6914         (cons_up_default_function): Stick synthesis request on
6915         pending_inlines.
6916
6917 Fri Aug 26 12:24:14 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
6918
6919         * call.c (build_method_call) [PCC_STATIC_STRUCT_RETURN]: Also
6920         accept an RTL_EXPR in what we're about to use for the instance,
6921         since anything which would end up with pcc_struct_return set
6922         inside cplus_expand_expr.
6923
6924         * cp-tree.h (cons_up_default_function): Note change of prototype.
6925
6926 Thu Aug 25 23:05:30 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
6927
6928         * class.c (finish_struct): Undid change from Aug 21 testing
6929         CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING.
6930         * parse.y (left_curly): Ditto, undid change from Aug 21.
6931         * decl.c (xref_tag): Undid change from Aug 21, set
6932         CLASSTYPE_INTERFACE correctly, and added comments.
6933
6934 Thu Aug 25 00:36:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
6935
6936         Rework approach to synthesized methods; don't go through the parser
6937         anymore.
6938         * class.c (finish_struct): Use new synthesis approach.
6939         * lex.c (cons_up_default_function): Now just creates declaration,
6940         not code.
6941         (largest_union_member): #if 0 out.
6942         (default_assign_ref_body): Ditto.
6943         (default_copy_constructor_body): Ditto.
6944         * method.c (build_default_constructor): New function to synthesize X().
6945         (build_copy_constructor): Synthesize X(X&).
6946         (build_assign_ref): Synthesize X::operator=(X&).
6947         (build_dtor): Synthesize ~X().
6948
6949         * error.c (cp_line_of): If we're dealing with an artificial
6950         TYPE_DECL, look at the type instead.
6951
6952 Wed Aug 24 11:11:50 1994  Jason Merrill  (jason@deneb.cygnus.com)
6953
6954         * init.c (sort_member_init): Check warn_reorder.
6955         * decl2.c (lang_decode_option): Handle -W{no-,}reorder.
6956
6957         * cp-tree.h (CLASSTYPE_SOURCE_LINE): New macro.
6958         * error.c (cp_line_of): Use CLASSTYPE_SOURCE_LINE for aggregates.
6959         * class.c (finish_struct): Set CLASSTYPE_SOURCE_LINE.
6960
6961 Tue Aug 23 09:28:35 1994  Mike Stump  <mrs@cygnus.com>
6962
6963         * error.c (dump_decl): Improve wording, so that error messages
6964         dont't read template<, class foo>...
6965
6966 Mon Aug 22 15:30:51 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
6967
6968         * parse.y (label_colon): Also match a TYPENAME as a label name,
6969         since they may have declared a class by that name but have also
6970         tried to have a local label under the same name.
6971
6972         * pt.c (coerce_template_parms): Call cp_error, not cp_error_at,
6973         for the message so they know at what point it was instantiated.
6974
6975 Sun Aug 21 23:07:35 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
6976
6977         * class.c (finish_struct): Move setting of CLASSTYPE_INTERFACE and
6978         CLASSTYPE_VTABLE_NEEDS_WRITING for signatures up to left_curly time.
6979         * decl.c (xref_tag): Move setting of CLASSTYPE_INTERFACE and
6980         CLASSTYPE_VTABLE_NEEDS_WRITING for signatures down to left_curly time.
6981         * parse.y (left_curly): New final resting place for setting
6982         CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING for signatures.
6983
6984         * class.c (finish_struct): Don't test for function/field name
6985         conflicts in signatures, since all the fields are compiler-constructed.
6986
6987 Fri Aug 19 14:04:47 1994  Kung Hsu  (kung@mexican.cygnus.com)
6988
6989         * method.c (build_overload_nested_name): in qualified name
6990         mangling, the template with value instantiation will have numeric
6991         at end and may mixed with the name length of next nested level.
6992         Add a '_' in between.
6993         * method.c (build_overload_name): ditto.
6994         * method.c (build_overload_identifier): ditto.
6995
6996 Thu Aug 18 16:24:43 1994  Mike Stump  <mrs@cygnus.com>
6997
6998         * error.c (dump_decl): Handle NULL args.
6999
7000 Thu Sep 29 16:15:36 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>
7001
7002         * g++.c: Rework last change so it's done like collect.c (and 
7003         gcc.c).
7004
7005 Wed Sep 14 10:17:27 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>
7006
7007         * g++.c: Include <sys/errno.h> in case `errno' is a macro
7008         as permitted by ANSI C.
7009
7010 Thu Aug 18 12:48:09 1994  Mike Stump  <mrs@cygnus.com>
7011
7012         * class.c (finish_struct): Move setting of CLASSTYPE_INTERFACE and
7013         CLASSTYPE_VTABLE_NEEDS_WRITING up to left_curly time.
7014         * decl.c (xref_tag): Move setting of CLASSTYPE_INTERFACE and
7015         CLASSTYPE_VTABLE_NEEDS_WRITING down to left_curly time.
7016         * parse.y (left_curly): New final resting place for setting
7017         CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING.
7018
7019 Thu Aug 11 11:32:42 1994  H.J. Lu  (hjl@nynexst.com)
7020
7021         * g++.c (main): Only decrement "added" and set "library" to
7022           NULL when "library" != NULL.
7023
7024 Sat Aug 13 00:14:52 1994  Jason Merrill  (jason@deneb.cygnus.com)
7025
7026         * decl.c (grokdeclarator): Don't set TREE_PUBLIC on a function decl
7027         just because its class has a known interface.
7028         (decls_match): Deal with new format of template parms.
7029
7030         * lex.c (cons_up_default_function): Don't play with TREE_PUBLIC and
7031         DECL_EXTERNAL here.
7032
7033 Fri Aug 12 01:55:15 1994  Jason Merrill  (jason@deneb.cygnus.com)
7034
7035         * decl.c (pushtag): SET_DECL_ARTIFICIAL on gratuitous typedefs.
7036         (xref_defn_tag): Ditto.
7037         (pushdecl): Only allow artificial typedefs to be shadowed.
7038
7039         * init.c (emit_base_init): Pass the right binfos to
7040         expand_aggr_init_1.
7041
7042         * class.c (delete_duplicate_fields_1): Make it work right.
7043         (finish_struct): Catch function/field name conflict.
7044
7045         * decl2.c (check_classfn): Pass the function to cp_error, not just
7046         the name.
7047
7048         * init.c (sort_member_init): Warn when order of member initializers
7049         does not match order of member declarations.
7050         (emit_base_init): Call expand_aggr_init_1 with LOOKUP_PROTECT.
7051
7052         * error.c (dump_expr): Handle lists of functions.
7053
7054         * decl.c (start_function): #pragma interface only affects functions
7055         that would otherwise be static.
7056         (finish_decl): Don't warn about an unused variable if it has both
7057         constructor and destructor, since the 'resource allocation is
7058         initialization' idiom is relatively common.
7059
7060         * typeck.c (comp_target_types): Don't handle TEMPLATE_TYPE_PARMs.
7061         (comp_target_parms): Ditto.
7062         (compparms): Never consider default parms.
7063         (common_base_type): Don't choose a virtual baseclass if there is a
7064         more derived class in common.
7065         (build_conditional_expr): If pedantic, pedwarn about conversion to
7066         common base in conditional expr.
7067
7068         * class.c (instantiate_type): Handle template instantiation better.
7069
7070         * typeck.c (convert_arguments): Don't try to get tricky and convert
7071         to int directly when PROMOTE_PROTOTYPES is set, as it breaks
7072         user-defined conversions.
7073
7074         * lex.c (check_for_missing_semicolon): Also give error at end of
7075         file.
7076
7077         * call.c (build_method_call): Don't promote arrays to pointers here.
7078
7079         * typeck.c (convert_arguments): Don't require the actual parameter
7080         to be of a complete type if the formal parameter is a reference.
7081
7082 Thu Aug 11 15:21:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
7083
7084         * decl.c (grokdeclarator): Soften 'static' on member function error
7085         to pedwarn.
7086
7087         * init.c (build_new): Don't automatically save rval.
7088         (build_offset_ref): Do field lookup with proper basetype_path.
7089
7090 Thu Aug 11 12:46:54 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
7091
7092         * errfn.c (cp_silent): Declare to mark when we should avoid
7093         emitting warnings and errors.
7094         (cp_error): Check it.
7095         (cp_warning): Likewise.
7096         (cp_pedwarn): Likewise.
7097         (cp_compiler_error): Likewise.
7098         (cp_error_at): Likewise.
7099         (cp_warning_at): Likewise.
7100         (cp_pedwarn_at): Likewise.
7101         * call.c (compute_conversion_costs): Set CP_SILENT when we start
7102         out, and make sure we turn it off before we leave.
7103
7104 Thu Aug 11 00:02:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
7105
7106         * decl2.c (grok_array_decl): Try computing *(A+B) if neither
7107         argument is obviously an array.
7108
7109 Wed Aug 10 15:32:04 1994  Jason Merrill  (jason@deneb.cygnus.com)
7110
7111         * typeck.c (c_expand_start_case): Do cleanups here.
7112
7113         * parse.y (xcond): Do bool conversion here, too.
7114         (simple_stmt, SWITCH case): Don't do cleanups here.
7115
7116         * decl.c (duplicate_decls): Don't treat builtins that have been
7117         explicitly declared specially.
7118
7119 Tue Aug  9 01:16:09 1994  Jason Merrill  (jason@deneb.cygnus.com)
7120
7121         * tree.c (make_deep_copy): Support copying pointer, reference,
7122         function, array, offset and method types.
7123
7124         * decl.c (init_decl_processing): Mark exit and abort as
7125         BUILT_IN_NONANSI so that duplicate_decls is kinder about
7126         redeclaration.
7127         (duplicate_decls): Don't give two errors for redeclaring a C
7128         function with the same parms but a different return type.
7129
7130         * parse.y (paren_cond_or_null): Do cleanup and bool conversion here.
7131         (condition): Instead of here.
7132         (simple_stmt, SWITCH case): Also do cleanup here.
7133
7134         * decl2.c (finish_anon_union): Only break out FIELD_DECLs.
7135
7136         * call.c (build_method_call): Don't throw away the side effects of
7137         the object in a call to a non-existent constructor.
7138         * parse.y (primary): Ditto.
7139
7140         * method.c (build_decl_overload): Oop.
7141
7142         * decl2.c (lang_decode_option): Deal with flag_no_nonansi_builtin,
7143         warn about uselessness of specifying -fansi-overloading.
7144
7145         * method.c (build_decl_overload): Treat any non-member new with one
7146         parameter as __builtin_new.
7147
7148         * decl.c (init_decl_processing): Setup built-in meanings of exit,
7149         _exit and abort.
7150
7151 Mon Aug  8 15:03:30 1994  Jason Merrill  (jason@deneb.cygnus.com)
7152
7153         * error.c (dump_readonly_or_volatile): Put a space between const and
7154         volatile if both apply.
7155
7156         * init.c (perform_member_init): Clean up after this initialization.
7157         (emit_base_init): Clean up after each base init, not after all have
7158         been done.
7159         (expand_aggr_vbase_init_1): Clean up after this init.
7160
7161 Sun Aug  7 14:55:05 1994  Jason Merrill  (jason@deneb.cygnus.com)
7162
7163         * call.c (build_method_call): Deal with destroying references.
7164
7165         * parse.y (condition): Do bool_truthvalue_conversion here.
7166         (paren_expr_or_null): And here.
7167         (simple_if): Not here.
7168         (simple_stmt): Or here.
7169
7170 Sat Aug  6 22:29:45 1994  Jason Merrill  (jason@deneb.cygnus.com)
7171
7172         * parse.y (paren_expr_or_null): Wrap the expression in a
7173         CLEANUP_POINT_EXPR.
7174         (condition): Ditto.
7175
7176 Sat Aug  6 19:46:37 1994  Rohan Lenard  (rjl@easams.com.au)
7177
7178         * call.c (build_scoped_method_call): Fix error message when
7179         destructor call refers to a nonexistent type.
7180
7181 Sat Apr 16 22:43:30 1993  Gerald Baumgartner  (gb@cs.purdue.edu)
7182
7183         * lex.h (rid): Deleted RID_RAISES, it's never used.
7184         Moved RID_PUBLIC, RID_PRIVATE, RID_PROTECTED, RID_EXCEPTION,
7185         RID_TEMPLATE and RID_SIGNATURE to the end of the enumeration,
7186         they don't need to be touched in `grokdeclarator.'
7187         (RID_LAST_MODIFIER): Defined macro to be RID_MUTABLE.
7188
7189         * decl.c (grokdeclarator): Use RID_LAST_MODIFIER instead of
7190         RID_MAX as loop limit for finding declaration specifiers.
7191
7192 Sat Apr  3 21:59:07 1993  Gerald Baumgartner  (gb@cs.purdue.edu)
7193
7194         * lex.c (debug_yytranslate): Moved to parse.y since it needs to
7195         access `yytname,' which is static in parse.c.
7196
7197 Fri Apr  2 23:36:57 1993  Gerald Baumgarnter  (gb@cs.purdue.edu)
7198
7199         * cp-tree.h (GNU_xref_ref): Fixed typo in extern declaration, it
7200         was `GNU_xref_def' instead of `GNU_xref_ref.'
7201
7202 Fri Aug  5 14:20:16 1994  Jason Merrill  (jason@deneb.cygnus.com)
7203
7204         * pt.c (do_function_instantiation): Don't set TREE_PUBLIC and
7205         DECL_EXTERNAL on 'extern' instantiations; wait until EOF to do that.
7206         (do_type_instantiation): Ditto.
7207
7208         * decl2.c (import_export_inline): Decides at EOF what an inline's
7209         linkage should be.
7210         (finish_file): Call it.
7211
7212         * decl.c (start_function): Don't rely on the settings of TREE_PUBLIC
7213         and DECL_EXTERNAL from do_*_instantiation.  Only set
7214         DECL_DEFER_OUTPUT on inlines whose linkage might actually change.
7215         (finish_function): Use DECL_DEFER_OUTPUT to decide which inlines to
7216         mark for later consideration, rather than DECL_FUNCTION_MEMBER_P.
7217
7218 Fri Aug  5 01:12:20 1994  Mike Stump  <mrs@cygnus.com>
7219
7220         * class.c (get_class_offset_1, get_class_offset): New routine to
7221         find the offset of the class where a virtual function is defined,
7222         from the complete type.
7223         * class.c (modify_one_vtable, fixup_vtable_deltas): Use
7224         get_class_offset instead of virtual_offset as get_class_offset will
7225         always provide the right answer.
7226         * tree.c (virtual_offset): Remove.  It only ever worked some of the
7227         time.
7228
7229 Tue Aug  2 12:44:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
7230
7231         * call.c (build_method_call): Put back unary_complex_lvalue call
7232         that I thought was redundant.
7233
7234         * typeck.c (c_expand_return): Fix a case I missed before.
7235
7236 Sun Jul 31 17:54:02 1994  Jason Merrill  (jason@deneb.cygnus.com)
7237
7238         * pt.c (unify): Strip cv-quals from template type arguments (when
7239         'const T*' is matched to 'const char*', that does not mean that T is
7240         'const char').
7241
7242 Fri Jul 29 01:03:06 1994  Jason Merrill  (jason@deneb.cygnus.com)
7243
7244         * pt.c (do_type_instantiation): Instantiate nested TAGS, not
7245         typedefs.  Third time's the charm?
7246
7247         * parse.y (template_parm): Support default template parms.
7248         * pt.c (process_template_parm): Ditto.
7249         (end_template_parm_list): Ditto.
7250         (coerce_template_parms): Ditto.
7251         (mangle_class_name_for_template): Ditto.
7252         (push_template_decls): Ditto.
7253         (unify): Ditto.
7254         * method.c (build_overload_identifier): Ditto.
7255         * error.c (dump_decl): Ditto.
7256
7257 Wed Jul 27 17:47:00 1994  Jason Merrill  (jason@deneb.cygnus.com)
7258
7259         * pt.c (do_type_instantiation): Only instantiate nested *classes*.
7260
7261 Tue Jul 26 13:22:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
7262
7263         * search.c (note_debug_info_needed): Also emit debugging information
7264         for the types of fields.
7265
7266 Mon Jul 25 00:34:44 1994  Jason Merrill  (jason@deneb.cygnus.com)
7267
7268         * pt.c (lookup_template_class): Pass 'template' to
7269         coerce_template_parms instead of 'in_decl', since it's a more
7270         meaningful context.
7271
7272         * typeck.c (c_expand_return): Make sure any cleanups for the return
7273         expression get run.
7274         (build_c_cast): Use CONVERT_EXPR for conversion to void.
7275
7276         * pt.c (do_type_instantiation): Also instantiate nested types.
7277
7278         * typeck.c (convert_for_assignment): Don't die when comparing
7279         pointers with different levels of indirection.
7280
7281         * decl.c (grokdeclarator): The sub-call to grokdeclarator for
7282         class-local typedefs sets DECL_ARGUMENTS, so we need to clear it
7283         out.
7284
7285         * decl2.c (finish_anon_union): Don't die if the union has no
7286         members.
7287
7288         * decl.c (grokdeclarator): Undo changes to declspecs when we're done
7289         so that 'typedef int foo, bar;' will work.
7290
7291         * decl2.c (finish_file): Don't call expand_aggr_init for
7292         non-aggregates.
7293
7294 Mon Jul 25 00:03:10 1994  Teemu Torma  (tot@trema.fi)
7295
7296         * decl.c (finish_function): We can't inline constructors and
7297         destructors under some conditions with -fpic, but don't unset
7298         DECL_INLINE.
7299
7300 Mon Jul 25 00:03:10 1994  Jason Merrill  (jason@deneb.cygnus.com)
7301
7302         * typeck.c (build_object_ref): Make sure 'datum' is a valid object.
7303
7304 Sun Jul 24 14:19:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
7305
7306         * class.c (finish_struct): Don't set DECL_FIELD_BITPOS on
7307         non-fields.
7308         (finish_struct_methods): Use copy_assignment_arg_p.
7309
7310         * cvt.c (cp_convert): If expr is an OFFSET_REF, resolve it instead
7311         of giving an error.
7312
7313         * typeck.c (build_binary_op_nodefault): Don't set result_type if we
7314         don't know how to compare the operands.
7315
7316         * decl.c (grokdeclarator): Avoid seg fault when someone uses '__op'
7317         as a declarator-id in their program.  Like the Linux headers do.
7318         Arrgh.
7319
7320         * tree.c (lvalue_p): Treat calls to functions returning objects by
7321         value as lvalues again.
7322
7323         * typeck.c (build_component_addr): Use convert_force to convert the
7324         pointer in case the component type is also a private base class.
7325
7326         * search.c (get_matching_virtual): Fix bogus warning of overloaded
7327         virtual.
7328
7329         * pt.c (overload_template_name): Set DECL_ARTIFICIAL on the created
7330         TYPE_DECL to fix bogus shadowing warnings.
7331
7332 Fri Jul 22 01:15:32 1994  Jason Merrill  (jason@deneb.cygnus.com)
7333
7334         * init.c (expand_aggr_init_1): const and volatile mismatches do not
7335         prevent a TARGET_EXPR from initializing an object directly.
7336
7337 Tue Jul 19 17:55:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
7338
7339         * cvt.c (build_up_reference): Allow building up references to
7340         `this', don't warn about making references to artificial variables
7341         (like `this').
7342
7343         * tree.c (lvalue_p): `this' is not an lvalue.
7344
7345         * call.c (build_method_call): Accept using a typedef name (or
7346         template type parameter) for explicit destructor calls.
7347
7348 Thu Jul 14 09:42:23 1994  Mike Stump  <mrs@cygnus.com>
7349
7350         * Version 2.6.0 released.
7351
7352 Wed Jul 13 03:57:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
7353
7354         * method.c (hack_identifier): Put back old code so lists of
7355         non-functions will be handled properly.
7356
7357         * cp-tree.h (TYPE_NEEDS_CONSTRUCTING): #if 0 out; this macro is now
7358         defined in the language-independent tree.h.
7359
7360         * tree.c (count_functions): Avoid bogus warning when compiling this
7361         function.
7362
7363 Mon Jul 11 18:37:20 1994  Jason Merrill  (jason@deneb.cygnus.com)
7364
7365         * decl.c (grok_reference_init): Always save the initializer of a
7366         reference.
7367
7368 Fri Jul  8 17:41:46 1994  Mike Stump  <mrs@cygnus.com>
7369
7370         * decl.c (cplus_expand_expr_stmt): Wrap statement expressions inside
7371         CLEANUP_POINT_EXPRs so that the stack slots can be reused.
7372         (disabled for now)
7373
7374 Fri Jul  8 12:59:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
7375
7376         * method.c (hack_identifier): Fix for new overloading.
7377
7378         * typeck.c (build_binary_op_nodefault): Don't mess with division by
7379         zero.
7380
7381 Fri Jul  8 13:20:28 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
7382
7383         * decl2.c (finish_file): Only call walk_sigtables, if
7384         flag_handle_signatures is turned on, don't waste time otherwise.
7385
7386 Fri Jul  8 02:27:41 1994  Jason Merrill  (jason@deneb.cygnus.com)
7387
7388         * decl.c (push_overloaded_decl): Don't create overloads of one when
7389         shadowing a class type.
7390         * typeck.c (build_x_function_call): Complain about overloads of one.
7391
7392         * decl.c (grokdeclarator): Don't try to treat a char* as a tree.
7393         (grokdeclarator): Fix setting of TREE_STATIC.
7394         (start_decl): Clear DECL_IN_AGGR_P after calling duplicate_decls.
7395
7396 Thu Jul  7 22:20:46 1994  Gerald Baumgartner  (gb@andros.cygnus.com)
7397
7398         * cp-tree.h (walk_sigtables): Created extern declaration.
7399         * decl2.c (walk_sigtables): Created function, patterned after
7400         walk_vtables, even though we only need it to write out sigtables.
7401         (finish_sigtable_vardecl): Created function.
7402         (finish_vtable_vardecl): Changed 0 to NULL_PTR.
7403         (finish_file): Call walk_sigtables.
7404
7405         * sig.c (build_signature_table_constructor): Mark class member
7406         function pointed to from signature table entry as addressable.
7407
7408 Thu Jul  7 13:39:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
7409
7410         * decl.c (start_decl): Check new decl of static member variable
7411         against the declaration in the class here.
7412         (grokvardecl): Instead of here.
7413
7414         * class.c (prepare_fresh_vtable): Call import_export_vtable if not
7415         -fvtable-thunks.
7416         (build_vtable): Ditto.
7417
7418         * decl2.c (import_export_vtable): Move logic for deciding the
7419         interface of a template class from here.
7420         (import_export_template): To here.
7421         (finish_vtable_vardecl): Call import_export_template before
7422         import_export_vtable.
7423
7424 Wed Jul  6 20:25:48 1994  Mike Stump  <mrs@cygnus.com>
7425
7426         * except.c (init_exception_processing): Setup interim_eh_hook to
7427         call lang_interim_eh. 
7428         * except.c (do_unwind): Propagate throw object value across
7429         stack unwinding.
7430         * except.c (saved_throw_value): Used to hold the value of the object
7431         being thrown.  It is always a reference to the real value.
7432         * except.c (expand_start_catch_block): Add handling for the
7433         value of the exception object.
7434         * except.c (expand_start_catch_block): Add handler for the handler,
7435         so that throws inside the handler go to the outer block.
7436         * except.c (expand_end_catch_block): Ditto.
7437         * parse.y (handler_args): Use parm instead, as the other doesn't yet
7438         handle references correctly.
7439
7440 Wed Jul  6 17:55:32 1994  Per Bothner  (bothner@kalessin.cygnus.com)
7441
7442         * decl2.c (mark_vtable_entries):  If -ftable-thunks, set the
7443         vtable entry properly to abort.
7444
7445 Tue Jul  5 14:07:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
7446
7447         * typeck.c (build_binary_op_nodefault): Downgrade division by zero
7448         errors to warnings.
7449
7450         * call.c (build_overload_call_real): Handle fnname being a list of
7451         functions.
7452         * typeck.c (build_x_function_call): Pass list of functions to
7453         build_overload_call, not just the name.
7454         * tree.c (count_functions): Complain when called for invalid
7455         argument.
7456
7457         * decl.c (grokdeclarator): Fix settings of TREE_STATIC, TREE_PUBLIC
7458         and DECL_EXTERNAL on static members and initialized const members.
7459         * decl2.c (grokfield): Reflect this change.
7460
7461 Fri Jul  1 09:35:51 1994  Jason Merrill  (jason@deneb.cygnus.com)
7462
7463         * parse.y (init): ANSI C++ does not forbid { }.
7464
7465 Thu Jun 30 00:35:22 1994  Jason Merrill  (jason@deneb.cygnus.com)
7466
7467         * decl2.c (lang_decode_option): Set warn_nonvdtor along with -Wall.
7468         warn_nonvdtor defaults to off.
7469
7470         * class.c (instantiate_type): Use comptypes rather than relying on 
7471         types to satisfy ==.
7472
7473         * decl.c (start_function): Set DECL_DEFER_OUTPUT on all inlines that
7474         might be static.
7475
7476         * tree.c (build_cplus_new): Never build WITH_CLEANUP_EXPRs.
7477
7478         * decl.c (grok_reference_init): Deal with ADDR_EXPRs of TARGET_EXPRs.
7479
7480         * cvt.c (cp_convert): Pass 0 to with_cleanup_p arg of
7481         build_cplus_new.
7482
7483 Wed Jun 29 22:31:09 1994  Jason Merrill  (jason@deneb.cygnus.com)
7484
7485         * decl2.c (finish_file): Maybe consider static inlines multiple
7486         times, in case they reference each other.
7487
7488 Tue Jun 28 11:58:38 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
7489
7490         * class.c (finish_struct): Don't `cons_up_default_function's
7491         for signatures.
7492         (finish_struct): Handle an empty method_vec correctly.
7493
7494         * decl.c (grokdeclarator): Don't warn about a signature being
7495         empty in a signature pointer declaration if we only saw a
7496         forward declaration of the signature.  Changed `warning's into
7497         `cp_warning's.
7498
7499         * sig.c (build_sigtable): Don't die if a null signature table
7500         constructor is returned.
7501         (build_signature_pointer_constructor): If the signature table
7502         constructor is null, the _sptr field is set to a null pointer
7503         and cast to the appropriate type.  Make copies of all null
7504         pointers so that the type null_pointer_node doesn't get changed.
7505         (build_signature_table_constructor): Added comments.
7506
7507         * sig.c (build_signature_pointer_constructor): Complain if we
7508         try to assign to/initialize a signature pointer/reference of
7509         an undefined signature.
7510
7511 Mon Jun 27 14:05:16 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
7512
7513         * typeck2.c (store_init_value): Don't be pedantic about
7514         non-constant initializers of signature tables/pointers/references.
7515
7516 Fri Jun 24 16:49:41 1994  Gerald Baumgartner  (gb@cs.purdue.edu)
7517
7518         * decl.c (grokdeclarator): If we are grokking an opaque typedef
7519         in a signature, don't complain about it begin static.
7520
7521 Wed Jun 29 16:44:45 1994  Mike Stump  <mrs@cygnus.com>
7522
7523         Fixes a problem of the this pointer being wrong in virtual calls to
7524         methods that are not overridden in more derived classes.
7525
7526         * class.c (fixup_vtable_delta): New routine.  It will fixup the
7527         delta entries in vtables, wheever they need updating.
7528         * class.c (finish_struct): Call the new routine for all virtual
7529         bases, as they can have different offsets, than those used in base
7530         classes that we derive our vtable from.
7531
7532 Tue Jun 28 23:49:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
7533
7534         * typeck.c (build_binary_op): Use the types before default
7535         conversions in the error message.
7536
7537         * *.c: Use c_build_type_variant instead of build_type_variant where
7538         the type might be an array.
7539
7540         * call.c (build_method_call): Call build_type_variant and
7541         build_reference_type in the right order.
7542         * decl.c (record_builtin_type): Ditto.
7543
7544 Wed Jun 29 16:58:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
7545
7546         * call.c (build_method_call): Call build_type_variant and
7547         build_reference_type in the right order.
7548         * decl.c (record_builtin_type): Ditto.
7549
7550 Tue Jun 28 23:49:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
7551
7552         * typeck.c (build_binary_op): Use the types before default
7553         conversions in the error message.
7554
7555         * *.c: Use c_build_type_variant instead of build_type_variant where
7556         the type might be an array.
7557
7558 Sat Jun 25 11:50:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
7559
7560         * cvt.c (convert_to_reference): Try UDC's before doing the
7561         reinterpret_cast thang, though.
7562
7563 Fri Jun 24 01:24:01 1994  Jason Merrill  (jason@deneb.cygnus.com)
7564
7565         * typeck.c (c_expand_return): Don't USE the return value location
7566         after we've expanded the jump.
7567
7568         * decl2.c (finish_file): Make sure DECL_SAVED_INSNS is not 0 before
7569         trying to write out an inline.
7570
7571         * cvt.c (build_up_reference): Also do address adjustment when the
7572         target type uses MI.
7573         (convert_to_reference): Try UDCs only after built-in conversions.
7574         (build_type_conversion_1): Don't play games with the argument to the
7575         method.
7576         (build_type_conversion): #if 0 out code for binding to reference.
7577
7578 Thu Jun 23 00:22:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
7579
7580         * decl2.c (finish_file): Use TREE_SYMBOL_REFERENCED to decide
7581         whether to emit inlines.
7582
7583         * decl.c (grokdeclarator): Set explicit_int for decls that just
7584         specify, say, 'long'.
7585
7586         * init.c (do_friend): Do overload C functions (or call pushdecl,
7587         anyaway).
7588
7589 Wed Jun 22 13:40:49 1994  Jason Merrill  (jason@deneb.cygnus.com)
7590
7591         * cvt.c (build_up_reference): Don't call readonly_error.
7592         (convert_to_reference): Propagate const and volatile from expr to
7593         its type.
7594
7595         * tree.c (lvalue_p): Random CALL_EXPRs are not lvalues.
7596
7597         * cvt.c (build_up_reference): Break out WITH_CLEANUP_EXPR when
7598         creating a temporary.
7599         (convert_to_reference): Lose excessive and incorrect trickiness.
7600         (cp_convert): Call build_cplus_new with with_cleanup_p set.
7601
7602         * typeck2.c (build_functional_cast): Ditto.
7603
7604 Tue Jun 21 17:38:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
7605
7606         * decl.c (grokdeclarator): signed, unsigned, long and short all
7607         imply 'int'.
7608
7609         * decl.c (grokdeclarator): Allow "this is a type" syntax.
7610         (grok_reference_init): Simplify and fix.
7611
7612 Sun Jun 19 17:08:48 1994  Jason Merrill  (jason@deneb.cygnus.com)
7613
7614         * decl.c (grokdeclarator): pedwarn about a typedef that specifies no
7615         type.
7616
7617 Sat Jun 18 04:16:50 1994  Jason Merrill  (jason@deneb.cygnus.com)
7618
7619         * decl.c (start_function): Move TREE_PUBLIC and DECL_EXTERNAL
7620         tinkering to after call to pushdecl.
7621
7622 Fri Jun 17 14:48:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
7623
7624         * call.c (build_method_call): Handle destructors for non-aggregate
7625         types properly.
7626
7627 Thu Jun 16 16:48:05 1994  Jason Merrill  (jason@deneb.cygnus.com)
7628
7629         * call.c (build_method_call): Make sure that the name given for the
7630         destructor matches the constructor_name of the instance.
7631
7632         * pt.c (do_function_instantiation): A non-extern instantiation
7633         overrides a later extern one.
7634         (do_type_instantiation): Ditto.
7635
7636 Wed Jun 15 19:34:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
7637
7638         * init.c (expand_aggr_init): Use TYPE_MAIN_VARIANT to get the
7639         unqualified array type.
7640
7641         * cp-tree.h (EMPTY_CONSTRUCTOR_P): Tests whether NODE is a
7642         CONSTRUCTOR with no elements.
7643
7644         * decl.c (various): Lose empty_init_node.
7645         (finish_decl): Use EMPTY_CONSTRUCTOR_P, do the empty CONSTRUCTOR
7646         thing depending on the value of DECL_COMMON instead of
7647         flag_conserve_space, do the empty CONSTRUCTOR thing for types that
7648         don't have constructors, don't treat a real empty CONSTRUCTOR
7649         specially.
7650
7651         * typeck2.c (process_init_constructor): Don't treat empty_init_node
7652         specially.
7653
7654 Wed Jun 15 19:05:25 1994  Mike Stump  <mrs@cygnus.com>
7655
7656         * class.c (override_one_vtable): Don't forget to merge in an old
7657         overrider when we wanted to reuse a vtable, but couldn't.
7658
7659 Wed Jun 15 15:03:16 1994  Jason Merrill  (jason@deneb.cygnus.com)
7660
7661         * decl.c (start_decl): Put statics in common again.
7662
7663         * decl.c (grokdeclarator): Return NULL_TREE for an error rather than
7664         setting the type to error_mark_node.
7665
7666         * typeck.c (build_modify_expr): Build up a COMPOUND_EXPR for enum
7667         bitfield assignments.
7668
7669 Tue Jun 14 12:23:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
7670
7671         * decl.c (grok_op_properties): Const objects can be passed by value.
7672
7673 Mon Jun 13 03:10:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
7674
7675         * decl2.c (import_export_vtable): Force implicit instantiations to
7676         be interface_only when -fno-implicit-templates.
7677
7678         * decl.c (duplicate_decls): Redeclaring a class template name is an
7679         error.
7680
7681         * pt.c (end_template_decl): Call GNU_xref_decl for class templates.
7682         * xref.c (GNU_xref_decl): Support templates.
7683
7684 Sat Jun 11 17:09:05 1994  Jason Merrill  (jason@deneb.cygnus.com)
7685
7686         * decl.c (grok_op_properties): Split out checking for whether this
7687         function should suppress the default assignment operator.
7688         * decl2.c (grok_function_init): Ditto.
7689         (copy_assignment_arg_p): New function do do just that.
7690         Now considers virtual assignment operators that take a base as an
7691         argument to count as copy assignment operators.
7692
7693         * search.c (dfs_debug_mark): Lose checks for DWARF_DEBUG and
7694         TREE_ASM_WRITTEN, as they are redundant.
7695
7696         * pt.c (end_template_decl): Don't try to set DECL_CLASS_CONTEXT on a
7697         decl that has no LANG_SPECIFIC part.
7698         (do_type_instantiation): Force the debugging information for this
7699         type to be emitted.
7700
7701         * decl.c (start_decl): Clear up uses of various types of templates
7702         (say sorry for static data members, rather than "invalid template"). 
7703         (expand_static_init): Fix initialization of static data members of
7704         template classes.
7705
7706 Fri Jun 10 00:41:19 1994  Jason Merrill  (jason@deneb.cygnus.com)
7707
7708         * decl.c (grokdeclarator): Set DECL_CONTEXT on static data members.
7709
7710         * g++.c (main): Use -xc++-cpp-output for .i files.
7711
7712         * pt.c (tsubst): Give meaningful error about declaring template for
7713         a copy constructor which was not declared in the class template.
7714         (do_type_instantiation): Explicit instantiation before the class
7715         template is an error.
7716         (instantiate_template): Don't die if tsubst returns error_mark_node.
7717
7718 Thu Jun  9 19:04:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
7719
7720         Don't synthesize the copy assignment operator if the one in a base
7721         class is pure virtual.
7722         * cp-tree.h (TYPE_HAS_ABSTRACT_ASSIGN_REF): New macro to indicate
7723         whether the type has a pure virtual copy assignment operator.
7724         * class.c (finish_base_struct): Don't generate the copy assignment
7725         operator if a base class has a pure virtual one.
7726         * decl.c (grok_op_properties): Add disabled code to set
7727         TYPE_HAS_ABSTRACT_ASSIGN_REF with comment pointing to where it is
7728         actually set.
7729         * decl2.c (grok_function_init): Set TYPE_HAS_ABSTRACT_ASSIGN_REF.
7730
7731         * decl2.c (import_export_vtable): Always treat template
7732         instantiations as if write_virtuals >= 2, and treat implicit
7733         instantiations as external if -fno-implicit-templates.
7734         (finish_file): Output all pending inlines if
7735         flag_keep_inline_functions.
7736
7737 Wed Jun  8 20:48:02 1994  Mike Stump  <mrs@cygnus.com>
7738
7739         * tree.c (layout_vbasetypes): Align virtual base classes inside
7740         complete objects, so that we don't core dump on machines such as
7741         SPARCs when we access members that require larger than normal
7742         alignments, such as a double.  Also, we bump up the total alignment
7743         on the complete type, as necessary.
7744
7745 Wed Jun  8 16:18:14 1994  Jason Merrill  (jason@deneb.cygnus.com)
7746
7747         * gxxint.texi (Free Store): New section with code for examining
7748         cookie.
7749         (Limitations of g++): Remove operator delete entry, since it is no
7750         longer accurate.  Fix access control entry.
7751
7752         * typeck.c (build_unary_op): Pedwarn about taking the address of or
7753         incrementing a cast to non-reference type.
7754         (build_modify_expr): Use convert instead of convert_force again.
7755
7756         * search.c (get_base_distance): Use IS_AGGR_TYPE_CODE to check for
7757         class type, not == RECORD_TYPE.
7758
7759         * decl.c (grokdeclarator): Cope with grokfndecl returning NULL_TREE.
7760
7761         * typeck2.c (report_case_error): #if 0 out.
7762         * lex.c (real_yylex): Lose RANGE.
7763         * parse.y: Ditto.
7764
7765 Tue Jun  7 18:17:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
7766
7767         * parse.y (simple_stmt, case ranges): Use ELLIPSIS instead of RANGE.
7768
7769 Mon Jun  6 19:39:57 1994  Jason Merrill  (jason@deneb.cygnus.com)
7770
7771         * typeck.c (build_c_cast): Don't shortcut conversions to the same
7772         type.  Don't replace consts with their values here, since that's now
7773         done in cp_convert.
7774
7775         * cvt.c (cp_convert): When converting to bool, take
7776         integer_zero_node to false_node and all other INTEGER_CSTs to
7777         true_node.
7778         (build_type_conversion): Don't complain about multiple conversions
7779         to float if we're not really converting.
7780
7781 Fri Jun  3 02:10:56 1994  Jason Merrill  (jason@deneb.cygnus.com)
7782
7783         Implement 'extern template class A<int>;' syntax for suppressing
7784         specific implicit instantiations.
7785         * cp-tree.h: Update prototypes for do_*_instantiation.
7786         * pt.c (do_pending_expansions): Don't compile 'extern' explicit
7787         instantiations.
7788         (do_function_instantiation): Set DECL_EXTERNAL on 'extern' explicit
7789         instantiations.
7790         (do_type_instantiation): Ditto.
7791         * parse.y (explicit_instantiation): Support 'extern template class
7792         A<int>;' syntax.
7793         * decl.c (start_function): Don't modify the settings of TREE_PUBLIC
7794         and DECL_EXTERNAL on explicit instantiations.
7795
7796         * cvt.c (cp_convert): Replace constants with their values before
7797         converting.
7798         (cp_convert): Consistently use 'e' instead of 'expr'.
7799
7800 Thu Jun  2 03:53:30 1994  Jason Merrill  (jason@deneb.cygnus.com)
7801
7802         * typeck2.c (build_x_arrow): Resolve OFFSET_REFs first.
7803
7804 Wed Jun  1 18:57:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
7805
7806         * typeck2.c (digest_init): Handle initializing a pmf with an
7807         overloaded method.
7808         * typeck.c (build_ptrmemfunc): Handle overloaded methods.
7809
7810         * decl.c (pushtag): Use build_decl to make TYPE_DECLs.
7811         (xref_defn_tag): Ditto.
7812         * pt.c (process_template_parm): Ditto.
7813         (lookup_template_class): Ditto.
7814         (push_template_decls): Ditto.
7815         (instantiate_class_template): Ditto.
7816         (create_nested_upt): Ditto.
7817         * class.c (finish_struct): Don't try to set DECL_CLASS_CONTEXT on
7818         TYPE_DECLs.
7819
7820         * typeck.c (convert_arguments): Make sure type is not NULL before
7821         checking its TREE_CODE.
7822
7823 Wed Jun  1 17:40:39 1994  Mike Stump  <mrs@cygnus.com>
7824
7825         * class.c (get_derived_offset): New routine.
7826         * class.c (finish_base_struct): Make sure we set BINFO_VTABLE and
7827         BINFO_VIRTUALS when we choose a new base class to inherit from.
7828         * class.c (modify_one_vtable): Use get_derived_offset to get the
7829         offset to the most base class subobject that we derived this binfo
7830         from.
7831         * class.c (finish_struct): Move code to calculate the
7832         DECL_FIELD_BITPOS of the vfield up, as we need might need it for
7833         new calls to get_derived_offset in modify_one_vtable.
7834
7835 Wed Jun  1 16:50:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
7836
7837         * init.c (build_member_call): Use build_pointer_type instead of
7838         TYPE_POINTER_TO.
7839
7840 Wed Jun  1 11:11:15 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
7841
7842         * decl.c (grokdeclarator): Make sure we have a DNAME set before we
7843         try to use it in an error.
7844
7845 Wed Jun  1 09:48:49 1994  Mike Stump  <mrs@cygnus.com>
7846
7847         * typeck.c (convert_arguments, convert_for_initialization): Don't
7848         strip NOP_EXPRs, when we are converting to a reference.
7849
7850 Wed Jun  1 01:11:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
7851
7852         * typeck.c (build_modify_expr): Don't dereference references when
7853         initializing them.
7854
7855         * decl2.c (grokfield): Don't check for grokdeclarator returning
7856         error_mark_node any more.
7857
7858         * decl.c (grokfndecl): Return NULL_TREE instead of error_mark_node.
7859         (start_method): Return void_type_node instead of error_mark_node.
7860
7861         * typeck.c (build_modify_expr): Resolve offset refs earlier.
7862
7863 Tue May 31 16:06:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
7864
7865         * call.c (build_method_call): Resolve OFFSET_REFs in the object.
7866
7867         * typeck.c (build_modify_expr): Dereference references before trying
7868         to assign to them.
7869
7870         * call.c (build_method_call): Don't confuse type conversion
7871         operators with constructors.
7872         * typeck2.c (build_functional_cast): Just call build_c_cast if there
7873         was only one parameter.
7874         * method.c (build_typename_overload): Don't set
7875         IDENTIFIER_GLOBAL_VALUE on these identifiers.
7876         * decl.c (grok_op_properties): Warn about defining a type conversion
7877         operator that converts to a base class (or reference to it).
7878         * cvt.c (cp_convert): Don't try to use a type conversion operator
7879         when converting to a base class.
7880         (build_type_conversion_1): Don't call constructor_name_full on an
7881         identifier.
7882         * cp-tree.h (DERIVED_FROM_P): Should be self-explanatory.
7883
7884         * decl.c (start_decl): Don't complain that error_mark_node is an
7885         incomplete type.
7886         (finish_decl): Check for type == error_mark_node.
7887
7888 Mon May 30 23:38:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
7889
7890         * decl.c (start_function): Set DECL_DEFER_OUTPUT on implicit
7891         instantiations and inline members.
7892
7893         * spew.c (yylex): Set looking_for_template if the next token is a '<'.
7894
7895         * lex.h: Declare looking_for_template.
7896
7897         * decl.c (lookup_name_real): Use looking_for_template to arbitrate
7898         between type and template interpretations of an identifier.
7899
7900 Sat May 28 04:07:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
7901
7902         * pt.c (instantiate_template): Zero out p if we found a
7903         specialization.
7904
7905         * decl.c (grokdeclarator): Elucidate warning.
7906         (grokdeclarator): If pedantic AND -ansi, complain about long long.
7907
7908         Make explicit instantiation work reasonably.  It is now appropriate
7909         to deprecate the use of -fexternal-templates.
7910         * pt.c (instantiate_template): Set DECL_TEMPLATE_SPECIALIZATION or
7911         DECL_IMPLICIT_INSTANTIATION on fndecl as appropriate.
7912         (end_template_instantiation): Reflect changes in USE_TEMPLATE
7913         semantics.
7914         (do_pending_expansions): if (!flag_implicit_templates) DECIDE(0);
7915         (do_function_instantiation): Don't set EXPLICIT_INST if
7916         flag_external_templates is set.  Do set TREE_PUBLIC and DECL_EXTERN
7917         appropriately otherwise.
7918         (do_type_instantiation): Set interface info for class.  Set
7919         TREE_PUBLIC and DECL_EXTERN for methods.  Do none of this if
7920         flag_external_templates is set.
7921         * parse.y: Reflect changes in USE_TEMPLATE semantics.
7922         * decl2.c: New flag flag_implicit_templates determines whether or
7923         not implicit instantiations get emitted.  This flag currently
7924         defaults to true, and must be true for -fexternal-templates to work.
7925         (finish_file): Consider flag_implement_inlines when
7926         setting DECL_EXTERNAL.  Consider flag_implicit_templates when
7927         deciding whether or not to emit a static copy.
7928         * decl.c (start_function): Set TREE_PUBLIC and DECL_EXTERNAL
7929         properly for template instantiations.
7930         (start_method): Set DECL_IMPLICIT_INSTANTIATION on methods of a
7931         template class.
7932         * cp-tree.h (CLASSTYPE_USE_TEMPLATE): Change semantics.
7933         (DECL_USE_TEMPLATE): Parallel macro for FUNCTION and VAR_DECLs.
7934         (various others): Accessor macros for the above.
7935
7936 Fri May 27 13:57:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
7937
7938         * typeck.c (build_binary_op_nodefault): Division by constant zero is
7939         an error.
7940
7941 Fri May 27 13:50:15 1994  Mike Stump  <mrs@cygnus.com>
7942
7943         * class.c (override_one_vtable): Don't modify things we don't own.
7944
7945 Fri May 27 01:42:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
7946
7947         * decl.c (finish_decl): Don't postpone processing the initializer of
7948         a decl with DECL_EXTERNAL set, and do call rest_of_compilation for a
7949         PUBLIC const at toplevel.
7950         (grokdeclarator): pedwarn about initializing non-const or
7951         non-integral statics in the class body.
7952
7953         * decl.c (pushtag): Don't try to set DECL_CLASS_CONTEXT on a
7954         TYPE_DECL.
7955
7956         * call.c (convert_harshness): Dereference reference on rhs before
7957         proceeding, properly grok passing const things to non-const
7958         references.
7959
7960         * typeck.c (build_unary_op): Soften error about taking the address
7961         of main() to a pedwarn.
7962
7963         * lex.c (default_copy_constructor_body): Unambiguously specify base
7964         classes (i.e. A((const class ::A&)_ctor_arg) ).
7965         (default_assign_ref_body): Ditto.
7966
7967 Thu May 26 13:13:55 1994  Gerald Baumgartner  (gb@mexican.cygnus.com)
7968
7969         * decl2.c (grokfield): Don't complain about local signature
7970         method declaration without definition.
7971
7972         * call.c (convert_harshness): If `type' is a signature pointer
7973         and `parmtype' is a pointer to a signature, just return 0.  We
7974         don't really convert in this case; it's a result of making the
7975         `this' parameter of a signature method a signature pointer.
7976
7977         * call.c (build_method_call): Distinguish calling the default copy
7978         constructor of a signature pointer/reference from a signature
7979         member function call.
7980
7981 Thu May 26 12:56:25 1994  Jason Merrill  (jason@deneb.cygnus.com)
7982
7983         * decl2.c (grokfield): Don't set TREE_PUBLIC on member function
7984         declarations.
7985
7986         * decl.c (duplicate_decls): A previous function declaration as
7987         static overrides a subsequent non-static definition.
7988         (grokdeclarator): Don't set TREE_PUBLIC on inline method
7989         declarations.
7990
7991 Wed May 25 14:36:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
7992
7993         * decl.c (grokdeclarator): Handle initialization of static const
7994         members.
7995         (finish_decl): Ditto.
7996
7997         * decl2.c (grokfield): Allow initialization of static const members
7998         even when pedantic.
7999
8000         * decl2.c (grokfield): Deal with grokdeclarator returning
8001         error_mark_node.
8002
8003         * decl.c (grok_ctor_properties): Return 0 for A(A) constructor.
8004         (grokfndecl): Check the return value of grok_ctor_properties.
8005         (start_method): Ditto.
8006
8007         * parse.y (absdcl): Expand type_quals inline.
8008
8009 Tue May 24 19:10:32 1994  Jason Merrill  (jason@deneb.cygnus.com)
8010
8011         * decl.c (pushtag): Use IS_AGGR_TYPE rather than checking for a
8012         RECORD_TYPE.
8013
8014 Tue May 24 18:09:16 1994  Per Bothner  (bothner@kalessin.cygnus.com)
8015
8016         * cp-tree.h (VTABLE_NAME_FORMAT):  If flag_vtable_thunks,
8017         always use "__vt_%s".
8018         * decl2.c (finish_vtable_vardecl):  Don't consider abstract virtuals
8019         when looking for a "sentinal" method (to decide on emitting vtables).
8020         * decl2.c (finish_file):  Scan all decls for thunks that need
8021         to be emitted.
8022         * decl2.c (finish_vtable_vardecl):  Don't bother calling emit_thunk.
8023         * method.c (make_thunk):  Use a more meaningful label.  If there
8024         exists a matching top-level THUNK_DECL re-use it;  otherwise
8025         create a new THUNK_DECL (and declare it).
8026         * method.c (emit_thunk):  Make thunk external/public depending
8027         on the underlying method.
8028
8029 Tue May 24 00:22:04 1994  Jason Merrill  (jason@deneb.cygnus.com)
8030
8031         * pt.c (tsubst): Use lookup_name_nonclass to find guiding decls, not
8032         lookup_name.
8033
8034         * call.c (build_overload_call_real): Don't immediately pick a
8035         function which matches perfectly.
8036
8037         * decl.c (grokdeclarator): Use c_build_type_variant for arrays.
8038         (grokdeclarator): Warn about, and throw away, cv-quals attached to a
8039         reference (like 'int &const j').
8040
8041         * typeck.c (convert_arguments): Don't mess with i for methods.
8042         * call.c (build_method_call): Pass the function decl to
8043         convert_arguments.
8044
8045         * typeck.c (comp_ptr_ttypes_real): New function.  Implements the
8046         checking for which multi-level pointer conversions are allowed.
8047         (comp_target_types): Call it.
8048         (convert_for_assignment): Check const parity on the ultimate target
8049         type, too.  And make those warnings pedwarns.
8050
8051 Mon May 23 14:11:24 1994  Jason Merrill  (jason@deneb.cygnus.com)
8052
8053         * error.c (dump_char): Use TARGET_* for character constants.
8054
8055 Mon May 23 13:03:03 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
8056
8057         * tree.c (debug_no_list_hash): Make static.
8058
8059         * decl.c (decls_match): Say the types don't match if newdecl ends up
8060         with a null type, after we've checked if olddecl does.
8061         (pushdecl): Check if the decls themselves match before looking for
8062         an extern redeclared as static, to avoid inappropriate and incorrect
8063         warnings.
8064
8065 Fri May 20 14:04:34 1994  Jason Merrill  (jason@deneb.cygnus.com)
8066
8067         * decl.c (grokdeclarator): Make warning about duplicate short, etc.
8068         a pedwarn.
8069
8070         * typeck.c (build_c_cast): Casting to function or method type is an
8071         error.
8072
8073         * class.c (finish_struct): Make warning for anonymous class with no
8074         instances a pedwarn.
8075
8076         * Makefile.in (stamp-parse): Expect a s/r conflict.
8077
8078         * typeck.c (build_modify_expr): pedwarn about using a non-lvalue
8079         cast as an lvalue.
8080
8081 Thu May 19 12:08:48 1994  Jason Merrill  (jason@deneb.cygnus.com)
8082
8083         * cvt.c (type_promotes_to): Make sure bool promotes to int rather
8084         than unsigned on platforms where sizeof(char)==sizeof(int).
8085
8086 Wed May 18 14:27:06 1994  Jason Merrill  (jason@deneb.cygnus.com)
8087
8088         * typeck.c (build_c_cast): Tack on a NOP_EXPR when casting to
8089         another variant.
8090         (build_modify_expr): Don't strip NOP_EXPRs, and don't get tricky
8091         and treat them as lvalues.
8092
8093         * decl.c (shadow_tag): Do complain about forward declarations of
8094         enums and empty declarations.
8095         * parse.y: Don't complain about forward declarations of enums and
8096         empty declarations.
8097
8098         * typeck.c (convert_for_assignment): Complain about changing
8099         the signedness of a pointer's target type.
8100
8101         * parse.y (stmt): Move duplicated code for checking case values from
8102         here.
8103         * decl2.c (check_cp_case_value): To here.  And add a call to
8104         constant_expression_warning.
8105
8106         * typeck.c (convert_for_assignment): Don't complain about assigning
8107         a negative value to bool.
8108
8109         * decl.c (init_decl_processing): Make bool unsigned.
8110
8111         * class.c (finish_struct): Allow bool bitfields.
8112
8113 Wed May 18 12:35:27 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
8114
8115         * Make-lang.in (c++.install-man): Get g++.1 from $(srcdir)/cp.
8116
8117 Wed May 18 03:28:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
8118
8119         * cvt.c (build_type_conversion): Lose special handling of
8120         truthvalues.
8121
8122         * search.c (dfs_pushdecls): Improve shadowing warning.
8123
8124 Tue May 17 13:34:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
8125
8126         * init.c (build_delete): Throw away const and volatile on `this'.
8127
8128         * decl.c (finish_enum): Put the constants in TYPE_VALUES again,
8129         rather than the enumerators.
8130         (pushtag): s/cdecl/c_decl/g
8131
8132 Mon May 16 23:04:01 1994  Stephen R. van den Berg  (berg@pool.informatik.rwth-aachen.de)
8133
8134         * cp/typeck.c (common_type): Attribute merging.
8135         (comp_types): Utilise COMP_TYPE_ATTRIBUTES macro.
8136
8137         * cp/parse.y: Revamp attribute parsing.
8138
8139 Mon May 16 01:40:34 1994  Jason Merrill  (jason@deneb.cygnus.com)
8140
8141         * decl.c (shadow_tag): Also check for inappropriate use of auto and
8142         register.
8143
8144         * method.c (build_overload_name): Clarify that the illegal case is a
8145         pointer or reference to array of unknown bound.
8146
8147         * error.c (dump_type_prefix): Print references to arrays properly.
8148
8149         * typeck.c (various): Be more helpful in pointer
8150         comparison diagnostics.
8151
8152         * tree.c (lvalue_p): MODIFY_EXPRs are lvalues again.  Isn't this
8153         fun?
8154
8155         * parse.y: Also catch an error after valid stmts.
8156
8157         * search.c (dfs_init_vbase_pointers): Don't abort because `this' is
8158         const.
8159
8160         * typeck.c (convert_for_initialization): If call to
8161         convert_to_reference generated a diagnostic, print out the parm
8162         number and function decl if any.
8163
8164         * errfn.c (cp_thing): Check atarg1 to determine whether or not we're
8165         specifying a line, not atarg.
8166
8167         * tree.c (build_cplus_method_type): Always make `this' const.
8168
8169         * decl2.c (grokclassfn): If -fthis-is-variable and this function is
8170         a constructor or destructor, make `this' non-const.
8171
8172         * typeck.c (build_modify_expr): Don't warn specially about
8173         assignment to `this' here anymore, since it will be caught by the
8174         usual machinery.
8175
8176         * various: Disallow specific GNU extensions (variable-size arrays,
8177         etc.) when flag_ansi is set, not necessarily when pedantic is set,
8178         so that people can compile with -pedantic-errors for tighter const
8179         checking and such without losing desirable extensions.
8180
8181         * typeck2.c (build_functional_cast): Call build_method_call with
8182         LOOKUP_PROTECT.
8183         (process_init_constructor): Only process FIELD_DECLs.
8184
8185         * decl.c (finish_decl): Also force static consts with no explicit
8186         initializer that need constructing into the data segment.
8187
8188         * init.c (build_delete): Undo last patch, as it interferes with
8189         automatic cleanups.
8190
8191 Sat May 14 01:59:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
8192
8193         * call.c, class.h, cp-tree.h, cvt.c, decl2.c: Lose old overloading
8194         code.
8195
8196         * init.c (build_delete): pedwarn about using plain delete to delete
8197         an array.
8198
8199 Fri May 13 16:45:07 1994  Jason Merrill  (jason@deneb.cygnus.com)
8200
8201         * typeck.c (comp_target_types): Be more helpful in contravariance
8202         warnings, and make them pedwarns.
8203
8204         * decl.c (grokdeclarator): Use decl_context to decide whether or not
8205         this is an access declaration.
8206
8207         * class.c (finish_struct_bits): Set TYPE_HAS_INT_CONVERSION if it
8208         has a conversion to enum or bool, too.
8209
8210 Fri May 13 16:31:27 1994  Mike Stump  <mrs@cygnus.com>
8211
8212         * method.c (emit_thunk):  Make declaration for
8213         current_call_is_indirect local (needed for hppa).
8214
8215 Fri May 13 16:16:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
8216
8217         * pt.c (uses_template_parms): Grok BOOLEAN_TYPE.
8218         (tsubst): Ditto.
8219
8220 Fri May 13 16:23:32 1994  Mike Stump  <mrs@cygnus.com>
8221
8222         * pt.c (tsubst): If there is already a function for this expansion,
8223         use it.
8224         * pt.c (instantiate_template): Ditto.
8225
8226 Fri May 13 10:30:42 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
8227
8228         * parse.y (implicitly_scoped_stmt, simple_stmt case): Use
8229         kept_level_p for MARK_ENDS argument to expand_end_bindings, to avoid
8230         generating debug info for unemitted symbols on some systems.
8231
8232         * cp-tree.h (build_static_cast, build_reinterpret_cast,
8233         build_const_cast): Add declarations.
8234
8235 Fri May 13 09:50:31 1994  Mike Stump  <mrs@cygnus.com>
8236
8237         * search.c (expand_indirect_vtbls_init): Fix breakage from Apr 27
8238         fix.  We now try get_binfo, and if that doesn't find what we want,
8239         we go back to the old method, which still sometimes fails.
8240
8241 Fri May 13 01:43:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
8242
8243         * parse.y (initdcl): Call cplus_decl_attributes on the right
8244         variable.
8245         * decl2.c (cplus_decl_attributes): Don't call decl_attributes for
8246         void_type_node.
8247
8248         * typeck.c (build_binary_op_nodefault): Change result_type for
8249         comparison ops to bool.
8250         (build_binary_op): Convert args of && and || to bool.
8251         * cvt.c (build_default_binary_type_conversion): Convert args of &&
8252         and || to bool.
8253         (build_default_unary_type_conversion): Convert arg of ! to bool.
8254         (type_promotes_to): bool promotes to int.
8255
8256 Fri May 13 01:43:18 1994  Mike Stump  <mrs@cygnus.com>
8257
8258         Implement the new builtin `bool' type.
8259         * typeck.c (build_binary_op_nodefault): Convert args of && and || to
8260         bool.
8261         (build_unary_op): Convert arg of ! to bool.
8262         * parse.y: Know true and false.  Use bool_truthvalue_conversion.
8263         * method.c (build_overload_value): Know bool.
8264         (build_overload_name): Ditto.
8265         * lex.c (init_lex): Set up RID_BOOL.
8266         * gxx.gperf: Add bool, true, false.
8267         * error.c (*): Know bool.
8268         * decl.c (init_decl_processing): Set up bool, true, false.
8269         * cvt.c (cp_convert): Handle conversion to bool.
8270         (build_type_conversion): Ditto.
8271         * *.c: Accept bool where integers and enums are accepted (use
8272         INTEGRAL_CODE_P macro).
8273
8274 Thu May 12 19:13:54 1994  Richard Earnshaw  (rwe11@cl.cam.ac.uk)
8275
8276         * g++.c: Use #ifdef for __MSDOS__, not #if.
8277
8278 Thu May 12 18:05:18 1994  Mike Stump  <mrs@cygnus.com>
8279
8280         * decl2.c (lang_f_options): Handle -fshort-temps.  -fshort-temps
8281         gives old behavior , and destroys temporaries earlier.  Default
8282         behavior now conforms to the ANSI working paper.
8283
8284 Thu May 12 14:45:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
8285
8286         * typeck.c (build_modify_expr): Understand MODIFY_EXPR as an lvalue.
8287         Use convert_force to convert the result of a recursive call when we
8288         are dealing with a NOP_EXPR.  Don't automatically wrap MODIFY_EXPRs
8289         in COMPOUND_EXPRs any more.
8290         (various): Lose pedantic_lvalue_warning.
8291         (unary_complex_lvalue): Understand MODIFY_EXPR.
8292
8293         * cvt.c (convert_to_reference): Allow DECL to be error_mark_node if
8294         we don't know what we're initializing.
8295
8296 Wed May 11 01:59:36 1994  Jason Merrill  (jason@deneb.cygnus.com)
8297
8298         * cvt.c (convert_to_reference): Modify to use convtype parameter.
8299         Only create temporaries when initializing a reference, not when
8300         casting.
8301         (cp_convert): New main function.
8302         (convert): Call cp_convert.
8303         * cvt.c, decl.c, typeck.c: Fix calls to convert_to_reference.
8304         * cp-tree.h (CONV_*): New constants used by conversion code for
8305         selecting conversions to perform.
8306
8307         * tree.c (lvalue_p): MODIFY_EXPRs are no longer lvalues.
8308
8309         * typeck.c (build_{static,reinterpret,const_cast): Stubs that just
8310         call build_c_cast.
8311         * parse.y: Add {static,reinterpret,const}_cast.
8312         * gxx.gperf: Ditto.
8313
8314         * typeck.c (common_type): Allow methods with basetypes of different
8315         UPTs.
8316         (comptypes): Deal with UPTs.
8317         (build_modify_expr): Wrap all MODIFY_EXPRs in a COMPOUND_EXPR.
8318
8319         * pt.c (end_template_decl): Check for multiple definitions of member
8320         templates.
8321
8322         * call.c (build_method_call): Complain about calling an abstract
8323         virtual from a constructor.
8324
8325         * typeck.c (pointer_int_sum): Check for the integer operand being 0
8326         after checking the validity of the pointer operand.
8327
8328         * typeck2.c (digest_init): Pedwarn about string initializer being
8329         too long.
8330
8331 Tue May 10 12:10:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
8332
8333         * decl.c (push_overloaded_decl): Only throw away a builtin if the
8334         decl in question is the artificial one.
8335
8336         * parse.y (simple_stmt, switch): Use implicitly_scoped_stmt because
8337         expand_{start,end}_case cannot happen in the middle of a block.
8338
8339         * cvt.c (build_type_conversion_1): Use convert again.
8340
8341 Tue May 10 11:52:04 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
8342
8343         * typeck2.c (digest_init): Make sure we check for signed and
8344         unsigned chars as well when warning about string initializers.
8345
8346         * init.c (emit_base_init): Check if there's a DECL_NAME on the
8347         member before trying to do an initialization for it.
8348
8349 Tue May 10 11:34:37 1994  Mike Stump  <mrs@cygnus.com>
8350
8351         * except.c: Don't do anything useful when cross compiling.
8352
8353 Tue May 10 03:04:13 1994  Jason Merrill  (jason@deneb.cygnus.com)
8354
8355         * decl.c (duplicate_decls): Fix up handling of builtins yet again.
8356         (push_overloaded_decl): Ditto.
8357
8358         * cvt.c (convert): Don't look for void type conversion.
8359
8360 Mon May  9 18:05:41 1994  Jason Merrill  (jason@deneb.cygnus.com)
8361
8362         * init.c (do_friend): Only do a pushdecl for friends, not
8363         pushdecl_top_level.
8364
8365 Mon May  9 13:36:34 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)
8366
8367         * decl.c (lookup_name_current_level): Put empty statement after
8368         the label OUT to make the code valid C.
8369
8370 Mon May  9 12:20:57 1994  Jason Merrill  (jason@deneb.cygnus.com)
8371
8372         * typeck.c (build_binary_op_nodefault): Only complain about
8373         comparing void * and a function pointer if void * is smaller.
8374
8375 Sun May  8 01:29:13 1994  Jason Merrill  (jason@deneb.cygnus.com)
8376
8377         * decl.c (lookup_name_current_level): Move through temporary binding
8378         levels.
8379
8380         * parse.y (already_scoped_stmt): Revive.
8381         (simple_stmt): Use it again.
8382
8383         * decl.c (poplevel): Always call poplevel recursively if we're
8384         dealing with a temporary binding level.
8385
8386 Sat May  7 10:52:28 1994  Mike Stump  <mrs@cygnus.com>
8387
8388         * decl.c (finish_decl): Make sure we run cleanups for initial values
8389         of decls.  Cures memory leak.
8390         * decl.c (expand_static_init): Ditto for static variables.
8391         * decl2.c (finish_file): Ditto for globals.
8392
8393 Sat May  7 03:57:44 1994  Jason Merrill  (jason@deneb.cygnus.com)
8394
8395         * typeck.c (commonparms): Don't complain about redefining default
8396         args.
8397
8398         * decl.c (duplicate_decls): Don't complain twice about conflicting
8399         function decls.
8400         (decls_match): Don't look at default args.
8401         (redeclaration_error_message): Complain about redefining default
8402         args.
8403
8404         * call.c (build_overload_call_real): Also deal with guiding
8405         declarations coming BEFORE the template decl.
8406
8407         * pt.c (unify): Allow different parms to have different
8408         cv-qualifiers.
8409         (unify): Allow trivial conversions on non-template parms.
8410
8411 Fri May  6 03:53:23 1994  Jason Merrill  (jason@deneb.cygnus.com)
8412
8413         * pt.c (tsubst): Support OFFSET_TYPEs.
8414         (unify): Ditto.
8415
8416         * decl2.c (finish_decl_parsing): Call push_nested_class with a type.
8417
8418         * init.c (build_offset_ref): Fix error message.
8419         * search.c (lookup_field): Ditto.
8420
8421         * call.c (build_scoped_method_call): Pass binfo to
8422         build_method_call.
8423         * typeck.c (build_object_ref): Ditto.
8424
8425         * typeck2.c (binfo_or_else): Don't return a _TYPE.
8426
8427         * class.c (finish_struct): Don't complain about re-use of inherited
8428         names or shadowing of type decls.
8429         * decl.c (pushdecl_class_level): Ditto.
8430
8431         * decl.c (finish_enum): Set the type of all the enums.
8432
8433         * class.c (finish_struct): Don't get confused by access decls.
8434
8435         * cp-tree.h (TYPE_MAIN_DECL): New macro to get the _DECL for a
8436         _TYPE.  You can stop using TYPE_NAME for that now.
8437
8438         * parse.y: Lose doing_explicit (check $0 instead).
8439         * gxx.gperf: 'template' now has a RID.
8440         * lex.h (rid): Ditto.
8441         * lex.c (init_lex): Set up the RID for 'template'.
8442
8443         * parse.y (type_specifier_seq): typed_typespecs or
8444         nonempty_type_quals.  Use it.
8445         (handler_args): Fix bogus syntax.
8446         (raise_identifier{,s}, optional_identifier): Lose.
8447         * except.c (expand_start_catch_block): Use grokdeclarator to parse
8448         the catch variable.
8449         (init_exception_processing): The second argument to
8450         __throw_type_match is ptr_type_node.
8451
8452         Fri May  6 07:18:54 1994  Chip Salzenberg  (chip@fin)
8453
8454         [ change propagated from c-decl.c of snapshot 940429 ]
8455         * cp/decl.c (finish_decl): Setting asmspec_tree should not
8456         zero out the old RTL.
8457
8458 Fri May  6 01:25:38 1994  Mike Stump  <mrs@cygnus.com>
8459
8460         Add alpha exception handling support to the compiler.
8461         Quick and dirty backend in except.c.
8462
8463         * cp/*:  Remove most remnants of old exception handling support.
8464         * decl.c (finish_function): Call expand_exception_blocks to put
8465         the exception hanlding blocks at the end of the function.
8466         * dec.c (hack_incomplete_structures): Make sure expand_decl_cleanup
8467         comes after expand_decl_init.
8468         * except.c: Reimplementation.
8469         * expr.c (cplus_expand_expr): Handle THROW_EXPRs.
8470         * lex.c (init_lex): Always have catch, try and throw be reserved
8471         words, so that we may always parse exception handling.
8472         * parse.y: Cleanup to support new interface into exception handling.
8473         * tree.def (THROW_EXPR): Add.
8474
8475 Thu May  5 17:35:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
8476
8477         * parse.y (simple_stmt, for loops): Use implicitly_scoped_stmt.
8478         (various): Lose .kindof_pushlevel and partially_scoped_stmt.
8479
8480 Thu May  5 16:17:27 1994  Kung Hsu  (kung@mexican.cygnus.com)
8481
8482         * parse.y (already_scoped_stmt): move expand_end_binding() to
8483         fix the unmatched LBB/LBE in stabs.
8484
8485 Thu May  5 14:36:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
8486
8487         * decl.c (set_nested_typename): Set TREE_MANGLED on the new
8488         identifiers.
8489         (pushdecl): Check TREE_MANGLED.
8490         (xref_tag): Ditto.
8491         * cp-tree.h (TREE_MANGLED): This identifier is a
8492         DECL_NESTED_TYPENAME (named to allow for future use to denote
8493         mangled function names as well).
8494
8495         Implement inconsistency checking specified in [class.scope0].
8496         * decl.c (lookup_name_real): Don't set ICV here after all.
8497         (finish_enum): Also set the type of the enumerators themselves.
8498         (build_enumerator): Put the CONST_DECL in the list instead of its
8499         initial value.
8500         (pushdecl_class_level): Check inconsistent use of a name in the
8501         class body.
8502         * class.c (finish_struct): Check inconsistent use of a name in the
8503         class body.  Don't set DECL_CONTEXT on types here anymore.
8504         * parse.y (qualified_type_name): Note that the identifier has now
8505         been used (as a type) in the class body.
8506         * lex.c (do_identifier): Note that the identifier has now been used
8507         (as a constant) in the class body.
8508         * error.c (dump_decl): Print type and enum decls better.
8509
8510 Thu May  5 09:35:35 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
8511
8512         * typeck.c (build_modify_expr): Warn about assignment to `this'.
8513
8514 Wed May  4 15:55:49 1994  Jason Merrill  (jason@deneb.cygnus.com)
8515
8516         * init.c (build_delete): Use the global operator delete when
8517         requested.
8518
8519         * decl.c (lookup_name_real): If we find the type we're looking in a
8520         base class while defining a class, set IDENTIFIER_CLASS_VALUE for
8521         the type.
8522
8523         * class.c (finish_struct): Remove a couple of dependencies on
8524         language linkage.
8525
8526         * decl.c (pushtag): Classes do nest in extern "C" blocks.
8527         (pushdecl): Only set DECL_NESTED_TYPENAME on the canonical one for
8528         the type.
8529         (pushtag): Remove another dependency on the language linkage.
8530
8531         * lex.c (cons_up_default_function): Don't set DECL_CLASS_CONTEXT to
8532         a const-qualified type.
8533
8534         * decl.c (push_overloaded_decl): Throw away built-in decls here.
8535         (duplicate_decls): Instead of here.
8536
8537 Wed May  4 15:27:40 1994  Per Bothner  (bothner@kalessin.cygnus.com)
8538
8539         * typeck.c (get_member_function_from_ptrfunc):  Do The Right
8540         Thing (I hope) if we're using thunks.
8541
8542 Wed May  4 13:52:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
8543
8544         * parse.y (specialization): aggr template_type_name ';'.
8545         (named_class_head_sans_basetype): Use it.
8546         (explicit_instantiation): Ditto.
8547         (tmpl.2): Revert.
8548
8549         * cvt.c (build_type_conversion_1): Use convert_for_initialization,
8550         rather than convert, to do conversions after the UDC.
8551
8552         * cp-tree.h (SHARED_MEMBER_P): This member is shared between all
8553         instances of the class.
8554
8555         * search.c (lookup_field): If the entity found by two routes is the
8556         same, it's not ambiguous.
8557
8558 Wed May  4 12:10:00 1994  Per Bothner  (bothner@kalessin.cygnus.com)
8559
8560         * decl.c (lookup_name_real):  Check for a NULL TREE_VALUE,
8561         to prevent the compiler from crashing ...
8562
8563 Wed May  4 11:19:45 1994  Jason Merrill  (jason@deneb.cygnus.com)
8564
8565         * call.c (build_method_call): If we don't have an object, check
8566         basetype_path to figure out where to look up the function.
8567
8568         * typeck.c (convert_for_initialization): Pass TYPE_BINFO (type) to
8569         build_method_call in case exp is NULL_TREE.
8570
8571 Tue May  3 16:02:53 1994  Per Bothner  (bothner@kalessin.cygnus.com)
8572
8573         Give a vtable entries a unique named type, for the sake of gdb.
8574         * class.c (build_vtable_entry):  The addres of a thunk now has
8575         type vtable_entry_type, not ptr_type_node.
8576         * method.c (make_thunk):  Fix type of THUNK_DECL.
8577         * class.c (add_virtual_function, override_one_vtable):  Use
8578         vfunc_ptr_type_node, instead of ptr_type_node.
8579         * cp-tree.h (vfunc_ptr_type_node):  New macro.
8580         * decl.c (init_decl_processing):  Make vtable_entry_type
8581         be a unique type of pointer to a unique function type.
8582
8583 Tue May  3 09:20:44 1994  Jason Merrill  (jason@deneb.cygnus.com)
8584
8585         * parse.y (do_explicit): Sets doing_explicit to 1.
8586         (explicit_instantiation): Use do_explicit rather than TEMPLATE
8587         directly, add "do_explicit error" rule.
8588         (datadef): Set doing_explicit to 0 after an explicit instantiation.
8589         (tmpl.2): Don't instantiate if we see a ';' unless we're doing an
8590         explicit instantiation.
8591         (named_class_head_sans_basetype): Remove aggr template_type_name
8592         ';' again.
8593
8594 Mon May  2 23:17:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
8595
8596         * search.c (lookup_nested_tag): Lose.
8597
8598         * decl2.c (grokfield): Set DECL_CONTEXT on TYPE_DECLs.
8599         (lookup_name_nonclass): Lose.
8600
8601         * decl.c (poplevel_class): Add force parameter.
8602         (lookup_name_real): Fix handling of explicit scoping which specifies
8603         a class currently being defined.  Add 'nonclass' argument.
8604         (lookup_name, lookup_name_nonclass): Shells for lookup_name_real.
8605
8606         * class.c (finish_struct): Don't unset IDENTIFIER_CLASS_VALUEs here.
8607         (popclass): Force clearing of IDENTIFIER_CLASS_VALUEs if we're being
8608         called from finish_struct.
8609
8610 Mon May  2 19:06:21 1994  Per Bothner  (bothner@kalessin.cygnus.com)
8611
8612         * decl.c (init_decl_processing), cp-tree.h:  Removed memptr_type.
8613         (It seeems redundant, given build_ptrmemfunc_type.)
8614         * typeck.c (get_member_function_from_ptrfunc), gc.c (build_headof,
8615         build_classof):  Use vtable_entry_type instead of memptr_type.
8616         * method.c (emit_thunk):  Call poplevel with functionbody==0
8617         to prevent DECL_INITIAL being set to a BLOCK.
8618
8619 Mon May  2 15:02:11 1994  Jason Merrill  (jason@deneb.cygnus.com)
8620
8621         * parse.y (named_class_head_sans_basetype): Add "aggr
8622         template_type_name ';'" rule for forward declaration of
8623         specializations.
8624
8625 Mon May  2 15:02:11 1994  Jason Merrill  (jason@deneb.cygnus.com)
8626
8627         * class.c (instantiate_type): Deal with pmf's.
8628
8629         * Make-lang.in (cc1plus): Don't depend on OBJS or BC_OBJS, since
8630         stamp-objlist does.
8631
8632         * Makefile.in (../cc1plus): Depend on OBJDEPS.
8633         (OBJDEPS): Dependency version of OBJS.
8634
8635 Mon May  2 12:51:31 1994  Kung Hsu  (kung@mexican.cygnus.com)
8636
8637         * search.c (dfs_debug_mark): unmark TYPE_DECL_SUPPRESS_DEBUG, not
8638         DECL_IGNORED_P.
8639
8640 Fri Apr 29 12:29:56 1994  Jason Merrill  (jason@deneb.cygnus.com)
8641
8642         * class.c (finish_struct): Clear out memory of local tags.  And
8643         typedefs.
8644
8645         * decl2.c (grokclassfn): Don't set DECL_CONTEXT to a cv-qualified
8646         type.
8647         * search.c (get_matching_virtual): Be more helpful in error message.
8648
8649         * *: Use DECL_ARTIFICIAL (renamed from DECL_SYNTHESIZED).
8650
8651         * lex.c (default_assign_ref_body): Expect TYPE_NESTED_NAME to work.
8652         (default_copy_constructor_body): Ditto.
8653
8654         * class.c (finish_struct): Don't gratuitously create multiple decls
8655         for nested classes.
8656
8657 Thu Apr 28 23:39:38 1994  Jason Merrill  (jason@deneb.cygnus.com)
8658
8659         Avoid clobbering the arg types of other functions when reverting
8660         static member functions.
8661         * decl.c (revert_static_member_fn): Rearrange arguments, don't
8662         require values for 'fn' and 'argtypes', add warning to comment
8663         above.
8664         (decls_match): Rearrange arguments in call to rsmf.
8665         (grok_op_properties): Don't pass values for fn and argtypes.
8666         * pt.c (instantiate_template): Don't pass values for fn and argtypes.
8667
8668 Thu Apr 28 16:29:11 1994  Doug Evans  (dje@canuck.cygnus.com)
8669
8670         * Make-lang.in (cc1plus): Depend on stamp-objlist.
8671         * Makefile.in (BC_OBJS): Delete.
8672         (OBJS): Cat ../stamp-objlist to get language independent files.
8673         Include ../c-common.o.
8674         (../cc1plus): Delete reference to BC_OBJS.
8675
8676 Thu Apr 28 02:12:08 1994  Jason Merrill  (jason@deneb.cygnus.com)
8677
8678         * search.c (compute_access): No really, deal with static members
8679         properly.  Would I lie to you?
8680
8681         Implement lexical hiding of function declarations.
8682         * pt.c (tsubst): Use lookup_name to look for function decls to guide
8683         instantiation.
8684         * method.c (build_opfncall): Use lookup_name_nonclass to look for
8685         non-member functions.
8686         * init.c (do_friend): Use lookup_name_nonclass to look for
8687         functions.
8688         * error.c (ident_fndecl): Use lookup_name to look for functions.
8689         * decl2.c (lookup_name_nonclass): New function, skips over
8690         CLASS_VALUE.
8691         * decl.c (struct binding_level): Lose overloads_shadowed field.
8692         (poplevel): Don't deal with overloads_shadowed.
8693         (push_overloaded_decl): Do lexical hiding for functions.
8694         * class.c (instantiate_type): Don't check non-members if we have
8695         members with the same name.
8696         * call.c (build_method_call): Use lookup_name_nonclass instead of
8697         IDENTIFIER_GLOBAL_VALUE to check for non-member functions.
8698         (build_overload_call_real): Ditto.
8699
8700         * decl.c (duplicate_decls): Check for ambiguous overloads here.
8701         (push_overloaded_decl): Instead of here.
8702         
8703         * decl.c (pushdecl): Back out Chip's last change.
8704
8705         * decl.c (grok_op_properties): operators cannot be static members.
8706
8707         * cp-tree.h (DECL_SYNTHESIZED): DECL_SOURCE_LINE == 0
8708         (SET_DECL_SYNTHESIZED): DECL_SOURCE_LINE = 0
8709         * lex.c (cons_up_default_function): Use SET_DECL_SYNTHESIZED.
8710
8711         * method.c (do_inline_function_hair): Don't put friends of local
8712         classes into global scope, either.
8713
8714         * typeck2.c (build_functional_cast): Don't look for a function call
8715         interpretation.
8716
8717 Thu Apr 28 15:19:46 1994  Mike Stump  <mrs@cygnus.com>
8718
8719         * cp-tree.h: disable use of backend EH.
8720
8721 Wed Apr 27 21:01:24 1994  Doug Evans  (dje@canuck.cygnus.com)
8722
8723         * Make-lang.in (c++.distdir): mkdir tmp/cp first.
8724         * Makefile.in (INCLUDES): Move definition to same place as
8725         parent makefile.
8726         (ALLOCA): Define.
8727         (OLDAR_FLAGS): Delete.
8728         (OLDCC): Define.
8729         (DIR): Delete.
8730         (CLIB): Define.
8731         (####site): Delete.
8732         (SUBDIR_USE_ALLOCA): Don't use ALLOCA if compiling with gcc.
8733
8734 Wed Apr 27 19:10:04 1994  Kung Hsu  (kung@mexican.cygnus.com)
8735
8736         * decl.c (xref_tag): not to use strstr(), it's not available on
8737         all platforms.
8738
8739 Wed Apr 27 18:10:12 1994  Jason Merrill  (jason@deneb.cygnus.com)
8740
8741         * class.c (finish_struct): Resolve yet another class/pmf confusion.
8742
8743         * call.c (build_overload_call_real): Don't take the single-function
8744         shortcut if we're dealing with an overloaded operator.
8745
8746 Wed Apr 27 17:35:37 1994  Mike Stump  <mrs@cygnus.com>
8747
8748         * search.c (get_base_distance): Search the virtual base class
8749         binfos, incase someone wants to convert to a real virtual base
8750         class.
8751         * search.c (expand_indirect_vtbls_init): Use convert_pointer_to_real
8752         instead of convert_pointer_to, as it now will work.
8753
8754 Wed Apr 27 15:36:49 1994  Jason Merrill  (jason@deneb.cygnus.com)
8755
8756         * cvt.c (convert_to_reference): Don't complain about casting away
8757         const and volatile.
8758
8759         * typeck.c (build_unary_op): References are too lvalues.
8760
8761 Wed Apr 27 13:58:05 1994  Mike Stump  <mrs@cygnus.com>
8762
8763         * class.c (override_one_vtable): We have to prepare_fresh_vtable
8764         before we modify it, not after, also, we cannot reuse an old vtable,
8765         once we commit to a new vtable.  Implement ambiguous overrides in
8766         virtual bases as abstract.  Hack until we make the class
8767         ill-formed.
8768
8769 Wed Apr 27 01:17:08 1994  Jason Merrill  (jason@deneb.cygnus.com)
8770
8771         * parse.y (unary_expr): Expand new_placement[opt] and
8772         new_initializer[opt] inline.
8773
8774         * search.c (lookup_fnfields): Don't throw away the inheritance
8775         information here, either.
8776         (compute_access): Handle static members properly.
8777
8778         * init.c (build_member_call): Always set basetype_path, and pass it
8779         to lookup_fnfields.
8780
8781         * search.c (lookup_field): Deal properly with the case where
8782         xbasetype is a chain of binfos; don't throw away the inheritance
8783         information.
8784         (compute_access): protected_ok always starts out at 0.
8785
8786         * init.c (resolve_offset_ref): Don't cast `this' to the base type
8787         until we've got our basetype_path.
8788
8789         * cp-tree.h (IS_OVERLOAD_TYPE): aggregate or enum.
8790
8791         * cvt.c (build_up_reference): Use build_pointer_type rather than
8792         TYPE_POINTER_TO.
8793
8794         * call.c (convert_harshness_ansi): Call type_promotes_to for reals
8795         as well.
8796
8797         * cvt.c (type_promotes_to): Retain const and volatile, add
8798         float->double promotion.
8799
8800         * decl.c (grokdeclarator): Don't bash references to arrays into
8801         references to pointers in function parms.  Use type_promotes_to.
8802
8803 Tue Apr 26 23:44:36 1994  Mike Stump  <mrs@cygnus.com>
8804
8805         Finish off Apr 19th work.
8806
8807         * class.c (finish_struct_bits): Rename has_abstract_virtuals to
8808         might_have_abstract_virtuals.
8809         * class.c (strictly_overrides, override_one_vtable,
8810         merge_overrides): New routines to handle virtual base overrides.
8811         * class.c (finish_struct): Call merge_overrides to handle overrides
8812         in virtual bases.
8813
8814 Tue Apr 26 12:45:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
8815
8816         * typeck.c (build_function_call): Call build_function_call_real with
8817         LOOKUP_NORMAL.
8818
8819         * *: Don't deal with TYPE_EXPRs.
8820
8821         * tree.c (lvalue_p): If the type of the expression is a reference,
8822         it's an lvalue.
8823
8824         * cvt.c (convert_to_reference): Complain about passing const
8825         lvalues to non-const references.
8826         (convert_from_reference): Don't arbitrarily throw away const and
8827         volatile on the target type.
8828
8829         * parse.y: Simplify and fix rules for `new'.
8830
8831         * decl.c (grok_op_properties): operator void is illegal.
8832
8833 Mon Apr 25 02:36:28 1994  Jason Merrill  (jason@deneb.cygnus.com)
8834
8835         * parse.y (components): Anonymous bitfields can still have declspecs.
8836
8837         * decl.c (pushdecl): Postpone handling of function templates like we
8838         do C functions.
8839
8840         * search.c (expand_indirect_vtbls_init): Fix infinite loop when
8841         convert_pointer_to fails.
8842
8843         * call.c (compute_conversion_costs_ansi): A user-defined conversion
8844         by itself is better than that UDC followed by standard conversions.
8845         Don't treat integers and reals specially.
8846
8847         * cp-tree.h: Declare flag_ansi.
8848
8849         * typeck.c (c_expand_return): pedwarn on return in void function
8850         even if the expression is of type void.
8851         (build_c_cast): Don't do as much checking for casts to void.
8852         (build_modify_expr): pedwarn about array assignment if this code
8853         wasn't generated by the compiler.
8854
8855         * tree.c (lvalue_p): A comma expression is an lvalue if its second
8856         operand is.
8857
8858         * typeck.c (default_conversion): Move code for promoting enums and
8859         ints from here.
8860         * cvt.c (type_promotes_to): To here.
8861         * call.c (convert_harshness_ansi): Use type_promotes_to.  Also fix
8862         promotion semantics for reals.
8863
8864 Sun Apr 24 16:52:51 1994  Doug Evans  (dje@canuck.cygnus.com)
8865
8866         * Make-lang.in (c++.install-common): Check for g++-cross.
8867         * Makefile.in: Remove Cygnus cruft.
8868         (config.status): Delete.
8869         (RTL_H): Define.
8870         (TREE_H): Use complete pathname, some native makes have minimal
8871         VPATH support.
8872         (*.o): Use complete pathname to headers in parent dir.
8873         (doc, info, dvi): Delete.
8874
8875 Sun Apr 24 16:52:51 1994  Doug Evans  (dje@canuck.cygnus.com)
8876
8877         * Make-lang.in (c++.install-common): Check for g++-cross.
8878         * Makefile.in: Remove Cygnus cruft.
8879         (config.status): Delete.
8880         (RTL_H): Define.
8881         (TREE_H): Use complete pathname, some native makes have minimal
8882         VPATH support.
8883         (*.o): Use complete pathname to headers in parent dir.
8884         (doc, info, dvi): Delete.
8885
8886 Sun Apr 24 00:47:49 1994  Jason Merrill  (jason@deneb.cygnus.com)
8887
8888         * decl.c (pushdecl): Avoid redundant warning on redeclaring function
8889         with different return type.
8890         (decls_match): Compare return types strictly.
8891
8892 Fri Apr 22 12:55:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
8893
8894         * cvt.c (build_type_conversion): Do try to convert through other
8895         pointers.  This will fail if the class defines multiple pointer
8896         conversions.
8897
8898         * error.c (dump_type_prefix): Print out pointers to arrays properly.
8899         (dump_type_suffix): Ditto.  (was 'int *[]', now 'int (*)[]')
8900
8901         * typeck.c (build_unary_op): Disallow ++/-- on pointers to
8902         incomplete type.
8903
8904         * decl.c (duplicate_decls): Check mismatched TREE_CODES after
8905         checking for shadowing a builtin.  If we're redeclaring a builtin
8906         function, bash the old decl to avoid an ambiguous overload.
8907
8908         * cvt.c (convert_to_reference): Don't force arrays to decay here.
8909
8910         * tree.c (lvalue_p): A MODIFY_EXPR is an lvalue.
8911
8912         * decl.c (duplicate_decls): Don't assume that the decls will have
8913         types.
8914
8915         Mon Apr 18 11:35:32 1994  Chip Salzenberg  (chip@fin.uucp)
8916
8917         [ cp/* changes propagated from c-* changes in 940318 snapshot ]
8918         * c-decl.c (pushdecl): Warn if type mismatch with another external decl
8919         in a global scope.
8920
8921         Fri Apr 22 06:38:56 1994  Chip Salzenberg  (chip@fin.uucp)
8922
8923         * cp/typeck2.c (signature_error): Use cp_error for "%T".
8924
8925         Mon Apr 18 11:59:59 1994  Chip Salzenberg  (chip@fin.uucp)
8926
8927         [ cp/* changes propagated from c-* changes in 940415 snapshot ]
8928         * cp/decl.c (duplicate_decls, pushdecl, builtin_function):
8929         Use DECL_FUNCTION_CODE instead of DECL_SET_FUNCTION_CODE.
8930
8931         Mon Apr 18 11:55:18 1994  Chip Salzenberg  (chip@fin.uucp)
8932
8933         [ cp/* changes propagated from c-* changes in 940409 snapshot ]
8934         * cp/decl.c (duplicate_decls): Put new type in same obstack as
8935         old ones, or permanent if old ones in different obstacks.
8936
8937         Mon Apr 18 11:48:49 1994  Chip Salzenberg  (chip@fin.uucp)
8938
8939         [ cp/* changes propagated from c-* changes in 940401 snapshot ]
8940         * cp/parse.y (attrib): Handle string args as expressions,
8941         merging the two rules.  `mode' attribute now takes a string arg.
8942         Delete the rule for an identifier as arg.
8943
8944         Mon Apr 18 11:24:00 1994  Chip Salzenberg  (chip@fin.uucp)
8945
8946         [ cp/* changes propagated from c-* changes in 940312 snapshot ]
8947         * cp/typeck.c (pointer_int_sum): Multiplication should be done signed.
8948         (pointer_diff): Likewise the division.
8949
8950         Sun Mar  6 19:43:39 1994  Chip Salzenberg  (chip@fin.uucp)
8951
8952         [ cp/* changes propagated from c-* changes in 940304 snapshot ]
8953         * cp/decl.c (finish_decl): Issue warning for large objects,
8954         if requested.
8955
8956         Sat Feb 19 22:20:32 1994  Chip Salzenberg  (chip@fin.uucp)
8957
8958         [ cp/* changes propagated from c-* changes in 940218 snapshot ]
8959         * cp/parse.y (attrib): Handle attribute ((section ("string"))).
8960         * cp/decl.c (duplicate_decls): Merge section name into new decl.
8961
8962         Tue Feb  8 09:49:17 1994  Chip Salzenberg  (chip@fin.uucp)
8963
8964         [ cp/* changes propagated from c-* changes in 940206 snapshot ]
8965         * cp/typeck.c (signed_or_unsigned_type): Check for any
8966         INTEGRAL_TYPE_P not just INTEGER_TYPE.
8967
8968         Mon Dec  6 13:35:31 1993  Norbert Kiesel  (norbert@i3.INformatik.rwth-aachen.DE)
8969
8970         * cp/decl.c (finish_enum): Start from 0 when determining precision
8971         for short enums.
8972
8973         Fri Dec  3 17:07:58 1993  Ralph Campbell  (ralphc@pyramid.COM)
8974
8975         * cp/parse.y (unary_expr): Look at $1 for tree_code rather than
8976         casting $$.
8977
8978         Wed Nov 17 19:22:09 1993  Chip Salzenberg  (chip@fin.uucp)
8979
8980         * cp/typeck.c (build_binary_op_nodefault): Propagate code
8981         from C front-end to optimize unsigned short division.
8982         (build_conditional_expr): Fix bug in "1 ? 42 : (void *) 8".
8983
8984         Wed Nov 17 19:17:18 1993  Chip Salzenberg  (chip@fin.uucp)
8985
8986         * cp/call.c (convert_harshness_ansi): Given an (e.g.) char
8987         constant, prefer 'const char &' to 'int'.
8988
8989         Wed Feb  3 13:11:48 1993  Chip Salzenberg  (chip@fin.uucp)
8990
8991         * cp/class.c (finish_struct_methods):  Handle multiple
8992         constructors in fn_fields list.
8993
8994 Fri Apr 22 12:48:10 1994  Kung Hsu  (kung@mexican.cygnus.com)
8995
8996         * class.c (finish_struct): use TYPE_DECL_SUPPRESS_DEBUG to flag
8997         types not to be dumped in stabs, like types in #pragma interface.
8998         * decl.c (init_decl_processing): use TYPE_DECL_SUPPRESS_DEBUG to
8999         mark unknown type.
9000
9001 Fri Apr 22 03:27:26 1994  Doug Evans  (dje@cygnus.com)
9002
9003         * Language directory reorganization.
9004         See parent makefile.
9005
9006 Thu Apr 21 18:27:57 1994  Per Bothner  (bothner@kalessin.cygnus.com)
9007
9008         * cp-tree.h (THUNK_DELTA):  It is normally negative, so
9009         use signed .i variant of frame_size rather than unsigned .u.
9010         * cp-tree.h (VTABLE_NAME_FORMAT):  If flag_vtable_thunks,
9011         use "VT" rather than "vt" due to binary incompatibility.
9012         * class.c (get_vtable_name):  Use strlen of VTABLE_NAME_FORMAT,
9013         rather than sizeof, since it is now an expression.
9014         * class.c (modify_one_vtable):  Modify to skip initial element
9015         containing a count of the vtable.
9016
9017 Thu Apr 21 00:09:02 1994  Jason Merrill  (jason@deneb.cygnus.com)
9018
9019         * lex.c (check_newline): Force interface_unknown on main input file.
9020
9021         * pt.c (do_pending_expansions): Always emit functions that have been
9022         explicitly instantiated.
9023         (do_function_instantiation): Set DECL_EXPLICITLY_INSTANTIATED.
9024         (do_type_instantiation): Set CLASSTYPE_VTABLE_NEEDS_WRITING and
9025         DECL_EXPLICITLY_INSTANTIATED on all my methods.
9026         * parse.y (explicit_instantiation): Call do_type_instantiation for
9027         types.
9028         * decl2.c (finish_vtable_vardecl): Call import_export_vtable.
9029         * decl.c (start_function): Don't set DECL_EXTERNAL on a function
9030         that has been explicitly instantiated.
9031         * cp-tree.h (DECL_EXPLICITLY_INSTANTIATED): Alias for
9032         DECL_LANG_FLAG_4.
9033         * class.c: Move import_export_vtable to decl2.c, and comment out all
9034         uses.
9035
9036 Wed Apr 20 16:51:06 1994  Jason Merrill  (jason@deneb.cygnus.com)
9037
9038         * lex.c (process_next_inline): Don't muck with DECL_INLINE.
9039         (do_pending_inlines): Ditto.
9040
9041 Tue Apr 19 22:25:41 1994  Mike Stump  <mrs@cygnus.com>
9042
9043         Reimplement vtable building, and most vtable pointer setting.
9044         Allows for earier maintenance, easier understandability, and most
9045         importantly, correct semantics.
9046
9047         * class.c (build_vtable): Removed unneeded
9048         SET_BINFO_VTABLE_PATH_MARKED.
9049         * class.c (prepare_fresh_vtable): Ditto.  Added argument.
9050         * class.c (modify_vtable_entry): General cleanup.
9051         * class.c (related_vslot, is_normal, modify_other_vtable_entries,
9052         modify_vtable_entries): Removed.
9053         * class.c (add_virtual_function): General cleanup.
9054         * class.c (finish_base_struct): Setup BINFO_VTABLE and
9055         BINFO_VIRTUALS as early as we can, so that modify_all_vtables can
9056         work.
9057         * class.c (finish_vtbls): New routine, mostly from
9058         unmark_finished_struct.
9059         * class.c (overrides): New routine.
9060         * class.c (modify_one_vtable): New routine, mostly from
9061         modify_other_vtable_entries and modify_vtable_entries.
9062         * class.c (modify_all_direct_vtables, modify_all_indirect_vtables,
9063         modify_all_vtables): New routines.
9064         * class.c (finish_struct): Added arguemnt to prepare_fresh_vtable
9065         call.  General cleanup on how pending_hard_virtuals are handled.
9066         General cleanup on modifying vtables.  Use finish_vtbls, instead of
9067         unmark_finished_struct.
9068         * cp-tree.h (init_vtbl_ptrs, expand_direct_vtbls_init,
9069         get_first_matching_virtual, get_matching_virtual,
9070         expand_vbase_vtables_init,  expand_indirect_vtbls_init): Update.
9071         * cvt.c (convert_pointer_to_real): cleanup error message.
9072         * decl.c (grokfndecl): General cleanup.
9073         * decl.c (finish_function): Change init_vtbl_ptrs call to
9074         expand_direct_vtbls_init.  Change expand_vbase_vtables_init call to
9075         expand_indirect_vtbls_init.
9076         * init.c (expand_virtual_init): Remove unneeded argument.
9077         * init.c (init_vtbl_ptrs): Rename to expand_direct_vtbls_init, added
9078         two arguments to make more general.  Made more general.  Now can be
9079         used for vtable pointer initialization from virtual bases.
9080         * init.c (emit_base_init): Change expand_vbase_vtables_init call to
9081         expand_indirect_vtbls_init.  Change init_vtbl_ptrs call to
9082         expand_direct_vtbls_init.
9083         * init.c (expand_virtual_init): General cleanup.
9084         * init.c (expand_default_init): Change expand_vbase_vtables_init
9085         call to expand_indirect_vtbls_init.
9086         * init.c (expand_recursive_init_1): Change expand_vbase_vtables_init
9087         call to expand_indirect_vtbls_init.
9088         * init.c (expand_recursive_init): Change expand_vbase_vtables_init
9089         call to expand_indirect_vtbls_init.
9090         * search.c (get_first_matching_virtual): Rename to
9091         get_matching_virtual.  General cleanup and remove setting of
9092         DECL_CONTEXT.  That is now done in a cleaner way in
9093         modify_vtable_entry and add_virtual_function.
9094         * search.c (expand_vbase_vtables_init): Rename to
9095         expand_indirect_vtbls_init.  General cleanup.  Use
9096         expand_direct_vtbls_init to do hard work.  Ensures that _all_ vtable
9097         pointers from virtual bases are set up.
9098         * search.c (bfs_unmark_finished_struct, unmark_finished_struct):
9099         Removed.
9100
9101         * *.[chy]: Remove support for VTABLE_USES_MASK.
9102
9103 Tue Apr 19 12:51:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
9104
9105         * cvt.c (convert_to_reference): Use NOP_EXPRs to switch between
9106         reference and pointer types instead of bashing the types directly.
9107
9108         * call.c (build_overload_call_real): Use the TREE_CODE to determine
9109         whether the function is overloaded or not, rather than
9110         TREE_OVERLOADED.
9111         * *: Remove all uses of TREE_OVERLOADED.
9112
9113         * decl.c (grokdeclarator): Only complain about initializing const
9114         fields when -ansi or -pedantic.
9115
9116 Tue Apr 19 12:42:42 1994  Doug Evans  (dje@canuck.cygnus.com)
9117
9118         * cp-tree.h (THUNK_DELTA): frame_size is now a union.
9119
9120 Mon Apr 18 00:17:13 1994  Jason Merrill  (jason@deneb.cygnus.com)
9121
9122         Do overloading on a block-by-block basis, not function-by-function.
9123         * decl.c: Lose overloads_to_forget.
9124         (struct binding_level): Add overloads_shadowed field.
9125         (poplevel): Restore overloads_shadowed.
9126         (push_overloaded_decl): Use overloads_shadowed instead of
9127         overloads_to_forget.
9128         (finish_function): Don't look at overloads_to_forget.
9129
9130         Copy enum_overflow logic from c-decl.c.
9131         * decl.c (start_enum): Initialize enum_overflow.
9132         (build_enumerator): Use enum_overflow.  Also use current_scope().
9133
9134         * search.c (current_scope): Move Brendan's comment from
9135         build_enumerator here.
9136
9137         * typeck.c (convert_for_assignment): Change warnings to pedwarns for
9138         discarding const/volatile.
9139
9140 Sat Apr 16 01:18:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
9141
9142         * typeck.c (comp_target_parms): Accept TEMPLATE_TYPE_PARMs on the rhs.
9143         (comp_target_types): Ditto.
9144
9145         * decl.c (lookup_name): Don't unset got_scope here.
9146
9147         * spew.c (yylex): Only replace yylval with the TYPE_NESTED_NAME if
9148         got_scope != NULL_TREE.
9149
9150 Fri Apr 15 16:36:33 1994  Jason Merrill  (jason@deneb.cygnus.com)
9151
9152         Horrible kludge to prevent templates from being instantiated by
9153         their base classes.
9154         * parse.y (template_instantiate_once): Unset TYPE_BEING_DEFINED
9155         before we get to left_curly.
9156         * pt.c (instantiate_class_template): Set TYPE_BEING_DEFINED.
9157
9158         * error.c (dump_decl): If it's a typedef, print out the name of the
9159         decl, not just the underlying type.
9160
9161         * decl.c (pushdecl): If the old duplicate decl was a TYPE_DECL,
9162         update the IDENTIFIER_TYPE_VALUE of its name.
9163
9164         * decl2.c (finish_file): When processing the initializer for a
9165         static member, pretend that the dummy function is a member of the
9166         same class.
9167
9168 Fri Apr 15 15:56:35 1994  Kung Hsu  (kung@mexican.cygnus.com)
9169
9170         * class.c (build_vtable_entry): revert Apr 4 change.
9171         * decl2.c (mark_vtable_entries): replace pure virtual function
9172         decl with abort's.
9173
9174 Fri Apr 15 13:49:33 1994  Jason Merrill  (jason@deneb.cygnus.com)
9175
9176         * typeck.c (build_conditional_expr): Pedwarn on pointer/integer
9177         mismatch, and don't pedwarn on 0/function pointer mismatch.
9178
9179         * typeck2.c (digest_init): Lose code for special handling of unions.
9180         (process_init_constructor): Since they're handled just fine here.
9181         Pedwarn on excess elements.
9182
9183         * decl2.c (grokfield): Complain about local class method declaration
9184         without definition.
9185
9186 Fri Apr 15 13:19:40 1994  Per Bothner  (bothner@kalessin.cygnus.com)
9187
9188         * method.c (emit_thunk):  Add extern declaration for
9189         current_call_is_indirect (needed for hppa).
9190
9191 Thu Apr 14 16:12:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
9192
9193         Improve local class support; allow classes in different blocks to
9194         have the same name.
9195         * decl.c (pushtag): Support local classes better.
9196         (pushdecl_nonclass_level): New function for pushing mangled decls of
9197         nested types into the appropriate scope.
9198         (xref_defn_tag): Use pushdecl_nonclass_level instead of
9199         pushdecl_top_level. 
9200         (grokfndecl): Don't mess with IDENTIFIER_GLOBAL_VALUE for local
9201         class methods.
9202         * method.c (do_inline_function_hair): Ditto.
9203
9204         * class.c (finish_struct): It is legal for a class with no
9205         constructors to have nonstatic const and reference members.
9206
9207 Thu Apr 14 07:15:11 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
9208
9209         * decl.c (push_overloaded_decl): Avoid giving errors about
9210         built-ins, since duplicate_decls will have given warnings/errors
9211         for them.
9212
9213 Thu Apr 14 03:45:12 1994  Jason Merrill  (jason@deneb.cygnus.com)
9214
9215         * cvt.c (convert_to_reference): Warn about casting pointer type to
9216         reference type when this is probably not what they wanted.
9217
9218 Wed Apr 13 13:12:35 1994  Per Bothner  (bothner@kalessin.cygnus.com)
9219
9220         * decl.c (finish_decl):  Don't mindlessly set TREE_USED for
9221         static consts any more (toplev.c has now been modified to
9222         not emit warnings if they are unused).
9223
9224 Wed Apr 13 00:22:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
9225
9226         * decl.c (grok_op_properties): If op new/delete get here with
9227         METHOD_TYPEs, do a revert_static_member_fn.
9228
9229         * cp-tree.h (IDENTIFIER_CLASS_TYPE_VALUE): Lose.
9230         * init.c (is_aggr_typedef): Don't look at
9231         IDENTIFIER_CLASS_TYPE_VALUE.
9232         (get_aggr_from_typedef): Ditto.
9233         (get_type_value): Ditto.
9234         * call.c (build_scoped_method_call): Don't rely on overloaded
9235         template names having IDENTIFIER_CLASS_VALUE set.
9236
9237         * parse.y (component_decl_1, fn.def2): Revert rules for
9238         constructors.
9239         (component_decl_1, fn.def2): Use $1 instead of $$, since $$ is being
9240         clobbered.
9241
9242         * decl.c (start_function): Only warn about `void main()' if pedantic
9243         || warn_return_type.
9244
9245 Tue Apr 12 02:14:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
9246
9247         Clean up overloading of the template name.
9248         * class.c (pushclass): overload the template name whenever pushing
9249         into the scope of a template class, not just if it is
9250         uninstantiated.
9251         (popclass): Correspondingly.
9252         * search.c (push_class_decls): Don't overload_template_name.
9253         * pt.c (overload_template_name): Don't set IDENTIFIER_LOCAL_VALUE or
9254         DECL_CONTEXT on things.
9255         * parse.y (left_curly): Don't overload_template_name.
9256         * class.c (finish_struct): Don't undo_template_name_overload.
9257
9258         * method.c (build_opfncall): Only pass one argument to global op
9259         delete.
9260
9261         * call.c (build_method_call): Use TYPE_VEC_DELETE_TAKES_SIZE to
9262         decide how many arguments to use for vec delete.
9263
9264         * decl.c (grok_op_properties): Be consistent in modifying
9265         current_class_type.
9266         (grokdeclarator): Only complain about function decls with no return
9267         type if we're being pedantic.
9268
9269 Mon Apr 11 00:10:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
9270
9271         Add support for operator new [] and operator delete [].
9272
9273         * tree.def: Add VEC_NEW_EXPR and VEC_DELETE_EXPR.
9274         * ptree.c (print_lang_type): Indicate vec new/delete.
9275         * parse.y: Support vec new/delete.
9276         * method.c (build_decl_overload): Deal with vec new/delete.
9277         (build_opfncall): Ditto.
9278         * lex.c (init_lex): Set up values of ansi_opname and opname_tab for
9279         vec new/delete.  vec new uses "__vn", and vec delete uses "__vd".
9280         * init.c (init_init_processing): Set up BIVN and BIVD.
9281         (do_friend): Don't clean up after mistaken setting of TREE_GETS_NEW,
9282         since it doesn't happen any more.
9283         (build_new): Support vec new.  Always call something.
9284         (build_x_delete): Support vec delete.
9285         (build_vec_delete): Lose dtor_dummy argument, add use_global_delete,
9286         and pass it to build_x_delete.
9287         * decl2.c (delete_sanity): Don't change behavior by whether or not
9288         the type has a destructor.  Pass use_global_delete to
9289         build_vec_delete.
9290         (coerce_delete_type): Make sure that the type returned has a first
9291         argument of ptr_type_node.
9292         * decl.c (init_decl_processing): Also declare the global vec
9293         new/delete.
9294         (grokdeclarator): Also force vec new/delete to be static.
9295         (grok_op_properties): Note presence of vec new/delete, and play with
9296         their args.  If vec delete takes the optional size_t argument, set
9297         TYPE_VEC_DELETE_TAKES_SIZE.
9298         * cp-tree.h (TYPE_GETS_{REG,VEC}_DELETE): New macros to simplify
9299         checking for one delete or the other.
9300         (lang_type): gets_new and gets_delete are now two bits long.  The
9301         low bit is for the non-array version.  Lose gets_placed_new.
9302         (TYPE_VEC_DELETE_TAKES_SIZE): New macro indicating that the vec
9303         delete defined by this class wants to know how much space it is
9304         deleting.
9305         (TYPE_VEC_NEW_USES_COOKIE): New macro to indicate when vec new must
9306         add a header containing the number of elements in the vector; i.e.
9307         when the elements need to be destroyed or vec delete wants to know
9308         the size.
9309         * class.c (finish_struct_methods): Also check for overloading vec
9310         delete.
9311         * call.c (build_method_call): Also delete second argument for vec
9312         delete.
9313
9314         * decl.c (grokdeclarator): Correct complaints again.
9315         (grokdeclarator): Fix segfault on null declarator.
9316         (decls_match): Also accept redeclaration with no arguments if both
9317         declarations were in C context.  Bash TREE_TYPE (newdecl) here.
9318         (duplicate_decls): Instead of here.
9319
9320         * parse.y (nested_name_specifier_1): Lose rules for dealing with
9321         syntax errors nicely, since they break parsing of 'const i;'.
9322
9323         * decl.c (lookup_name): if (got_scope == current_class_type)
9324         val = IDENTIFIER_CLASS_VALUE (name).
9325
9326         * search.c (lookup_nested_tag): Look in enclosing classes, too.
9327
9328         * spew.c (yylex): Only look one character ahead when checking for a
9329         SCOPE.
9330
9331         * lex.c (check_newline): Read first nonwhite char before
9332         incrementing lineno.
9333
9334         * decl.c (grokdeclarator): Don't claim that typedefs are variables
9335         in warning.
9336
9337         * parse.y: Divide up uses of unqualified_id into
9338         notype_unqualified_id and unqualified_id, so that TYPENAME can be
9339         used as an identifier after an object.
9340
9341         * class.c (push_nested_class): Don't push into non-class scope.
9342
9343         * decl.c (grokdeclarator): If an identifier could be a type
9344         conversion operator, but has no associated type, it's not a type
9345         conversion operator.
9346
9347         * pt.c (unify): Check for equality of constants better.
9348
9349         * decl.c (grokdeclarator): Don't complain about access decls.
9350
9351 Sun Apr 10 02:39:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
9352
9353         * decl.c (grokdeclarator): pedwarn about data definitions without
9354         types here.
9355
9356         * parse.y (datadef): Don't pedwarn about decls without types here,
9357         since that is valid for functions.
9358         (fn.def2, component_decl): Support constructors with declmods again.
9359         (nomods_initdecls): For decls without any mods, so that we don't try
9360         to get declspecs from some arbitrary $0.
9361
9362         * search.c (lookup_field): Use cp_error.
9363
9364         * parse.y (nested_name_specifier_1): Don't check aggr/non-aggr type
9365         here; it breaks destructors for non-aggr types.
9366
9367         * decl.c (lookup_name): Only look for TYPE_DECLs in base classes of
9368         a type being defined, like the comment says.
9369         If got_scope is not an aggregate, just return NULL_TREE.
9370
9371         * pt.c (create_nested_upt): Kung's code for creating types nested
9372         within uninstantiated templates now lives here (it used to live in
9373         hack_more_ids).  It needs to be expanded.
9374
9375         * parse.y: Stop calling see_typename so much.
9376
9377         * decl.c (lookup_name): Deal with TTPs and UPTs.
9378
9379         * lex.c (real_yylex): Don't set looking_for_typename just because we
9380         saw a 'new'.
9381         (dont_see_typename): #if 0 out.
9382
9383         * spew.c (yylex): Increment looking_for_typename if the next
9384         character is SCOPE, rather than setting it to 1; this way, the value
9385         from seeing an aggr specifier will not be lost.  This kinda relies
9386         on looking_for_typename never being < 0, which is now true.
9387
9388         * parse.y (nested_name_specifier_1): Accept TEMPLATE_TYPE_PARMs,
9389         too.
9390         (named_class_head_sans_basetype): Accept template types, too.  Oops.
9391
9392 Fri Apr  8 16:39:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
9393
9394         * decl2.c (reparse_decl_as_expr1): Handle SCOPE_REFs.
9395
9396         * parse.y: Lose START_DECLARATOR.
9397
9398         * search.c (lookup_nested_tag): New function to scan CLASSTYPE_TAGS
9399         for a class.
9400
9401         * parse.y: Simplify fn.def2 and component_decl.  Support 'enum
9402         A::foo' syntax.  Catch invalid scopes better.
9403
9404         * parse.y, lex.c: lose TYPENAME_COLON.
9405
9406         * decl2.c (groktypefield): #if 0 out.
9407
9408         * decl.c (lookup_name): If the type denoted by got_scope is
9409         currently being defined, look in CLASSTYPE_TAGS rather than FIELDS.
9410
9411         * class.c (push_nested_class): Don't try to push into
9412         error_mark_node.
9413
9414 Fri Apr  8 07:26:36 1994  Brendan Kehoe  (brendan@lisa.cygnus.com)
9415
9416         * Makefile.in (stamp-parse): Update count of conflicts to 33.
9417
9418 Thu Apr  7 17:47:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
9419
9420         A saner implementation of nested types that treats template types
9421         no differently from non-template types.  There are still some
9422         shortcomings of our system; most notably, it is difficult to look
9423         for a nested type that is hidden by another name, because of the way
9424         we keep track of hidden types.  But this shouldn't be a problem for
9425         just about anyone.  Perhaps lookup_field should be fixed up a bit.
9426
9427         * spew.c: Moved handling of nested types/scoping from the lexer
9428         into the parser.  Removed variable template_type_seen_before_scope.
9429         Removed functions frob_identifier, hack_more_ids, and various cruft
9430         that was #if 0'd out in the past, reducing the size of the file from
9431         1146 lines to 450 lines.  We can't quite do away with spew.c yet,
9432         though; we still need it for do_aggr () and checking for SCOPE after
9433         the current identifier.  And setting lastiddecl.
9434
9435         * parse.y: Moved handling of nested types/scoping from the lexer
9436         into the parser, using a new global variable `got_scope'.  Reduced
9437         the number of states by 53.  Implemented all uses of explicit global
9438         scope.  Removed terminals SCOPED_TYPENAME and SCOPED_NAME.  Removed
9439         nonterminals tmpl.1, scoped_base_class, id_scope, typename_scope,
9440         scoped_typename.  Added nonterminals nested_type,
9441         qualified_type_name, complete_type_name, qualified_id, ptr_to_mem,
9442         nested_name_specifier, global_scope, overqualified_id, type_name.
9443         Changed many others.  Added 9 new reduce/reduce conflicts, which are
9444         nested type parallels of 9 that were already in the grammar for
9445         non-nested types.  Eight of the now 33 conflicts should be removed
9446         in the process of resolving the late binding between variable and
9447         function decls.
9448
9449         * gxxint.texi (Parser): Update.
9450
9451         * cp-tree.h (IS_AGGR_TYPE_CODE): Add UNINSTANTIATED_P_TYPE.
9452
9453         * lex.h: Add decl for got_scope.
9454
9455         * lex.c (see_typename): Claim to be the lexer when calling
9456         lookup_name.
9457
9458         * decl.c (lookup_name): When called from the lexer, look at
9459         got_scope and looking_at_typename; otherwise don't.
9460
9461 Thu Apr  7 22:05:47 1994  Mike Stump  <mrs@cygnus.com>
9462
9463         31th Cygnus<->FSF merge.
9464
9465 Thu Apr  7 17:47:53 1994  Jason Merrill  (jason@deneb.cygnus.com)
9466
9467         * decl2.c (mark_vtable_entries): Call this to mark all the
9468         entries in the vtable addressable.
9469         (finish_decl_parsing): Handle SCOPE_REFs.
9470
9471         * decl.c (decls_match): Always call compparms with strict == 1.
9472         Handle the special case of C function redecl here.
9473         (duplicate_decls): Only keep the old type if the new decl takes no
9474         arguments.
9475
9476         * typeck.c (compparms): Also allow t1 to be ... if strict == 0.
9477
9478 Thu Apr  7 16:17:50 1994  Mike Stump  <mrs@cygnus.com>
9479
9480         * class.c (build_vtable_entry): Fix breakage introduced Apr 5
9481         17:48:41.
9482
9483 Wed Apr  6 16:05:10 1994  Per Bothner  (bothner@kalessin.cygnus.com)
9484
9485         * init.c (build_virtual_init), search.c (build_vbase_vtables_init),
9486         ch-tree.h:  Every place these functions were called, the result was
9487         immediately passed to expand_expr_stmt.  Reduce redundancy by
9488         calling expand_expr_init *inside* these functions.  These
9489         makes for a simpler interface, and we don't have to build
9490         compound expressions.  Hence, rename these function to:
9491         expand_virtual_init and expand_vbase_vtables_init respectively.
9492         * init.c, decl.c:  Change callers of these functions.
9493         * init.c, cp-tree.h (expand_virtual_init):  Make static.
9494
9495         * decl2.c (finish_file): Check TREE_PUBLIC||TREE_ADDRESSABLE
9496         rather than DECL_SAVED_INSNS before emitting inlines.
9497
9498 Wed Apr  6 13:06:39 1994  Jason Merrill  (jason@deneb.cygnus.com)
9499
9500         * spew.c (init_spew): #if 0 out stuff used by arbitrate_lookup.
9501
9502         * decl.c (duplicate_decls): If this is a new declaration of an
9503         extern "C" function, keep the type (for the argtypes).
9504         (redeclaration_error_message): Don't check DECL_LANGUAGE here.
9505         (decls_match): Call compparms with a value of strict dependent on
9506         the value of strict_prototypes for DECL_LANGUAGE (oldecl).
9507
9508         * typeck.c (compparms): ... is only equivalent to non-promoting
9509         parms if we're not being strict.
9510
9511         * parse.y (empty_parms): Don't check flag_ansi || pedantic here.
9512
9513         * decl.c (init_decl_processing): if (flag_ansi || pedantic)
9514         strict_prototypes_lang_c = strict_prototypes_lang_cplusplus;
9515
9516         * decl2.c (grok_function_init): Don't set DECL_INITIAL on pure
9517         virtuals.
9518
9519 Tue Apr  5 17:48:41 1994  Per Bothner  (bothner@kalessin.cygnus.com)
9520
9521         Support for implementing vtables with thunks.
9522         * tree.def (THUNK_DECL):  New TREE_CODE.
9523         * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY), tree.c
9524         (fnaddr_from_vtable_entry):  Handle flag_vtable_thunks case.
9525         * cp-tree.h (memptr_type):  New variable.
9526         * class.c (build_vtable_entry):  Build thunk if necessary.
9527         * class.c (build_vfn_ref):  If using thunks, don't need
9528         to add delta field from vtable (there is none!).
9529         * decl.c: Add memptr_type as well as vtable_entry_type.
9530         If using thunks, the latter is just ptr_type_node.
9531         * gc.c, typeck.c:  Use memptr_typeChange, not vtable_entry_type.
9532         * decl2.c (finish_vtable_vardecl):  Handle thunks.
9533         * expr.c (cplus_expand_expr):  Support THUNK_DECL.
9534
9535         * decl.c (grokdeclarator):  Set DECL_THIS_EXTERN if "extern".
9536         * decl.c (start_function):  Set current_extern_inline based on
9537         DECL_THIS_EXTERN, not TREE_PUBLIC.
9538         * decl.c (finish_function):  Call mark_inline_for_output if needed,
9539
9540         Improve intelligence about when to emit inlines.
9541         * cp-tree.h (lang_decl_flags):  New field saved_inline.
9542         * cp-tree.h (DECL_SAVED_INLINE):  New macro.
9543         * class.c (add_virtual_function):  Don't set TREE_ADDRESSABLE.
9544         * decl.h, decl.c (pending_addressable_inlines):  Removed.
9545         * decl2.c (pending_addressable_inlines):  Renamed to saved_inlines.
9546         * decl2.c (mark_inline_for_output):  Do nothing if
9547         DECL_SAVED_INLINE;  otherwise set it (and add to saved_inlines list).
9548         * decl2.c (finish_vtable_vardecl):  SET_CLASSTYPE_INTERFACE_KNOWN
9549         and set CLASSTYPE_INTERFACE_ONLY if there is a non-inline virtual.
9550         * decl2.c (finish_file):  Writing out inlines later, so we can
9551         also handle the ones needed for vtbales.
9552         * decl2.c (write_vtable_entries, finish_vtable_typedecl):  Removed.
9553
9554         * cp-tree.h, class.c, decl2.c, search.c:  Remove -fvtable-hack
9555         and flag_vtable_hack.   Use -fvtable-thunks and flag_vtable_thunks
9556         instead.  (The rationale is that these optimizations both break binary
9557         compatibility, but should become the default in a future release.)
9558
9559 Wed Apr  6 10:53:56 1994  Mike Stump  <mrs@cygnus.com>
9560
9561         * class.c (modify_vtable_entries): Never reset the DECL_CONTEXT
9562         of a fndecl, as we might not be from that vfield.
9563
9564 Tue Apr  5 17:43:35 1994  Kung Hsu  (kung@mexican.cygnus.com)
9565
9566         * class.c (add_virtual_function): fix bug for pure virtual, so
9567         that DECL_VINDEX of the dummy decl copied won't be error.
9568         (see also Apr 4 change)
9569
9570 Tue Apr  5 17:23:45 1994  Per Bothner  (bothner@kalessin.cygnus.com)
9571
9572         * typeck.c (c_expand_return):  Before checking that we're not
9573         returning the address of a local, make sure it's a VAR_DECL.
9574         (And don't worry about it being a TREE_LIST.)
9575
9576 Tue Apr  5 13:26:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
9577
9578         * parse.y (YYDEBUG): Always define.
9579         * lex.c (YYDEBUG): Ditto.
9580
9581 Mon Apr  4 11:28:17 1994  Kung Hsu  (kung@mexican.cygnus.com)
9582
9583         * class.c (finish_struct): backup out the change below, put the
9584         new change for the same purpose. The change below breaks code.
9585
9586         * class.c (finish_struct): if pure virtual, copy node and make
9587         RTL point to abort, then put in virtual table.
9588         * decl2.c (grok_function_iit): reinstate Mar 31 change.
9589
9590 Sat Apr  2 03:12:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
9591
9592         * init.c (build_new): pedwarn about newing const and volatile
9593         types.
9594
9595         * tree.c (get_identifier_list): Only do the special handling
9596         thing if we're dealing with the main variant of the record type.
9597
9598         * cvt.c (convert_to_reference): When converting between
9599         compatible reference types, use the pointer conversion machinery.
9600         Don't just blindly overwrite the old type.
9601
9602 Fri Apr  1 17:14:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
9603
9604         * call.c (build_method_call): When looking at global functions,
9605         be sure to use instance_ptr for the first argument, not some version
9606         of it that has been cast to a base class.  Also do this before
9607         comparing candidates.
9608
9609 Thu Mar 31 19:50:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
9610
9611         * call.c (build_method_call): Constructors can be called for
9612         const objects.
9613
9614 Thu Mar 31 16:20:16 1994  Kung Hsu  (kung@mexican.cygnus.com)
9615
9616         * decl2.c (grok_func_init): do not abort as rtl for pur virtual
9617         fucntions. They can be defined somewhere else.
9618
9619 Sat Jan 23 23:23:26 1994  Stephen R. van den Berg  (berg@pool.informatik.rwth-aachen.de)
9620
9621         * decl.c (init_decl_processing): Declare __builtin_return_address
9622         and __builtin_frame_address for C++ as well.
9623
9624 Thu Mar 31 12:35:49 1994  Mike Stump  <mrs@cygnus.com>
9625
9626         * typeck2.c (store_init_value): Integral constant variables are
9627         always constant, even when doing -fpic.
9628
9629 Sat Jan 23 23:23:26 1994  Stephen R. van den Berg  (berg@pool.informatik.rwth-aachen.de)
9630
9631         * decl.c (redeclaration_error_message): Pass the types to
9632         comptypes.
9633
9634 Wed Mar 30 21:29:25 1994  Mike Stump  <mrs@cygnus.com>
9635
9636         Cures incorrect errors about pure virtuals in a class, when they
9637         have been overridden in a derived class.
9638
9639         * search.c (get_abstract_virtuals): Reimplement.
9640         * search.c (get_abstract_virtuals_1): New routine.
9641
9642 Wed Mar 30 14:10:04 1994  Jason Merrill  (jason@deneb.cygnus.com)
9643
9644         * pt.c (push_template_decls): Make the pushed level pseudo
9645         global.
9646
9647         * parse.y (extdefs): Don't pop everything if the current binding
9648         level is pseudo_global.
9649
9650         * decl.c (pop_everything): Stop on reaching a pseudo-global
9651         binding level.
9652
9653         * cp-tree.h (DECL_FUNCTION_MEMBER_P): Change to more reliable test.
9654
9655         * decl.c (duplicate_decls): Only copy DECL_SOURCE_{FILE_LINE} if
9656         the old decl actually had an initializer.
9657
9658         * {various}: Clean up gcc -W complaints.
9659
9660         * cp-tree.h (DECL_FUNCTION_MEMBER_P): Currently defined to be
9661         (DECL_CONTEXT (NODE) != NULL_TREE).
9662
9663         * parse.y (lang_extdef): Call pop_everything if necessary.
9664
9665         * decl.c (pop_everything): New function for popping binding
9666         levels left over after a syntax error.
9667         (pushdecl): Use DECL_FUNCTION_MEMBER_P to decide whether or not
9668         a function is a member.
9669
9670 Wed Mar 30 14:20:50 1994  Mike Stump  <mrs@cygnus.com>
9671
9672         Cures calling a more base base class function, when a more derived
9673         base class member should be called in some MI situations.
9674
9675         * search.c (make_binfo): Use more the more specialized base
9676         binfos from the binfo given as the second argument to make_binfo,
9677         instead of the unspecialized ones from the TYPE_BINFO.
9678         * class.c (finish_base_struct): Ditto, update callers.
9679         * search.c (dfs_get_vbase_types): Ditto.
9680         * tree.c (propagate_binfo_offsets, layout_vbasetypes): Ditto.
9681         * decl.c (xref_tag): Use NULL_TREE instead of 0.
9682         * lex.c (make_lang_type): Ditto.
9683
9684 Wed Mar 30 14:10:04 1994  Jason Merrill  (jason@deneb.cygnus.com)
9685
9686         * decl.c (pushdecl): If pushing a C-linkage function, only do a
9687         push_overloaded_decl.
9688         (duplicate_decls): Standard overloading does not shadow built-ins.
9689
9690 Tue Mar 29 00:54:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
9691
9692         * pt.c (end_template_decl): Don't call push_overloaded_decl.
9693
9694         * init.c (do_friend): Don't call push_overloaded_decl.
9695
9696         * decl.c (pushdecl): Call push_overloaded_decl for functions and
9697         function templates.
9698         (duplicate_decls): functions and function templates are not
9699         duplicates, but don't complain about calling this function to
9700         compare them.
9701         (push_overloaded_decl): Don't deal with linkage.  Call
9702         duplicate_decls.
9703         (redeclaration_error_message): Deal with linkage.
9704
9705         * decl.c (start_function): If push_overloaded_decl returns an
9706         older version of the function, deal with it.
9707
9708         * decl.c (start_function): Be sure only to push_overloaded_decl
9709         for non-members.
9710
9711         * decl.c (grokfndecl): Put back clearing of DECL_CHAIN for
9712         methods.
9713         (start_function): Lose broken and redundant code for checking old
9714         decl.
9715
9716         * init.c (add_friend): Give line numbers of both friend decls
9717         when warning about re-friending.
9718
9719         * pt.c (tsubst): Use comptypes rather than == to compare the
9720         types of the method as declared and as defined, since default
9721         parameters may be different.
9722
9723         * call.c (build_method_call): Use brendan's candidate printing
9724         routine.
9725
9726         * decl.c (start_method): Methods defined in the class body are
9727         inline whether or not it's a template class.
9728
9729 Mon Mar 28 16:39:26 1994  Jason Merrill  (jason@deneb.cygnus.com)
9730
9731         * parse.y (initdcl0): Add "extern" to current_declspecs if
9732         have_extern_spec && ! used_extern_spcec.
9733
9734         * tree.c (really_overloaded_fn): A fn with more than one
9735         overload.
9736
9737         * pt.c (end_template_decl): Use really_overloaded_fn.
9738
9739         * decl.c (duplicate_decls): When smashing a decl into a previous
9740         definition, keep the old file and line.
9741         Don't deal with overloaded functions.
9742         Lose old code for checking arg types of functions.
9743         Check for overloaded C functions.
9744         (pushdecl): Deal with overloaded functions.
9745         (start_decl): Expect pushdecl to return an appropriate function decl.
9746         (start_function): Ditto.
9747         (push_overloaded_decl): Don't check for overloaded C functions.
9748
9749         * *.c: Stop using DECL_OVERLOADED, it being archaic.
9750         TREE_OVERLOADED should probably go, too.
9751
9752 Mon Mar 28 14:00:45 1994  Ron Guilmette  (rfg@netcom.com)
9753
9754         * typeck.c (comp_target_types): Call comp_target_parms with
9755         strict == 1.
9756
9757 Sun Mar 27 00:07:45 1994  Jason Merrill  (jason@deneb.cygnus.com)
9758
9759         * parse.y (empty_parms): Don't parse () as (...) in extern "C"
9760         sections if we're compiling with -ansi or -pedantic.
9761
9762         * decl.c (decls_match): Don't treat (int) and (int&) as matching.
9763
9764         * decl2.c (grokfield): Don't pedwarn twice about initializing
9765         field.
9766
9767         * decl.c (push_overloaded_decl): Warn about shadowing
9768         constructor.
9769         (redeclaration_error_message): Don't allow 'int a; int a;'
9770
9771         * cvt.c (build_up_reference): Only check for valid upcast if
9772         LOOKUP_PROTECT is set, not just any flag.
9773
9774 Fri Mar 25 01:22:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
9775
9776         * lex.c (check_newline): When we see a #pragma implementation,
9777         also set it for the main input file.
9778
9779         * init.c (build_new): Convert array size argument to size_t.
9780
9781         * parse.y (primary): If we're doing a parenthesized type-id, call
9782         groktypename before passing it to build_new.
9783
9784         * call.c (build_method_call): Deal properly with const and
9785         volatile for instances of reference type.
9786
9787         * decl.c (store_return_init): Change 'if (pedantic) error' to 'if
9788         (pedantic) pedwarn'.
9789
9790         * decl.c (grokdeclarator): Don't complain about putting `static'
9791         and `inline' on template function decls.
9792
9793 Thu Mar 24 23:18:19 1994  Jason Merrill  (jason@deneb.cygnus.com)
9794
9795         * call.c (build_method_call): Preserve const & volatile on
9796         `this'.
9797
9798 Thu Mar 24 16:21:52 1994  Mike Stump  <mrs@cygnus.com>
9799
9800         * init.c (build_new, build_vec_delete): Use global new and delete
9801         for arrays. 
9802         * decl2.c (delete_sanity): Ditto.
9803
9804 Thu Mar 24 02:10:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
9805
9806         * cvt.c (convert_to_reference): If i is an lvalue,
9807         (int &)i -> *(int*)&i, as per 5.2.8p9 of the latest WP.
9808         (convert_force): Call convert_to_reference with LOOKUP_COMPLAIN.
9809
9810 Wed Mar 23 17:45:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
9811
9812         * decl.c (duplicate_decls): Also propagate DECL_TEMPLATE_MEMBERS
9813         and DECL_TEMPLATE_INSTANTIATIONS.
9814
9815         * init.c (build_new): Handle array typedefs properly.
9816
9817 Wed Mar 23 18:23:33 1994  Mike Stump  <mrs@cygnus.com>
9818
9819         30th Cygnus<->FSF merge.
9820
9821 Wed Mar 23 00:46:24 1994  Mike Stump  <mrs@cygnus.com>
9822
9823         * class.c (modify_vtable_entries): Avoid running off the end of the
9824         virtuals list when processing a virtual destructor.
9825         * class.c (get_vtable_entry): Ditto.
9826
9827 Wed Mar 23 00:23:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
9828
9829         * decl.c (duplicate_decls): If two template decls don't match,
9830         just return 0.
9831
9832 Tue Mar 22 23:49:41 1994  Jason Merrill  (jason@deneb.cygnus.com)
9833
9834         * typeck.c (convert_for_assignment): Don't pedwarn about
9835         converting function pointer to void *.
9836
9837 Tue Mar 22 22:23:19 1994  Mike Stump  <mrs@cygnus.com>
9838
9839         Major revamp of pointer to member functions.  Cures major
9840         nonfunctionality when used in casts, and MI situations.
9841
9842         * cvt.c (convert_force): Update call site of build_ptrmemfunc.
9843         * typeck.c (convert_for_assignment): Ditto.
9844         * typeck2.c (digest_init): Ditto.
9845         * typeck2.c (process_init_constructor): Simplify by moving code into
9846         digest_init.
9847         * typeck2.c (digest_init): Do default_conversions on init value, if
9848         we are processing pointer to member functions.
9849         * class.c (get_vfield_offset): Now non-static.  Convert bit offset
9850         into byte offset.
9851         * cp-tree.h (get_vfield_offset): Ditto.
9852         * typeck.c (get_member_function_from_ptrfunc): Convert down to right
9853         instance, before fetching vtable pointer.
9854         * typeck.c (get_delta_difference): New routine.
9855         * typeck.c (build_ptrmemfunc): Revamp to handle casting better, also
9856         get vtable pointer out of right subobject.
9857
9858 Tue Mar 22 17:56:48 1994  Mike Stump  <mrs@cygnus.com>
9859
9860         * search.c (get_binfo): Return NULL instead of aborting, when
9861         passed a UNION_TYPE.
9862
9863 Tue Mar 22 12:44:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
9864
9865         These patches implement handling of redefinition/redeclaration of
9866         templates.
9867
9868         * typeck.c (comptypes): Simplify.  All TEMPLATE_TYPE_PARMs are
9869         considered compatible.
9870
9871         * parse.y (template_def): Pass defn argument to end_template_decl.
9872
9873         * pt.c (end_template_decl): Add defn argument.  Check for
9874         redefinition.  Simplify.
9875
9876         * error.c (OB_UNPUT): New macro, to remove mistakes.
9877         (aggr_variety): Subroutine of dump_aggr_type.
9878
9879         * decl.c (decls_match): Support templates.
9880         (duplicate_decls): No longer static.  Don't try to lay out template
9881         decls.
9882         (pushdecl): Simplify.
9883
9884         * cp-tree.h (DECL_TEMPLATE_MEMBERS): Use DECL_SIZE instead of
9885         DECL_INITIAL.
9886
9887 Mon Mar 21 11:46:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
9888
9889         * error.c (dump_decl): Support class template decls.
9890         (dump_type): Don't adorn template type parms.
9891
9892         * decl.c (duplicate_decls): Save DECL_TEMPLATE_INFO from old decl
9893         if it was a definition.
9894         (redeclaration_error_message): Do the cp_error thang, and reject
9895         redefinition of templates.
9896
9897 Mon Mar 21 19:36:06 1994  Per Bothner  (bothner@kalessin.cygnus.com)
9898
9899         * decl.c (grokdeclarator):  Set TREE_PUBLIC for METHOD_TYPE
9900         in FIELD context, when appropriate.  Also,
9901         CLASSTYPE_INTERFACE_ONLY is irrelevant to setting TREE_PUBLIC.
9902         Also, simplify check for bogus return specifiers.
9903
9904 Mon Mar 21 11:46:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
9905
9906         * parse.y (after_type_declarator1): Expand type_quals.
9907         (notype_declarator1): Ditto.
9908         (absdcl1): Ditto.
9909
9910 Sat Mar 19 01:05:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
9911
9912         * decl.c (grokdeclarator): Treat class-local typedefs like static
9913         members; i.e. 'typedef int f();' means that f is a function type,
9914         not a method type.
9915
9916         * parse.y (decl): Change direct_* back to *.
9917         (type_id): Change direct_abstract_declarator to absdcl.
9918         (direct_declarator, direct_initdecls, direct_initdcl0): Remove again.
9919
9920 Fri Mar 18 12:47:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
9921
9922         These two patches fix crashes on instantiating a template inside a
9923         function with C linkage or containing labels.
9924
9925         * class.c (current_lang_stacksize): No longer static.
9926
9927         * decl.c (struct saved_scope): Add lang_base, lang_stack,
9928         lang_name, lang_stacksize, and named_labels.
9929         (push_to_top_level): Save them.
9930         (pop_from_top_level): Restore them.
9931
9932         * gxxint.texi (Parser): Update.
9933
9934         These two patches finish moving the task of expr/declarator
9935         ambiguity resolution from the lexer to the parser, and add one more
9936         r/r conflict.  START_DECLARATOR can now be nuked.
9937
9938         * parse.y (decl): Add "direct_" in typespec X rules.
9939         (direct_declarator): New nonterminal for
9940         direct_after_type_declarator and direct_notype_declarator.
9941         (direct_initdecls): Like initdecls, but uses direct_initdcl0.
9942         (direct_initdcl0): Like initdcl0, but uses direct_declarator.
9943         (named_parm): Add typespec direct_declarator rule.
9944
9945         * spew.c (yylex): #if 0 out START_DECLARATOR insertion.
9946
9947         These two patches disable some excessive cleverness on the part of
9948         g++; a non-class declaration always hides a class declaration in the
9949         same scope, and g++ was trying to unhide it depending on the
9950         enclosing expression.
9951
9952         * spew.c (arbitrate_lookup): #if 0 out.
9953
9954         * decl.c (lookup_name): Never call arbitrate_lookup.
9955
9956         * parse.y (complex_notype_declarator1): Add '*'
9957         complex_notype_declarator1 and '&' complex_notype_declarator1 rules.
9958
9959         * parse.y (complex_direct_notype_declarator): Restore id_scope
9960         see_typename TYPENAME rule, remove all other rules beginning with
9961         those tokens.
9962         (notype_unqualified_id): Add '~' see_typename IDENTIFIER rule.
9963
9964 Thu Mar 17 17:30:01 1994  Jason Merrill  (jason@deneb.cygnus.com)
9965
9966         These changes fix the compiler's handling of the functional cast/
9967         object declaration ambiguities in section 6.8 of the ARM.  They also
9968         add 11 reduce/reduce conflicts.  Sigh.
9969
9970         * parse.y: Add precedence decls for OPERATOR and '~'.
9971         (notype_unqualified_id): New nonterminal, encompasses all of the
9972         ANSI unqualified-id nonterminal except TYPENAMEs.
9973         (expr_or_declarator): New nonterminal to delay parsing of code like
9974         `int (*a)'.
9975         (primary): Use notype_unqualified_id.
9976         (decl): Add typespec initdecls ';' and typespec declarator ';'
9977         rules.
9978         (initdcl0): Deal with the above.
9979         (complex_notype_declarator1): A notype_declarator that is not also
9980         an expr_or_declarator.
9981         (complex_direct_notype_declarator): A direct_notype_declarator that
9982         doesn't conflict with expr_or_declarator.  Use
9983         notype_unqualified_id.  Remove id_scope see_typename TYPENAME rule.
9984         (functional_cast): New nonterminal, for the three functional cast
9985         rules.  So that they can be moved after
9986         complex_direct_notype_declarator.
9987         (see_typename): Don't accept type_quals any more.
9988
9989         * decl2.c (reparse_decl_as_expr): New function to deal with parse
9990         nodes for code like `int (*a)++;'.      
9991         (reparse_decl_as_expr1): Recursive subroutine of the above.
9992         (finish_decl_parsing): New function to deal with parse nodes for
9993         code like `int (*a);'.  See the difference?
9994
9995 Thu Mar 17 12:16:10 1994  Mike Stump  <mrs@cygnus.com>
9996
9997         These changes break binary compatibility in code with classes
9998         that use virtual bases.
9999
10000         * search.c (dfs_get_vbase_types): Simplify and correct to make
10001         sure virtual bases are initialized in dfs ordering.
10002         * search.c (get_vbase_types): Simplify and make readable.
10003
10004 Thu Mar 17 12:01:10 1994  Jason Merrill  (jason@deneb.cygnus.com)
10005
10006         * parse.y: s/ typename / type_id /g
10007
10008 Wed Mar 16 17:42:52 1994  Kung Hsu  (kung@mexican.cygnus.com)
10009
10010         * parse.y (typespec): add SCOPE TYPENAME for global scoped 
10011         type. e.g. ::B x.
10012
10013         * decl.c (complete_array_type): fix a bug that in -pendantic
10014         mode even there's no initializer, it will continue to build
10015         default index.
10016
10017 Wed Mar 16 17:43:07 1994  Jason Merrill  (jason@deneb.cygnus.com)
10018
10019         * parse.y (direct_notype_declarator): Add PTYPENAME rule, remove
10020         all of the scoped PTYPENAME rules.
10021
10022 Wed Mar 16 16:39:02 1994  Mike Stump  <mrs@cygnus.com>
10023
10024         * init.c (build_offset_ref): The value of A::typedef_name is
10025         always the TYPE_DECL, and never an error.
10026
10027 Tue Mar 15 20:02:35 1994  Jason Merrill  (jason@deneb.cygnus.com)
10028
10029         * search.c (get_base_distance_recursive): Two binfos can only
10030         represent the same object if they are both via_virtual.
10031
10032         * class.c (finish_base_struct): Check vbases for ambiguity, too.
10033
10034         * search.c (get_vbase_types): Accept binfo argument, too.
10035
10036 Tue Mar 15 19:22:05 1994  Kung Hsu  (kung@mexican.cygnus.com)
10037
10038         * decl.c (complete_array_type): complete TYPE_DOMAIN of the 
10039         initializer also, because back-end requires it.
10040
10041 Tue Mar 15 15:33:31 1994  Jason Merrill  (jason@deneb.cygnus.com)
10042
10043         * error.c (dump_expr): Support member functions (which show up as
10044         OFFSET_REFs).
10045
10046 Mon Mar 14 16:24:36 1994  Mike Stump  <mrs@cygnus.com>
10047
10048         * init.c (build_new): Set the return type of multidimensional
10049         news correctly.
10050
10051 Fri Mar 11 15:35:39 1994  Kung Hsu  (kung@mexican.cygnus.com)
10052
10053         * call.c (build_method_call): if basetype not equal to type
10054         of the instance, use the type of the instance in building
10055         destructor.
10056
10057 Thu Mar 10 17:07:10 1994  Kung Hsu  (kung@mexican.cygnus.com)
10058
10059         * parse.y (direct_notype_declarator): add push_nested_type for
10060         'template_type SCOPED_NAME' rule.
10061
10062 Tue Mar  8 00:19:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
10063
10064         * parse.y (parm): Add typed_declspec1 {absdcl, epsilon} rules.
10065
10066 Sat Mar  5 04:47:48 1994  Jason Merrill  (jason@deneb.cygnus.com)
10067
10068         * parse.y (regcast_or_absdcl): New nonterminal to implement late
10069         reduction of constructs like `int ((int)(int)(int))'.
10070         (cast_expr): Use it.
10071         (sub_cast_expr): Everything that can come after a cast.
10072         (typed_declspecs1): typed_declspecs that are not typed_typespecs.
10073         (direct_after_type_declarator): Lose PAREN_STAR_PAREN rule.
10074         (direct_abstract_declarator): Replace '(' parmlist ')' rule with
10075         '(' complex_parmlist ')' and regcast_or_absdcl.
10076         (parmlist): Split
10077         (complex_parmlist): Parmlists that are not also typenames.
10078         (parms_comma): Enabler.
10079         (named_parm): A parm that is not also a typename.  Use declarator
10080         rather than dont_see_typename abs_or_notype_decl.  Expand
10081         typed_declspecs inline.
10082         (abs_or_notype_decl): Lose.
10083         (dont_see_typename): Comment out.
10084         (bad_parm): Break out abs_or_notype_decl into two rules.
10085
10086 Fri Mar  4 18:22:39 1994  Jason Merrill  (jason@deneb.cygnus.com)
10087
10088         * decl2.c (reparse_decl_as_casts): New function to change parse
10089         nodes for `(int)(int)(int)' from "function taking int and returning
10090         function taking int and returning function taking int" to "... cast
10091         to int, cast to int, cast to int".
10092
10093         * decl2.c (reparse_decl_as_expr): Recursive function to change
10094         parse nodes for `A()()' from "function returning function returning
10095         A" to "A().operator()".
10096
10097         * parse.y (primary): Replace `typespec LEFT_RIGHT' rule with
10098         `typespec fcast_or_absdcl' rule.
10099         (fcast_or_absdcl): New nonterminal to implement late reduction of
10100         constructs like `A()()()()'.
10101         (typename): Replace `typespec absdcl1' rule with
10102         `typespec direct_abstract_declarator' rule.
10103         (direct_abstract_declarator): Replace `LEFT_RIGHT type_quals' rule
10104         with `fcast_or_absdcl type_quals' rule.
10105
10106 Fri Mar  4 16:18:03 1994  Mike Stump  <mrs@cygnus.com>
10107
10108         * tree.c (lvalue_p): Improve OFFSET_REF handling, so that it
10109         matches Section 5.5.
10110
10111 Fri Mar  4 14:01:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
10112
10113         * error.c (dump_type_prefix): Don't print basetype twice for
10114         pmfs.
10115
10116 Fri Mar  4 13:24:33 1994  Mike Stump  <mrs@cygnus.com>
10117
10118         * typeck.c (convert_arguments): Handle setHandler(A::handlerFn)
10119         so that it is like setHandler(&A::handlerFn).  Cures an `invalid
10120         lvalue in unary `&''.
10121
10122 Fri Mar  4 11:15:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
10123
10124         * gxxint.texi (Copying Objects): New section discussing default
10125         op= problems with virtual inheritance.
10126
10127         * decl2.c (grokoptypename): Just does grokdeclarator and
10128         build_typename_overload, since the parser can't call grokdeclarator
10129         directly.
10130
10131         * method.c (build_typename_overload): Set IDENTIFIER_GLOBAL_VALUE
10132         and TREE_TYPE on generated identifiers.
10133
10134         * decl.c (grokdeclarator): Don't deal with TYPE_EXPRs anymore.
10135
10136         * parse.y (parm): Convert `const char *' to `__opPCc' here.
10137
10138         * error.c (dump_decl): Say sorry rather than my_friendly_aborting
10139         if we can't figure out what to do.
10140         (dump_type*): Ditto.
10141
10142         * typeck2.c (build_m_component_ref): 'component' is an expr, not
10143         a decl.  Also move the IS_AGGR_TYPE check after the stripping of
10144         REFERENCE_TYPE.
10145
10146 Fri Mar  4 04:46:05 1994  Mike Stump  <mrs@cygnus.com>
10147
10148         * call.c (build_method_call): Handle b->setHandler(A::handlerFn)
10149         so that it is like b->setHandler(&A::handlerFn).  Cures an `invalid
10150         lvalue in unary `&''.
10151
10152 Thu Mar  3 12:38:15 1994  Jason Merrill  (jason@deneb.cygnus.com)
10153
10154         * parse.y: Add precedence specification for START_DECLARATOR.
10155         (type_quals): Move before primary.
10156         (typename): Move before typed_declspecs, add 'typespec absdcl1' rule.
10157
10158         * decl2.c (grokoptypename): Lose.
10159
10160         * decl.c (grokdeclarator): Parse TYPE_EXPRs in the initial scan,
10161         rather than waiting until later.
10162
10163 Wed Mar  2 14:12:23 1994  Jason Merrill  (jason@deneb.cygnus.com)
10164
10165         * parse.y (unary_expr): Use 'typename' in 'new' rules, rather
10166         than expanding it inline.
10167         (typename): Expand empty option of (former) absdcl inline.
10168         (abs_or_notype_decl): Ditto.
10169         (absdcl): Lose empty rule.
10170         (conversion_declarator): New nonterminal for 'typename' of 'operator
10171         typename'.
10172         (operator_name): Use it instead of absdcl.
10173
10174         * parse.y: Add precedence declarations for SCOPED_TYPENAME,
10175         TYPEOF, and SIGOF.
10176         (typed_declspecs): Accept typed_typespecs, rather than typespec
10177         directly.  Add rules with reserved_typespecquals.
10178         (reserved_declspecs): Don't accept typespecqual_reserved at the
10179         beginning of the list.  The typed_declspecs rule will deal with this
10180         omission.
10181         (declmods): Accept nonempty_type_quals, rather than TYPE_QUAL
10182         directly.
10183
10184         * parse.y (direct_notype_declarator,
10185         direct_after_type_declarator, direct_abstract_declarator): Split up
10186         the declarator1 nonterminals to match the draft standard and avoid
10187         ambiguities.
10188         (new_type_id, new_declarator, direct_new_declarator,
10189         new_member_declarator): New nonterminals to implement the subset of
10190         'typename' allowed in new expressions.
10191         (unary_expr): Use new_type_id instead of typename.
10192         (after_type_declarator1, absdcl1): Fix semantics of member pointers.
10193         (abs_member_declarator, after_type_member_declarator): Lose.
10194
10195         * parse.y (absdcl1): Don't require parens around
10196         abs_member_declarator.
10197         (abs_member_declarator): Lose see_typename from rules.
10198         (after_type_member_declarator): Ditto.
10199
10200         * tree.c (get_identifier_list): New function, containing code
10201         previously duplicated in get_decl_list and list_hash_lookup_or_cons.
10202         (get_decl_list): Use it.
10203         (list_hash_lookup_or_cons): Ditto.
10204
10205         * parse.y (typed_declspecs, declmods): It's not necessary to hash
10206         the declspecs on class_obstack, so don't.  This way typed_typespecs
10207         can reduce to typed_declspecs.
10208
10209 Wed Mar  2 14:29:18 1994  Jason Merrill (jason@cygnus.com)
10210
10211         * cvt.c (build_up_reference): If we aren't checking visibility,
10212         also allow base->derived conversions.
10213
10214 Mon Feb 28 15:14:29 1994  Per Bothner  (bothner@kalessin.cygnus.com)
10215
10216         * typeck.c (build_c_cast): Remove bogus hack when converting
10217         to a reference type.
10218
10219         * cp-tree.h (lang_decl::vbase_init_list, DECL_VBASE_INIT_LIST):
10220         Removed, not used.
10221         (lang_stype::methods, lang_decl::next_method): New fields.
10222         (CLASSTYPE_METHODS, DECL_NEXT_METHOD):  New macros.
10223         * decl.c (duplicate_decls):  Preserve DECL_NEXT_METHOD.
10224
10225         * cp-tree.h, decl2.c (flag_vtable_hack):  New flag.
10226         * decl2.c (finish_vtable_vardecl):  If flag_vtable_hack,
10227         and  !CLASSTYPE_INTERFACE_KNOWN, try to use the presence of
10228         a non-inline virtual function to control emitting of vtables.
10229         * class.c (finish_struct):  Build CLASSTYPE_METHODS list.
10230         * search.c (build_vbase_vtables_init):  Don't assemble_external
10231         (yet) if flag_vtable_hack.
10232         * class.c (build_vfn_ref):  Ditto.
10233
10234 Mon Feb 28 14:54:13 1994  Jason Merrill  (jason@deneb.cygnus.com)
10235
10236         * parse.y (component_decl): Don't include "typed_declspecs
10237         declarator ';'" speedup, since it breaks enums.
10238
10239 Fri Feb 25 15:43:44 1994  Per Bothner  (bothner@kalessin.cygnus.com)
10240
10241         * class.c (finish_struct):  Minor optimization for building
10242         fn_fields list.
10243
10244 Fri Feb 25 15:23:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
10245
10246         * decl.c (start_function): Fix detection of function overloading.
10247
10248 Thu Feb 24 22:26:19 1994  Mike Stump  <mrs@cygnus.com>
10249
10250         * lex.c (check_newline): #pragma interface can take a string
10251         argument, just like #pragma implementation.  #pragma implementation
10252         checks for garbage on the line, line #pragma interface does.  Main
10253         input files do not auto implement like named files, #pragma
10254         implementation must be used explicitly.
10255
10256 Thu Feb 24 17:09:01 1994  Jason Merrill  (jason@deneb.cygnus.com)
10257
10258         * parse.y (components): Handle list of one again.
10259         (notype_components): Ditto.
10260         (after_type_declarator1): Take maybe_raises out again.
10261
10262         * gxxint.texi (Parser): Document additional r/r conflict.
10263
10264 Wed Feb 23 14:42:55 1994  Jason Merrill  (jason@deneb.cygnus.com)
10265
10266         * gxxint.texi (Parser): Add node.
10267
10268         * Makefile.in (stamp-parse): Update expected conflict count.
10269
10270         * parse.y (various): Replace "declmods declarator" with "declmods
10271         notype_declarator".  The comment saying that "declmods declarator ';'"
10272         corresponds to "int i;" was wrong; it corresponds to "const i;".
10273         (component_decl): Add "typed_declspecs declarator ';'" rule; this
10274         *does* correspond to "int i;".  Change "declmods components" to
10275         "declmods notype_components".
10276         (components): Don't deal with a list of one anymore.
10277         (notype_components): New nonterminal, corresponds to notype_declarator.
10278         ({after_,no}type_component_decl{,0}): More new nonterminals.
10279         ({after_,no}type_declarator): Fold in START_DECLARATOR token.
10280         Eliminates four reduce/reduce conflicts.
10281
10282         (expr): Depend on nontrivial_exprlist instead of nonnull_exprlist.
10283         (nontrivial_exprlist): New nonterminal: A list of at least two
10284         expr_no_commas's.
10285         (nonnull_exprlist): Depend on nontrival_exprlist.
10286         Eliminates four reduce/reduce conflicts.
10287
10288         (named_class_head): Move intermediate code block into separate
10289         nonterminal so that we can stick %prec EMPTY on it.
10290
10291         Add more %prec EMPTY's to eliminate remaining shift/reduce
10292         conflicts.
10293
10294         (after_type_declarator): Add maybe_raises to fndecl rules.
10295         (after_type_declarator_no_typename): Remove.
10296         For correctness.
10297
10298         Document remaining reduce/reduce conflicts.
10299
10300 Tue Feb 22 12:10:32 1994  Jason Merrill  (jason@deneb.cygnus.com)
10301
10302         * search.c (get_base_distance): Only bash BINFO_INHERITANCE_CHAIN
10303         (TYPE_BINFO (type)) if we care about the path.
10304
10305         * tree.c (lvalue_p): A COND_EXPR is an lvalue if both of the
10306         options are.
10307
10308 Mon Feb 21 19:59:40 1994  Mike Stump  <mrs@cygnus.com>
10309
10310         * Makefile.in (mostlyclean): lex.c is a source file, don't
10311         remove.
10312
10313 Sat Feb 19 01:27:14 1994  Jason Merrill  (jason@deneb.cygnus.com)
10314
10315         * parse.y: Eliminate 20 shift/reduce conflicts.
10316
10317 Fri Feb 18 11:49:42 1994  Jason Merrill  (jason@deneb.cygnus.com)
10318
10319         * pt.c (type_unification): Add subr argument; if set, it means
10320         that we are calling ourselves recursively, so a partial match is OK.
10321         (unify): Support pointers to methods and functions.
10322         (tsubst): Support method pointers.
10323         * decl.c (build_ptrmemfunc_type): No longer static, so that
10324         tsubst can get at it.
10325
10326         * init.c (is_aggr_typedef): Pretend template type parms are
10327         aggregates.
10328         * decl2.c (build_push_scope): If cname refers to a template type
10329         parm, just grin and nod.        
10330
10331         * call.c (build_overload_call_real): Pass subr argument to
10332         type_unification.
10333         * pt.c (do_function_instantiation): Ditto.
10334         * class.c (instantiate_type): Ditto.
10335
10336         * search.c (get_base_distance): If BINFO is a binfo, use it and
10337         don't mess with its BINFO_INHERITANCE_CHAIN.
10338
10339         * cvt.c (convert_to_reference): Fix temporary generation.
10340         If ambiguous, return error_mark_node.
10341
10342         * init.c (build_new): Put back some necessary code.
10343
10344 Thu Feb 17 15:39:47 1994  Jason Merrill  (jason@deneb.cygnus.com)
10345
10346         * init.c (build_new): Deal with array types properly.
10347
10348         * search.c (get_binfo): Become a shell for get_base_distance.
10349         (get_binfo_recursive): Lose.
10350         (get_base_distance_recursive): Find the path to the via_virtual base
10351         that provides the most access.
10352         (get_base_distance): Ditto.
10353
10354         * parse.y (explicit_instantiation): Syntax is 'template class
10355         A<int>', not 'template A<int>'.
10356
10357         * typeck.c (convert_for_initialization): Remove bogus warning.
10358
10359         * parse.y (datadef): Revert patch of Oct 27.
10360
10361 Thu Feb 17 15:12:29 1994  Per Bothner  (bothner@kalessin.cygnus.com)
10362
10363         * class.c (build_vfn_ref):  Cast delta field to ptrdiff_type_node,
10364         rather than integer_type_node.  Does wonders for the Alpha.
10365
10366 Thu Feb 17 13:36:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
10367
10368         * decl.c (build_ptrmemfunc_type): Make sure that the pmf type
10369         goes onto the same obstack as its target type.
10370
10371 Wed Feb 16 00:34:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
10372
10373         * cvt.c (convert_to_reference): If converting via constructor
10374         on local level, go back to build_cplus_new approach.
10375
10376         * tree.c (build_cplus_new): If with_cleanup_p, set cleanup slot
10377         to error_mark_node to prevent expand_expr from building a cleanup
10378         for this variable.
10379
10380         * lex.c (default_assign_ref_body): Return *this from the memcpy
10381         version, too.
10382
10383         * decl.c (grok_reference_init): Just return if called with
10384         error_mark_node, don't worry about initializing non-const reference
10385         with temporary.
10386
10387         * cvt.c (convert_to_reference): Do the right thing for
10388         non-aggregate reference conversions, pedwarn when generating a
10389         non-const reference to a temporary.
10390
10391         * class.c (finish_struct): TYPE_HAS_COMPLEX_{INIT,ASSIGN}_REF and
10392         TYPE_NEEDS_CONSTRUCTING all depend on TYPE_USES_VIRTUAL_BASECLASSES
10393         again.
10394
10395 Tue Feb 15 19:47:19 1994  Jason Merrill  (jason@deneb.cygnus.com)
10396
10397         * decl.c (grok_reference_init): Pawn off a lot of the work on
10398         convert_to_reference.  Generally do the right thing.
10399
10400         * cvt.c (convert_to_reference): Conform to the initial comment;
10401         i.e. don't create temps if decl != error_mark_node.  Handle
10402         cleanups better for temps that do get created.  Don't pretend
10403         that we can use an 'A' to initialize a 'const double &' just by
10404         tacking on a NOP_EXPR.  Support LOOKUP_SPECULATIVELY.
10405
10406         * call.c (build_method_call): Set TREE_HAS_CONSTRUCTOR on
10407         constructor calls.      
10408
10409 Mon Feb 14 14:50:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
10410
10411         * decl.c (grok_reference_init): Make a temporary for initializing
10412         const reference from constant expression.
10413
10414 Mon Feb 14 11:31:31 1994  Per Bothner  (bothner@kalessin.cygnus.com)
10415
10416         * cp-tree.h, decl.c (set_identifier_local_value):  Deleted function.
10417         * decl.c (pushdecl):  Define decl in correct binding_level
10418         (which isn't always the inner_binding_level).
10419
10420         * cvt.c (build_up_reference):  Don't ever call expand_aggr_init.
10421         It's ugly, and I don't think it's the right thing to do.
10422
10423         * cp-tree.h, class.c, decl.c, decl2.c, sp/search.c: 
10424         Remove NEW_CLASS_SCOPING, assuming it is always 1.
10425         * decl.c (pop_decl_level):  Removed; manually inlined.
10426
10427 Sun Feb 13 19:04:56 1994  Jason Merrill  (jason@deneb.cygnus.com)
10428
10429         * class.h (candidate): Add basetypes field.
10430
10431         * call.c (build_method_call): Do access checking after choosing a
10432         function, not before.
10433
10434         * Makefile.in (cvt.o, call.o, method.o): Depend on class.h.
10435         (mostlyclean): Remove ../cc1plus.
10436
10437 Fri Feb 11 11:52:26 1994  Jason Merrill  (jason@deneb.cygnus.com)
10438
10439         * class.c (finish_struct): Don't allow adjusting access to a field
10440         of a base class if a local field has the same name.
10441
10442         * error.c (dump_type_prefix): Output basetype for METHOD_TYPEs.
10443
10444 hu Jan 13 17:55:51 EST 1994 Gnanasekaran Swaminathan (gs4t@virginia.edu)
10445
10446             * cp-tree.h (DESTRUCTOR_NAME_P): do not confuse AUTO_TEMP names
10447             with destructor names when either NO_DOLLAR_IN_LABEL or
10448             NO_DOT_IN_LABEL are not defined.
10449
10450             Now `template <class T, T f(T&), const T*> class A {...}' works.
10451
10452             * pt.c (grok_template_type): substitute template parm types
10453             with actual types in complex type as well.
10454             (coerce_template_parms): update the grok_template_type ()
10455             function call.
10456
10457         * pt.c (tsubst): Traverse method list using DECL_CHAIN.
10458
10459         * decl.c (grok_op_properties): Allow operator++/-- to have
10460         default arguments.
10461
10462         * typeck2.c (store_init_value): Don't abort when called to
10463         initialize a type that needs constructing with a CONSTRUCTOR.
10464
10465         * init.c (expand_aggr_init_1, CONSTRUCTOR case): If
10466         store_init_value fails, build and expand an INIT_EXPR.  If
10467         store_init_value succeeds, call expand_decl_init.
10468
10469 Fri Feb 11 02:49:23 1994  Mike Stump  <mrs@cygnus.com>
10470
10471         * class.c (build_vbase_path): Use complete_type_p instead of
10472         resolves_to_fixed_type_p to determine if the virtual bases are in
10473         their right place for the type of expr.  Cures problem of thinking a
10474         virtual base class is one place, when it is in fact someplace else.
10475
10476 Fri Feb 11 00:26:46 1994  Mike Stump  <mrs@cygnus.com>
10477
10478         * init.c (resolve_offset_ref): Make sure we first convert to
10479         intermediate type, if given, when dealing with members off `this'.
10480         Solves an incorrrect `type `foo' is not a base type for type
10481         `multiple'' when it is infact, a base type.
10482
10483 Thu Feb 10 21:49:35 1994  Mike Stump  <mrs@cygnus.com>
10484
10485         * class.c (modify_other_vtable_entries): Use get_binfo, instead
10486         of binfo_value.  Solves problem with compiler giving a `base class
10487         `B' ambiguous in binfo_value (compiler error)' on complex MI
10488         herarchies, when a virtual function is first defied in a virtual
10489         base class.
10490
10491 Thu Feb 10 17:19:32 1994  Mike Stump  <mrs@cygnus.com>
10492
10493         * class.c (build_vbase_path): Don't complain about ambiguous
10494         intermediate conversion when converting down to a virtual base
10495         class, even if they might seem to be ambiguous.
10496
10497 Thu Feb 10 12:18:26 1994  Jason Merrill  (jason@deneb.cygnus.com)
10498
10499         * typeck2.c (build_functional_cast): #if 0 out constructor
10500         inheritance code, improve error messages.
10501
10502         * class.c (finish_base_struct): Complain about base with only
10503         non-default constructors in derived class with no constructors.
10504
10505         * decl.c (grokdeclarator): Fix detection of virtual new/delete.
10506
10507 Wed Feb  9 22:02:32 1994  Mike Stump  <mrs@cygnus.com>
10508
10509         * search.c (build_mi_virtuals, add_mi_virtuals,
10510         report_ambiguous_mi_virtuals): Removed unneeded code.
10511         * class.c (finish_struct_bits): Ditto.
10512
10513 Wed Feb  9 11:27:17 1994  Jason Merrill  (jason@deneb.cygnus.com)
10514
10515         * pt.c (end_template_instantiation): Push decl before
10516         pop_from_top_level.
10517
10518         * typeck2.c (build_m_component_ref): Make sure datum is of
10519         aggregate type.
10520
10521         * init.c (get_type_value): New function, returns
10522         IDENTIFIER_TYPE_VALUE or IDENTIFIER_CLASS_TYPE_VALUE or NULL_TREE.
10523
10524         * call.c (build_method_call): Don't die on call to destructor for
10525         non-type.
10526
10527         * decl.c (grokdeclarator): Complain about virtual op new and op
10528         delete, make static virtuals unvirtual instead of unstatic.
10529
10530         * typeck.c (build_c_cast): Also call default_conversion on
10531         methods.
10532
10533         * decl.c (grokdeclarator): Don't complain about anonymous
10534         bitfields.
10535
10536         * parse.y (simple_stmt, for loops): Move the continue point after
10537         the cleanups.
10538
10539         * class.c (finish_struct): Fix setting of
10540         TYPE_HAS_COMPLEX_INIT_REF.
10541
10542 Tue Feb  8 13:21:40 1994  Jason Merrill  (jason@deneb.cygnus.com)
10543
10544         * init.c (build_new): Deal with `new double (1)'.
10545
10546         * class.c (finish_struct): TYPE_HAS_COMPLEX_*_REF are supersets of
10547         TYPE_HAS_REAL_*_REF, but TYPE_HAS_COMPLEX_INIT_REF is independent of
10548         TYPE_NEEDS_CONSTRUCTING.
10549
10550         * decl.c (duplicate_decls): Propagate access decls.
10551
10552         * typeck2.c (process_init_constructor): Accept empty_init_node
10553         for initializing unions.
10554
10555         * class.c, lex.c, cp-tree.h: Use
10556         TYPE_HAS_COMPLEX_ASSIGN_REF where TYPE_HAS_REAL_ASSIGN_REF was used
10557         before, use TYPE_HAS_COMPLEX_INIT_REF for TYPE_NEEDS_CONSTRUCTING in
10558         some places.
10559
10560         * decl.c (finish_decl): Don't complain about uninitialized const
10561         if it was initialized before.
10562
10563 Mon Feb  7 18:12:34 1994  Jason Merrill  (jason@deneb.cygnus.com)
10564
10565         * lex.c (default_assign_ref_body): Don't deal with vbases for
10566         now.
10567
10568         * decl.c (finish_decl): Fix reversed logic for objects and other
10569         things that need to be constructed but have no initializer.
10570
10571         * class.c (finish_struct): Don't set TYPE_HAS_* flags that are
10572         set by grok_op_properties or finish_decl.
10573
10574         * decl.c: Don't warn about extern redeclared inline unless
10575         -Wextern-inline is given.
10576         * decl2.c (lang_decode_option): Ditto.
10577         * cp-tree.h: Ditto.
10578
10579 Mon Feb  7 17:29:24 1994  Per Bothner  (bothner@kalessin.cygnus.com)
10580
10581         * decl.c (pushdecl_with_scope): Fix thinko.  Add forward
10582         declaration.
10583
10584         * decl.c (pushdecl_with_scope):  New function.
10585         * decl.c (pushdecl_top_level):  Use new function.
10586         * decl.c (pushtag):  Initialize newdecl.
10587         * decl.c (pushtag):  Push new type decl into correct scope.
10588
10589 Mon Feb  7 14:42:03 1994  Jason Merrill  (jason@deneb.cygnus.com)
10590
10591         * call.c, cvt.c, init.c, search.c, cp-tree.h:
10592         Eradicate LOOKUP_PROTECTED_OK.
10593
10594 Mon Feb  7 13:57:19 1994  Per Bothner  (bothner@kalessin.cygnus.com)
10595
10596         * decl.c (pushtag, xref_tag), cp-tree.h:  Add extra parameter
10597          'globalize' to signify implicit declarations.
10598         * decl.c (globalize_nested_type, maybe_globalize_type):  Removed.
10599         * decl.c (set_identifier_type_value_with_scope):  New function.
10600         * decl.c (set_identifier_local_value):  Simplify.
10601         * spew.c (yylex, do_addr):  Modify to return a _DEFN if a
10602         forward declaration (followed by ';' and not preceded by 'friend').
10603         * class.c, decl.c, except.c, init.c, parse.y,
10604         pt.c, search.c: Add new argument to calls to xref_tag and
10605         pushtag.
10606
10607 Mon Feb  7 00:22:59 1994  Jason Merrill  (jason@deneb.cygnus.com)
10608
10609         * cp-tree.h (ACCESSIBLY_UNIQUELY_DERIVED_P): New macro, means what
10610         ACCESSIBLY_DERIVED_FROM_P meant before.
10611         (ACCESSIBLY_DERIVED_FROM_P): Now disregards ambiguity.
10612
10613         * cvt.c (build_up_reference): Call get_binfo with PROTECT == 1.
10614
10615         * search.c (get_base_distance_recursive): Members and friends of
10616         a class X can implicitly convert an X* to a pointer to a private or
10617         protected immediate base class of X.
10618         (get_binfo_recursive): Ditto.
10619         (get_base_distance): Ignore ambiguity if PROTECT < 0.
10620         (get_binfo): Lose multiple values of PROTECT.
10621         (compute_access): Protected is OK if the start of the
10622         search is an accessible base class of current_class_type.
10623
10624         * method.c (build_opfncall): Do check access on operator new here.
10625
10626         * decl.c (finish_function): Don't check access on operator new
10627         here.
10628
10629 Sun Feb  6 14:06:58 1994  Jason Merrill  (jason@deneb.cygnus.com)
10630
10631         * decl.c (xref_tag): The base of a derived struct is NOT always
10632         public.  Duh.
10633
10634         * pt.c (do_explicit_instantiation): New function, called from
10635         parser to do explicit function instantiation.
10636         (type_unification): Allow the args list to be terminated with
10637         void_list_node.
10638         (do_pending_expansions): Look at i->interface for non-member
10639         templates.
10640
10641         * parse.y (datadef): Move explicit_instantiation here.
10642         (structsp): From here.
10643         (datadef): Complain about `int;'.
10644
10645 Sun Feb  6 12:33:18 1994  Per Bothner  (bothner@kalessin.cygnus.com)
10646
10647         * pt.c (end_template_instantiation), cp-tree.h:  Remove unused
10648         second parameter, and simplify first from a TREE_LIST where
10649         we only care about its TREE_VALUE to just the value (an IDENTIFIER).
10650         * pt.c (instantiate_member_templates):  Simplify argument list
10651         from a TREE_LIST to just an IDENTIFIER.
10652         * lex.c (yyprint):  PRE_PARSED_CLASS_DECL is now just an IDENTIFIER.
10653         * parse.y (template_instantiate_once):  Simplify accordingly.
10654         * decl.c (inner_binding_level): New.  Use various places to
10655         simplify.
10656
10657 Sun Feb  6 02:49:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
10658
10659         * typeck2.c (build_functional_cast): int() -> int(0).
10660
10661 Sat Feb  5 00:53:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
10662
10663         * class.c (finish_struct): Don't do a bitwise copy for op= if the
10664         class has a virtual function table.
10665
10666         * typeck.c (convert_for_initialization): Restore warnings about
10667         not using defined op=.  Should really be my_friendly_aborts, I
10668         s'pose.
10669
10670 Fri Feb  4 14:21:00 1994  Jason Merrill  (jason@deneb.cygnus.com)
10671
10672         * class.c (finish_struct): Tidy up conditions for doing bitwise
10673         copies of objects.
10674
10675         * decl.c (build_default_constructor): #if 0 out.
10676
10677         * *: Eradicate TYPE_GETS_{ASSIGNMENT,ASSIGN_REF,CONST_ASSIGN_REF,
10678         CONST_INIT_REF}, TYPE_HAS_REAL_CONSTRUCTOR.
10679
10680         * decl.c (grokdeclarator): Don't return void_type_node for
10681         friends being defined here.
10682
10683         * init.c (perform_member_init): Only do the init if it's useful.
10684
10685         * lex.c (default_copy_constructor_body): If we don't need to do
10686         memberwise init, just call __builtin_memcpy.
10687         (default_assign_ref_body): Ditto.
10688
10689         * decl.c (grokdeclarator): If friendp && virtualp, friendp = 0.
10690
10691 Fri Feb  4 13:02:56 1994  Mike Stump  <mrs@cygnus.com>
10692
10693         * lex.c (reinit_parse_for_method, cons_up_default_function):
10694         Don't give warn_if_unknown_interface warning when it came from a
10695         system header file.
10696         * pt.c (end_template_decl, instantiate_template): Ditto.
10697         * decl.c (start_decl): Ditto.
10698
10699 Fri Feb  4 00:41:21 1994  Jason Merrill  (jason@deneb.cygnus.com)
10700
10701         * decl.c (grokdeclarator): Don't try to set TYPE_WAS_ANONYMOUS on
10702         enums.
10703
10704         * decl2.c (constructor_name_full): Use IS_AGGR_TYPE_CODE instead of
10705         IS_AGGR_TYPE, since we don't know it's a type.
10706
10707 Thu Feb  3 11:36:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
10708
10709         * decl.c (grokdeclarator): Don't complain about anonymous unions.
10710
10711         * cp-tree.h (TYPE_WAS_ANONYMOUS): This struct was originally
10712         anonymous, but had a name given to it by a typedef.
10713
10714         * decl.c (grokdeclarator): When renaming an anonymous struct, set
10715         TYPE_WAS_ANONYMOUS.
10716
10717         * decl2.c (constructor_name_full): Use TYPE_WAS_ANONYMOUS.
10718
10719         * cp-tree.h (DECL_UNDEFINED_FRIENDS): #if 0 out.
10720
10721         * init.c (xref_friend): Don't set up DECL_UNDEFINED_FRIENDS.
10722         (embrace_waiting_friends): Don't use DECL_UNDEFINED_FRIENDS.
10723         
10724         * decl.c (grokdeclarator): Set TYPE_NESTED_NAME properly on nested
10725         anonymous structs that get typedef'd.
10726
10727         * decl.c (grokdeclarator): Always return void_type_node for
10728         friends.
10729
10730         * error.c (dump_function_decl): Don't use DECL_CLASS_CONTEXT for
10731         friends.
10732         (dump_function_decl): Don't print out default args for
10733         a function used in an expression.
10734
10735         * decl.c (grokdeclarator): Give error on abstract declarator used
10736         in an invalid context (i.e. `void (*)();').
10737
10738         * error.c (cp_line_of): Support _TYPE nodes.
10739         (cp_file_of): Ditto.
10740
10741         * cvt.c (build_up_reference): Don't abort if passed a SAVE_EXPR;
10742         it can happen for the RHS of an assignment stmt where the LHS is
10743         a COND_EXPR.
10744
10745         * init.c (expand_aggr_init_1): Deal with bracketed initializer
10746         lists properly.
10747
10748         * class.c (finish_struct): Deal with enumerators and typedefs
10749         again.
10750
10751 Wed Feb  2 11:30:22 1994  Jason Merrill  (jason@deneb.cygnus.com)
10752
10753         * class.c (finish_struct): Tidy up loop over fields.
10754
10755         * errfn.c (cp_thing): Don't advance twice after a format.
10756
10757         * class.c (finish_struct): Complain about needing a constructor
10758         if a member has only non-default constructors, and don't try to
10759         generate a default constructor.
10760
10761         * decl.c (finish_decl): Also do the constructor thing if
10762         TYPE_NEEDS_CONSTRUCTING is set (for arrays).
10763
10764         * search.c (unuse_fields): New function: mark all fields in this
10765         type unused.
10766         (dfs_unuse_fields): Helper function.
10767
10768         * class.c (pushclass): If the new class is the same as the old
10769         class, still unuse the fields.
10770         (unuse_fields): Move to search.c.
10771
10772         * decl.c (grok_op_properties): Add friendp argument.
10773         (grokfndecl): Pass it.
10774         (start_method): Ditto.
10775
10776         * decl2.c (delete_sanity): Add use_global_delete parameter to catch
10777         ::delete calls.
10778
10779         * parse.y (unary_expr): Pass new parameter to delete_sanity.
10780
10781         * lex.c (default_copy_constructor_body): Don't choke if the union
10782         has no fields.
10783         (default_assign_ref_body): Ditto.
10784
10785         * call.c (compute_conversion_costs_ansi): Do the right thing for
10786         ellipsis matches.
10787
10788         * decl.c (push_to_top_level): Optimize.
10789
10790         * decl.c (start_function): Look for the lexical scope of a friend
10791         in DECL_CLASS_CONTEXT.
10792
10793         * init.c (do_friend): Set DECL_CLASS_CONTEXT on global friends.
10794
10795 Tue Feb  1 15:59:24 1994  Jason Merrill  (jason@deneb.cygnus.com)
10796
10797         * cp-tree.h (TREE_GETS_PLACED_NEW): New macro.
10798
10799         * init.c (init_init_processing): Don't assign BIN/BID to the
10800         IDENTIFIER_GLOBAL_VALUEs of their respective operators.
10801         (build_new): Check TREE_GETS_PLACED_NEW.
10802
10803         * decl.c (grok_op_properties): Don't set TREE_GETS_NEW for a decl of
10804         op new with placement, set TREE_GETS_PLACED_NEW.
10805
10806         * cp-tree.h (ANON_UNION_P): New macro.  Applies to decls.
10807
10808         * class.c (finish_struct): Don't treat anonymous unions like
10809         other aggregate members.  Do synthesize methods for unions without
10810         a name, since they may or may not be "anonymous unions".
10811
10812         * decl2.c (grok_x_components): Wipe out memory of synthesized methods
10813         in anonymous unions.
10814
10815         * lex.c (default_copy_constructor_body): Support unions.
10816         (default_assign_ref_body): Ditto.
10817
10818 Mon Jan 31 12:07:30 1994  Jason Merrill  (jason@deneb.cygnus.com)
10819
10820         * cp-tree.h: Fix documentation of LOOKUP_GLOBAL, add prototypes.
10821
10822         * error.c (args_as_string): New function (%A), like type_as_string
10823         except NULL_TREE -> "..."
10824
10825         * call.c (build_overload_call_real): Fix for new overloading.
10826
10827         * decl.c (grok_op_properties): Set all of the TYPE_OVERLOADS_* flags
10828         here.
10829
10830         * parse.y (operator_name): Instead of here.
10831
10832         * typeck2.c (build_functional_cast): Treat a TREE_LIST as a list
10833         of functions.
10834
10835         * call.c (build_overload_call_real): Support LOOKUP_SPECULATIVELY.
10836
10837         * method.c (build_opfncall): Don't need to massage return value
10838         any more, call build_overload_call with all flags.
10839
10840         * typeck.c (build_x_binary_op): Put back speculative call to
10841         build_opfncall.
10842         (build_x_unary_op): Ditto.
10843         (build_x_conditional_expr): Ditto.
10844
10845 Mon Jan 31 10:00:30 1994  Mike Stump  <mrs@cygnus.com>
10846
10847         * cvt.c (build_type_conversion_1): Change call to pedwarn into
10848         warning, and conditionalize upon warn_cast_qual.
10849
10850 Fri Jan 28 11:48:15 1994  Jason Merrill  (jason@deneb.cygnus.com)
10851
10852         * search.c (lookup_field): If xbasetype is a binfo, copy it to
10853         avoid clobbering its inheritance info.
10854
10855         * call.c (build_method_call): Don't overwrite basetype_path with
10856         TYPE_BINFO (inst_ptr_basetype) if they have the same type.
10857
10858         * search.c (compute_access): Fix handling of protected inheritance
10859         and friendship with the enclosing class.
10860
10861         * typeck2.c (store_init_value): Allow passing of TREE_CHAIN for
10862         initialization of arbitrary variable.
10863
10864         * typeck2.c (build_functional_cast): Only try calling a method if
10865         one exists.
10866
10867         * decl.c (grokdeclarator): Move handling of constructor syntax
10868         initialization into first loop for generality.
10869         (parmlist_is_random): Lose.
10870
10871         * lex.c (cons_up_default_function): Set TREE_PARMLIST on arguments
10872         to default function.
10873
10874 Thu Jan 27 19:26:51 1994  Jason Merrill  (jason@deneb.cygnus.com)
10875
10876         * decl.c (grokparms): Abort if we get called with something we don't
10877         expect.
10878
10879 Thu Jan 27 17:37:25 1994  Mike Stump  <mrs@cygnus.com>
10880
10881         * call.c (build_overload_call_real): Change argument complain to
10882         flags to match style of rest of code.  Pass it down to
10883         build_function_call_real as necessary.
10884         * call.c (build_overload_call, build_overload_call_maybe): Change
10885         argument complain to flags to match style of rest of code.
10886         * cp-tree.h (build_function_call_real): Added fourth flags
10887         argument.
10888         * cvt.c (convert_to_reference): Only give warning messages, if
10889         LOOKUP_COMPLAIN is set.
10890         * typeck.c (build_x_function_call): Change simple complain
10891         argument to build_overload_call_maybe and build_overload_call, to
10892         LOOKUP_COMPLAIN to match style of rest of code.
10893         * typeck2.c (build_functional_cast): Ditto.
10894         * typeck.c (build_function_call_real): Add flags, so that we can
10895         not complain, if we don't want to complain.  Complain about
10896         arguments, if we are complaining, otherwise don't.
10897         * typeck.c (build_function_call, build_function_call_maybe):
10898         Stick in flags argument.
10899         * typeck.c (build_x_binary_op, build_x_unary_op,
10900         build_x_conditional_expr, build_x_compound_expr): Follow style of
10901         build_x_indirect_ref, as it is more correct and more common.
10902
10903 Thu Jan 27 14:36:20 1994  Jason Merrill  (jason@deneb.cygnus.com)
10904
10905         * call.c (build_method_call): Don't check for being called with
10906         a pointer.
10907
10908         * decl2.c (finish_file): Don't play with DECL_CLASS_CONTEXT for the
10909         static initializer function.
10910
10911         * init.c (build_member_call): Use convert_force here, too.
10912
10913         * search.c (compute_access): Only treat static members specially
10914         if they are referenced directly.
10915
10916 Wed Jan 26 18:28:14 1994  Jason Merrill  (jason@deneb.cygnus.com)
10917
10918         * gxxint.texi (Access Control): New node.
10919
10920         * search.c (current_scope): New function; returns whichever of
10921         current_class_type and current_function_decl is the most nested.
10922         (compute_access): Total overhaul to make it clearer and more
10923         correct.  Don't use the cache for now; in the only situation where
10924         it was used before, it gained nothing.  This frees up three of the
10925         DECL_LANG_FLAGs for possible other use!
10926
10927         * cp-tree.h: #if 0 out DECL_PUBLIC & friends.
10928
10929         * typeck.c (build_component_ref_1): Don't check DECL_PUBLIC.
10930
10931         * call.c (build_method_call): Use convert_force to cast `this' --
10932         rely on the access checking for the method itself.
10933
10934         * init.c (is_friend): Do the nesting thing, handle types.  I am
10935         my own friend.
10936         (is_friend_type): Become a shell for is_friend.
10937         (add_friend): Never stick in ctype.
10938         Why are the friendship functions in init.c, anyway?
10939
10940 Wed Jan 26 17:50:00 1994  Mike Stump  <mrs@cygnus.com>
10941
10942         * cvt.c (build_type_conversion_1): Don't conditionalize call to
10943         pedwarn upon pedantic.
10944
10945 Wed Jan 26 17:20:46 1994  Mike Stump  <mrs@cygnus.com>
10946
10947         * cvt.c (convert_to_reference): Add 8.4.3 checking so that one
10948         gets a warning if one tries to initialize a non-const & from a
10949         non-lvalue.
10950         * cvt.c (convert_to_reference): Use %P format for argument
10951         numbers in warnings.
10952
10953 Wed Jan 26 14:35:06 1994  Mike Stump  <mrs@cygnus.com>
10954
10955         * init.c (build_delete): Follow style in call.c to construct the
10956         virtual call to the desctructor, as that code is right.  Fixes a
10957         problem of the compiler saying a pointer conversion is ambiguous.
10958
10959 Wed Jan 26 11:28:14 1994  Jason Merrill  (jason@deneb.cygnus.com)
10960
10961         * cp-tree.h (VTABLE_NAME_P): Change other occurrence of
10962         VTABLE_NAME_FORMAT to VTABLE_NAME.
10963
10964         * *: s/visibility/access/g
10965
10966 Tue Jan 25 18:39:12 1994  Jason Merrill  (jason@deneb.cygnus.com)
10967
10968         * typeck.c (build_modify_expr): Don't smash references if INIT_EXPR.
10969
10970 Tue Jan 25 13:54:29 1994  Mike Stump  <mrs@cygnus.com>
10971
10972         * init.c (build_delete): Back out Jan 17th & 18th pacthes, as
10973         they break libg++.
10974
10975 Tue Jan 25 13:11:45 1994  Jason Merrill  (jason@deneb.cygnus.com)
10976
10977         * decl.c (duplicate_decls): Fix pointer arithmetic.
10978
10979 Mon Jan 24 15:50:06 1994  Chip Salzenberg  (chip@fin.uucp)
10980
10981             [ cp-* changes propagated from c-* changes in 940114 snapshot ]
10982             * cp-parse.y (maybe_attribute): Allow multiple __attribute__
10983             clauses on a declaration.
10984
10985 Mon Jan 24 17:06:23 1994  Jason Merrill  (jason@deneb.cygnus.com)
10986
10987         * class.c (finish_struct): Do synthesize methods for anon
10988         structs, just not unions.
10989
10990 Mon Jan 24 13:50:13 1994  Kung Hsu  (kung@mexican.cygnus.com)
10991
10992         * decl.c (xref_tag): handle anonymous nested type.
10993         * decl.c (globalize_nested_type): add no globalize bit check.
10994         * spew.c (hack_more_ids) : templated nested decl not push top
10995         level.
10996
10997         * parse.y : get rid of 'goto do_components'. It is much better
10998         for debugging.
10999
11000         * decl.c (is_anon_name): get rid of the function and use the
11001         macro ANON_AGGRNAME_P.
11002         * pt.c : ditto.
11003
11004 Fri Jan 21 14:06:02 1994  Jason Merrill  (jason@deneb.cygnus.com)
11005
11006         * class.c (finish_struct): Don't synthesize any methods for
11007         anonymous structs/unions.
11008
11009         * typeck.c (build_modify_expr): Don't treat pmf's as class objects.
11010
11011 Thu Jan 20 18:56:46 1994  Jason Merrill  (jason@deneb.cygnus.com)
11012
11013         * method.c (build_opfncall): Call build_indirect_ref on
11014         synthesized instance for operator delete.
11015
11016         * pt.c (type_unification): Don't abort if called with a list of
11017         types in ARGS.
11018
11019         * class.c (instantiate_type): Deal with function templates.
11020
11021 Thu Jan 20 16:55:35 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)
11022
11023         * Makefile.in (CC): Default to cc not gcc.
11024
11025 Thu Jan 20 13:47:54 1994  Jason Merrill  (jason@deneb.cygnus.com)
11026
11027         * typeck.c (build_modify_expr): Call constructor if appropriate.
11028
11029         * decl.c (push_to_top_level): Clear out class-level bindings cache.
11030
11031 Wed Jan 19 13:51:22 1994  Jason Merrill  (jason@deneb.cygnus.com)
11032
11033         * call.c (resolve_scope_to_name): Work recursively (previously only
11034         looked down one level).
11035
11036         * lex.c (do_pending_inlines): If we're still dealing with the last
11037         batch of inlines, don't start working on a new one.
11038
11039         * Makefile.in (stamp-parse): Update conflict count.
11040         (TAGS): Fix.
11041
11042         * parse.y (explicit_instantiation): New rule; implements
11043         'template A<int>' syntax (though not 'template foo(int)' yet).
11044         (structsp): Add explicit_instantiation.
11045
11046 Tue Jan 18 13:53:05 1994  Jason Merrill  (jason@deneb.cygnus.com)
11047
11048         * class.c (finish_struct, etc.): Simplify decision to synthesize
11049         a destructor.
11050
11051         * call.c, class.c, cp-tree.h, decl.c, init.c,
11052         ptree.c, search.c, typeck.c, typeck2.c: Nuke
11053         TYPE_NEEDS_CONSTRUCTOR (change all calls to TYPE_NEEDS_CONSTRUCTING).
11054         * init.c (expand_aggr_init_1): Don't try non-constructor methods
11055         of initializing objects.
11056         (build_new): Don't try other methods if the constructor lookup fails.
11057
11058         * class.c (finish_base_struct): Set cant_have_default_ctor and
11059         cant_synth_copy_ctor properly.
11060         (finish_struct): Ditto.
11061
11062 Mon Jan 17 13:58:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
11063
11064         * typeck.c (build_modify_expr_1): #if 0 out again.
11065         (build_modify_expr): #if 0 out memberwise init code again.
11066
11067         * lex.c (default_copy_constructor_body): Be const-correct.
11068         (default_assign_ref_body): Ditto.
11069
11070         * init.c (perform_member_init): Use TYPE_HAS_CONSTRUCTOR to decide
11071         whether or not to use it, rather than TYPE_NEEDS_CONSTRUCTING.
11072         (expand_aggr_init): Disable silent conversion from initializer list
11073         to list of args for a constructor.
11074
11075         * class.c (base_info): Lose needs_default_ctor.
11076         (finish_base_struct): Ditto.
11077         (finish_struct): Ditto.
11078
11079         * decl.c (init_decl_processing): Don't turn off flag_default_inline
11080         just because flag_no_inline is on.
11081         (finish_decl): Use TYPE_HAS_CONSTRUCTOR to decide to use
11082         constructor.
11083
11084         * class.c (finish_struct): Synthesize default ctor whenever
11085         allowed.
11086
11087         * Makefile.in (TAGS): Don't try to run etags on cp-parse.y.
11088
11089 Sat Jan 15 18:34:33 1994  Mike Stump  <mrs@cygnus.com>
11090
11091         * Makefile.in, configure: Handle the C++ front-end in a
11092         subdirectory.
11093         * cp-*: Move C++ front-end to cp/*.
11094
11095 Fri Jan 14 14:09:37 1994  Jason Merrill  (jason@deneb.cygnus.com)
11096
11097         * cp-typeck.c (build_function_call_real): Modify to match other
11098         instances of taking the address of the function.
11099
11100         * cp-class.c (finish_struct): Set TYPE_HAS_REAL_CONSTRUCTOR to 1 if
11101         there are non-synthesized constructors.
11102         Only set TYPE_NEEDS_CONSTRUCTOR if TYPE_HAS_REAL_CONSTRUCTOR.
11103         Always generate copy constructor if possible.
11104
11105         * cp-tree.h (lang_type): Add has_real_constructor bitfield.
11106         (TYPE_HAS_REAL_CONSTRUCTOR): Define.
11107
11108         * cp-lex.c (default_copy_constructor_body): Use init syntax
11109         for all bases.
11110
11111         * cp-type2.c (store_init_value): Only give error for initializer list
11112         if TYPE_HAS_REAL_CONSTRUCTOR.
11113
11114 Thu Jan 13 15:38:29 1994  Jason Merrill  (jason@deneb.cygnus.com)
11115
11116         * cp-tree.h (DECL_SYNTHESIZED): Add defn.
11117         (lang_decl): Add synthesized bitfield to decl_flags.
11118
11119         * cp-lex.c (cons_up_default_function): Use DECL_SYNTHESIZED to mark
11120         artificial methods, rather than a line # of 0.
11121
11122 Fri Jan 14 18:25:29 1994  Kung Hsu  (kung@mexican.cygnus.com)
11123
11124         * cp-decl (xref_tag): fix a bug in conflict type.
11125         * cp-parse.y : add SCOPED_NAME for uninstantiated template nested
11126         type reference.
11127         * cp-spew.c (yylex) : generated SCOPED_NAME token.
11128         * cp-lex.c (yyprint): handle SCOPED_NAME.
11129
11130 Fri Jan 14 17:00:29 1994  Mike Stump  <mrs@cygnus.com>
11131
11132         * cp-decl.c (pushdecl): Revert patch from Jan 11 19:33:03, as it is
11133         not right.
11134
11135 Thu Jan 13 14:00:35 1994  Kung Hsu  (kung@mexican.cygnus.com)
11136
11137         * cp-decl2.c (grok_x_components): fix a bug that enum type does not
11138         have type_flags.
11139
11140 Thu Jan 13 11:39:34 1994  Mike Stump  <mrs@cygnus.com>
11141
11142         Ensure that all vtable pointers are initialized with all the right
11143         values.
11144
11145         * cp-class.c (is_normal): Changed to reflect new meaning of
11146         CLASSTYPE_VFIELD_PARENT.
11147         * cp-class.c (maybe_fixup_vptrs): Use of
11148         CLASSTYPE_NEEDS_VIRTUAL_REINIT here is misguided.  Use
11149         BINFO_MODIFIED instead.
11150         * cp-class.c (finish_struct): Changed to reflect new meaning of
11151         CLASSTYPE_VFIELD_PARENT.
11152         * cp-decl.c (get_binfo_from_vfield): Removed, unneeded now.
11153         * cp-decl.c (finish_function): Use init_vtbl_ptrs, instead of open
11154         coding it here.
11155         * cp-init.c (init_vfields): Changed name to init_vtbl_ptrs, and
11156         re-implement.
11157         * cp-init.c (emit_base_init): Use new name init_vtbl_ptrs.
11158         * cp-tree.h (vfield_parent): Changed to integer.
11159         * cp-tree.h (CLASSTYPE_VFIELD_PARENT): Changed docs to reflect new
11160         meaning.
11161         * cp-tree.h (init_vtbl_ptrs): Added init_vtbl_ptrs.
11162
11163 Wed Jan 12 18:24:16 1994  Kung Hsu  (kung@mexican.cygnus.com)
11164
11165         * cp-decl.c (xref_tag): re-implement globalize nested type.
11166         * cp-decl2.c (grok_x_components): ditto.
11167         * cp-parse.y: ditto.
11168         * cp-tree.h (lang_type): add no_globalize bit in type_flags.
11169
11170 Wed Jan 12 14:08:09 1994  Jason Merrill  (jason@deneb.cygnus.com)
11171
11172         * cp-decl.c (grokdeclarator): Don't set TREE_PUBLIC on friend
11173         decls with a definition attached.
11174
11175         * cp-typeck.c (build_modify_expr): Undo previous change in the case
11176         of INIT_EXPRs.
11177
11178 Tue Jan 11 19:33:03 1994  Jason Merrill  (jason@deneb.cygnus.com)
11179
11180         * cp-typeck.c (build_modify_expr): Replace code for generating
11181         assignment semantics for classes with an error.
11182         (build_modify_expr_1): #if 0 out.
11183
11184         * cp-decl.c (pushdecl): Patch bogus design of pushdecl
11185         behavior for overloaded functions (it doesn't push anything).
11186
11187         * cp-class.c (finish_struct): When generating default op=,
11188         set TYPE_HAS_ASSIGNMENT.
11189
11190 Mon Jan 10 18:48:06 1994  Mike Stump  <mrs@cygnus.com>
11191
11192         * cp-cvt.c (convert): Make {double, clashing enum} -> enum
11193         invalid.
11194         * cp-typeck.c (convert_for_assignment): Simplify.
11195         * cp-decl2.c (warn_enum_clash): Removed.
11196         * invoke.texi (-Wenum-clash): Removed.
11197         * toplev.c (-Wenum-clash): Removed.
11198
11199 Mon Jan 10 17:48:37 1994  Kung Hsu  (kung@mexican.cygnus.com)
11200
11201         * cp-decl.c (finish_decl): fix incorrect popclass call.
11202
11203         * cp-decl.c (is_anon_name): new function, check whether the name
11204         is anonymous name generated by compiler.
11205         * cp-decl.c (grokdeclarator): allow nested SCOPE_REF
11206         * cp-spew.c (hack_more_ids): handle nested type in template.
11207         * cp-parse.y : handle nested type reference in uninstantiated
11208         template.
11209         * cp-call.c (build_method_call): handle uninstantiated template
11210         case.
11211         * cp-pt.c (search_nested_type_in_tmpl): new function, search nested 
11212         type in template.
11213         * cp-pt.c (lookup_nested_type_by_name): new function, lookup nested 
11214         type by name.
11215         * cp-pt.c (tsubst): handle nested type search by name.
11216
11217 Mon Jan 10 14:32:18 1994  Jason Merrill  (jason@deneb.cygnus.com)
11218
11219         * cp-init.c (build_member_call): Propagate qualifiers to new type.
11220
11221         * cp-call.c (build_method_call): Count functions the new way.
11222
11223 Fri Jan  7 19:03:26 1994  Jason Merrill  (jason@deneb.cygnus.com)
11224
11225         * cp-decl.c (pushtag): Set DECL_ASSEMBLER_NAME for nested classes,
11226         too.
11227
11228 Tue Jan  4 16:45:51 1994  Kung Hsu  (kung@cirdan.cygnus.com)
11229
11230         * cp-parse.y: change to handle whether to globalize nested class.
11231         * cp-decl.c(xref_tag, maybe_globalize_type): Ditto.
11232
11233 Mon Jan  3 22:22:32 1994  Gerald Baumgartner  (gb@cygnus.com)
11234
11235         * Makefile.in cp-call.c cp-class.c cp-cvt.c cp-decl.c cp-decl2.c
11236         cp-error.c cp-init.c cp-lex.c cp-lex.h cp-method.c cp-parse.y
11237         cp-spew.c cp-tree.c cp-tree.h cp-type2.c cp-typeck.c cp-xref.c
11238         gplus.gperf toplev.c: Incorporated C++ signature extension.
11239         * cp-sig.c: New file, contains most of signature processing.
11240         * cp-hash.h: Regenerated from gplus.gperf.
11241
11242         * gcc.1 g++.1: Added explanation for  the `-fhandle-signatures'
11243         and `-fno-handle-signatures' command line flags.
11244
11245         * gcc.texi: Changed the last-modification date.
11246         * invoke.texi: Added `-fhandle-signatures' in the list of
11247         C++ language options.  Added explanation for this option.
11248
11249 Tue Dec 28 21:10:03 1993  Mike Stump  <mrs@cygnus.com>
11250
11251         * cp-init.c (expand_vec_init): Remove comptypes test, as it is too
11252         harsh here.
11253
11254 Tue Dec 28 13:42:22 1993  Mike Stump  <mrs@cygnus.com>
11255
11256         * cp-pt.c (do_pending_expansions): Decide to expand a template
11257         member function, based upon it's class type, not the class type of
11258         the first place it was declared.
11259
11260 Tue Dec 28 05:42:31 1993  Mike Stump  <mrs@cygnus.com>
11261
11262         * cp-class.c (is_normal): New routine, use to determine when the
11263         given binfo is the normal one.  (The one that should have the simple
11264         vtable name.)
11265         * cp-class.c (modify_other_vtable_entries): Use DECL_ASSEMBLER_NAME
11266         to check if two fndecls are `the same'.  Sometimes this routine can
11267         modify the main vtable, and normal should be 1, in that case, so use
11268         is_normal() to determine if this is the main vtable for the class.
11269         Don't recurse down virtual bases, as they are shared, and we take
11270         care of them elsewhere.
11271         * cp-class.c (modify_vtable_entries): If we have already updated the
11272         vtable with the new virtual, don't do it again.
11273         * cp-class.c (finish_struct): Set CLASSTYPE_VFIELD_PARENT as
11274         appropriate.  Do virtual function overriding in virtual bases, after
11275         normal overriding, so that the base function list in DECL_VINDEX is
11276         not overridden, before we have a chance to run through the list.
11277         Use DECL_ASSEMBLER_NAME to check if two fndecls are `the same'.
11278         Make sure we pass the right address into modify_vtable_entries.
11279         * cp-tree.h (CLASSTYPE_VFIELD_PARENT): New field to indicate which
11280         binfo is the one that has the vtable that we based our vtable on.
11281
11282 Fri Dec 24 09:40:52 1993  Michael Tiemann  (tiemann@blues.cygnus.com)
11283
11284         * cp-typeck.c (c_expand_start_case): Use default_conversion to
11285         convert expression from reference type if necessary.
11286
11287 Wed Dec 22 17:58:43 1993  Jason Merrill  (jason@deneb.cygnus.com)
11288
11289         * cp-typeck.c (build_unary_op): Make sure that it's a TREE_LIST before
11290         trying to read its TREE_VALUE.
11291
11292         * cp-class.c (finish_struct_methods): Clear DECL_IN_AGGR_P here.
11293         (finish_struct): Instead of here.
11294
11295 Tue Dec 21 14:34:25 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11296
11297         * cp-tree.c (list_hash_lookup_or_cons): Make sure the type doesn't
11298         have TYPE_PTRMEMFUNC_P set before we try to build its
11299         CLASSTYPE_ID_AS_LIST.
11300         (get_decl_list): Likewise, when trying to read it.
11301
11302         * cp-tree.h (VTABLE_NAME): No def with NO_{DOLLAR,DOT} defined.
11303         (VTABLE_NAME_P): Use it instead of VTABLE_NAME_FORMAT.
11304
11305 Mon Dec 20 13:35:03 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11306
11307         * cp-typeck.c (rationalize_conditional_expr): New function.
11308         (unary_complex_lvalue): Use it.
11309         (build_modify_expr): Use it, since trying to do an ADDR_EXPR of it
11310         with build_unary_op won't cut it.  Don't wrap the COND_EXPR with a
11311         SAVE_EXPR either.
11312
11313         * cp-decl2.c (explicit_warn_return_type): Deleted variable.
11314         (lang_decode_option): Set warn_return_type, not explicit_*, for
11315         -Wreturn-type and -Wall.  This is what rest_of_compilation uses to
11316         decide if it should go into jump_optimize or not.
11317         * cp-tree.h (explicit_warn_return_type): Deleted.
11318         * cp-decl.c (grokdeclarator): Use warn_return_type, not explicit_*.
11319         (finish_function): Also complain about no return in a non-void fn if
11320         we're being pedantic (don't rely on use of -Wreturn-type).
11321
11322 Fri Dec 17 15:45:46 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11323
11324         * cp-decl.c (grokdeclarator): Forbid declaration of a function as
11325         static if it's being done inside another function.
11326
11327         * cp-search.c (compute_visibility): Check for friendship both ways.
11328
11329 Fri Dec 17 14:28:25 1993  Jason Merrill  (jason@deneb.cygnus.com)
11330
11331         * cp-cvt.c (build_default_binary_type_conversion): Make error
11332         messages more helpful.
11333
11334         * cp-error.c (op_as_string): New function, returns "operator =="
11335         given EQ_EXPR or suchlike.
11336
11337 Fri Dec 17 13:28:11 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11338
11339         * cp-call.c (print_n_candidates): New function.
11340         (build_overload_call_real): Use it when we complain about a call
11341         being ambiguous.
11342
11343 Fri Dec 17 12:41:17 1993  Jason Merrill  (jason@deneb.cygnus.com)
11344
11345         * cp-call.c (build_method_call): Fix checking for static call
11346         context.
11347
11348         * cp-method.c (build_opfncall): Call build_indirect_ref on argument
11349         to operator new.
11350
11351         * cp-init.c (build_new): Don't mess with rval when building
11352         indirect ref.
11353
11354 Thu Dec 16 16:48:05 1993  Kung Hsu  (kung@cirdan.cygnus.com)
11355
11356         * cp-lex.c (default_assign_ref_body): add check when TYPE_NESTED_
11357         NAME(type) may not be exist. It's not a problem for old compiler.
11358
11359 Thu Dec 16 14:46:06 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11360
11361         * cp-tree.h (CLASSTYPE_ALTERS_VISIBILITIES_P): Delete macro, it's
11362         never used for anything.
11363         (struct lang_type, member type_flags): Delete field
11364         `alters_visibility', and up `dummy' by 1.
11365         * cp-class.c (finish_base_struct): Delete code that copies the
11366         setting of CLASSTYPE_ALTERS_VISIBILITIES_P.
11367         (finish_struct): Delete code that sets it.
11368
11369 Thu Dec 16 14:44:39 1993  Jason Merrill  (jason@deneb.cygnus.com)
11370
11371         * cp-decl.c, cp-init.c, cp-typeck.c: Fix arguments to
11372         build_method_call that I messed up before.
11373
11374         * cp-search.c (get_base_distance): If protect > 1, allow immediate
11375         private base.
11376
11377         * cp-class.c (finish_base_struct): Set cant_synth_* correctly.
11378         (finish_struct): Ditto.  Well, nigh-correctly; it won't deal
11379         properly with the case where a class contains an object of an
11380         ambiguous base class which has a protected op=.  Should be fixed
11381         when the access control code gets overhauled.
11382         (finish_struct_methods): Set TYPE_HAS_NONPUBLIC_* correctly.
11383
11384 Thu Dec 16 12:17:06 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11385
11386         * cp-lex.c (real_yylex): Turn the code back on that deals with
11387         __FUNCTION__ and __PRETTY_FUNCTION__.  Don't use lookup_name, to
11388         avoid the ambiguity problems that led to it being turned off in the
11389         first place.
11390
11391         * cp-method.c (hack_identifier): Also check for a TYPE_PTRMEMFUNC_P
11392         to see if something is a method.
11393
11394 Wed Dec 15 18:35:58 1993  Mike Stump  <mrs@cygnus.com>
11395
11396         * cp-typeck.c (build_modify_expr): Avoid error messages on small
11397         enum bit fields.
11398         * cp-typeck.c (convert_for_assignment): Add missing argument to
11399         cp_warning and cp_pedwarn calls.
11400
11401 Wed Dec 15 18:25:32 1993  Jason Merrill  (jason@deneb.cygnus.com)
11402
11403         * cp-parse.y (member_init): ANSI C++ doesn't forbid old-style base
11404         initializers; it's just anachronistic.
11405
11406         * cp-decl.c (finish_decl): Don't require external-linkage arrays
11407         to have a complete type at declaration time when pedantic.
11408
11409 Tue Dec 14 11:37:23 1993  Jason Merrill  (jason@deneb.cygnus.com)
11410
11411         * cp-decl.c (pushdecl): Don't set DECL_CONTEXT if it's already set.
11412
11413         * cp-call.c (build_method_call): Don't dereference pointer given
11414         as instance.
11415
11416         * cp-decl.c (finish_function): Don't pass pointer to
11417         build_method_call.
11418         (finish_function): Ditto.
11419
11420         * cp-typeck.c (build_x_function_call): Ditto.
11421
11422         * cp-method.c (build_component_type_expr): Ditto.
11423
11424         * cp-init.c (build_member_call): Ditto.
11425         (build_new): Ditto.
11426
11427 Mon Dec 13 18:04:33 1993  Kung Hsu  (kung@cirdan.cygnus.com)
11428
11429         * cp-decl.c (xref_tag): fix regression created by changes made 
11430         in Dec. 7 1993.
11431         * cp-decl.c (xref_defn_tag): fix parallel nested class problem.
11432
11433 Fri Dec 10 12:40:25 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11434
11435         * cp-call.c (compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print
11436         out the final evaluation of the function, so we can see if ELLIPSIS,
11437         USER, and EVIL were set at the end.
11438
11439         * cp-call.c (convert_harshness_ansi): When the parm isn't an lvalue,
11440         only go for setting TRIVIAL_CODE if we are dealing with types that
11441         are compatible.
11442
11443 Thu Dec  9 18:27:22 1993  Mike Stump  <mrs@cygnus.com>
11444
11445         * cp-decl.c (flag_huge_objects): New flag to allow large objects.
11446         * toplev.c (lang_options): Ditto.
11447         * cp-decl2.c (flag_huge_objects, lang_f_options): Ditto.
11448         * cp-decl.c (delta_type_node): New type for delta entries.
11449         * cp-tree.h (delta_type_node): Ditto.
11450         * cp-decl.c (init_decl_processing): Setup delta_type_node.
11451         * cp-decl.c (init_decl_processing, build_ptrmemfunc_type): Use
11452         delta_type_node instead of short_integer_type_node. 
11453         * cp-class.c (build_vtable_entry): Ditto.
11454
11455 Thu Dec  9 16:19:05 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11456
11457         * cp-tree.h (OPERATOR_TYPENAME_P): Define outside of
11458         NO_{DOLLAR,DOT} macro checks, so it always gets defined.
11459         (VTABLE_NAME_P): Define for NO_DOT && NO_DOLLAR_IN_LABEL.
11460
11461 Wed Dec  8 17:38:06 1993  Mike Stump  <mrs@cygnus.com>
11462
11463         * cp-decl.c (finish_decl): Make sure things that can go into
11464         "common", do go into common, if -fcommon is given.
11465
11466 Wed Dec  8 13:01:54 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11467
11468         * cp-call.c (print_harshness) [DEBUG_MATCHING]: New function.
11469         (compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print out
11470         argument matching diagnostics to make instantly clear what the
11471         compiler is doing.
11472
11473         * cp-call.c (convert_harshness_ansi): If the parm isn't an lvalue,
11474         then check to see if the penalty was increased due to
11475         signed/unsigned mismatch, and use a TRIVIAL_CODE if it wasn't.
11476
11477 Tue Dec  7 18:29:14 1993  Kung Hsu  (kung@cirdan.cygnus.com)
11478
11479         * cp-decl.c (xref_tag, pushtag): Fix nested class search/resolution
11480         problem.
11481
11482 Tue Dec  7 16:09:34 1993  Jason Merrill  (jason@deneb.cygnus.com)
11483
11484         * cp-class.c (finish_struct): Before synthesizing methods, if no
11485         methods have yet been declared then set nonprivate_method.  Don't
11486         set non_private method after synthesizing a method.
11487
11488         * cp-lex.c (extract_interface_info): If flag_alt_external_templates
11489         is set, tie emitted code to the location of template instantiation,
11490         rather than definition.
11491
11492         * cp-tree.h: Declare flag_alt_external_templates.
11493
11494         * cp-decl2.c (lang_decode_option): Support -falt-external-templates.
11495
11496         * toplev.c (lang_options): Ditto.
11497
11498 Mon Oct  4 12:50:02 1993  Chip Salzenberg  (chip@fin.uucp)
11499
11500         [changes propagated from 930810 snapshot]
11501         * cp-decl.c (init_decl_processing): Make long long available for use
11502         as SIZE_TYPE and PTRDIFF_TYPE.
11503         (finish_decl): Allow file-scope static incomplete array.
11504         (grokdeclarator): Don't pass on const and volatile fron function
11505         value type to function type.
11506         Warn here for volatile fn returning non-void type.
11507         * cp-parse.y (attrib): Accept attributes `volatile' with alias
11508         `noreturn', and `const'.
11509         * cp-typeck.c (default_conversion): Don't lose const and volatile.
11510         (build_binary_op_nodefault): Generate pedantic warning for comparison
11511         of complete pointer type with incomplete pointer type.
11512         (build_c_cast): Be careful that null pointer constant be INTEGER_CST.
11513
11514 Tue Dec  7 10:46:48 1993  Jason Merrill  (jason@deneb.cygnus.com)
11515
11516         * cp-init.c (expand_vec_init): When creating a temporary for copying
11517         arrays, use the type of the source, not the target.
11518
11519         * cp-cvt.c (convert): Pass an argument for errtype to
11520         convert_to_reference.
11521
11522         * cp-error.c (dump_expr, COMPONENT_REF & CALL_EXPR): Deal with
11523         methods, -> and `this'.
11524
11525 Mon Dec  6 17:12:33 1993  Jason Merrill  (jason@deneb.cygnus.com)
11526
11527         * cp-error.c (parm_as_string): New function; returns `this' or arg
11528         number.  Corresponds to %P.
11529         (dump_expr): Deal with method calls.
11530
11531         * cp-cvt.c (convert_to_reference): Stop using warn_for_assignment.
11532         * cp-typeck.c (convert_for_assignment): Ditto.
11533         (warn_for_assignment): Lose.
11534
11535 Mon Dec  6 11:33:35 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11536
11537         * cp-call.c (ideal_candidate_ansi): Delete code that was never
11538         doing anything useful.  Instead, sort once, and DO NOT wipe
11539         out any codes with EVIL_CODE, since that's what we use as a
11540         marker for the end of the list of candidates.
11541
11542         * cp-cvt.c (convert_to_aggr): Make sure to always set H_LEN.
11543
11544 Mon Dec  6 12:49:17 1993  Jason Merrill  (jason@deneb.cygnus.com)
11545
11546         * cp-init.c (get_aggr_from_typedef): New function, like
11547         is_aggr_typedef but returns the _TYPE.
11548
11549         * cp-call.c, cp-init.c, cp-method.c: Eradicate err_name.
11550
11551 Sun Dec  5 18:12:48 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11552
11553         * cp-lex.c (readescape): Pedwarn when a hex escape is out of range.
11554
11555 Thu Nov 25 23:50:19 1993  Chip Salzenberg  (chip@fin.uucp)
11556
11557         Delay language context change until beginning of next decl.
11558
11559         * cp-lex.h (c_header_level): Removed.
11560         (pending_lang_change): Declared.
11561         * cp-lex.c (c_header_level): Renamed from in_c_header, made static.
11562         (pending_lang_change): Defined.
11563         (check_newline): Rework code that recognizes line number and
11564         filename changes.  Instead of pushing and popping lang context,
11565         increment and decrement pending_lang_change.
11566         (do_pending_lang_change):  Push and pop lang context according
11567         to value of pending_lang_change.
11568         * cp-parse.y (extdefs): Use lang_extdef instead of extdef.
11569         (extdef): Same as extdef, but call do_pending_lang_change() first.
11570
11571 Mon Nov 15 15:39:15 1993  Chip Salzenberg  (chip@fin.uucp)
11572
11573         * cp-typeck.c (build_binary_op_nodefault): Warn for ordered
11574         compare of ptr with 0 only if pedantic in both cases.
11575
11576 Thu Nov 25 13:31:37 1993  Chip Salzenberg  (chip@fin.uucp)
11577
11578         Reinstate the below patch, which got lost in the Cygnus merge:
11579         Tue Nov 23 13:59:24 1993  Hallvard B Furuseth  (hbf@durin.uio.no)
11580         * cp-parse.y (maybe_type_qual): Don't fail to set $$.
11581
11582 Wed Nov 17 19:03:30 1993  Chip Salzenberg  (chip@fin.uucp)
11583
11584         * cp-parse.y (attrib): Allow "ident(ident)" like the C front end.
11585
11586 Fri Oct 22 20:43:37 1993  Paul Eggert  (eggert@twinsun.com)
11587
11588         * cp-lex.c (real_yylex): Diagnose floating point constants
11589         that are too large.
11590
11591 Wed Nov 17 19:10:37 1993  Chip Salzenberg  (chip@fin.uucp)
11592
11593         * cp-type2.c (build_functional_cast): ARM page 16: When a class
11594         and an object, function or enumerator are declared in the same
11595         scope with the same name, the class name is hidden.
11596
11597 Wed Nov 17 19:07:18 1993  Chip Salzenberg  (chip@fin.uucp)
11598
11599         * cp-call.c (convert_harshness_ansi): Distinguish float, double,
11600         and long double from each other when overloading.
11601         (compute_conversion_costs_{ansi,old}, build_method_call,
11602         build_overlay_call_real, convert_to_aggr): Always set and
11603         always use H_LEN member of candidate structure.
11604
11605 Mon Oct 11 23:10:53 1993  Chip Salzenberg  (chip@fin.uucp)
11606
11607         * cp-decl.c (duplicate_decls): Note redeclarations of library
11608         functions, and generate distinct warnings for them.
11609
11610 Mon Oct  4 12:26:49 1993  Chip Salzenberg  (chip@fin.uucp)
11611
11612         Support format warnings in G++.
11613
11614         * cp-tree.h: Protect against multiple inclusion.
11615         Declare all public functions in c-common.c (copy from c-tree.h).
11616         (STDIO_PROTO): Define.
11617         (warn_format): Declare.
11618         (record_format_info): Remove declaration.
11619         * cp-decl.c (init_decl_processing): Call init_function_format_info.
11620         * cp-decl2.c (lang_decode_option): Make "-Wall" include warn_format.
11621         * cp-typeck.c (build_function_call_real): Call check_function_format.
11622         (record_format_info): Remove -- obsolete stub.
11623
11624 Sat Jul 24 12:04:29 1993  Chip Salzenberg  (chip@fin.uucp)
11625
11626         * cp-decl.c (duplicate_decls): Don't warn for non-extern var decl
11627         following an extern one (for -Wredundant-decls).
11628         * cp-parse.y (primary): In statement expression case, if compstmt
11629         returns something other than a BLOCK, return it unchanged.
11630
11631 Thu Dec  2 20:44:58 1993  Chip Salzenberg  (chip@fin.uucp)
11632
11633         * cp-decl.c (warn_extern_redeclared_static): New function made
11634         from code extracted from pushdecl.
11635         (duplicate_decls, pushdecl): Call new function.
11636         (lookup_name_current_level): Allow for IDENTIFIER_GLOBAL_VALUE
11637         to be a TREE_LIST when function is declared in 'extern "C" {}'.
11638
11639 Fri Dec  3 16:01:10 1993  Jason Merrill  (jason@deneb.cygnus.com)
11640
11641         * cp-class.c (duplicate_tag_error): Use cp_error.
11642         (finish_base_struct): Check for ambiguity with direct base, and don't
11643         generate op= or copy ctor if it exists.
11644
11645 Fri Dec  3 15:32:34 1993  Kung Hsu  (kung@cirdan.cygnus.com)
11646
11647         * cp-init.c (expand_member_init): when initializer name is null,
11648         don't try to build it now because emit_base_init will handle it.
11649
11650 Fri Dec  3 12:28:59 1993  Jason Merrill  (jason@deneb.cygnus.com)
11651
11652         * cp-lex.c (init_lex): Initialize input_filename to "<internal>" for
11653         code such as ExceptionHandler::operator=.
11654
11655 Fri Dec  3 10:32:08 1993  Jason Merrill  (jason@deneb.cygnus.com)
11656
11657         * cp-decl.c (grokdeclarator): Don't try to print out dname when
11658         complaining about arrays of references if decl_context==TYPENAME,
11659         since it will be null.
11660
11661         * cp-decl2.c: Default to flag_ansi_overloading.
11662
11663 Thu Dec  2 18:05:56 1993  Kung Hsu  (kung@cirdan.cygnus.com)
11664
11665         * cp-call.c (build_method_call): use binfo from instance if it's
11666         different from binfo (basetype_path) passed from above.
11667
11668 Thu Dec  2 12:48:36 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11669
11670 Wed Nov 17 19:14:29 1993  Chip Salzenberg  (chip@fin.uucp)
11671
11672         cp-error.c (dump_expr): Use unsigned chars to output a
11673         TREE_REAL_CST in hex.
11674
11675 Thu Dec  2 11:05:48 1993  Jason Merrill  (jason@deneb.cygnus.com)
11676
11677         * cp-class.c (finish_struct): Fix typo in setting
11678         cant_synth_asn_ref.
11679
11680         * cp-tree.h (TYPE_NESTED_NAME): New macro, does
11681         DECL_NESTED_TYPENAME (TYPE_NAME (NODE)).
11682
11683         * cp-lex.c (default_copy_constructor_body): Change
11684         DECL_NAME (TYPE_NAME (btype)) to TYPE_NESTED_NAME (btype).
11685         (default_assign_ref_body): Ditto.
11686         (default_copy_constructor_body): Call operator= explicitly for
11687         base classes that have no constructor.
11688
11689 Thu Dec  2 10:47:15 1993  Michael Tiemann  (tiemann@blues.cygnus.com)
11690
11691         * cp-call.c (build_method_call): If the instance variable is
11692         converted to error_mark_node when we're trying to convert it to the
11693         base type of a method we're looking up, return error_mark_node.
11694
11695 Thu Dec  2 10:41:16 1993  Torbjorn Granlund  (tege@cygnus.com)
11696
11697         * cp-typeck.c (build_binary_op_nodefault): In *_DIV_EXPR *_MOD_EXPR
11698         cases, tests for unsigned operands by peeking inside a NOP_EXPR.
11699
11700 Wed Dec  1 13:33:34 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11701
11702         * cp-call.c (compute_conversion_costs_ansi): Use the size of struct
11703         harshness_code, not the size of short, for clearing out the
11704         ansi_harshness.
11705
11706         * cp-call.c (print_candidates): New function.
11707         (build_method_call): When we had some candidates, but didn't get a
11708         usable match, don't report that we got an error with the first
11709         candidate.  Instead, say there were no matches, and list the
11710         candidates with print_candidates.  In the second pass, make sure we
11711         clear out ever_seen, so we can accurately count the number of
11712         functions that qualified.
11713
11714 Wed Dec  1 09:53:59 1993  Torbjorn Granlund  (tege@cygnus.com)
11715
11716         * cp-typeck.c (build_binary_op_nodefault): Shorten for *_MOD_EXPR
11717         only if op1 is known to be != -1.
11718         (build_binary_op_nodefault): Handle *_DIV_EXPR likewise.
11719
11720 Tue Nov 30 14:07:26 1993  Brendan Kehoe  (brendan@lisa.cygnus.com)
11721
11722         * cp-method.c (hack_identifier): If the field itself is private, and
11723         not from a private base class, say so.
11724
11725 Mon Nov 29 03:00:56 1993  Jason Merrill  (jason@deneb.cygnus.com)
11726
11727         * cp-decl.c (grokdeclarator): Always warn on initialization of
11728         const member.
11729
11730 Wed Nov 24 00:49:35 1993  Jason Merrill  (jason@deneb.cygnus.com)
11731
11732         * cp-class.c (finish_struct): Set TYPE_GETS_CONST_* properly.
11733         (finish_base_struct): Set cant_synth_asn_ref properly.
11734
11735         * cp-lex.c (cons_up_default_function): Add section for operator=.
11736         (default_assign_ref_body): New function, mostly cribbed from
11737         default_copy_constructor_body.
11738
11739         * cp-class.c (base_info): Add members cant_synth_copy_ctor,
11740         cant_synth_asn_ref, no_const_asn_ref.
11741         (finish_base_struct): Update no_const_asn_ref, note that you should
11742         update cant_synth_*, propagate TYPE_GETS_ASSIGN_REF.
11743         (finish_struct): Add decls for cant_synth_*, no_const_asn_ref, and
11744         initialize them properly.  Set no_const_asn_ref properly.  Set
11745         cant_synth_* in some of the situations where they should be set.
11746         Propagate TYPE_GETS_ASSIGN_REF.  Use cant_synth_copy_ctor.  Add call
11747         to cons_up_default_function for operator=.
11748
11749 Tue Nov 23 20:24:58 1993  Mike Stump  <mrs@cygnus.com>
11750
11751         * cp-cvt.c (convert_force): Add code to perform casting of pointer
11752         to member function types.
11753         * cp-typeck.c (build_ptrmemfunc): Add FORCE parameter to indicate
11754         when the conversion should be done, regardless.
11755         * cp-tree.h (build_ptrmemfunc): Ditto.
11756         * cp-type2.c (digest_init): Ditto.
11757         * cp-typeck.c (convert_for_assignment): Ditto.
11758
11759 Tue Nov 23 18:06:58 1993  Jason Merrill  (jason@deneb.cygnus.com)
11760
11761         * cp-error.c (dump_expr): Do the right thing for variables of
11762         reference type.
11763
11764         * cp-decl.c (grok_op_properties): Set TYPE_HAS_ASSIGN_REF
11765         and its kin properly.
11766         (xref_tag): Propagate TYPE_GETS_ASSIGN_REF.
11767
11768 Tue Nov 23 12:26:13 1993  Mike Stump  <mrs@cygnus.com>
11769
11770         * cp-method.c (build_opfncall): Don't count pointer to member
11771         functions as aggregates here, as we don't want to look up methods in
11772         them.  The compiler would core dump if we did, as they don't have
11773         normal names.
11774         * cp-typeck.c (build_indirect_ref): Improve wording on error
11775         message.
11776
11777 Mon Nov 22 14:22:23 1993  Jason Merrill  (jason@deneb.cygnus.com)
11778
11779         * cp-decl.c (grok_op_properties): Allow operator?: with pedwarn
11780         (since it's supported in other compiler bits).
11781
11782         * cp-method.c (report_type_mismatch): Use cp_error; ignore err_name
11783         argument.
11784
11785         * cp-error.c (dump_function_decl): Don't print return type for
11786         constructors and destructors.
11787
11788         * cp-cvt.c (cp_convert_to_pointer): Import code from
11789         convert_to_pointer so we can return error_mark_node in the case of an
11790         error, and to allow more meaningful error messages.
11791         (build_type_conversion): Don't go through void* when trying
11792         to convert to a pointer type.
11793
11794         * cp-decl.c (grokfndecl): Move call to grok_op_properties back
11795         after grokclassfn so that it's dealing with the right decl.
11796         (grok_op_properties): Don't assert !methodp for op new and op delete.
11797
11798         * cp-init.c (build_delete): Don't use TYPE_BUILT_IN (there are now
11799         no uses of it in the compiler).
11800
11801         * cp-call.c (build_scoped_method_call): Fix for destructors of simple
11802         types.
11803         (build_method_call): Ditto.
11804
11805 Fri Nov 19 12:59:38 1993  Jason Merrill  (jason@deneb.cygnus.com)
11806
11807         * cp-tree.c (count_functions): Abstraction function.
11808
11809         * cp-call.c (build_overload_call_real): Deal with new overloading
11810         properly, remove dead code.
11811
11812         * gcc.c (default_compilers): Generate and use .ii files in the
11813         intermediate stage of compiling C++ source.
11814
11815 Fri Nov 19 11:26:09 1993  Jim Wilson  (wilson@sphagnum.cygnus.com)
11816
11817         * cp-expr.c (cplus_expand_expr): Make call_target a valid memory
11818         address before using it, so it can be later safely compared.
11819
11820 Fri Nov 12 15:30:27 1993  Jason Merrill  (jason@deneb.cygnus.com)
11821
11822         * cp-pt.c (tsubst): Deal with new overloading.
11823
11824         * cp-typeck.c (fntype_p): is the arg function type?
11825         (comp_target_parms): pedwarn on conversion from (anything) to (...).
11826         (build_x_function_call): Deal with new overloading.
11827
11828         * cp-tree.c (decl_list_length): Deal with new overloading.
11829         (decl_value_member): Like value_member, but for DECL_CHAINs.
11830
11831         * cp-decl.c (duplicate_decls): Deal with new overloading.
11832         (start_decl): Ditto.
11833
11834         * cp-class.c (instantiate_type): Deal with new overloading.
11835
11836         * cp-call.c (convert_harshness_ansi): Deal with new overloading.
11837         (convert_harshness_old): Deal with new overloading.
11838         (build_overload_call_real): Ditto.
11839
11840 Mon Nov  8 13:50:49 1993  Jason Merrill  (jason@deneb.cygnus.com)
11841
11842         * cp-tree.c (get_unique_fn): New function; returns FUNCTION_DECL
11843         if unambiguous, NULL_TREE otherwise.
11844         (get_first_fn): Returns the first appropriate FUNCTION_DECL.
11845         (is_overloaded_fn): Returns whether or not the passed tree is
11846         a function or list of functions.
11847
11848         * cp-init.c (init_init_processing): use `get_first_fn' to find
11849         the FUNCTION_DEFN for new and delete.
11850
11851         * cp-decl.c (push_overloaded_decl): Use new overloading strategy, cut
11852         code size in half (I spit on special cases).
11853
11854 Tue Sep  7 20:03:33 1993  Jason Merrill  (jason@deneb.cygnus.com)
11855
11856         * cp-decl.c: Allow references and template type parameters as well