OSDN Git Service

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