OSDN Git Service

* typeck2.c (process_init_constructor): Don't strip cv-qualifiers
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 Fri Apr 17 00:45:12 1998  Mark Mitchell  <mmitchell@usa.net>
2
3         * typeck2.c (process_init_constructor): Don't strip cv-qualifiers
4         when doing initializations.
5
6 Fri Apr 17 00:24:22 1998  Jason Merrill  <jason@yorick.cygnus.com>
7
8         * decl.c (duplicate_decls): Fix check for when it's safe to free
9         the new decl.
10
11         * pt.c (mangle_class_name_for_template): Don't pass a typedef type
12         to type_as_string.
13         From Mark Mitchell:
14         (unify): Use comptypes to compare type args.
15
16 Thu Apr 16 17:47:30 1998  Jeffrey A Law  (law@cygnus.com)
17
18         * pt.c (build_template_parm_index): Add prototype.
19
20         * search.c (my_tree_cons): Don't clear words outside the
21         newly allocated node.
22
23 Wed Apr 15 15:34:44 1998  Dave Brolley  <brolley@cygnus.com>
24
25         * lex.c (init_parse): Now returns char* containing the filename.
26
27 Wed Apr 15 13:20:06 1998  John Carr  <jfc@mit.edu>
28                           Jeff Law   <law@cygnus.com>
29
30         * errfn.c: Rework to avoid problems when HOST_WIDE_INT is longer
31         than a pointer.
32
33 Fri Apr 10 12:16:49 1998  Benjamin Kosnik  <bkoz@loony.cygnus.com>
34
35         * decl.c (duplicate_decls): Don't warn for redundant decls if
36         friend: let add_friend take care of it.
37
38 Thu Apr  9 02:40:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
39
40         * sig.c (build_signature_pointer_constructor): Don't set
41         TREE_HAS_CONSTRUCTOR for a signature pointer.
42         * cvt.c (ocp_convert): Don't force a temporary for internal structs.
43         * init.c (resolve_offset_ref): Warn about implicit & on pmfs 
44         here, too.
45         * typeck.c (build_unary_op): Only allow taking the address of a 
46         real constructor.
47         * typeck2.c (digest_init): Simplify.
48         (store_init_value): Don't pedwarn about using { } for pmfs.
49
50 Thu Apr  9 22:16:57 1998  Per Bothner  <bothner@cygnus.com>
51
52         * cp-tree.h (start_decl):  Update prototype.
53         * decl.c (start_decl):  Like the C version, new parameters
54         for the attributes.  Call cplus_decl_attributes here,
55         (pushdecl):  Like C version, do build_type_copy if TYPE_DECL,
56         (grokdeclarator):  Pass NULL for new start_decl arguments.
57         * pt.c (tsubst_expr):  Likewise.
58         * parse.y:  Merge cplus_decl_attribute calls into start_decl calls.
59         * typeck.c (common_type): Check TYPE_MAIN_VARIANT.
60         * lex.c (build_lang_decl): Add lang_name_java.
61         * class.c (push_lang_context): Add lang_name_java.
62         * method.c (build_mangled_name): Check for is_java_type.
63
64 Thu Apr  9 22:16:57 1998  Benjamin Kosnik  <bkoz@loony.cygnus.com>
65
66         * decl.c (grokdeclarator): Check TYPE_MAIN_VARIANT.
67         * call.c (build_scoped_method_call): Check for TREE_CODE for
68         VOID_TYPE instead of type ==  void_type_node.
69         (build_method_call): Ditto.
70         * decl.c (lookup_name_real): Ditto.
71         (grokdeclarator): Ditto.
72         (start_decl): Ditto.
73         (grokparms): Ditto.
74         (start_function): Ditto.
75         (finish_function): Ditto.
76         (start_method): Ditto.
77
78 Thu Apr  9 00:18:44 1998  Dave Brolley  (brolley@cygnus.com)
79
80         * lex.c (finput): New variable.
81         (init_cpp_parse):  Renamed from init_parse.
82         (init_parse): Handle !USE_CPPLIB.  Call init_cpp_parse when finished.
83         (finish_parse): New function.
84         * cp-tree.h (init_lex, init_parse): Remove declarations.
85
86 Mon Apr  6 02:25:05 1998  Jason Merrill  <jason@yorick.cygnus.com>
87
88         * call.c (build_call): Still evaluate the actual argument.
89         * class.c (is_empty_class): Update for -fnew-abi.
90
91         * decl2.c: -fnew-abi implies -fsquangle.
92
93         * method.c (do_build_assign_ref): Don't do anything to copy
94         an empty class.
95         (do_build_copy_constructor): Likewise.
96         * call.c (build_over_call): Likewise.
97
98 Sat Apr  4 18:43:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
99
100         * tree.c (avoid_overlap): Return a value.
101
102 Sat Apr  4 12:52:35 1998  Jeffrey A Law  (law@cygnus.com)
103
104         * method.c (check_btype): Add missing argument to xrealloc.
105         (check_ktype): Likewise.
106
107 Fri Apr  3 02:22:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
108
109         Implement empty base optimization.
110         * class.c (finish_struct_1): Add vbase fields earlier.  Set 
111         CLASSTYPE_SIZE of an empty base to 0.  Types with bases can be empty.
112         * search.c (dfs_check_overlap, dfs_no_overlap_yet): New fns.
113         (types_overlap_p): New fn.
114         * tree.c (avoid_overlap): New fn.
115         (build_base_fields): Use it to avoid overlapping empty bases.
116         * cp-tree.h, decl2.c, lang-options.h: Add -fnew-abi.
117
118         * decl.c (cplus_expand_expr_stmt): Strip unused INDIRECT_REFs.
119
120         Re-implement allocation of base class subobjects.
121         * tree.c (unshare_base_binfos): New fn.
122         (layout_basetypes): Use it.  Now handles offsets of both virtual and
123         non-virtual bases, after layout_type.
124         (layout_vbasetypes): Remove.
125         (build_base_fields): Generate FIELD_DECLs for each non-virtual base.
126         (build_vbase_pointer_fields): Split out from old layout_basetypes.
127         * class.c (finish_base_struct): Lose offset handling code.
128         Move nonvdtor warning here.  Don't mess with t_binfo anymore.
129         (finish_struct_1): Don't mess with t_binfo anymore.  Use fns above.
130         * cp-tree.h: Adjust.
131
132 Thu Apr  2 14:25:13 1998  Jason Merrill  <jason@yorick.cygnus.com>
133
134         * cp-tree.h: Lose CLASSTYPE_VBASE_SIZE, some unused stuff.
135         * decl.c, decl2.c, pt.c, ptree.c, lex.c: Likewise.
136         * class.c (duplicate_tag_error): Likewise.
137         (finish_struct_1): Set CLASSTYPE_SIZE, CLASSTYPE_MODE, CLASSTYPE_ALIGN.
138         * tree.c (layout_vbasetypes): Update from layout_record, remove
139         var_size support, use CLASSTYPE_SIZE instead of CLASSTYPE_VBASE_SIZE.
140         (layout_basetypes): Likewise.
141
142 Wed Apr  1 18:22:25 1998  Jeffrey A Law  (law@cygnus.com)
143
144         * class.c, Make sure system.h is included just after config.h.
145         Delete lingering stdio and errno references too.
146         * decl.c, errfn.c, parse.y, ptree.c search.c, xref.c: Likewise.
147         
148 Wed Apr  1 15:38:36 1998  Jason Merrill  <jason@yorick.cygnus.com>
149
150         * friend.c (is_friend): Fix access control for local classes.
151
152         * class.c (is_empty_class): New fn.
153         * call.c (build_call): Don't pass empty class objects to a function.
154
155 Wed Apr  1 14:58:35 1998  Mark Mitchell  <mmitchell@usa.net>
156
157         * call.c (build_over_call): Do name resolution for default
158         arguments of function templates in the scope of the templates.
159
160 Tue Mar 31 13:43:57 1998  Jeffrey A Law  (law@cygnus.com)
161
162         * call.c: Include system.h.  Remove includes, declarations and
163         defines provided by system.h.
164         * class.c, cvt.c, decl.c, decl2.c, errfn.c error.c: Likewise.
165         * except.c, expr.c friend.c, g++spec.c, init.c, input.c: Likewise.
166         * lex.c, parse.y, pt.c, ptree.c repo.c rtti.c, search.c: Likewise.
167         * semantics.c, sig.c, spew.c, tree.c, typeck.c: Likewise.
168         * typeck2.c, xref.c: Likewise.
169         * Makefile.in: Dependencies updated as appropriate.
170         * Make-lang.in: Likewise.
171
172 Mon Mar 30 12:15:00 1998  Mark Mitchell  <mmitchell@usa.net>
173
174         * pt.c (fn_type_unification): Allow incomplete unification without 
175         an immediate error message.
176
177 Mon Mar 30 08:55:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
178
179         * tree.c (member_p): New fn.
180         * decl2.c (finish_file): Only set DECL_STATIC_FUNCTION_P for
181         initializing class members.
182
183         * cp-tree.def (TEMPLATE_PARM_INDEX): Class 'x'.
184         * ptree.c (lang_print_xnode): Handle TEMPLATE_PARM_INDEX.
185
186         * call.c (build_method_call): Handle non-scoped destructors, too.
187         * pt.c (tsubst_copy): Likewise.
188
189         * pt.c (print_template_context): Split out...
190         (push_tinst_level): ...from here.
191
192         * friend.c (is_friend): Don't pass a type to decl_function_context.
193
194         * typeck.c (convert_for_initialization): Always hand off
195         conversions to class type.
196
197 Sun Mar 29 20:01:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
198
199         * friend.c (is_friend): Local classes have the same access as the
200         enclosing function.
201
202 Sun Mar 29 00:47:32 1998  Jeffrey A Law  (law@cygnus.com)
203
204         * typeck.c (expand_target_expr): Delete dead function.
205
206         * search.c: Put various prototypes inside #ifdef MI_MATRIX.
207
208         * repo.c (save_string): Delete dead function.
209
210         * method.c (thunk_printable_name): Delete dead function.
211
212         * lex.c (yynextch): Delete dead function.
213
214         * expr.c (tree_extract_aggr_init): #if 0 out.
215
216         * except.c (do_unwind): Delete dead function.
217         (easy_expand_asm): Likewise.
218
219         * cvt.c (build_conversion_type_1): Delete dead function.
220
221         * cp-tree.h (push_expression_obstack): Declare.
222
223         * call.c (source_type): #if 0 out.
224
225         * class.c (alter_access): Remove unused label.  Add braces
226         around empty else clause.
227
228         * lex.c (yyprint): Fix argument to printf.
229
230 Sat Mar 28 17:43:52 1998  Mark Mitchell  <mmitchell@usa.net>
231
232         * pt.c (tsubst): Clear TREE_USED for new FUNCTION_DECLs.
233
234         * pt.c (instantiate_class_template): Make sure template
235         arguments are permanent.
236         * init.c (resolve_offset_ref): Don't go looking around in
237         template types.
238
239         * semantics.c: Add routines to handle expressions, and some
240         declaration processing.
241         * parse.y: Use them.
242         (current_class_depth): Move declaration to cp-tree.h.
243         * parse.c: Regenerated.
244         * cp-tree.h: Use them.
245         (current_class_depth): Declare.
246         * pt.c (tsubst_copy): Use begin_stmt_expr and finish_stmt_expr.
247
248 Fri Mar 27 20:23:18 1998  Mark Mitchell  <mmitchell@usa.net>
249
250         * error.c (dump_decl): Be a bit more explicit with template
251         type arguments, when verbose.
252         
253 Fri Mar 27 18:16:40 1998  Jason Merrill  <jason@yorick.cygnus.com>
254
255         * inc/exception: Reorder closing braces.
256
257 Fri Mar 27 13:22:18 1998  Mark Mitchell  <mmitchell@usa.net>
258
259         * pt.c (redeclare_class_template): New function.
260         * cp_tree.h (redeclare_class_template): Declare it.
261         * decl.c (xref_tag): Use it.
262
263 Thu Mar 26 11:16:30 1998  Jason Merrill  <jason@yorick.cygnus.com>
264
265         * call.c (build_over_call): Check IS_AGGR_TYPE, not 
266         TYPE_LANG_SPECIFIC.
267         * typeck.c (convert_arguments): Likewise.
268
269         * decl.c (grokdeclarator): Remove const and volatile from type after
270         setting constp and volatilep.
271
272         * class.c (finish_struct_1): Don't warn about bool bitfield larger
273         than one bit.
274
275 Thu Mar 26 10:25:52 1998  Mark Mitchell  <mmitchell@usa.net>
276
277         * pt.c (convert_nontype_argument): STRIP_NOPS where appropriate.
278
279 Thu Mar 26 10:24:05 1998  Mark Mitchell  <mmitchell@usa.net>
280
281         * call.c (build_object_call): Complain about ambiguous operator(),
282         rather that crashing.
283         (build_new_op): Likewise.
284         (build_op_delete_call): Likewise.
285
286 Thu Mar 26 10:23:24 1998  Mark Mitchell  <mmitchell@usa.net>
287
288         * cvt.c (perform_qualification_conversions): Use comp_target_types
289         instead of comp_ptr_ttypes.
290
291 Wed Mar 25 16:10:50 1998  Mark Mitchell  <mmitchell@usa.net>
292
293         * cp-tree.h (enforce_access): Declare.
294         * call.c (enforce_access): Make it extern, not static.
295         * class.c (alter_access): Use enforce_access; modify code for ISO
296         compliance, rather than ARM rules.
297
298 Wed Mar 25 12:10:45 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
299
300         * cp-tree.h: Fix typo.
301
302 Wed Mar 25 02:01:02 1998  Jason Merrill  <jason@yorick.cygnus.com>
303
304         * expr.c (cplus_expand_expr): Only do PCC_STATIC_STRUCT_RETURN thing
305         if (aggregate_value_p (type)).
306
307         * decl2.c (constructor_name_full): Handle TYPENAME_TYPE.
308
309 Tue Mar 24 16:12:01 1998  Mark Mitchell  <mmitchell@usa.net>
310
311         * tree.c (mapcar): When dealing with a DECL, use it's constant
312         value, if any.
313         * pt.c (lookup_template_class): Don't mangle the names of template
314         classes whose arguments are unknown.
315
316         * pt.c (tsubst_expr): Handle GOTO_STMT correctly.
317
318 Tue Mar 24 12:21:55 1998  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
319
320         * decl.c (init_decl_processing): Set TYPE_PRECISON for bools to 1.
321
322 Tue Mar 24 12:21:48 1998  Jim Wilson  <wilson@cygnus.com>
323
324         * decl.c (init_decl_processing): Initialize TYPE_MAX_VALUE for
325         boolean_type_node to 1.
326
327 Tue Mar 24 10:23:47 1998  Mark Mitchell  <mmitchell@usa.net>
328
329         * error.c (dump_expr): Remove unused variable `l'.
330
331         * pt.c (for_each_template_parm): New function, created by
332         converting uses_template_parms.
333         (tree_fn_t): New typedef.
334         (uses_template_parms): Use it.
335         (mark_template_parm): New function.
336         (push_template_decl): Check that the argument list of a partial
337         specialization uses all the template parameters.
338
339         * Make-lang.in (c++filt): Don't delete cxxmain.c after we're done
340         with it; we might want it for debugging.
341         * cp-tree.h (type_unification): Change interface.
342         * class.c (finish_struct_1): Skip nested template types, just like
343         ordinary nested types.
344         (instantiate_type): Use new interface to type_unification.
345         * lex.c (init_lex): Add __sz as opname for sizeof.
346         * method.c (build_overload_scope_ref): New function.
347         (build_overload_int): Handle complex expressions.  Set
348         numeric_output_need_bar if necessary.
349         (build_overload_value): Handle non-PARM_DECL nodes; this
350         routine is now used by build_overload_int.  Remove some
351         assignments to numeric_output_need_bar.  Use
352         build_overload_scope_ref.
353         (build_qualified_name): Note that some template mangled names end
354         with digits, and set numeric_output_need_bar appropriately.  Use
355         build_underscore_int.
356         * pt.c (unify): Change interface.
357         (type_unification_real): Likewise.
358         (determine_specialization): Use new interfaces.
359         (tsubst): Deal gracefully with situations in which the argument
360         vector is not fully filled.
361         (fn_type_unification): Use new interfaces.
362         (type_unification): Likewise.  Remove NOP_EXPR hack.
363         (type_unification_real): Likewise.
364         (unify): Likewise.  Deal with unification of complex expresions.
365
366 Mon Mar 23 12:24:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
367
368         * pt.c (complete_template_args): Initialize skip properly.
369
370         * decl.c (make_typename_type): Revert.
371         (make_implicit_typename): Remove.
372         (lookup_name_real): Don't call it.  Call lookup_field if we see a
373         TYPE_DECL from a template base.
374         * search.c (lookup_field): Do implicit typename stuff.
375
376 Sun Mar 22 00:50:42 1998  Nick Clifton  <nickc@cygnus.com>
377                           Geoff Noer    <noer@cygnus.com>
378
379         * Makefile.in: Various fixes for building cygwin32 native toolchains.
380         * Make-lang.in: Likewise.
381
382 Fri Mar 20 18:07:39 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
383
384         * pt.c (tsubst, TEMPLATE_TEMPLATE_PARM): Simplify.
385
386 Fri Mar 20 10:42:07 1998  Jason Merrill  <jason@yorick.cygnus.com>
387
388         * decl.c (make_implicit_typename): Rewrite removed code.
389         (make_typename_type): Call it if the type we look up comes from
390         a base that uses template parms.
391
392         * pt.c (complete_template_args): Rewrite.
393         (tsubst, FUNCTION_DECL): Use it.
394
395 Fri Mar 20 08:12:43 1998  H.J. Lu  (hjl@gnu.org)
396
397         * semantics.c (finish_asm_stmt): Fix combine strings. Call
398         c_expand_asm_operands () if output_operands, input_operands or
399         clobbers is not NULL_TREE.
400
401 Fri Mar 20 00:10:19 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
402
403         * pt.c (complete_template_args): New function.
404         (get_bindings): Deal with specializations of function templates
405         with return type containing parameters from outer class 
406         templates.
407         (tsubst, TEMPLATE_TEMPLATE_PARM): When reducing parameter level,
408         substitute arguments and compose a new type.
409
410 Thu Mar 19 19:01:48 1998  Mark Mitchell  <mmitchell@usa.net>
411
412         * pt.c (tsubst): Clear DECL_PENDING_INLINE_INFO for new
413         FUNCTION_DECLs.
414
415 Thu Mar 19 11:51:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
416
417         * decl.c (make_implicit_typename): Lose useless code.
418
419         * call.c (standard_conversion): Handle A* -> const A* properly.
420
421         * pt.c (get_bindings_real): Rename from get_bindings.  Add 
422         check_rettype parm.
423         (get_bindings): Pass 1.
424         (get_bindings_overload): Pass 0.
425
426 Wed Mar 19 09:08:12 1998  Mark Mitchell  <mmitchell@usa.net>
427
428         * pt.c (check_explicit_specialization): When reverting a static
429         member function, also remove the `this' parameter from
430         last_function_parms.
431
432 Thu Mar 19 02:27:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
433
434         * pt.c (tsubst_copy, CONST_DECL): Don't bother tsubsting
435         a function context.
436
437         * decl.c (store_bindings): Use free_binding_vecs.
438         (pop_from_top_level): Likewise.
439
440 Wed Mar 18 12:41:43 1998  Jason Merrill  <jason@yorick.cygnus.com>
441
442         * decl.c (make_implicit_typename): Only change the type of a 
443         TYPENAME_TYPE.
444
445 Wed Mar 18 10:09:51 1998  Mark Mitchell  <mmitchell@usa.net>
446
447         * semantics.c: New file, containing routines to perform the
448         semantic phase of parsing.
449         * parse.y: Use it.
450         * pt.c (tsubst_expr): Likewise.
451         * cp-tree.h: Declare the various functions in semantics.c.
452         Provide macros to access _STMT tree nodes.
453         * cp-tree.def: Add ASM_STMT tree node.
454         * Makefile.in, Make-lang.in: Add dependencies on and for
455         semantics.c.
456         
457 Wed Mar 18 00:24:10 1998  Jason Merrill  <jason@yorick.cygnus.com>
458
459         * pt.c (push_template_decl): Only check primary templates.
460
461         * pt.c (check_explicit_specialization): Complain about default args
462         in explicit specialization.
463
464         * parse.y (nomods_initdcl0): Also call cp_finish_decl for a 
465         constructor_declarator.
466
467 Tue Mar 17 14:44:54 1998  Mark Mitchell  <mmitchell@usa.net>
468
469         * typeck2.c (build_x_arrow): Don't crash when an aggregate type
470         has no overloaded operator ->.
471
472         * call.c (build_field_call): Don't crash when presented with a
473         field that is actually a nested type.
474
475         * decl.c (pushtag): Deal with friend class injection in local
476         classes.
477
478         * call.c (build_object_call): Don't crash if OBJ is a
479         pointer-to-member-function.
480
481 Tue Mar 17 11:40:26 1998  Jason Merrill  <jason@yorick.cygnus.com>
482
483         * pt.c (push_template_decl): Complain about template with C linkage,
484         anonymous template class.
485
486 Mon Mar 16 12:10:39 1998  Jason Merrill  <jason@yorick.cygnus.com>
487
488         * class.c (pushclass): Only use the mi_matrix stuff #ifdef MI_MATRIX.
489         * search.c: Likewise.
490
491         * lex.c (do_pending_defargs): Only call 
492         maybe_{begin,end}_member_template_processing for FUNCTION_DECLs.
493
494         * parse.y (initdcl0_innards): Move maybeasm back into initdcl0 et al.
495
496 Mon Mar 16 10:47:22 1998  Mark Mitchell  <mmitchell@usa.net>
497
498         * parse.y: Deal with CONSTRUCTORS in new_initializers.
499
500 Mon Mar 16 10:54:21 1998  Mark Mitchell  <mmitchell@usa.net>
501
502         * pt.c (tsubst_copy): Deal with BIND_EXPR in a way that more
503         closely mimics the behavior in parse.y.
504         (tsubst_expr): Return the resuting BLOCK when making a tsubst'ing
505         into a compound statement.
506         
507 Sun Mar 15 02:07:26 1998  Jason Merrill  <jason@yorick.cygnus.com>
508
509         * cp-tree.h (TEMPLATE_PARMS_FOR_INLINE): New macro.
510         * pt.c (inline_needs_template_parms): New fn.
511         (original_template): New fn.
512         (push_inline_template_parms_recursive): New fn.
513         (maybe_begin_member_template_processing): Use them.
514         (maybe_end_member_template_processing): Likewise.
515         (is_member_or_friend_template): Rename to is_member_template.
516         Member functions of local classes are never member templates.
517
518 Sun Mar 15 01:14:22 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
519
520         * lex.c (do_identifier): Handle TEMPLATE_DECL that was
521         added in the class scope to catch redefinition error.
522
523         * pt.c (reduce_template_parm_level): Also copy 
524         the DECL_TEMPLATE_PARMS field.
525
526 Sun Mar 15 10:54:08 1998  Mark Mitchell  <mmitchell@usa.net>
527
528         * pt.c (tsubst): Clear TYPE_REFERENCE_TO when creating a
529         reduced-level template type parameter.
530
531 Sun Mar 15 12:26:02 1998  Manfred Hollstein  <manfred@s-direktnet.de>
532
533         * cp-tree.h (struct lang_decl_flags): Add needs_final_overrider.
534         (DECL_NEEDS_FINAL_OVERRIDER_P): New macro.
535         * class.c (override_one_vtable): Set DECL_NEEDS_FINAL_OVERRIDER_P.
536         * decl.c (duplicate_decls): Propagate it.
537         * typeck2.c (abstract_virtuals_error): Use two loops to emit
538         abstract virtual functions and virtual functions which need a
539         final overrider separately.
540         
541 Thu Mar 12 09:39:40 1998  Manfred Hollstein  <manfred@s-direktnet.de>
542
543         * lang-specs.h: Properly put brackets around array elements in 
544         initializer.
545
546         * typeck.c (build_binary_op_nodefault): Correctly place parens around
547         && and || in expression.
548
549 Thu Mar 12 09:26:04 1998  Manfred Hollstein  <manfred@s-direktnet.de>
550
551         * call.c (default_parm_conversions): Remove prototype definition.
552         (build_method_call): Remove unused variable result.
553
554         * cvt.c (ocp_convert): Remove unused variable conversion.
555
556         * decl2.c (ambiguous_decl): Add explicit parameter definition for name.
557
558         * except.c (do_unwind): #if 0 definition of unused variables fcall
559         and next_pc.
560
561         * expr.c (extract_scalar_init): #if 0 prototype and function 
562         definition.
563
564         * init.c (expand_aggr_init_1): Remove unused variable init_type.
565         (build_new_1): Remove unused variable t.
566
567         * pt.c (instantiate_class_template): Remove unused variable newtag;
568         cast called function return value to void.
569         (do_decl_instantiation): Remove unused variables name and fn.
570
571         * tree.c (get_type_decl): Add default return to shut up compiler from
572         complaining control reaches end of non-void function.
573
574         * typeck.c (build_x_conditional_expr): Remove unused variable rval.
575
576 Thu Mar 12 09:12:15 1998  Manfred Hollstein  <manfred@s-direktnet.de>
577
578         * call.c (default_parm_conversions): Remove prototype definition.
579         (build_method_call): Remove unused variable result.
580         (build_over_call): Add default case in enumeration switch.
581
582 Thu Mar 12 08:39:13 1998  Manfred Hollstein  <manfred@s-direktnet.de>
583
584         * decl2.c (lang_decode_option): Change j's type to size_t.
585
586         * tree.c (layout_vbasetypes): record_align and desired_align are of
587         type unsigned int; const_size and nonvirtual_const_size likewise.
588
589 Wed Mar 11 07:25:20 1998  Mark Mitchell  <mmitchell@usa.net>
590
591         * parse.y (new_initializer): Make sure all initializers are
592         lists.
593
594 Tue Mar 10 07:32:36 1998  Mark Mitchell  <mmitchell@usa.net>
595
596         * decl2.c (import_export_decl): Mark tinfo functions for
597         cv-qualified versions of class types as DECL_NOT_REALLY_EXTERN.
598
599 Fri Mar  6 23:27:35 1998  Jeffrey A Law  (law@cygnus.com)
600
601         * method.c: Fix typo.
602
603 Fri Mar  6 10:06:59 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
604
605         * method.c: Include "system.h" to get stdlib.h, stdio.h,
606         ctype.h, string.h, etc.
607         (issue_nrepeats): Add default case in enumeration switch.
608         (check_btype): Likewise.
609         (process_overload_item): Likewise.
610          
611         * Makefile.in (method.o): Depend on system.h.
612
613 Wed Mar  4 22:26:53 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
614
615         * lex.c (do_scoped_id): Fix parenthesizing.
616
617 Wed Mar  4 12:11:53 1998  Michael Tiemann  <tiemann@axon.cygnus.com>
618
619         * rtti.c (get_tinfo_fn_dynamic): If this function is called an
620         FLAG_RTTI is unset, initialize type info machinery and continue
621         with FLAG_RTTI enabled.
622         (get_typeid): Ditto.
623
624 Wed Mar  4 11:47:55 1998  Jason Merrill  <jason@yorick.cygnus.com>
625
626         * typeck.c (unary_complex_lvalue): &D::i has type B::* if i comes
627         from B.
628
629 Wed Mar  4 11:28:08 1998  Mark Mitchell  <mmitchell@usa.net>
630
631         * pt.c (finish_member_template_decl): Deal more gracefully with
632         invalid declarations.
633
634 Tue Mar  3 01:38:17 1998  Jason Merrill  <jason@yorick.cygnus.com>
635
636         * cvt.c, decl.c, decl2.c, init.c, rtti.c, typeck.c, typeck2.c,
637         cp-tree.h: Clean up more old overloading code, old RTTI code, and
638         some formatting quirks.
639
640         * call.c, class.c, cp-tree.h, cvt.c, decl.c, init.c, lex.c,
641         method.c, pt.c, ptree.c, typeck.c: Remove support for 
642         -fno-ansi-overloading and overloading METHOD_CALL_EXPR.
643         * class.h: Remove.
644         * Makefile.in: Adjust.
645
646         * pt.c (unify): Don't allow reduced cv-quals when strict.
647
648         * call.c, class.c, pt.c, cp-tree.h: Remove nsubsts parm from
649         *type_unification* and unify.
650
651 Mon Mar  2 12:11:06 1998  Jason Merrill  <jason@yorick.cygnus.com>
652
653         * parse.y (explicit_template_type): Remove TEMPLATE keyword.
654         (nested_name_specifier): And add it before this use.
655         (typename_sub0): And this use.  Also add use without the keyword.
656         (typename_sub1): Likewise.
657         * pt.c (instantiate_class_template): Don't actually instantiate 
658         anything if our type uses template parms.
659
660 Mon Mar  2 11:04:59 1998  Jim Wilson  <wilson@cygnus.com>
661
662         * decl.c (start_function): Don't call temporary_allocation for a
663         nested function.
664
665 Sun Mar  1 21:06:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
666
667         * pt.c (instantiate_class_template): Don't mess with friends if
668         our type uses template parms.
669
670 Sat Feb 28 12:06:44 1998  Jason Merrill  <jason@yorick.cygnus.com>
671
672         * parse.y (nested_name_specifier): Use explicit_template_type.
673         (typename_sub): Allow a template_type, an explicit_template_type,
674         or an implicit template type at the end.
675         * lex.c (yyprint): Handle a PTYPENAME being a TEMPLATE_DECL.
676         * decl.c (make_typename_type): Handle template-id where the name
677         is a TEMPLATE_DECL.
678         * call.c (build_scoped_method_call): Handle member template 
679         destructor call.
680         * pt.c (tsubst_copy, METHOD_CALL_EXPR): Don't assume a member 
681         destructor is represented by the type.
682
683         * cp-tree.h (TYPENAME_TYPE_FULLNAME): New macro.
684         * parse.y (nested_name_specifier): Add 'template' case.
685         (explicit_template_type): New rule.
686         (typename_sub): Use it.
687         * decl.c (make_typename_type): Handle getting a template-id for NAME.
688         * pt.c (tsubst): Likewise.
689
690 Fri Feb 27 11:17:50 1998  Jason Merrill  <jason@yorick.cygnus.com>
691
692         * pt.c (add_to_template_args): Fix thinko.
693         (instantiate_class_template): Call it later.
694
695         * pt.c (get_class_bindings): Add outer_args parm.
696         (most_specialized_class): Likewise.
697         (instantiate_class_template): Pass it.
698         (more_specialized_class): Likewise.
699         (lookup_template_class): Get context from template if none
700         was specified.
701         (finish_member_template_decl): Don't do anything with a
702         partial specialization.
703         * decl2.c (check_member_template): Use IS_AGGR_TYPE instead of
704         AGGREGATE_TYPE_P.
705         * class.c (finish_struct): Member class templates have already been
706         checked for name clashes.
707         * decl.c (pushdecl_with_scope): Handle pushing at class level.
708
709 Fri Feb 27 02:25:16 1998  Jason Merrill  <jason@yorick.cygnus.com>
710
711         * pt.c (tsubst, TEMPLATE_DECL): Support member class templates.
712         (tsubst, *_PARM): Support multiple levels of template classes.
713         (instantiate_class_template): Look up the pattern from the
714         original template.
715         (lookup_template_class): Handle getting a template for d1.
716         (push_template_decl): Correct setting of 'primary'.
717         (reduce_template_parm_level): Add 'levels' parm.
718         (finish_member_template_decl): Support member class templates.
719         (template_class_depth): Handle multiple levels.
720         * parse.y (component_decl_1, fn.def2): Remove member template case.
721         (component_decl): Add member template cases.
722         * decl2.c (check_member_template): We now handle member template
723         classes.
724         * decl.c (pushtag): Handle member templates.
725         * method.c (do_inline_function_hair): Don't touch
726         IDENTIFIER_GLOBAL_VALUE.
727         * init.c (build_offset_ref): If name isn't an identifier, just 
728         return it.
729         * spew.c (yylex): Handle PTYPENAME like TYPENAME.
730
731         * typeck.c (get_delta_difference): Do adjust for conversions to
732         and from virtual base.
733
734 Wed Feb 25 09:51:29 1998  Jason Merrill  <jason@yorick.cygnus.com>
735
736         * typeck.c (get_delta_difference): Give hard error for conversion
737         from virtual base.
738
739         * cp-tree.h: Tweak formatting.
740
741 Wed Feb 25 00:35:33 1998  Jason Merrill  <jason@yorick.cygnus.com>
742
743         * decl.c (push_namespace): Handle redeclaration error.
744
745         * cp-tree.h (IDENTIFIER_NAMESPACE_VALUE): New macro.
746         (IDENTIFIER_NAMESPACE_BINDINGS): New macro.
747         (NAMESPACE_BINDING): New macro.
748         (IDENTIFIER_GLOBAL_VALUE): Use NAMESPACE_BINDING.
749         * *.c: Use them.
750
751         * pt.c (push_template_decl): Use innermost_args.
752
753         * decl.c (get_unique_name): Tweak from earlier in the name.
754
755 Tue Feb 24 22:15:04 1998  Martin von Loewis  <loewis@informatik.hu-berlin.de>
756
757         * cp-tree.def: Add CPLUS_BINDING node.
758         * cp-tree.h (tree_binding): new struct
759         (BINDING_SCOPE, BINDING_VALUE): new macros
760         (current_namespace, global_namespace): declare extern
761         (struct lang_decl_flags): new field in_namespace
762         (DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): new macros
763         (DECL_NAMESPACE, SET_DECL_NAMESPACE): new macros
764         (TREE_INDIRECT_USING): new macro
765         * decl2.c (current_namespace, global_namespace): Declare.  The
766         value is a NAMESPACE_DECL now, not a TREE_LIST.
767         (is_namespace_ancestor, namespace_ancestor):new static functions.
768         (add_using_namespace, ambiguous_decl): likewise.
769         (lookup_using_namespace): new support function for lookup_name.
770         (qualified_lookup_using_namespace): new support function for
771         do_scoped_id and lookup_namespace_name
772         (get_namespace_id): mark as obsolete.
773         (current_namespace_id): Likewise.
774         (do_namespace_alias): Implement.
775         (do_using_directive): Implement as call to add_using_namespace.
776         * decl.c (binding_for_name): new function.
777         (push_namespace, pop_namespace): implement.
778         (push_decl): don't install a FUNCTION_DECL in the global branch.
779         (lookup_namespace_name): implement using qualified lookup.
780         (lookup_name_real): For global scoping, lookup in
781         global_namespace. For namespace scoping, lookup in given
782         namespace. For unscoped lookup, iterate over namespace,
783         considering using directives.
784         (init_decl_processing): initialize global_namespace.
785         (grokvardecl): Build assembler name as static name for globals.
786         (grokdeclarator): Remove old namespace mangling.
787         (xref_tag): When installing a global binding for the
788         tag, make sure we have an identifier.
789         * method.c (build_overload_nested_name): mangle namespaces.
790         (build_qualified_name): Likewise.
791         (build_decl_overload_real): Likewise.
792         * lex.c (build_lang_decl): set namespace for new declaration to
793         current_namespace.
794         (do_scoped_id): find global names in global or current
795         namespace, or using qualified namespace lookup, depending on
796         context.
797         * init.c (build_member_call): When scope is namespace, use
798         build_x_function_call instead.
799         (build_offset_ref): When scope is namespace, collapse processing
800         to lookup_namespace_name instead.
801         * error.c (dump_decl): Support NAMESPACE_DECL.
802         * decl.c (pushdecl): Bind globals to current namespace.
803         (push_overloaded_decl): Likewise.
804         (lookup_tag): Likewise.
805         (lookup_name_current_level): Likewise.
806         (xref_tag): Likewise.
807         (start_function): Likewise.
808         * lex.c (do_identifier): Likewise.
809         (identifier_typedecl_value): Likewise.
810         (real_yylex): Likewise.
811         * method.c (do_inline_function_hair): Likewise.
812         * parse.y (unscoped): Likewise.
813         * pt.c (check_explicit_specialization): Likewise.
814         (lookup_template_class): Likewise.
815         * rtti.c (call_void_fn): Likewise.
816         * sig.c (build_sigtable): Likewise.
817         * ptree.c (lang_print_xnode): New function.
818
819 Tue Feb 24 01:40:24 1998  Jason Merrill  <jason@yorick.cygnus.com>
820
821         * pt.c (instantiate_class_template): Don't instantiate if pedantic
822         and the args use template parms.
823
824         * pt.c (push_tinst_level): If the instantiaton uses template parms,
825         fail silently.
826         * decl.c (xref_basetypes): Do call complete_type for basetypes
827         that involve template parameters.
828
829 Tue Feb 24 00:36:43 1998  Jason Merrill  <jason@yorick.cygnus.com>
830
831         * typeck2.c (process_init_constructor): Fix labeled init check.
832
833 Mon Feb 23 05:08:55 1998  Jason Merrill  <jason@yorick.cygnus.com>
834
835         * pt.c, call.c, decl.c, method.c, cp-tree.h: Remove unused NARGS
836         argument to tsubst and friends.
837
838         * pt.c (tsubst, FUNCTION_DECL): Tidy.
839
840         * typeck.c (build_x_function_call): Handle static member function
841         templates like non-templates.  Handle friend templates like normal
842         function templates.
843         * pt.c (tsubst, *_PARM): Don't use orig_level.
844         (get_bindings): Don't call add_to_template_args.
845         (instantiate_template): Likewise.
846         (tsubst, FUNCTION_DECL): Call add_to_template_args as appropriate.
847         * ptree.c (print_lang_type): Print index/level for template parms.
848
849 Mon Feb 23 02:52:29 1998  Mark Mitchell  <mmitchell@usa.net>
850
851         * Make-lang.in (cc1plus): Note that cc1plus depends on
852         cp/cp-tree.h and cp/cp-tree.def.
853         
854         * cp-tree.def (TEMPLATE_CONST_PARM): Remove.
855         (TEMPLATE_PARM_INDEX): New tree code, used to indicate a
856         position in a template parameter list.
857         * cp-tree.h (template_parm_index): New structure, used as the tree
858         structure for a TEMPLATE_PARM_INDEX.
859         (TEMPLATE_PARM_IDX): New macro.
860         (TEMPLATE_PARM_LEVEL): Likewise.
861         (TEMPLATE_PARM_DESCENDANTS): Likewise.
862         (TEMPLATE_PARM_ORIG_LEVEL): Likewise.
863         (TEMPLATE_PARM_DECL): Likewise.
864         (TEMPLATE_TYPE_PARM_INDEX): Likewise.
865         (TEMPLATE_TYPE_ORIG_LEVEL): Likewise.
866         (TEMPLATE_TYPE_DECL): Likewise.
867         (TEMPLATE_CONST_IDX): Remove.
868         (TEMPLATE_CONST_LEVEL): Likewise.
869         (TEMPLATE_CONST_SET_INFO): Likewise.
870         (TEMPLATE_TYPE_SET_INFO): Likewise.
871         (TEMPLATE_TYPE_IDX): Redefine in terms of TEMPLATE_PARM_INDEX
872         node.
873         (TEMPLATE_TYPE_LEVEL): Likewise.
874         * decl.c (decls_match): Call comp_template_parms, rather than
875         expanding it inline.
876         (duplicate_decls): If two template declarations are being merged,
877         then their TEMPLATE_INFOs should be merged as well.
878         (grokfndecl): Save template-id information when declaring a friend
879         with explicit template arguments.  Pass arguments to
880         check_explicit_specialization via correct convention; at some
881         point check_explicit_specialization changed, but these call-sites
882         did not.
883         (grokdeclarator): Tidy up slightly.
884         * decl2.c (check_classfn): Tidy up slightly.  Don't assume that
885         two template functions with the same DECL_ASSEMBLER_NAME the same,
886         since the names are not yet mangled.
887         * error.c (dump_decl): Use TEMPLATE_PARM_INDEX instead of
888         TEMPLATE_CONST_PARM. 
889         (dump_expr): Likewise.  Use the TEMPLATE_PARM_DECL to get at the
890         decl for a non-type parameter, rather than printing `<tparm ...>'.
891         * friend.c (is_friend): Handle TEMPLATE_DECL friends.
892         (do_friend): Deal with template friends.
893         * lex.c (do_pending_inlines): Call
894         maybe_begin_member_template_processing, rather than
895         conditionally calling begin_member_template_processing.
896         (process_next_inline): Likewise.  Call
897         maybe_end_member_template_processing, rather than
898         conditionally calling end_member_template_processing.
899         (do_pending_defargs): Likewise.
900         (do_identifier): Use TEMPLATE_PARM_INDEX instead of
901         TEMPLATE_CONST_PARM.  
902         * method.c (build_mangled_template_parm_index): New function.
903         (build_overload_value): Use it.
904         (build_overload_name): Likewise.
905         * pt.c (finish_member_template_decl): Allow friend declarations.
906         (template_class_depth): New function.
907         (is_member_template): Rename, and modify, to become...
908         (is_member_or_friend_template): New function.
909         (end_member_template_processing): Rename, and modify, to become...
910         (maybe_end_member_template_processing).
911         (build_template_parm_index): New function.
912         (reduce_template_parm_level): New function.
913         (process_template_parm): Modify to use build_template_parm_index.
914         (push_template_decl): Deal with friend templates.
915         (uses_template_parms): Use TEMPLATE_PARM_INDEX instead of
916         TEMPLATE_CONST_PARM.
917         (tsubst_friend_function): New function.
918         (instantiate_class_template): Generate the DECL_FRIENDLIST
919         for a new instantiation by using tsubst_friend_function rather
920         than just tsubst.
921         (tsubst): Don't tsubst into a type which is a TEMPLATE_DECL.
922         Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM, and the
923         appropriate new macros.  Use reduce_template_parm_level to
924         generate lower-level template parameters.  Handle tsubst'ing into
925         TEMPLATE_DECLS that declare TEMPLATE_TEMPLATE_PARMS.  Don't forget
926         to tsubst the DECL_CONTEXT and DECL_CLASS_CONTEXT of newly created
927         templates.  Similarly for the template parameters for a new
928         template.
929         (tsubst_copy): Tidy up slightly.  Use TEMPLATE_PARM_INDEX instead
930         of TEMPLATE_CONST_PARM.  Handle TYPE_DECLs by tsubsting into them.
931         (unify): Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM.  
932         (get_bindings): Call add_to_template_args if necessary.
933         (instantiate_decl): Handle instantiations of friend templates.
934         * search.c (lookup_field_1): Don't treat the TYPE_FIELDS of a
935         TEMPLATE_TYPE_PARM as a list of fields; it's not!
936         * spew.c (yylex): Do a little manual constant propogation to
937         clarify the code.
938         
939 Sun Feb 22 19:53:29 1998  Jeffrey A Law  (law@cygnus.com)
940
941         * error.c: Include sys/types.h.
942
943 Thu Feb 19 14:49:09 1998  Jeffrey A Law  (law@cygnus.com)
944
945         * method.c (build_mangled_name): Start CPP directives in column zero.
946
947 Thu Feb 19 10:36:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
948
949         * typeck2.c (process_init_constructor): Sorry about non-trivial
950         labeled initializers.
951         * parse.y (initlist): Reenable labeled initializers.
952
953 Thu Feb 19 10:15:55 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
954
955         * pt.c (coerce_template_parms) Add a new parameter, is_tmpl_parm,
956         all callers changed.  Rely on the new parameter instead of arg 
957         being a TREE_LIST when determine whether we are working inside
958         template template parameter.  Clean up is_type test.
959         
960 Thu Feb 19 10:04:12 1998  Jason Merrill  <jason@yorick.cygnus.com>
961
962         * cvt.c (cp_convert_to_pointer): Preserve TREE_CONSTANT.
963         * typeck2.c (initializer_constant_valid_p): Allow conversions
964         between pointers and refrerences.
965
966 1998-02-19  Brendan Kehoe  <brendan@cygnus.com>
967
968         * typeck.c (build_unary_op): Only warn about incr/decr a pointer
969         if pedantic || warn_pointer_arith.
970
971 Thu Feb 19 09:37:21 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
972
973         * pt.c (unify): Handle TEMPLATE_DECL.
974
975 1998-02-18  Brendan Kehoe  <brendan@cygnus.com>
976
977         * cp-tree.h (strip_attrs): Remove decl.
978
979 1998-02-18  Doug Evans  <devans@cygnus.com>
980
981         * decl.c (duplicate_decls): Call merge_machine_decl_attributes.
982         Update olddecl's attributes too.
983         (strip_attrs): Remove function.
984         * typeck.c (common_type): Call merge_machine_type_attributes.
985
986 Tue Feb 17 14:07:52 1998  Mark Mitchell  <mmitchell@usa.net>
987
988         * parse.y (initdcl0_innards): New grammar symbol.
989         (nomods_initdecls, nomods_initdcl0): Change type from itype to
990         none, since the resulting value is never used.
991         (parse_decl): New function.
992         (datadef): Remove redundant actions.
993         (initdcl0, notype_initdcl0, nomods_initdcl0): Use initdcl0_innards.
994         * parse.c: Regenerated.
995         
996 Tue Feb 17 11:54:16 1998  Jason Merrill  <jason@yorick.cygnus.com>
997
998         * parse.y (simple_stmt): Use getdecls() to check for decl.
999
1000 Sat Feb 14 11:50:51 1998  Manfred Hollstein  <manfred@s-direktnet.de>
1001
1002         * Make-lang.in (DEMANGLER_INSTALL_NAME, DEMANGLER_CROSS_NAME): New 
1003         macros.
1004         (c++.install-common): Install c++filt properly as native or as cross
1005         variant.
1006         (c++.uninstall): Add c++filt.
1007
1008 Fri Feb 13 14:55:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
1009
1010         * call.c (standard_conversion): Fix multi-level ptr conversions.
1011
1012 Fri Feb 13 14:06:22 1998  Mike Stump  <mrs@wrs.com>
1013
1014         * init.c (build_new): Propagate error_mark_node up.
1015
1016 Fri Feb 13 13:24:32 1998  Jason Merrill  <jason@yorick.cygnus.com>
1017
1018         * parse.y (simple_stmt): If the condition isn't a declaration, 
1019         start the controlled block after the test.
1020
1021 Fri Feb 13 02:26:10 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
1022
1023         * call.c (build_over_call): Convert builtin abs, labs and fabs to
1024         tree-codes.
1025         * decl.c (init_decl_processing): Reenable abs, labs and fabs as
1026         builtins.
1027
1028 Fri Feb 13 01:36:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
1029
1030         * call.c (standard_conversion): A BASE_CONV replaces an RVALUE_CONV.
1031
1032 Fri Feb 13 00:21:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
1033
1034         * cp-tree.h: Add access_protected_virtual_node.
1035         * class.c (init_class_processing): Initialize it.
1036         * decl.c (xref_basetypes): Use it.
1037         * parse.y (base_class_access_list): Likewise.
1038
1039         * Make-lang.in (DEMANGLER_PROG): Add $(exeext).
1040         (c++.install-common): Install c++filt.
1041
1042 Thu Feb 12 12:46:51 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
1043
1044         * decl.c (shadow_tag): Give error for typedef-ing built-in types.
1045
1046 Wed Feb 11 23:28:05 1998  Mark Mitchell  <mmitchell@usa.net>
1047
1048         * call.c (reference_binding): Use comptypes when comparing
1049         TYPE_MAIN_VARIANTS to handle non-canonical array/index types.
1050
1051 Wed Feb 11 16:42:04 1998  Mark Mitchell  <mmitchell@usa.net>
1052
1053         * tree.c (is_overloaded_fn): Use really_overloaded_fn.
1054         (really_overloaded_fn): Move check here from is_overloaded_fn. 
1055         (get_first_fn): Use really_overloaded_fn and is_overloaded_fn.
1056
1057 Wed Feb 11 15:54:18 1998  Mark Mitchell  <mmitchell@usa.net>
1058
1059         * typeck.c (build_ptrmemfunc): Type-check pointer-to-member
1060         conversions.
1061
1062 Mon Feb  9 22:23:31 1998  Mark Mitchell  <mmitchell@usa.net>
1063
1064         * cp-tree.h (push_template_decl): Return the decl passed in, or an
1065         equivalent duplicate.
1066         * decl.c (pushtag): Use the return value from push_template_decl.
1067         (duplicate_decls): When duplicating a template declaration, merge
1068         the DECL_TEMPLATE_RESULTs as well.
1069         (make_implicit_typename): Don't try to dive into typename types to
1070         find a context for making a new implicit typename.
1071         (start_decl): Use the return value from push_template_decl.
1072         (grokdeclarator): Complain about declarations list `const operator
1073         int'.  Since we don't correctly handle in-class initializations of
1074         non-static data members, complain about this (now illegal)
1075         practice.  Issue an error for initializations of non-const statics
1076         since that is illegal as well, and since we don't handle that case
1077         correctly either.
1078         (start_function): Use the return value from push_template_decl.
1079         (start_method): Likewise.
1080         * decl2.c (grokfield): Likewise.  Since the change to
1081         grokdeclarator ensures that all initialized fields are in fact
1082         static, remove a redundant test for TREE_PUBLIC.
1083         * parse.y (initlist): Disable labeled initializers since they do
1084         not work as per the documentation, and since they do not use the
1085         same syntax as the C front end.
1086         * pt.c (push_template_decl): Return the decl passed in, or an
1087         equivalent duplicate.
1088         (lookup_template_class): When searching in a nested context,
1089         use the right arguments.
1090         (uses_template_parms): Handle the DECL_INITIAL for a CONST_DECL.
1091         * typeck.c (build_component_ref): Assign the correct type to the
1092         result of build_vfn_ref.
1093         
1094 Tue Feb 10 23:56:46 1998  Jason Merrill  <jason@yorick.cygnus.com>
1095
1096         * pt.c (convert_nontype_argument): Fix typo.
1097         (check_explicit_specialization): Allow old-style specialization
1098         of class template members.
1099
1100 Tue Feb 10 20:36:52 1998  Jason Merrill  <jason@yorick.cygnus.com>
1101                           Manfred Hollstein  <manfred@s-direktnet.de>
1102
1103         * decl.c (grokdeclarator): Use DECL_USE_TEMPLATE instead
1104         when deciding to override DECL_ASSEMBLER_NAME.
1105
1106 Tue Feb 10 15:30:55 EST 1998 Andrew MacLeod <amacleod@torpedo.to.cygnus.com>
1107
1108         * decl2.c (lang_f_options): Add -fsquangle to option processing list.
1109         * cp-tree.h (flag_do_squangling): Add declaration.
1110         * lang-options.h: Add -fsquangle and -fno-squangle.
1111         * method.c: Add macros and static variables for squangling.
1112         (build_overload_name): Rename to build_mangled_name, add logic for B 
1113         compression, and split into process_modifiers and 
1114         process_overload_item.
1115         (process_modifiers): New function, to handle constant, reference, 
1116         and pointer types. 
1117         (process_overload_item): New function, handles issue of type codes.
1118         (build_overload_name): New function, start squangling and call 
1119         build_mangled_name.
1120         (ALLOCATE_TYPEVEC, DEALLOCATE_TYPEVEC): Remove macro and expand inline.
1121         (start_squangling): New function to initialize squangling structs.
1122         (end_squangling): New function to destroy squangling structs.
1123         (nrepeats): Rename variable to Nrepeats.
1124         (issue_nrepeats): New function for issuing 'n' type repeats.
1125         (check_ktype): New function to check for type K name compression.
1126         (build_overload_nested_name): Add a check for K name compression.
1127         (build_qualified_name): Add a check for K name compression and don't
1128         use DECL_ASSEMBLER_NAME when squangling is on.
1129         (check_btype): New function, checks for B type compression.
1130         (build_static_name, build_decl_overload_real): Initiate squangling.
1131         (build_typename_overload, build_overload_with_type): Initiate 
1132         squangling
1133
1134 Sun Feb  8 23:47:38 1998  scott snyder  <sss@d0linux01.fnal.gov>
1135
1136         * method.c (make_thunk): Avoid name buffer overflow.
1137
1138 Sat Feb  7 16:48:54 1998  Jason Merrill  <jason@yorick.cygnus.com>
1139
1140         * pt.c (instantiate_decl): Call cp_finish_decl for vars even if we
1141         don't define them yet.
1142
1143         * parse.y (nomods_initdcl0): Add constructor_declarator case.
1144
1145 Fri Feb  6 21:32:25 1998  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1146
1147         * config-lang.in (diff_excludes): Use basename only.
1148
1149 Thu Feb  5 19:10:40 1998  Jason Merrill  <jason@yorick.cygnus.com>
1150
1151         * tinfo2.cc: Add tinfo for signed char.
1152
1153 Thu Feb  5 14:38:23 1998  Mike Stump  <mrs@wrs.com>
1154
1155         * search.c (compute_access): Handle protected constructors in derived
1156         classes as accessible.
1157
1158 Wed Feb  4 01:26:49 1998  Jason Merrill  <jason@yorick.cygnus.com>
1159
1160         * expr.c (cplus_expand_expr, PCC_STATIC_STRUCT_RETURN code):
1161         Call convert_from_reference sooner.
1162
1163 Tue Feb  3 23:50:52 1998  Mark Mitchell  <mmitchell@usa.net>
1164
1165         * cvt.c (ocp_convert): Obtain the constant values from constant
1166         decls even if the destination type is the same as the type of the
1167         decl. 
1168
1169         * decl2.c (finish_file): Make sure that static inlines with
1170         definitions are not marked DECL_EXTERNAL before returning.
1171
1172 Tue Feb  3 22:43:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
1173
1174         * decl.c: Lose arg_looking_for_template.
1175         (lookup_name_real): Likewise.
1176         * parse.y: Lose processing_template_arg, template_arg1
1177         (primary): Likewise.
1178         * spew.c (yylex): Set lastiddecl for PTYPENAMEs, too.
1179
1180 Tue Feb  3 22:04:01 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
1181
1182         * error.c (dump_decl): Fix type of default arguments for template
1183         template parameters and nontype template parameters.
1184         * parse.y (template_parm): Handle invalid default template 
1185         template arguments here.
1186
1187         * parse.y (template_parm): Use template_arg instead of PTYPENAME 
1188         for default template template argument.
1189         * pt.c (coerce_template_parms): Merge default template argument 
1190         codes.  Can treat RECORD_TYPE as template name if it is implicitly
1191         created.  Fix argument index in error message.
1192         * typeck.c (comptypes): Merge template argument comparison codes in 
1193         TEMPLATE_TEMPLATE_PARM and RECORD_TYPE.
1194
1195 Tue Jan  6 01:42:44 1998  Mumit Khan <khan@xraylith.wisc.edu>
1196
1197         * lex.c (file_name_nondirectory): Also check for '/'.
1198
1199 Mon Feb  2 11:24:22 1998  Mark Mitchell  <mmitchell@usa.net>
1200
1201         * parse.y (primary): Deal with statement-expressions in
1202         templates. 
1203         * pt.c (tsubst_copy): Handle BIND_EXPR.
1204         * tree.c (mapcar): Likewise.
1205
1206         * call.c (add_template_candidate_real): Pass extra parameter to
1207         fn_type_unification. 
1208         * cp-tree.h (fn_type_unification): Add parameter.
1209         * pt.c (fn_type_unification): Add additional parameter to deal with
1210         static member functions.
1211         (get_bindings): Deal with static member functions.
1212
1213         * cp-tree.h (DECL_NONSTATIC_MEMBER_FUNCTION_P): New macro.      
1214         (revert_static_member_fn): Declare.
1215         * decl.c (revert_static_member_fn): Remove declaration.  Change
1216         linkage from internal to external.
1217         (cp_finish_decl): Deal with virtual functions in classes local to
1218         template functions.
1219         * decl2.c (finish_file): Don't forget to emit increment/decrement
1220         expressions in initializers for file-scope variables.
1221         * parse.y (typename_sub2): If the typename doesn't names a
1222         template, rather than a type, issue an error message.
1223         * pt.c (check_explicit_specialization): Handle specializations of
1224         static member functions.
1225         (coerce_template_parms): Handle offset references to lists of
1226         member functions.
1227         * search.c (note_debug_info_needed): Don't crash when handed a
1228         type which is being defined.
1229         * typeck.c (complete_type): Don't crash when handed NULL_TREE;
1230         that can happen with some illegal code.
1231
1232 Mon Feb  2 00:57:38 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1233
1234         * call.c (user_harshness): Initialize `code' to 0.
1235         (build_method_call): Initialize `candidates', `cp' and `len' to 0.
1236         (null_ptr_cst_p): Add parentheses around && within ||.
1237         (standard_conversion): Likewise.
1238         (z_candidate): Likewise.
1239         (build_user_type_conversion_1): Initialize `args' to NULL_TREE.
1240         (build_object_call): Likewise for `mem_args'.
1241         (build_new_op): Likewise for `mem_arglist'.  Add `return' from
1242         default case in enumeration switch.
1243
1244         * class.c (build_vtable_entry): Add explicit braces to avoid
1245         ambiguous `else'.
1246         (build_class_init_list): Likewise.
1247         (finish_struct_1): Initialize `width' to 0.
1248         (instantiate_type): Initialize `name' to NULL_TREE.  Add
1249         explicit braces to avoid ambiguous `else'.
1250
1251         * cvt.c (convert_to_aggr): Add explicit braces to avoid ambiguous
1252         `else'.
1253
1254         * decl.c (grok_reference_init): Eliminate unused parameter, all
1255         callers changed.
1256         (record_builtin_type): Initialize `tdecl' to NULL_TREE.
1257         (init_decl_processing): Initialize `vb_off_identifier' to NULL_TREE.
1258         (cp_finish_decl): Initialize `ttype' to NULL_TREE.
1259         (grokdeclarator): Add parentheses around && within ||.  Add
1260         explicit braces to avoid ambiguous `else'.
1261         (grokparms): Initialize `type' to NULL_TREE.
1262         (xref_tag): Remove unused label `just_return'.
1263         (finish_enum): Initialize `minnode' and `maxnode' to NULL_TREE.
1264         (finish_function): Initialize `cond' and `thenclause' to NULL_TREE.
1265         (hack_incomplete_structures): Add parentheses around assignment
1266         used as truth value.
1267
1268         * decl2.c (coerce_delete_type): Hide definition of `e3'.
1269
1270         * error.c: Include <stdlib.h>.
1271         (dump_expr): Change the type of `i' to size_t.  Remove unused
1272         label `error'. 
1273
1274         * except.c (init_exception_processing): Remove unused variable `d'.
1275         (expand_throw): Likewise for `label'.
1276
1277         * friend.c (add_friends): Add explicit braces to avoid ambiguous
1278         `else'.
1279
1280         * init.c (sort_member_init): Initialize `last_field' to NULL_TREE.
1281         (sort_base_init): Likewise for `binfo'.
1282         (expand_member_init): Likewise for `rval'.
1283         (build_member_call): Add parentheses around assignment used as
1284         truth value.
1285         (build_offset_ref): Add explicit braces to avoid ambiguous `else'.
1286         (build_new): Initialize `nelts' to NULL_TREE.  Initialize
1287         `old_immediate_size_expand' to 0.
1288         (build_new_1): Initialize `nelts' and `alloc_node' to NULL_TREE.
1289         (build_vec_delete_1): Remove unused variable `block'.
1290         (expand_vec_init): Initialize `itype' to NULL_TREE.
1291
1292         * lex.c: Include <strings.h> if we don't have <string.h>.  Protect
1293         declaration of `index' and `rindex' with autoconf macros.
1294         (reinit_parse_for_expr): Remove unused variables
1295         `look_for_semicolon' and `look_for_lbrac'.
1296         (cons_up_default_function): Initialize `args' to NULL_TREE.
1297         (readescape): Initialize `firstdig' to 0.
1298         (real_yylex): Add parentheses around assignment used as truth value. 
1299
1300         * method.c: Include <strings.h> if we don't have <string.h>.
1301         Protect declaration of `index' with autoconf macro.
1302
1303         * parse.y (primary): Add explicit braces to avoid ambiguous `else'.
1304         Initialize `type' to NULL_TREE.
1305         (structsp): Remove unused variable `id'.
1306
1307         * pt.c (coerce_template_parms): Add explicit braces to avoid
1308         ambiguous `else'.
1309         (lookup_template_class): Initialize `template' to NULL_TREE.
1310         (instantiate_class_template): Remove unused variable `name' and `e'.
1311         (tsubst): Likewise for `i'.  Initialize `last' to NULL_TREE.
1312         (do_poplevel): Initialize `saved_warn_unused' to 0.
1313         (type_unification): Remove unused varable `parm'.
1314         (unify): Likewise for `j'.
1315
1316         * repo.c (init_repo): Add parentheses around assignment used as
1317         truth value.
1318         (finish_repo): Remove unused varable `p'.
1319         
1320         * search.c (get_binfo): Initiize `type' to NULL_TREE.
1321         (get_base_distance): Likewise.
1322         (lookup_field): Initialize `rval_binfo_h', `type', `basetype_path'
1323         and `new_v' to NULL_TREE.
1324         (lookup_fnfields): Likewise for `rval_binfo_h'.
1325         (breadth_first_search): Add parentheses around assignment used as
1326         truth value.
1327         (get_template_base): Initialize `type' to NULL_TREE.
1328
1329         * sig.c (append_signature_fields): Initialize `last_mfptr' to
1330         NULL_TREE.
1331         (build_signature_table_constructor): Likewise for
1332         `last_rhs_field', `pfn' and `vt_off'.
1333         (build_sigtable): Likewise for `init'.
1334
1335         * tree.c (break_out_calls): Initialize `t2' to NULL_TREE.
1336         (propagate_binfo_offsets): Likewise for `delta'.
1337         (hash_tree_cons): Initialize hashcode to 0.
1338         (can_free): Likewise for `size'.
1339         (cp_tree_equal): Add explicit braces to avoid ambiguous `else'.
1340         
1341         * typeck.c (convert_sequence): Hide prototype.
1342         (common_type): Add explicit braces to avoid ambiguous `else'.
1343         (comp_target_types): Likewise.
1344         (build_x_function_call): Initialize `ctypeptr' to NULL_TREE.
1345         (build_function_call_real): Add explicit braces to avoid ambiguous
1346         `else'.
1347         (convert_arguments): Initialize `called_thing' to 0.
1348         (convert_for_initialization): Initialize `savew' and `savee' to 0.
1349
1350         * typeck2.c (incomplete_type_error): Initialize `errmsg' to 0.
1351         (digest_init): Initialize `old_tail_contents' to NULL_TREE.
1352         (build_x_arrow): Likewise for `last_rval'.
1353
1354         * xref.c (GNU_xref_decl): Initialize `cls' to 0.
1355
1356 Sun Feb  1 12:45:34 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
1357
1358         * decl.c (init_decl_processing): Use set_sizetype.
1359         * decl2.c (sizetype): Don't declare.
1360         * typeck.c (c_sizeof): Convert result of *_DIV_EXPR to sizetype.
1361         (c_sizeof_nowarn, build_binary_op_nodefault): Likewise.
1362         (build_component_addr, unary_complex_lvalue): Likewise.
1363         * rtti.c (expand_class_desc): Likewise.
1364         * class.c (get_vfield_offset): Likewise.
1365
1366 Thu Jan 29 10:39:30 1998  Mark Mitchell  <mmitchell@usa.net>
1367
1368         * pt.c (convert_nontype_argument): Move check for is_overloaded_fn
1369         early to avoid bogus error.  Handle overloaded function
1370         names provided as template arguments correctly.
1371         (coerce_template_parms): Don't mishandle overloaded functions when
1372         dealing with template template parameters.
1373         (lookup_template_class): Issue an error message, rather than
1374         crashing, when the TYPE_DECL provided is not a template type.
1375
1376 Wed Jan 28 23:14:44 1998  Jason Merrill  <jason@yorick.cygnus.com>
1377
1378         * class.c (instantiate_type): Don't just return a known type if
1379         it's wrong.
1380
1381 Wed Jan 28 11:04:07 1998  Mark Mitchell  <mmitchell@usa.net>
1382
1383         * class.c (instantiate_type): Remove handling of FUNCTION_DECL
1384         since that code could never be reached.
1385         
1386         * error.c (dump_decl): Avoid aborting in the midst of printing an
1387         error message about an illegal template declaration.
1388
1389         * parse.y (structsp): Print an error message, rather than crashing,
1390         when a class-head does not name a class.
1391
1392         * pt.c (convert_nontype_argument):  Allow REAL_TYPE and COMPLEX_TYPE
1393         template arguments as a g++ extension.
1394         
1395         * cp-tree.def (ALIGNOF_EXPR): New tree code.
1396         * decl2.c (grok_alignof): If processing_template_decl, just store
1397         the expression.
1398         * typeck.c (c_alignof): Likewise.
1399         * decl2.c (build_expr_from_tree): Handle ALIGNOF_EXPR.
1400         * error.c (dump_expr): Likewise.
1401         * pt.c (tsubst_copy): Likewise.
1402         * tree.c (cp_tree_equal): Likewise.
1403         * pt.c (uses_template_parms): Correctly determine whether or not a
1404         SIZEOF_EXPR/ALIGNOF_EXPR uses template parameters so that constant
1405         folding can be done.
1406         
1407         * cp-tree.h (grok_enum_decls): Remove type parameter.
1408         * decl.c (grok_enum_decls): Likewise.
1409         * decl2.c (grok_x_components): Call grok_enum_decls
1410         unconditionally, since it will do nothing if there is no
1411         current_local_enum.  Use the new calling sequence.
1412         * pt.c (tsubst_enum): Use the new calling sequence for
1413         grok_enum_decls.
1414
1415         * decl.c (start_function): Make member functions of local classes
1416         in extern inline functions have comdat linkage here...
1417         (grokdeclarator): Rather than here.
1418         
1419 Wed Jan 28 10:55:47 1998  Jason Merrill  <jason@yorick.cygnus.com>
1420
1421         * pt.c (convert_nontype_argument): Use decl_constant_value.
1422
1423 Tue Jan 27 16:42:21 1998  Mark Mitchell  <mmitchell@usa.net>
1424
1425         * call.c (add_template_candidate_real): New function.
1426         (add_template_candidate): Use it.
1427         (add_template_conv_candidate): Likewise.
1428         (joust): Pass extra argument to more_specialized.
1429         * class.c (instantiate_type): Handle a single FUNCTION_DECL.
1430         (is_local_class): Remove.
1431         (finish_struct): Check TI_PENDING_SPECIALIZATION_FLAG.
1432         * cp-tree.h (is_local_class): Remove.
1433         (perform_array_to_pointer_conversion): Likewise.
1434         (finish_member_template_decl): Add.
1435         (check_explicit_specialization): Return a tree, not an int.
1436         (more_specialized): Take additional argument.
1437         (get_bindings): Likewise.
1438         (TI_PENDING_SPECIALIZATION_FLAG): New macro.
1439         * cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.
1440         (perform_array_to_pointer_conversion): Remove.
1441         * decl.c (saved_scope): Add processing_specialization,
1442         processing_explicit_instantiation fields.
1443         (maybe_push_to_top_level): Save them.
1444         (pop_from_top_level): Restore them.
1445         (grokfndecl): Use new return value from
1446         check_explicit_specialization. 
1447         (start_decl): Don't check flag_guiding_decls before pushing
1448         decls. 
1449         (cp_finish_decl): Remove previous (bogus) change.
1450         (grok_declarator): Use decl_function_context rather than
1451         is_local_class. 
1452         * decl2.c (finish_file): Pass extra argument to get_bindings.
1453         (build_expr_from_tree): Let build_x_component_ref check 
1454         validity of arguments rather than doing it here.
1455         * lex.c (cons_up_default_function): Remove code fooling with
1456         processing_specialization, processing_explicit_instantiation
1457         flags, as that is now done in {maybe_push_top,pop_from}_top_level. 
1458         * method.c (build_overload_identifier): Mangle local classes in
1459         template functions correctly.
1460         * parse.y (finish_member_template_decl): Move to pt.c.
1461         * pt.c (finish_member_template_decl): Moved here from parse.y.
1462         (print_candidates): New function.
1463         (determine_specialization): Change interface.  Properly look for
1464         most specialized versions of template candidates.
1465         (check_explicit_specialization): Fully process explicit
1466         instantiations. 
1467         (push_template_decl): Avoid looking at CLASSTYPE fields in
1468         FUNCTION_DECLS. 
1469         (determine_overloaded_function): Remove.
1470         (convert_nontype_argument): Change name from
1471         convert_nontype_parameter.  Use determine_overloaded_function
1472         instead of instantiate_type.
1473         (mangle_class_name_for_template): Handle type contexts as well as
1474         function contexts.
1475         (classtype_mangled_name): Likewise.
1476         (lookup_template_class): Likewise.
1477         (tsubst): Likewise.
1478         (more_specialized): Take explict template arguments as a
1479         parameter. 
1480         (most_specialized): Likewise.
1481         (get_bindings): Likewise.  Check that return types match before
1482         proclaiming a function a match.
1483         (do_decl_instantiation): Remove code searching for function to
1484         instantiate; that is now done in check_explicit_specialization.
1485         (add_maybe_template): Pass extra argument to get_bindings.
1486         * tree.c (really_overloaded_fn): Use is_overloaded_fn to simplify
1487         implementation.
1488         * typeck.c (build_component_ref): Check for invalid arguments.
1489
1490 Tue Jan 27 01:44:02 1998  Jason Merrill  <jason@yorick.cygnus.com>
1491
1492         * expr.c (cplus_expand_expr, AGGR_INIT_EXPR): Don't check that 
1493         return_target and call_target are equivalent.
1494
1495         * pt.c (type_unification_real): Just accept function parms that
1496         don't use any template parms.
1497
1498 Sun Jan 25 03:30:00 1998  Jason Merrill  <jason@yorick.cygnus.com>
1499
1500         * decl.c (cp_finish_decl): When bailing on a comdat variable, also
1501         unset DECL_NOT_REALLY_EXTERN.
1502
1503         * parse.y (typename_sub*): Fix std::.
1504
1505 Sat Jan 24 12:13:54 1998  Jason Merrill  <jason@yorick.cygnus.com>
1506
1507         * error.c (dump_decl): Fix type default template args.
1508         (dump_type): Hand TEMPLATE_DECL off to dump_decl.
1509
1510 Fri Jan 23 18:34:37 1998  Mumit Khan <khan@xraylith.wisc.edu>
1511
1512         * lex.c (DIR_SEPARATOR): Define to be '/' if not already defined.
1513         (file_name_nondirectory): Use.
1514
1515 Wed Jan 21 10:29:57 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
1516
1517         * pt.c (coerce_template_parms): Don't access elements of ARGLIST
1518         that are not really present.  Substitute default arguments in 
1519         template template arguments.  Correctly convert TEMPLATE_DECL to 
1520         TEMPLATE_TEMPLATE_PARM.
1521         (comp_template_args): TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM 
1522         are no longer treated specially here.
1523         * parse.y (template_template_parm): Fix copy error.
1524         * decl.c (grokdeclarator): Warn about missing `typename' for nested
1525         type created from template template parameters.
1526         * parse.y (bad_parm): Likewise
1527
1528         * class.c (finish_struct): Handle TEMPLATE_TEMPLATE_PARM.
1529         (push_nested_class): Likewise.
1530         * cp-tree.def (TEMPLATE_TEMPLATE_PARM): New tree code.
1531         * cp-tree.h (DECL_TEMPLATE_TEMPLATE_PARM_P): New macro.
1532         (copy_template_template_parm): Declare.
1533         * decl.c (arg_looking_for_template): New variable.
1534         (lookup_name_real): Handle TEMPLATE_TEMPLATE_PARM.
1535         Try to return TEMPLATE_DECL or TEMPLATE_TEMPLATE_PARM
1536         node if arg_looking_for_template is nonzero.
1537         (pushdecl): Handle TEMPLATE_TEMPLATE_PARM.
1538         (grok_op_properties, xref_tag, xref_basetypes): Likewise.
1539         (grokdeclarator): Handle TEMPLATE_DECL.
1540         * decl2.c (constructor_name_full): Handle TEMPLATE_TEMPLATE_PARM.
1541         * error.c (dump_type): Add TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM.
1542         (dump_type_prefix, dump_type_suffix) Handle TEMPLATE_TEMPLATE_PARM.
1543         (dump_decl): Handle unnamed template type parameters.
1544         Handle template template parameters.
1545         (dump_function_name): Handle template template parameters.
1546         * init.c (is_aggr_typedef, is_aggr_type, get_aggr_from_typedef): 
1547         Handle TEMPLATE_TEMPLATE_PARM.
1548         * method.c (build_template_template_parm_names): New function.
1549         (build_template_parm_names): Handle TEMPLATE_DECL.
1550         (build_overload_nested_name, build_overload_name): 
1551         Handle TEMPLATE_TEMPLATE_PARM.
1552         * parse.y (maybe_identifier): New nonterminal.
1553         (template_type_parm): Use it.
1554         (template_template_parm, template_arg1): New nonterminal.
1555         (template_parm): Add template_template_parm rules.
1556         (template_arg): Set processing_template_arg.
1557         (template_arg1): Rules moved from template_arg.
1558         (primary, nonnested_type): Set arg_looking_for_template if we are
1559         processing template arguments.
1560         * pt.c (begin_member_template_processing): Handle TEMPLATE_DECL.
1561         (process_template_parm): Handle template template parameters.
1562         (coerce_template_parms, comp_template_args): Likewise.
1563         (mangle_class_name_for_template, lookup_template_class): Likewise.
1564         (uses_template_parms): Handle TEMPLATE_DECL and 
1565         TEMPLATE_TEMPLATE_PARM.
1566         (current_template_args): Handle TEMPLATE_DECL.
1567         (tsubst, tsubst_copy, unify): Handle TEMPLATE_TEMPLATE_PARM.
1568         * search.c (dfs_walk, dfs_record_inheritance): 
1569         Handle TEMPLATE_TEMPLATE_PARM.
1570         * tree.c (copy_template_template_parm): New function.
1571         (mapcar): Handle TEMPLATE_TEMPLATE_PARM.
1572         * typeck.c (comptypes): Handle TEMPLATE_TEMPLATE_PARM.
1573
1574 Mon Jan 19 22:40:03 1998  Mark Mitchell  <mmitchell@usa.net>
1575
1576         * decl.c (start_decl): Don't allow duplicate definitions of static
1577         data members.
1578
1579         * call.c (build_user_type_conversion_1): Handle user-defined
1580         template conversion operators correctly.
1581
1582         * decl2.c (build_expr_from_tree): Issue an error message if the
1583         object in a COMPONENT_REF is a TEMPLATE_DECL.
1584         
1585         * typeck.c (incomplete_type_error): Handle TEMPLATE_TYPE_PARMs.
1586         
1587         * class.c (is_local_class): New function.
1588         * cp-tree.h (is_local_class): Declare it.
1589         (last_tree): Likewise.
1590         (begin_tree): Likewise.
1591         (end_tree): Likewise.
1592         (lookup_template_class): Change prototype.
1593         * decl.c (cp_finish_decl): Check for NULL where necesary.
1594         Consider FUNCTION_DECLS to declare objects with top-level binding,
1595         when calling make_decl_rtl.
1596         (grokdeclarator): Give members of local classes internal linkage.
1597         (start_function): Remove declaration of last_tree.
1598         (finish_function): Set flag_keep_inline_functions around call to
1599         rest_of_compilation if we are processing a member function in a
1600         local class.
1601         (start_method): Call push_template_decl for member functions of
1602         local classes in template functions.
1603         * decl2.c (import_export_decl): Don't give external linkage to
1604         instantiations of templates with internal linkage.
1605         * parse.y (last_tree): Remove declaration.
1606         (template_type): Pass extra parameter to lookup_template_class.
1607         (self_template_type): Likewise.
1608         (structsp): Move call to reset_specialization into left_curly.
1609         (left_curly): Call reset_specialization, and begin_tree.
1610         * pt.c (saved_trees): New variable.
1611         (mangle_class_name_for_template): Change prototype.  Use
1612         additional function context to name local classes in templates
1613         correctly. 
1614         (classtype_mangled_name): Pass the context.
1615         (push_template_decl): Handle local classes and templates, and
1616         member functions for such classes.
1617         (convert_nontype_parameter): Fix handling of pointer-to-member
1618         constants. 
1619         (lookup_template_class): Handle local classes in templates.
1620         (tsubst): Likewise.  Don't assume that template instantiations
1621         have external linkage; pay attention to the template declaration. 
1622         (mark_decl_instantiated): Likewise.
1623         (begin_tree): New function.
1624         (end_tree): Likewise.
1625         
1626         * decl.c (xref_basetypes): Don't call complete_type for basetypes
1627         that involve template parameters; that can lead to infinite
1628         recursion unnecessarily.
1629
1630         * pt.c (register_specialization): Do not register specializations
1631         that aren't ready to be registered yet.
1632         (check_explicit_specialization): Handle explicit specialization of
1633         constructors and destructors.
1634         (build_template_decl): New function.
1635         (push_template_delc): Handle out-of-class specializations of
1636         member templates.
1637         
1638         * pt.c (check_explicit_specialization): Set up the template
1639         information before registering the specialization.
1640         (coerce_template_parms): Fix thinko.
1641         (tsubst): Handle specializations of member templates correctly.
1642
1643         * class.c (finish_struct_methods): Remove calls to
1644         check_explicit_specialization from here.
1645         (finish_struct): And insert them here.
1646         * cp-tree.h (perform_qualification_conversions): New function.
1647         (perform_array_to_pointer_conversion): Likewise.
1648         (begin_explicit_instantiation): Likewise.
1649         (end_explicit_instantiation): Likewise.
1650         (determine_specialization): Renamed from
1651         determine_explicit_specialization. 
1652         (comp_template_parms): New function.
1653         (processing_explicit_instantiation): New variable.
1654         * cvt.c (perform_qualification_conversions): New function.
1655         (perform_array_to_pointer_conversion): Likewise.
1656         * decl.c (duplicate_decls): Don't consider template functions
1657         alike unless they have the same parameters.  Refine handling of
1658         instantiation/specialization mismatches.
1659         (start_decl): Don't call pushdecl for template specializations,
1660         since they don't affect overloading.
1661         (start_function): Likewise
1662         (grokfndecl): Call check_explicit_specialization a little later.
1663         Don't call duplicate_decls for memberm template specializations.
1664         (grokdeclarator): Don't update template_count for classes that are
1665         themselves specializations.  Remove use of `2' as parameter to
1666         grokfndecl since that value isn't used.
1667         * lex.c (cons_up_default_function): Save and restore
1668         processing_explicit_instantiation around calls to grokfield.
1669         * parse.y (finish_member_template_decl): New function.
1670         (component_decl_1): Use it.
1671         (fn.def2): Likewise.
1672         (template_arg_list_opt): New nonterminal.       
1673         (template_type): Use it.
1674         (self_template_type): Likewise.
1675         (template_id): Likewise.
1676         (object_template_id): Likewise.
1677         (notype_template_declarator): Likwise.
1678         (begin_explicit_instantiation): Likewise.
1679         (end_explicit_instantiation): Likewise.
1680         (explicit_instantiation): Use them.
1681         * pt.c (coerce_template_parms): Add parameters.
1682         (processing_explicit_instantiation): New variable.
1683         (convert_nontype_parameter): New function.
1684         (determine_overloaded_function): Likewise.
1685         (begin_explicit_instantiation): Likewise.
1686         (end_explicit_instantiation): Likewise.
1687         (retrieve_specialization): Likewise.
1688         (register_specialization): Likewise.
1689         (processing_explicit_specialization): Removed.
1690         (determine_specialization): Handle specializations of member
1691         functions of template class instantiations.
1692         (check_explicit_specialization): Refine to conform to standard.
1693         (comp_template_parms): New function.
1694         (coerce_template_parms): Call convert_nontype_parameter.
1695         (tsubst): Refine handling of member templates.  Use
1696         register_specialization. 
1697         (instantiate_template): Use retrieve_specialization.
1698         (do_decl_instantiation): Likewise.
1699         (instantiate_decl): Likewise.
1700         (type_unification): Improve handling of explict template
1701         arguments. 
1702         * tree.c (mapcar): Return error_mark_node, rather than aborting,
1703         on VAR_DECLS, FUNCTION_DECLS, and CONST_DECLS.
1704         * typeck.c (build_unary_op): Call determine_specialization, rather
1705         than determine_explicit_specialization.
1706
1707 Mon Jan 19 13:18:51 1998  Jason Merrill  <jason@yorick.cygnus.com>
1708
1709         * cvt.c (build_up_reference): A TARGET_EXPR has side effects.
1710
1711 Fri Jan 16 11:40:50 1998  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
1712
1713         * error.c (dump_decl): For enum tags, output the tag, not its value.
1714
1715 1998-01-13  Brendan Kehoe  <brendan@cygnus.com>
1716
1717         * decl.c (init_decl_processing): Only call init_rtti_processing
1718         FLAG_RTTI is set.
1719
1720 Mon Jan 12 01:35:18 1998  Jason Merrill  <jason@yorick.cygnus.com>
1721
1722         * init.c (build_new_1): Split out from build_new.
1723         (build_new): Just return a NEW_EXPR.
1724         * expr.c (cplus_expand_expr): Handle NEW_EXPR.
1725
1726         * decl2.c (get_temp_regvar): Tweak.
1727
1728         * cp-tree.h (TREE_CALLS_NEW): Comment out.
1729         * class.c (resolves_to_fixed_type_p): Remove use.
1730         * method.c (build_opfncall): Likewise.
1731         * call.c (build_new_op): Likewise.
1732
1733 Wed Jan  7 23:47:13 1998  Jason Merrill  <jason@yorick.cygnus.com>
1734
1735         * exception.cc (__eh_alloc, __eh_free): New fns.
1736         (__cp_push_exception, __cp_pop_exception): Use them.
1737         (__uncatch_exception): Call terminate here if no exception.
1738         * except.c (build_terminate_handler): New fn.
1739         (expand_start_catch_block): Use it.
1740         (expand_exception_blocks): Likewise.
1741         (alloc_eh_object): New fn.
1742         (expand_throw): Use it.  Protect exception init with terminate.
1743         * typeck.c (build_modify_expr): Remove code that ignores trivial 
1744         methods.
1745
1746 Mon Dec 22 11:36:27 1997  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1747  
1748         * call.c (add_builtin_candidate): Add default case in enumeration
1749         switch.
1750         (build_new_op): Likewise.
1751         (convert_like): Likewise.
1752         * cvt.c (build_expr_type_conversion): Likewise.
1753         * tree.c (real_lvalue_p): Likewise.
1754         (lvalue_p): Likewise.
1755         (cp_tree_equal): Likewise.
1756         * typeck.c (comptypes): Likewise.
1757         (build_component_ref): Likewise.
1758         (build_function_call_real): Likewise.
1759         (build_binary_op_nodefault): Likewise.
1760         (build_unary_op): Likewise.
1761         (build_modify_expr): Likewise.
1762         * typeck2.c (initializer_constant_valid_p): Likewise.
1763
1764 Sun Dec 21 15:59:00 1997  Nick Clifton  <nickc@cygnus.com>
1765
1766         * decl2.c (lang_decode_option): Add support for -Wunknown-pragmas.
1767
1768 Thu Dec 18 14:51:50 1997  Mark Mitchell  <mmitchell@usa.net>
1769
1770         * pt.c (coerce_template_parms): Make sure to digest_init if
1771         possible.
1772
1773         * decl.c (duplicate_decls): Make the newdecl virtual if the
1774         olddecl was, just as is done with other attributes of olddecl.
1775
1776 Thu Dec 18 14:43:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
1777
1778         * typeck.c (unary_complex_lvalue): Ignore op0 when taking the 
1779         address of an OFFSET_REF.
1780
1781         * cp-tree.def: Add AGGR_INIT_EXPR.
1782         * error.c, tree.c, typeck.c: Replace uses of NEW_EXPR with
1783         AGGR_INIT_EXPR where appropriate.
1784         * expr.c (cplus_expand_expr): Likewise.  Simplify.
1785
1786         * decl2.c (finish_file): Remove call to register_exception_table.
1787
1788 Wed Dec 17 17:08:52 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
1789
1790         * pt.c (instantiate_class_template): Don't do injection when
1791         processing_template_decl is true, as pollutes current_binding_level 
1792         for base classes.
1793
1794 Wed Dec 17 21:17:39 1997  Peter Schmid <schmid@ltoi.iap.physik.tu-darmstadt.de>
1795
1796         * pt.c (maybe_fold_nontype_arg): Add prototype.
1797
1798 Tue Dec 16 10:31:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
1799
1800         * tree.c (mapcar): Handle TRY_CATCH_EXPR et al.
1801         * error.c (dump_expr): Likewise.
1802
1803 Mon Dec 15 12:22:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
1804
1805         * typeck.c (build_function_call_real): Remove "inline called before
1806         definition" pedwarn.
1807
1808         * pt.c (coerce_template_parms): Use maybe_fold_nontype_arg.
1809
1810 Sun Dec 14 22:34:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
1811
1812         * cvt.c (cp_convert_to_pointer): Fix base conversion of pm's.
1813
1814         * pt.c (type_unification_real): Change __null to type void* with 
1815         a warning.
1816
1817 Sun Dec 14 20:38:35 1997  Mark Mitchell  <mmitchell@usa.net>
1818
1819         * call.c (implicit_conversion): Don't call
1820         build_user_type_conversion_1 with a NULL expr, since it will
1821         crash. 
1822
1823         * pt.c (unify): Don't try to unify array bounds if either array is
1824         unbounded.
1825
1826 Fri Dec 12 16:09:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
1827
1828         * errfn.c (cp_pedwarn, cp_pedwarn_at, cp_error_at, cp_warning_at): 
1829         Replace extern decls with casts.
1830
1831         * decl.c (expand_start_early_try_stmts): Don't mess with a sequence.
1832         Update last_parm_cleanup_insn.
1833         (store_after_parms): Remove.
1834         * cp-tree.h: Adjust.
1835
1836 Thu Dec 11 22:18:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
1837
1838         * decl2.c (comdat_linkage): Also set DECL_COMDAT.
1839         (finish_file): Check DECL_COMDAT instead of weak|one_only.
1840         (import_export_vtable): Use make_decl_one_only instead of
1841         comdat_linkage for win32 tweak.
1842         (import_export_decl): Likewise.
1843         * pt.c (mark_decl_instantiated): Likewise.
1844
1845         * decl2.c (finish_file): Lose handling of templates in pending_statics.
1846
1847 Thu Dec 11 21:12:09 1997  Jason Merrill  <jason@yorick.cygnus.com>
1848
1849         * decl2.c (finish_file): Lose call to expand_builtin_throw.
1850         * except.c (expand_builtin_throw): Remove.
1851         * cp-tree.h: Remove ptr_ptr_type_node.
1852         * decl.c: Likewise.
1853
1854 Thu Dec 11 20:43:33 1997  Teemu Torma  <tot@trema.com>
1855         
1856         * decl.c (ptr_ptr_type_node): Define.
1857         (init_decl_processing): Initialize it.
1858         * cp-tree.h: Declare it.
1859         * exception.cc (__cp_exception_info): Use __get_eh_info.
1860         (__cp_push_exception): Ditto.
1861         (__cp_pop_exception): Ditto.
1862
1863         From Scott Snyder <snyder@d0sgif.fnal.gov>:
1864         * except.c (expand_builtin_throw): Use get_saved_pc_ref instead of
1865         saved_pc.
1866         (init_exception_processing): Removed saved_pc initialization.
1867
1868 Wed Dec 10 11:04:45 1997  Jason Merrill  <jason@yorick.cygnus.com>
1869
1870         * pt.c (instantiate_decl): Defer all templates but inline functions.
1871
1872 Mon Dec  8 23:17:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
1873
1874         * init.c (expand_vec_init): Don't fold a list of parameters.
1875
1876         * decl.c (copy_args_p): Handle copy elision for types with virtual
1877         bases.
1878         * call.c (build_over_call): Likewise.
1879
1880 Sun Dec  7 22:38:12 1997  Mark Mitchell  <mmitchell@usa.net>
1881
1882         * pt.c (lookup_template_function): Copy the template arguments,
1883         not just the list containing them, to the permanent obstack.
1884
1885 Sun Dec  7 15:53:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
1886
1887         * except.c (expand_start_catch_block): suspend_momentary for the
1888         terminate handler.
1889
1890         * error.c (dump_decl): Handle LOOKUP_EXPR.
1891
1892 Sun Dec  7 15:45:07 1997  Mark Mitchell  <mmitchell@usa.net>
1893
1894         * rtti.c (build_dynamic_cast): Copy the cast-to type to the
1895         permanent obstack if we are processing a template decl.
1896         * typeck.c (build_static_cast): Likewise.
1897         (build_const_cast): Likewise.
1898         (build_reinterpret_cast): Likewise.
1899
1900         * pt.c (coerce_template_parms): Coerce some expressions, even
1901         when processing_template_decl.
1902
1903 Sun Dec  7 01:46:33 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
1904
1905         * typeck.c (build_binary_op_nodefault, pointer_diff): Symmetric
1906         handling of pointer difference expressions.
1907
1908         * typeck.c (comp_target_types): Comparison of function/method types
1909         is independent of nptrs.
1910
1911 Sun Dec  7 01:40:27 1997  Mark Mitchell  <mmitchell@usa.net>
1912
1913         * pt.c (tsubst): Avoid creating pointer to reference and
1914         reference to reference types.
1915
1916 Sat Dec  6 01:29:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
1917
1918         * parse.y (do_id): New nonterminal.
1919         (template_id): Use it.
1920
1921 Fri Dec  5 01:17:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
1922
1923         * parse.y (template_id): do_identifier for PFUNCNAMEs, too.
1924         * spew.c (yylex): Don't do_identifier here.
1925         * decl2.c (build_expr_from_tree): Revert last change.
1926
1927         * decl2.c (build_expr_from_tree): Expand the name for a method call.
1928         * parse.y (object_template_id): Don't try to take the DECL_NAME.
1929
1930 Wed Dec  3 20:02:39 1997  Jason Merrill  <jason@yorick.cygnus.com>
1931
1932         * init.c (build_new): Use a TARGET_EXPR instead of SAVE_EXPR for
1933         alloc_expr.
1934         * call.c (build_op_delete_call): Adjust.
1935
1936         * except.c (expand_end_catch_block): Lose rethrow region.
1937         (expand_start_catch_block): Likewise.
1938         (expand_end_catch_block): Don't expand_leftover_cleanups.
1939
1940 Wed Dec  3 13:24:04 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
1941
1942         * pt.c (tsubst): Remove tree_cons call (places redundant info into
1943         DECL_TEMPLATE_INSTANTIATION).   
1944
1945 Wed Dec  3 11:44:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
1946
1947         * tree.c (is_overloaded_fn): Handle getting a fn template.
1948         (really_overloaded_fn): Likewise.
1949         * error.c (dump_decl): Handle TEMPLATE_ID_EXPRs better.
1950         * pt.c (check_explicit_specialization): Tweak.
1951         (determine_explicit_specialization): Tweak.
1952
1953         * tree.c, cp-tree.h (get_target_expr): New fn.
1954
1955 Wed Dec  3 08:47:27 1997  Paul Eggert  <eggert@twinsun.com>
1956
1957         * pt.c (check_explicit_specialization): Fix misspelling in
1958         diagnostic: `preceeded'.
1959         * typeck.c (get_delta_difference): Fix misspelling in diagnostic:
1960         `conversiona'.
1961
1962 1997-12-02  Mark Mitchell  <mmitchell@usa.net>
1963
1964         * pt.c (determine_explicit_specialization): Avoid an internal
1965         error for bad specializations.
1966
1967         * method.c (build_overload_value): Handle SCOPE_REF.
1968
1969 Tue Dec  2 19:18:50 1997  Mike Stump  <mrs@wrs.com>
1970
1971         * class.c (prepare_fresh_vtable): Enable even more complex MI
1972         vtable names.
1973
1974 Tue Dec  2 01:37:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
1975
1976         * exception.cc (__check_eh_spec): Optimize a bit.
1977
1978         * exception.cc (__cp_pop_exception): Lose handler arg.
1979         * except.c (do_pop_exception): Likewise.
1980         (push_eh_cleanup): Let the cleanup mechanism supply the handler.
1981         (expand_end_catch_block): Likewise.
1982
1983 Fri Nov 28 01:58:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
1984
1985         * pt.c (check_explicit_specialization): Complain about using a 
1986         template-id for a non-specialization.
1987
1988 Fri Nov 28 12:35:19 1997  Scott Christley  <scottc@net-community.com>
1989
1990         * repo.c: Prototype rindex only if needed.
1991         * xref.c: Likewise.
1992
1993 Fri Nov 28 01:56:35 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
1994
1995         * error.c (dump_decl): Handle TEMPLATE_ID_EXPR.
1996
1997 Thu Nov 27 00:59:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
1998
1999         * typeck.c (build_const_cast): Handle references here instead of
2000         handing off to convert_to_reference.
2001
2002         * except.c: Lose Unexpected, SetTerminate, SetUnexpected,
2003         TerminateFunctionCall.
2004         (init_exception_processing): Likewise.  Terminate et al are now
2005         the fns, not ADDR_EXPRs.
2006         (various): Lose redundant assemble_external calls.
2007         (do_unwind): s/BuiltinReturnAddress/builtin_return_address_fndecl/.
2008
2009         * cp-tree.h (struct lang_decl_flags): Add comdat.
2010         (DECL_COMDAT): New macro.
2011         * decl.c (duplicate_decls): Propagate it.
2012         (cp_finish_decl): Handle it.
2013         * decl2.c (import_export_decl): Just set DECL_COMDAT on VAR_DECLs.
2014
2015         * class.c: Remove static pending_hard_virtuals.
2016         (add_virtual_function): Take pointers to pending_virtuals
2017         and pending_hard_virtuals.
2018         (finish_struct_1): Pass them.  Declare pending_hard_virtuals.
2019
2020 Wed Nov 26 20:28:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
2021
2022         * decl2.c (import_export_vtable): If we support one_only but not
2023         weak symbols, mark instantiated template vtables one_only.
2024         (import_export_decl): Likewise for tinfo functions.
2025         (finish_vtable_vardecl): Also write out vtables from explicitly 
2026         instantiated template classes.
2027         * pt.c (mark_class_instantiated): Revert last change.
2028
2029         * except.c (expand_throw): Call mark_used on the destructor.
2030
2031 Wed Nov 26 15:13:48 1997  Jeffrey A Law  (law@cygnus.com)
2032
2033         * lex.c (lang_init): Enable flag_exceptions by default if no
2034         command line switch was specified.
2035
2036 1997-11-26  Mark Mitchell  <mmitchell@usa.net>
2037
2038         * pt.c (unify): Handle `void' template parameters in
2039         specializations.
2040
2041 Wed Nov 26 01:11:24 1997  Jason Merrill  <jason@yorick.cygnus.com>
2042
2043         * rtti.c (build_dynamic_cast): Handle template case here.
2044         (build_dynamic_cast_1): Not here.
2045
2046         * typeck2.c (digest_init): Make copies where appropriate.
2047
2048         * decl2.c (delete_sanity): resolve_offset_ref.
2049
2050         * except.c: Call terminate without caching so many bits.
2051
2052         * except.c (expand_start_catch_block): Fix catching a reference
2053         to pointer.
2054
2055 Tue Nov 25 11:28:21 1997  Jason Merrill  <jason@yorick.cygnus.com>
2056
2057         * init.c (build_new): Copy size to the saveable obstack.
2058
2059         * init.c (build_new): Stick a CLEANUP_POINT_EXPR inside the
2060         TRY_CATCH_EXPR for now.
2061
2062 Mon Nov 24 12:15:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
2063
2064         * typeck.c (mark_addressable): Don't assume a FUNCTION_DECL
2065         has DECL_LANG_SPECIFIC.
2066
2067         * exception.cc (struct cp_eh_info): Add handlers field.
2068         (__cp_push_exception): Initialize it.
2069         (__cp_pop_exception): Decrement it.  Don't pop unless it's 0.
2070         (__throw_bad_exception): Remove.
2071         * except.c (call_eh_info): Add handlers field.
2072         (get_eh_handlers): New fn.
2073         (push_eh_cleanup): Increment handlers.
2074
2075 Fri Nov 21 12:22:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
2076
2077         * except.c (expand_start_eh_spec): Use the try/catch code.
2078         (expand_end_eh_spec): Likewise.  Call __check_eh_spec instead of
2079         doing everything inline.
2080         (init_exception_processing): throw_type_match now takes
2081         const void pointers.
2082         * exception.cc (__check_eh_spec): New fn.
2083         * inc/exception: Neither terminate nor unexpected return.
2084         * decl.c: Make const_ptr_type_node public.
2085         * tinfo2.cc (__throw_type_match_rtti): Take the typeinfos constly.
2086
2087         * except.c (expand_start_catch_block): We only need the rethrow
2088         region for non-sjlj exceptions.
2089         (expand_end_catch_block): Likewise.  Use outer_context_label_stack.
2090
2091 Thu Nov 20 14:40:17 1997  Jason Merrill  <jason@yorick.cygnus.com>
2092
2093         * Make-lang.in (CXX_LIB2FUNCS): Add new op new and op delete objs.
2094         (various.o): Likewise.
2095         * inc/new: Add placement deletes.  Add throw specs for default new.
2096         * new.cc (set_new_handler): Move here from libgcc2.
2097         * new1.cc (new (nothrow)): Catch a bad_alloc thrown from the handler.
2098         (new): Move from libgcc2.  Throw bad_alloc.
2099         * new2.cc: Move the rest of the op news and op deletes from libgcc2.
2100         * decl.c (init_decl_processing): Update exception specs on new and
2101         delete.
2102
2103         * method.c (build_decl_overload_real): Don't mess with global 
2104         placement delete.
2105
2106         * init.c (build_new): Check for null throw spec, not nothrow_t.
2107
2108         * decl.c (duplicate_decls): Don't complain about different exceptions
2109         from an internal declaration.
2110
2111         * call.c (build_op_delete_call): Fix check for member fns again.
2112
2113         * decl2.c (import_export_decl): Interface hackery affects
2114         virtual synthesized methods.
2115
2116 Wed Nov 19 18:24:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
2117
2118         * decl.c (start_decl): Don't just complain about a mismatched 
2119         scope, fix it.
2120
2121         * decl.c (make_implicit_typename): Handle case where t is not
2122         actually from context.
2123         * tree.c (get_type_decl): Lose identifier case.
2124         * spew.c (yylex): Lose useless call to identifer_typedecl_value.
2125         * parse.y (nonnested_type): Just use lookup_name.
2126         (complex_type_name): Just use IDENTIFIER_GLOBAL_VALUE.
2127
2128 Wed Nov 19 11:45:07 1997  Michael Tiemann  <tiemann@axon.cygnus.com>
2129
2130         * error.c (dump_function_name): Test DECL_LANG_SPECIFIC in case
2131         T was built in C language context (for example, by
2132         output_func_start_profiler).
2133
2134 Wed Nov 19 10:39:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
2135
2136         * decl.c (make_implicit_typename): New fn.
2137         (lookup_name_real): Use it.  Use current_class_type as the context.
2138
2139 Mon Nov 17 23:42:03 1997  Bruno Haible <haible@ilog.fr>
2140
2141         * pt.c (do_poplevel): Don't prohibit jumps into this contour.
2142
2143 Mon Nov 17 02:01:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
2144
2145         * friend.c (do_friend): Warn about non-template friends in templates.
2146
2147         * call.c (build_op_delete_call): Fix handling of inherited delete.
2148
2149         * search.c (dfs_record_inheritance): Ignore template type parms.
2150
2151 Sat Nov 15 00:30:51 1997  Jason Merrill  <jason@yorick.cygnus.com>
2152
2153         * call.c (build_new_op): Fix copy error.
2154         (build_op_new_call): New fn.
2155         (build_op_delete_call): New fn.
2156         * cp-tree.h: Declare them.
2157         * init.c (build_new): Use them.  Support placement delete.
2158         (build_x_delete): Use build_op_delete_call.
2159         (build_delete): Likewise.
2160         * decl2.c (delete_sanity): Likewise.
2161         (coerce_delete_type): Don't complain about placement delete.
2162
2163 Thu Nov 13 01:52:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
2164
2165         * call.c (build_new_function_call): Remove unused 'obj' parm.
2166         * cp-tree.h, typeck.c: Adjust.
2167
2168         * init.c (build_new): Make the cleanup last longer.
2169         (expand_vec_init): Call do_pending_stack_adjust.
2170
2171 Wed Nov 12 11:04:33 1997  Jason Merrill  <jason@yorick.cygnus.com>
2172
2173         * pt.c (do_type_instantiation): Fix typo.
2174         (mark_class_instantiated): If we support one_only but not weak 
2175         symbols, don't mark this as known.
2176
2177         * init.c (build_new): Handle vec delete in EH cleanup.
2178
2179 Wed Nov 12 08:11:55 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
2180
2181         * call.c (build_method_call): Call complete_type before checking
2182         for destructor.
2183
2184 Sun Nov  9 01:29:55 1997  Jim Wilson  (wilson@cygnus.com)
2185
2186         * decl.c (add_block_current_level): Delete.
2187         * init.c (build_vec_delete_1): Delete build_block and
2188         add_block_current_level calls.
2189
2190 Wed Nov 12 00:48:16 1997  Jason Merrill  <jason@yorick.cygnus.com>
2191
2192         * init.c (build_new): Handle freeing allocated memory when the
2193         constructor throws.
2194
2195         * call.c (build_new_method_call): Fix flags arg.
2196
2197         * pt.c (do_type_instantiation): Don't try to instantiate
2198         member templates.
2199         (mark_decl_instantiated): If we support one_only but not
2200         weak symbols, mark this one_only.
2201         * decl2.c (import_export_vtable): Don't defer handling of vtables
2202         if MULTIPLE_SYMBOL_SPACES.
2203
2204 Tue Nov 11 12:02:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
2205
2206         * except.c (expand_end_catch_block): Lose call to __sjpopnthrow.
2207
2208 Tue Nov 11 02:53:44 1997  Jason Merrill  <jason@lasher.cygnus.com>
2209
2210         * except.c (do_pop_exception): Return a value.
2211
2212 Mon Nov 10 20:25:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
2213
2214         * call.c (build_new_method_call): Handle getting a
2215         TEMPLATE_ID_EXPR around a TEMPLATE_DECL.  Don't look for a field
2216         if we got template parms.
2217         * typeck.c (build_x_function_call): Remember the TEMPLATE_ID_EXPR,
2218         not just the args.
2219         * decl2.c (build_expr_from_tree): Tweak last change.
2220         * pt.c (tsubst_copy): Use get_first_fn instead of TREE_VALUE.
2221         (maybe_fold_nontype_arg): Split out from tsubst_copy.
2222         * tree.c (get_first_fn): Just return a TEMPLATE_ID_EXPR.
2223
2224 Mon Nov 10 20:08:38 1997  Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
2225
2226         * pt.c (tsubst_copy): Handle explicit template arguments in 
2227         function calls.
2228         * typeck.c (build_x_function_call): Likewise.
2229         * decl2.c (build_expr_from_tree): Lookup function name if it 
2230         hasn't been done.
2231
2232         * pt.c (tsubst): Instantiate template functions properly when 
2233         template parameter does not appear in function arguments and return 
2234         type.
2235         (comp_template_args): Handle member templates required by tsubst.
2236
2237 Mon Nov 10 20:08:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
2238
2239         * decl.c (grokdeclarator): Tweak conditions for pedwarn in
2240         previous change.
2241
2242 Mon Nov 10 20:08:29 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
2243
2244         * pt.c (coerce_template_parms): Tweak error message.
2245
2246         * decl.c (grokdeclarator): If -Wreturn-type, warn everytime a
2247         return type defaults to `int', even if there are storage-class
2248         specifiers.
2249
2250 Mon Nov 10 03:04:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
2251
2252         Complete nested exception support.
2253         * except.c (do_pop_exception): Split out...
2254         (push_eh_cleanup): From here.  Handle the EH region by hand.
2255         (expand_start_catch_block): Add a new level for the catch parm.
2256         Move the rethrow region outside the two cleanup regions.
2257         Protect the initializer for the catch parm with terminate.
2258         (expand_end_catch_block): Likewise.  End the region for the eh_cleanup.
2259         * exception.cc (__cp_pop_exception): Now takes two parms.  Handle
2260         popping off the middle of the stack.
2261         * tree.c (lvalue_p, real_lvalue_p): Handle TRY_CATCH_EXPR, 
2262         WITH_CLEANUP_EXPR, and UNSAVE_EXPR.
2263         (build_cplus_new): Only wrap CALL_EXPRs.
2264         * init.c (expand_default_init): Handle a TRY_CATCH_EXPR around 
2265         the constructor call.
2266
2267 Sun Nov  9 18:00:26 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2268
2269         * Make-lang.in (c++.distdir): Make inc subdirectory.
2270
2271 Fri Nov  7 11:57:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
2272
2273         * decl2.c (finish_file): Put back some code.
2274
2275 Thu Nov  6 11:28:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
2276
2277         * decl2.c (finish_file): Remove redundant code.
2278         * method.c (emit_thunk): Don't let the backend defer generic thunks.
2279
2280 Wed Nov  5 23:52:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
2281
2282         * except.c (call_eh_info): Split out...
2283         (push_eh_info): From here.
2284         (expand_builtin_throw): Use it.
2285         (expand_start_catch_block): Move region start back.
2286
2287 Tue Nov  4 13:45:10 1997  Doug Evans  <devans@canuck.cygnus.com>
2288
2289         * lex.c (MULTIBYTE_CHARS): #undef if cross compiling.
2290         (real_yylex): Record wide strings using target endianness, not host.
2291
2292 1997-11-03  Brendan Kehoe  <brendan@lisa.cygnus.com>
2293
2294         * repo.c (rindex): Add decl unconditionally.
2295         (get_base_filename, open_repo_file): Don't cast rindex.
2296         * xref.c (rindex): Add decl unconditionally.
2297         (index): Remove unused decl.
2298         (open_xref_file): Don't cast rindex.
2299
2300 Sun Nov  2 15:04:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
2301
2302         * class.c (build_vbase_path): Propagate the result type properly.
2303
2304 1997-11-01  Brendan Kehoe  <brendan@lisa.cygnus.com>
2305
2306         * except.c (expand_builtin_throw) [!DWARF2_UNWIND_INFO]: Replace
2307         remaining use of saved_throw_type with a call to get_eh_type.
2308
2309 1997-10-31  Brendan Kehoe  <brendan@lisa.cygnus.com>
2310
2311         * lex.c (FILE_NAME_NONDIRECTORY): Delete macro.
2312         (file_name_nondirectory): New function, doing the same as the macro.
2313         (set_typedecl_interface_info): Use it instead of the macro.
2314         (check_newline): Likewise.
2315         (handle_cp_pragma): Likewise.
2316
2317         * repo.c (get_base_filename): Cast result of rindex to char*.
2318         (open_repo_file): Likewise.
2319         * xref.c (open_xref_file): Likewise.
2320         * error.c (dump_char): Make its arg int, not char.
2321
2322         * except.c (push_eh_info): Pass the number of fields - 1 down, not
2323         the exact number of fields.
2324
2325 Fri Oct 31 01:47:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
2326
2327         Support for nested exceptions.
2328         * tinfo2.cc (__is_pointer): New fn.
2329         * exception.cc (struct cp_eh_info): Define.
2330         (__cp_exception_info, __uncatch_exception): New fns.
2331         (__cp_push_exception, __cp_pop_exception): New fns.
2332         * except.c: Lose saved_throw_{type,value,cleanup,in_catch}.
2333         Lose empty_fndecl.
2334         (init_exception_processing): Likewise.  __eh_pc is now external.
2335         (push_eh_info): New fn.
2336         (get_eh_{info,value,type,caught}): New fns.
2337         (push_eh_cleanup): Just call __cp_pop_exception.
2338         (expand_start_catch_block): Use push_eh_info.  Start the eh region
2339         sooner.
2340         (expand_end_eh_spec): Use push_eh_info.
2341         (expand_throw): Call __cp_push_exception to set up the exception info.
2342         Just pass the destructor or 0 as the cleanup.  Call __uncatch_exception
2343         when we rethrow.
2344         (expand_builtin_throw): Don't refer to empty_fndecl.
2345
2346 Thu Oct 23 02:01:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
2347
2348         * pt.c (instantiate_decl): SET_DECL_IMPLICIT_INSTANTIATION on new decl.
2349
2350 1997-10-22  Brendan Kehoe  <brendan@cygnus.com>
2351
2352         * method.c (build_template_parm_names, build_decl_overload_real):
2353         Add static to definitions.
2354         * pt.c (add_to_template_args, note_template_header,
2355         processing_explicit_specialization, type_unification_real): Likewise.
2356         ({determine,check}_explicit_specialization): Use a single string for
2357         error messages.
2358
2359 Mon Oct 20 12:06:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
2360
2361         * except.c (expand_exception_blocks): Call do_pending_stack_adust.
2362         (expand_end_catch_block): Likewise.
2363         (expand_end_eh_spec): Likewise.
2364
2365 Mon Oct 20 11:44:20 1997  Mark Mitchell  <mmitchell@usa.net>
2366
2367         * decl.c (duplicate_decls): Handle template specializations
2368         correctly. 
2369         * error.c (dump_function_name): Fix printing of specializations of
2370         member functions that are not member templates.
2371         * cp-tree.h (processing_specialization): Make global.
2372         * pt.c (processing_specialization): Likewise.
2373         * lex.c (cons_up_default_function): Save and restore
2374         processing_specialization to avoid confusion.
2375         
2376 Mon Oct 20 10:52:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
2377
2378         * decl.c (init_decl_processing): Give null_node unknown* type.
2379         * typeck.c (comp_target_types): Handle UNKNOWN_TYPE.
2380         (common_type): Likewise.
2381         * error.c (args_as_string): Recognize null_node.
2382
2383 Sun Oct 19 09:13:01 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2384
2385         * typeck.c (rationalize_conditional_expr): Handle {MIN,MAX}_EXPR.
2386         (unary_complex_lvalue): Call it for {MIN,MAX}_EXPR.
2387
2388         * decl.c (init_decl_processing): Call using_eh_for_cleanups.
2389
2390         * Make-lang.in (g++): Include prefix.o.
2391
2392 Thu Oct 16 15:31:09 1997  Judy Goldberg <judygold@sanwafp.com>
2393
2394         * pt.c (determine_explicit_specialization): Initialize "dummy"
2395         to keep Purify quiet.
2396
2397 Thu Oct 16 00:14:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
2398
2399         * method.c (build_overload_value): Handle TEMPLATE_CONST_PARMs here.
2400         (build_overload_int): Not here.
2401
2402 Wed Oct 15 00:35:28 1997  Mike Stump  <mrs@wrs.com>
2403
2404         * class.c (build_type_pathname): Remove.
2405         (prepare_fresh_vtable): Fix problem with complex MI vtable names.
2406
2407 1997-10-14  Brendan Kehoe  <brendan@lisa.cygnus.com>
2408
2409         * parse.y (unary_expr): Give a pedwarn if someone tries to use the
2410         &&label GNU extension.
2411
2412 Tue Oct 14 12:01:00 1997  Mark Mitchell  <mmitchell@usa.net>
2413
2414         * decl.c (pushtag): Unset DECL_ASSEMBLER_NAME before setting it,
2415         so as to avoid incorrect manglings.
2416         * method.c (build_decl_overload_real): Don't mangle return types
2417         for constructors.
2418         
2419 Tue Oct 14 11:46:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
2420
2421         * cp-tree.h (scratchalloc, build_scratch_list, make_scratch_vec,
2422         scratch_tree_cons): Define as macros for now.
2423         * call.c, class.c, cvt.c, decl.c, decl2.c, except.c, expr.c, init.c, 
2424         lex.c, method.c, parse.y, pt.c, rtti.c, search.c, tree.c, typeck.c,
2425         typeck2.c: Use them and the expression_obstack variants.
2426
2427 Mon Oct 13 17:41:26 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
2428
2429         * decl.c (store_return_init): Allow classes with explicit ctors to
2430         be used with the named return values extension.
2431
2432 Fri Oct 10 12:21:11 1997  Jason Merrill  <jason@yorick.cygnus.com>
2433
2434         * pt.c (instantiate_decl): Fix previous change.
2435
2436 Thu Oct  9 12:08:21 1997  Jason Merrill  <jason@yorick.cygnus.com>
2437
2438         * pt.c (tsubst): Fix thinko.
2439         (instantiate_decl): Really use the original template.
2440
2441         * call.c (build_new_method_call): Use simple constructor_name for
2442         error messages.
2443
2444 Wed Oct  8 22:44:42 1997  Jeffrey A Law  (law@cygnus.com)
2445
2446         * method.c (build_underscore_int): Don't use ANSI specific
2447         features.
2448
2449 Wed Oct  8 00:18:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
2450
2451         * decl2.c (finish_prevtable_vardecl): Check DECL_REALLY_EXTERN
2452         for our key method; it might have been inlined by -O3.
2453
2454 Tue Oct  7 23:00:12 1997  Mark Mitchell  <mmitchell@usa.net>
2455
2456         * decl.c (make_typename_type): Do not try to call lookup_field for
2457         non-aggregate types.
2458
2459 Tue Oct  7 22:52:10 1997  Jason Merrill  <jason@yorick.cygnus.com>
2460
2461         * typeck.c (build_reinterpret_cast): Tweak.
2462
2463 Tue Oct  7 22:45:31 1997  Alexandre Oliva  <oliva@dcc.unicamp.br>
2464
2465         * typeck.c (build_reinterpret_cast): converting a void pointer
2466         to function pointer with a reinterpret_cast produces a warning
2467         if -pedantic is issued
2468
2469 Tue Oct  7 22:43:43 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
2470
2471         * typeck.c (c_expand_return): Don't warn about returning a
2472         reference-type variable as a reference.
2473
2474 Tue Oct  7 21:11:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
2475
2476         * method.c (build_static_name): Fix typo.
2477
2478 1997-10-07  Brendan Kehoe  <brendan@lisa.cygnus.com>
2479
2480         * decl.c (duplicate_decls): Make sure DECL_LANG_SPECIFIC is set on
2481         OLDDECL before we try to do DECL_USE_TEMPLATE.
2482
2483 Tue Oct  7 00:48:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
2484
2485         * decl.c (duplicate_decls): Don't warn about template instances.
2486
2487         * typeck.c (mark_addressable): Lose ancient code that unsets
2488         DECL_EXTERNAL.
2489
2490         * pt.c (do_decl_instantiation): Lose support for instantiating
2491         non-templates.
2492
2493         * call.c (build_new_function_call): Fix handling of null explicit
2494         template args.
2495         (build_new_method_call): Likewise.
2496
2497 Mon Oct  6 23:44:34 1997  Mark Mitchell  <mmitchell@usa.net>
2498
2499         * method.c (build_underscore_int): Fix typo.
2500
2501 1997-10-06  Brendan Kehoe  <brendan@lisa.cygnus.com>
2502
2503         * tree.c (print_lang_statistics): #if 0 call to
2504         print_inline_obstack_statistics until its definition is checked in.
2505
2506 Mon Oct  6 09:27:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
2507
2508         * decl2.c (finish_file): Move dump_tree_statistics to end.
2509
2510         * pt.c (instantiate_decl): Look for the original template.
2511         (tsubst): Set DECL_IMPLICIT_INSTANTIATION on partial instantiations
2512         of member templates.
2513
2514 Wed Oct  1 08:41:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
2515
2516         * Makefile.in (g++FAQ.*): New rules.
2517         (CONFLICTS): Update.
2518         * g++FAQ.texi: Moved from libg++.
2519
2520         * parse.y (PFUNCNAME): Only specify the type once.
2521
2522 1997-10-01  Brendan Kehoe  <brendan@lasher.cygnus.com>
2523
2524         * lex.c (real_yylex): Clean up the code to fully behave the way
2525         the c-lex.c parser does for complex and real numbers.
2526
2527 Tue Sep 30 08:51:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
2528
2529         * method.c (build_decl_overload_real): Reformat.
2530
2531 Tue Sep 30 00:18:26 1997  Jason Merrill  <jason@yorick.cygnus.com>
2532
2533         * method.c (synthesize_method): If at_eof, determine our linkage.
2534
2535 1997-09-29  Paul Eggert  <eggert@twinsun.com>
2536
2537         * lex.c (real_yylex): Treat `$' just like `_', except issue a
2538         diagnostic if !dollars_in_ident or if pedantic.
2539
2540         * lang-specs.h (@c++): -ansi no longer implies -$.
2541
2542         * decl2.c (lang_decode_option):
2543         -traditional and -ansi now do not mess with
2544         dollars_in_ident.
2545
2546 Mon Sep 29 19:57:51 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
2547
2548         * Makefile.in (parse.o, decl.o): Also depend on
2549         $(srcdir)/../except.h $(srcdir)/../output.h.
2550         (decl2.o): Also depend on $(srcdir)/../expr.h ../insn-codes.h
2551         $(srcdir)/../except.h $(srcdir)/../output.h.
2552         (typeck.o, init.o): Also depend on $(srcdir)/../expr.h
2553         ../insn-codes.h.
2554
2555         * call.c, cp-tree.h, decl.c, tree.c: Finish prototyping.
2556
2557         * expr.c (cplus_expand_expr): Make it static. 
2558
2559         * decl2.c, init.c, typeck.c: Include "expr.h".
2560         (expand_expr): Use proper values when calling the function.
2561
2562 Mon Sep 29 11:05:54 1997  Alexandre Oliva  <oliva@dcc.unicamp.br>
2563
2564         * lang-options.h: new -Wold-style-cast flag.
2565         * cp-tree.h (warn_old_style_cast): new variable.
2566         * decl2.c (warn_old_style_cast): ditto.
2567         (lang_decode_option): support -Wold-style-cast.
2568         (reparse_absdcl_as_casts): produce old-style-cast warning.
2569
2570 Mon Sep 29 09:20:53 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
2571
2572         * decl.c (cp_finish_decl): Allow expand_aggr_init to set
2573         TREE_USED, reset value based on already_used.
2574
2575         * init.c (expand_member_init): Revert change.
2576         
2577 Mon Sep 29 08:57:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
2578
2579         * cp-tree.h, decl.c, decl2.c, pt.c:
2580         Lose DECL_C_STATIC and DECL_PUBLIC.  Don't pretend statics are public.
2581
2582         * decl2.c (lang_decode_option): Add missing ;.
2583
2584 Sat Sep 27 16:22:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
2585
2586         * friend.c (do_friend): Disable injection for all template-derived
2587         decls.
2588         * decl2.c (lang_decode_option): Handle -fguiding-decls.
2589         * parse.y (notype_template_declarator): New nonterminal.
2590         (direct_notype_declarator): Use it.
2591         (complex_direct_notype_declarator): Likewise.
2592         (object_template_id): Accept any kind of identifier after TEMPLATE.
2593         (notype_qualified_id): Don't add template declarators here.
2594
2595 Sat Sep 27 16:21:58 1997  Mark Mitchell  <mmitchell@usa.net>
2596
2597         * call.c (add_template_candidate): Add explicit_targs parameter.
2598         (build_scoped_method_call): Use it.
2599         (build_overload_call_real): Likewise.
2600         (build_user_type_conversion_1): Likewise.
2601         (build_new_function_call): Likewise.
2602         (build_object_call): Likewise.
2603         (build_new_op): Likewise.
2604         (build_new_method_call): Likewise.
2605         (build_new_function_call): Handle TEMPLATE_ID_EXPR.
2606         (build_new_method_call): Likewise.
2607
2608         * class.c (finish_struct_methods): Add specialization pass to
2609         determine which methods were specializing which other methods.
2610         (instantiate_type): Handle TEMPLATE_ID_EXPR.
2611
2612         * cp-tree.def (TEMPLATE_ID_EXPR): New tree code.
2613
2614         * cp-tree.h (name_mangling_version): New variable.
2615         (flag_guiding_decls): Likewise.
2616         (build_template_decl_overload): New function.
2617         (begin_specialization): Likewise.
2618         (reset_specialization): Likewise.
2619         (end_specialization): Likewise.
2620         (determine_explicit_specialization): Likewise.
2621         (check_explicit_specialization): Likewise.
2622         (lookup_template_function): Likewise.
2623         (fn_type_unification): Add explicit_targs parameter.
2624         (type_unification): Likewise.
2625
2626         * decl.c (duplicate_decls): Add smarts for explicit
2627         specializations.
2628         (grokdeclarator): Handle TEMPLATE_ID_EXPR, and function
2629         specializations.
2630         (grokfndecl): Call check_explicit_specialization.
2631
2632         * decl2.c (lang_decode_option): Handle -fname-mangling-version.
2633         (build_expr_from_tree): Handle TEMPLATE_ID_EXPR.
2634         (check_classfn): Handle specializations.
2635
2636         * error.c (dump_function_name): Print specialization arguments.
2637
2638         * friend.c (do_friend): Don't call pushdecl for template 
2639         instantiations. 
2640
2641         * init.c (build_member_call): Handle TEMPLATE_ID_EXPR.
2642
2643         * lang-options.h: Add -fname-mangling-version, -fguiding-decls, 
2644         and -fno-guiding-decls.
2645
2646         * lex.c (identifier_type): Return PFUNCNAME for template function
2647         names.
2648
2649         * method.c (build_decl_overload_real): New function.
2650         (build_template_parm_names): New function.
2651         (build_overload_identifier): Use it.
2652         (build_underscore_int): New function.
2653         (build_overload_int): Use it.  Add levels for template
2654         parameters.
2655         (build_overload_name): Likewise.  Also, handle TYPENAME_TYPEs.
2656         (build_overload_nested_names): Handle template type parameters.
2657         (build_template_decl_overload): New function.
2658
2659         * parse.y (YYSTYPE): New ntype member.
2660         (nested_name_specifier): Use it.
2661         (nested_name_specifier_1): Likewise.
2662         (PFUNCNAME): New token.
2663         (template_id, object_template_id): New non-terminals.
2664         (template_parm_list): Note specializations.
2665         (template_def): Likewise.
2666         (structsp): Likewise.
2667         (fn.def2): Handle member template specializations.
2668         (component_decl_1): Likewise.
2669         (direct_notype_declarator): Handle template-ids.
2670         (component_decl_1): Likewise.
2671         (direct_notype_declarator): Handle template-ids.
2672         (primary): Handle TEMPLATE_ID_EXPR, and template-ids.
2673
2674         * pt.c (processing_specializations): New variable.
2675         (template_header_count): Likewise.
2676         (type_unification_real): New function.
2677         (processing_explicit_specialization): Likewise.
2678         (note_template_header): Likewise.
2679         (is_member_template): Handle specializations.
2680         (end_template_decl): Call reset_specialization.
2681         (push_template_decl): Handle member template specializations.
2682         (tsubst): Likewise.
2683         (tsubst_copy): Handle TEMPLATE_ID_EXPR.
2684         (instantiate_template): Handle specializations.
2685         (instantiate_decl): Likewise.
2686         (fn_type_unification): Handle explicit_targs.
2687         (type_unification): Likewise.  Allow incomplete unification
2688         without an error message, if allow_incomplete.
2689         (get_bindings): Use new calling sequence for fn_type_unification.
2690
2691         * spew.c (yylex): Handle PFUNCNAME.
2692
2693         * tree.c (is_overloaded_fn): Handle TEMPLATE_ID_EXPR.
2694         (really_overloaded_fn): Likewise.
2695         (get_first_fn): Handle function templates.
2696
2697         * typeck.c (build_x_function_call): Use really_overloaded_fn.
2698         Handle TEMPLATE_ID_EXPR.
2699         (build_x_unary_op): Likewise.
2700         (build_unary_op): Likewise.
2701         (mark_addressable): Templates whose address is taken are marked  
2702         as used. 
2703
2704 1997-09-25  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
2705
2706         * decl.c (init_decl_processing): Declare __builtin_constant_p as
2707         accepting any kind of type, not only int.
2708
2709 Fri Sep 26 00:22:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
2710
2711         * search.c (get_matching_virtual): Notice virtual bases when sorrying
2712         about covariant returns.
2713
2714         * parse.y (member_init): Also imply typename here.  Remove ancient
2715         extension for initializing base members.
2716
2717 Thu Sep 25 11:11:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
2718
2719         Handle multi-level typenames and implicit typename in base list.
2720         * parse.y (typename_sub{,[0-2]}): New rules.
2721         (structsp, rule TYPENAME_KEYWORD): Use typename_sub.
2722         (nonnested_type): New rule.
2723         (complete_type_name): Use it.
2724         (base_class.1): Use typename_sub and nonnested_type.
2725         (nested_name_specifier): Don't elide std:: here.
2726         * decl.c (make_typename_type): Handle getting a type for NAME.
2727         (lookup_name_real): Turn std:: into :: here.
2728
2729         Rvalue conversions were removed in London.
2730         * call.c (is_subseq): Don't consider lvalue transformations.
2731         (build_conv): LVALUE_CONV and RVALUE_CONV get IDENTITY_RANK.
2732         (joust): Reenable ?: kludge.
2733
2734 1997-09-22  Brendan Kehoe  <brendan@lisa.cygnus.com>
2735
2736         * decl.c (start_function): Up warning of no return type to be a
2737         pedwarn.
2738
2739 Mon Sep 22 14:15:34 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
2740
2741         * init.c (expand_member_init): Don't set TREE_USED.
2742         * decl.c (cp_finish_decl): Mark decls used if type has TREE_USED
2743         set,don't clear TREE_USED wholesale.
2744
2745 Sat Sep 20 15:31:00 1997  Jason Merrill  <jason@yorick.cygnus.com>
2746
2747         * call.c (build_over_call): Do require_complete_type before
2748         build_cplus_new.
2749
2750 Thu Sep 18 16:47:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
2751
2752         * search.c (lookup_field): Call complete_type in all cases.
2753
2754         * decl.c (finish_function): Just warn about flowing off the end.
2755
2756 Wed Sep 17 10:31:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
2757
2758         * decl.c (grokparms): Don't bash a permanent list node if we're
2759         in a function.
2760
2761 1997-09-17  Brendan Kehoe  <brendan@lisa.cygnus.com>
2762
2763         * Makefile.in (CONFLICTS): Fix s/r conflict count to 18.
2764
2765 Tue Sep 16 14:06:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
2766
2767         * call.c (build_new_op): Give better error for syntactically
2768         correct, but semantically invalid, use of undeclared template.
2769
2770         * call.c (compare_qual): Handle pmfs.
2771
2772         * decl.c (store_parm_decls): last_parm_cleanup_insn is the insn
2773         after the exception spec.
2774
2775 Mon Sep 15 11:52:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
2776
2777         * call.c (null_ptr_cst_p): Integer type, not integral type.
2778
2779         * call.c (joust): Disable warnings until they can be moved to the
2780         right place.
2781
2782 Fri Sep 12 16:11:13 1997  Per Bothner  <bothner@cygnus.com>
2783
2784         * Makefile.in, config-lang.in:  Convert to autoconf.
2785
2786 Thu Sep 11 17:14:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
2787
2788         * decl.c (lookup_name_real): Add implicit 'typename' to types from
2789         base classes.
2790
2791         * pt.c (most_specialized_class): Fix typo.
2792         (tsubst): Move constant folding to TREE_VEC case.
2793
2794 Thu Sep 11 10:08:45 1997  Mark Mitchell  <mmitchell@usa.net>
2795
2796         * pt.c (do_poplevel): Don't warn about unused local variables
2797         while processing_template_decl since we don't always know whether
2798         or not they will need constructing/destructing.
2799
2800         * pt.c (uses_template_parms): Check the values of an enumeration
2801         type to make sure they don't depend on template parms.
2802
2803         * decl.c (make_typename_type): Don't lookup the field if the
2804         context uses template parms, even if we're not
2805         processing_template_decl at the moment.
2806
2807         * pt.c (coerce_template_parms): Avoid looking at the
2808         TYPE_LANG_DECL portion of a typename type, since there won't be
2809         one. 
2810         (tsubst): Do constant folding as necessary to make sure that
2811         arguments passed to lookup_template_class really are constants. 
2812
2813 Wed Sep 10 11:21:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
2814
2815         * except.c (expand_builtin_throw): #ifndef DWARF2_UNWIND_INFO.
2816         * decl2.c (finish_file): Only register exception tables if we
2817         need to.
2818
2819         * decl.c (init_decl_processing): Add __builtin_[fs]p.
2820
2821 Tue Sep  9 19:49:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
2822
2823         * pt.c (unify): Just return 0 for a TYPENAME_TYPE.
2824
2825 Tue Sep  9 17:57:25 1997  Mark Mitchell  <mmitchell@usa.net>
2826
2827         * error.c (dump_decl): Avoid crashing when presented with a
2828         uninitialized constant, as can occur with a template parameter.
2829         (dump_expr): Make sure that there are enough levels of
2830         current_template_parms before we start diving through them.
2831
2832 1997-09-09  Brendan Kehoe  <brendan@lisa.cygnus.com>
2833
2834         * typeck.c (build_indirect_ref): Heed FLAG_VOLATILE similar to
2835         c-typeck.c.
2836
2837 Tue Sep  9 09:36:39 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
2838
2839         * except.c (expand_throw): Call build_delete for all 
2840         exception types, not just objects with destructors.
2841
2842 Mon Sep  8 02:33:20 1997  Jody Goldberg  <jodyg@idt.net>
2843
2844         * decl.c (current_local_enum): Remove static.
2845         * pt.c (tsubst_enum): Save and restore value of current_local_enum
2846         in case template is expanded in enum decl.
2847         (instantiate_class_template) : Use new tsubst_enum signature.
2848         (tsubst_expr): Likewise.
2849
2850 Mon Sep  8 01:21:43 1997  Mark Mitchell  <mmitchell@usa.net>
2851
2852         * pt.c (begin_member_template_processing): Take a function as
2853         argument, not a set of template arguments.  Use the template
2854         parameters, rather than the arguments.  Handle non-type parameters
2855         correctly.  Push a binding level for the parameters so that multiple
2856         member templates using the same parameter names can be declared.
2857         (end_member_template_processing): Pop the binding level.
2858         (push_template_decl): Mark member templates as static when
2859         appropriate. 
2860
2861         * lex.c (do_pending_inlines): Pass the function, not its template
2862         arguments, to begin_member_template_processing.
2863         (process_next_inline): Likewise.
2864         (do_pending_defargs): Likewise.
2865
2866         * error.c (dump_expr): Obtain the correct declaration for a
2867         TEMPLATE_CONST_PARM. 
2868
2869         * call.c (add_template_conv_candidate): New function.
2870         (build_object_call): Handle member templates, as done in the other
2871         build_ functions.
2872         
2873 Sat Sep  6 10:20:27 1997  Mark Mitchell  <mmitchell@usa.net>
2874
2875         * decl.c (replace_defag): Undo previous change.
2876         * lex.c (do_pending_defargs): Deal with member templates.
2877         
2878         * pt.c (is_member_template): Avoid crashing when passed a
2879         non-function argument.
2880
2881 Fri Sep  5 17:27:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
2882
2883         * class.c (grow_method): Remove check for redeclaration.
2884
2885 Fri Sep  5 01:37:17 1997  Mark Mitchell  <mmitchell@usa.net>
2886
2887         * cp-tree.h (INNERMOST_TEMPLATE_PARMS): New macro.
2888         (DECL_INNERMOST_TEMPLATE_PARMS): Likewise.
2889         (PRIMARY_TEMPLATE_P): Use it.
2890         * call.c (build_overload_call_real): Use it.
2891         * class.c (instantiate_type): Likewise.
2892         * decl.c (decls_match): Likewise.
2893         * method.c (build_overload_identifier): Likewise.
2894         * pt.c (push_template_decl): Likewise.
2895         (classtype_mangled_name): Likewise.
2896         (lookup_template_class): Likewise.
2897         
2898         * cp-tree.h (DECL_NTPARMS): Change name from DECL_NT_PARMS to
2899         DECL_NTPARMS to conform to usage elsewhere.
2900         * call.c (add_template_candidate): Likewise.
2901         * class.c (instantiate_type): Likewise.
2902         * pt.c (instantiate_template): Likewise.
2903         (get_bindings): Likewise.
2904         
2905         * class.c (grow_method): Use DECL_FUNCTION_TEMPLATE_P instead of
2906         is_member_template.
2907
2908         * pt.c (unify): Undo changes to allow multiple levels of template
2909         parameters. 
2910         (type_unification): Likewise.
2911         (fn_type_unification): Likewise.
2912         (get_class_bindings): Likewise.
2913         * cp-tree.h (Likewise).
2914         
2915         * decl.c (replace_defarg): Check that the type of the default
2916         parameter does not invlove a template type before complaining
2917         about the initialization.
2918
2919         * error.c (dump_expr): Deal with template constant parameters in
2920         member templates correctly.
2921
2922         * pt.c (is_member_template): Deal with class specializations
2923         correctly. 
2924         (tsubst): Handle "partial instantiation" of member templates
2925         correctly. 
2926
2927 Wed Sep  3 12:30:24 1997  Mark Mitchell  <mmitchell@usa.net>
2928
2929         * pt.c (type_unification): Change calling squence to allow for
2930         multiple levels of template parameters.
2931         (tsubst_expr): Likewise.
2932         (tsubst): Likewise.
2933         (tsubst_copy): Likewise.
2934         (instantiate_template): Likewise.
2935         (unify): Likewise.
2936         * call.c (build_overload_call_real): Use it.
2937         (add_builtin_candidate): Use it.
2938         (build_new_method_call): Use it.
2939         * class.c (instantiate_type): Use it.
2940         * decl.c (grokdeclarator): Use it.
2941         * decl2.c (finish_file): Use it.
2942         * method.c (build_overload_identifier): Use it.
2943         
2944         * call.c (add_template_candidate):  Add additional parameter for
2945         the function return type.  Call fn_type_unification istead of
2946         type_unification.
2947         (build_user_type_conversion_1): Handle member templates.
2948         (build_new_function_call): Likewise.
2949         (build_new_op): Likewise.
2950         (build_new_method_call): Likewise.
2951         
2952         * class.c (grow_method): Don't give an error message indicating
2953         that two member templates with the same name are ambiguous.
2954         (finish_struct): Treat member template functions just like member
2955         functions.
2956         
2957         * cp-tree.h (check_member_template): Add declaration.
2958         (begin_member_template_processing): Likewise.
2959         (end_member_template_processing): Likewise.
2960         (fn_type_unification): Likewise.
2961         (is_member_template): Likewise.
2962         (tsubst): Change prototype.
2963         (tsubst_expr): Likewise.
2964         (tsubst_copy): Likewise.
2965         (instantiate_template): Likewise.
2966         (get_bindings): Likewise.
2967
2968         * decl.c (decls_match): Handle multiple levels of template
2969         parameters. 
2970         (pushdecl): Handle template type params just like other type
2971         declarations. 
2972         (push_class_level_binding): Return immediately if the
2973         class_binding_level is NULL.
2974         (grokfndecl): If check_classfn() returns a member_template, use
2975         the result of the template, not the template itself.
2976         
2977         * decl2.c (check_member_template): New function.  Check to see
2978         that the entity declared to be a member template can be one.
2979         (check_classfn): Allow redeclaration of member template functions
2980         with different types; the new functions can be specializations or
2981         explicit instantiations.
2982         
2983         * error.c (dump_decl): Handle multiple levels of template
2984         parameters. 
2985         (dump_function_decl): Update to handle function templates.
2986
2987         * lex.c (do_pending_inlines): Set up template parameter context
2988         for member templates.
2989         (process_next_inline): Likewise.
2990
2991         * method. (build_overload_identifier): Adjust for multiple levels
2992         of template parameters.
2993         
2994         * parse.y (fn.def2): Add member templates.
2995         (component_decl_1): Likewise.
2996
2997         * pt.c (begin_member_template_processing): New function.
2998         (end_member_template_processing): Likewise.
2999         (is_member_template): Likewise.
3000         (fn_type_unification): Likewise.
3001         (current_template_parms): Return a vector of all the template
3002         parms, not just the innermost level of parms.
3003         (push_template_decl): Deal with the possibility of member
3004         templates. 
3005         (lookup_template_class): Likewise.
3006         (uses_template_parms): Likewise.
3007         (tsubst): Modify processing to TEMPLATE_TYPE_PARM and
3008         TEMPLATE_CONST_PARM to deal with multiple levels of template
3009         arguments.   Add processing of TEMPLATE_DECL to produce new
3010         TEMPLATE_DECLs from old ones.
3011         (do_decl_instantiation): Handle member templates.
3012
3013         * search.c (lookup_fnfields_1): Handle member template conversion
3014         operators. 
3015
3016         * tree.c (cp_tree_equal): Check the levels, as well as the
3017         indices, of TEMPLATE_CONST_PARMs.
3018
3019         * typeck.c (comptypes): Check the levels, as well as the indices,
3020         fo TEMPLATE_TYPE_PARMs.
3021         (build_x_function_call): Treat member templates like member
3022         functions. 
3023         
3024 Wed Sep  3 11:09:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
3025
3026         * typeck.c (c_expand_return): Always convert_for_initialization
3027         before checking for returning a pointer to local.
3028
3029         * pt.c (type_unification): If strict and the function parm doesn't
3030         use template parms, just compare types.
3031
3032 Wed Sep  3 10:35:49 1997  Klaus Espenlaub  <kespenla@student.informatik.uni-ulm.de>
3033
3034         * method.c (build_overloaded_value): Replace direct call
3035         to the floating point emulator with REAL_VALUE_TO_DECIMAL macro.
3036
3037 Wed Sep  3 00:02:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
3038
3039         * typeck.c (convert_arguments): Don't arbitrarily choose the first
3040         of a set of overloaded functions.
3041
3042 Tue Sep  2 12:09:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
3043
3044         * lex.c (real_yylex): Don't elide __FUNCTION__.
3045
3046         * method.c (build_overload_value): Add in_template parm.
3047         (build_overload_int): Likewise.
3048         (build_overload_identifier): Pass it.
3049
3050         * decl.c (duplicate_decls): Don't bash a previous template
3051         definition with a redeclaration.
3052
3053         * pt.c (unify): float doesn't match double.
3054
3055         * pt.c (do_type_instantiation): Handle getting a _TYPE or a
3056         TYPE_DECL.  Handle getting non-template types.
3057         * parse.y (explicit_instantiation): Use typespec instead of
3058         aggr template_type.
3059
3060 Tue Sep  2 10:27:08 1997  Richard Henderson  <rth@cygnus.com>
3061
3062         * typeck.c (build_ptrmemfunc1): Clean up ptr->int cast warnings.
3063
3064 Mon Sep  1 13:19:04 1997  Eugene Mamchits <eugin@ips.ras.ru>
3065
3066         * call.c (add_builtin_candidate): Add missing TREE_TYPE.
3067         (compare_ics): Likewise.
3068
3069 Mon Sep  1 13:19:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
3070
3071         * call.c (joust): Warn about choosing one conversion op over
3072         another because of 'this' argument when the other return type is
3073         better.
3074         (source_type): New fn.
3075
3076         * call.c (build_new_op): Strip leading REF_BIND from first operand
3077         to builtin operator.
3078
3079         * decl2.c (mark_vtable_entries): Mark abort_fndecl as used when we
3080         use its RTL.
3081
3082 Thu Aug 28 09:45:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
3083
3084         * call.c (null_ptr_cst_p): Remove support for (void*)0.
3085
3086 Wed Aug 27 02:03:34 1997  Jeffrey A Law  (law@cygnus.com)
3087
3088         * typeck.c (expand_target_expr): Make definition match declaration.
3089
3090         * class.c (get_basefndecls): Make definition match declaration.
3091
3092 Mon Aug 25 14:30:02 1997  Jason Merrill  <jason@yorick.cygnus.com>
3093
3094         * input.c (sub_getch): Eventually give up and release the input file.
3095
3096         * decl.c (cp_finish_decl): If #p i/i, put inline statics in the
3097         right place.
3098
3099         * call.c (joust): Tweak message.
3100
3101 Sat Aug 23 18:02:59 1997  Mark Mitchell  <mmitchell@usa.net>
3102
3103         * error.c (type_as_string): Put const/volatile on template type
3104         parameters where appropriate.
3105
3106 Sat Aug 23 17:47:22 1997  Jeffrey A Law  (law@cygnus.com)
3107
3108         * call.c (strictly_better): Make arguments unsigned ints.
3109
3110 Thu Aug 21 18:48:44 1997  Jason Merrill  <jason@yorick.cygnus.com>
3111
3112         * lex.c (real_yylex): Refer to __complex instead of complex.
3113
3114 Thu Aug 21 22:25:46 1997  J"orn Rennecke <amylaar@cygnus.co.uk>
3115
3116         * lex.c (real_yylex): Don't use getc directly.
3117
3118 Wed Aug 20 17:25:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
3119
3120         * call.c (is_subseq): Don't try to be clever.
3121
3122 Wed Aug 20 03:13:36 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
3123
3124         * parse.y, pt.c: Include "except.h".
3125         * call.c, class.c, class.h, cp-tree.h, cvt.c, decl.c, decl2.c,
3126         error.c, except.c, expr.c, friend.c, g++spec.c, init.c, input.c,
3127         lex.c, lex.h, method.c, parse.y, pt.c, repo.c, rtti.c, search.c,
3128         sig.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c: Finish
3129         prototyping.
3130
3131 Wed Aug 20 01:34:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
3132
3133         * decl2.c (mark_vtable_entries): Instead of replacing pure
3134         virtuals with a reference to __pure_virtual, copy the decl and
3135         change the RTL.
3136
3137 Tue Aug 19 02:26:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
3138
3139         * pt.c (lookup_nested_type_by_name): Handle typedef wierdness.
3140
3141         * typeck2.c (my_friendly_abort): Report bugs to egcs-bugs@cygnus.com.
3142
3143         * pt.c (instantiate_class_template): Call repo_template_used
3144         before finish_prevtable_vardecl.
3145
3146         * call.c (is_subseq): New fn.
3147         (compare_ics): Use it.
3148
3149         * repo.c (finish_repo): Don't crash on no args.
3150
3151         * parse.y (named_complex_class_head_sans_basetype): Handle
3152         explicit global scope.
3153         * decl2.c (handle_class_head): New fn.
3154
3155         * pt.c (unify): Add CONST_DECL case.
3156
3157 Thu Aug 14 10:05:13 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
3158
3159         * rtti.c (permanent_obstack): Fix decl to not be a pointer.
3160
3161         * cp-tree.h (report_type_mismatch): Add prototype.
3162         * call.c (build_overload_call_real): Remove erroneous fourth
3163         argument to report_type_mismatch.
3164         (build_user_type_conversion_1): Remove erroneous second arg to
3165         tourney.
3166         (build_new_function_call): Likewise.
3167         (build_object_call): Likewise.
3168         (build_new_op): Likewise.
3169         (build_new_method_call): Likewise.
3170
3171 Wed Aug 13 19:19:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
3172
3173         * error.c (dump_decl): Don't bother processing a function with no
3174         DECL_LANG_SPECIFIC.
3175
3176         * method.c (emit_thunk): Call init_function_start in the macro case.
3177
3178 Wed Aug 13 10:46:19 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
3179
3180         * decl2.c (DEFAULT_VTABLE_THUNKS): Define to be 0 if not
3181         defined and used to set flag_vtable_thunks.
3182
3183 Tue Aug 12 20:13:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
3184
3185         * parse.y: Don't clear the inlines from their obstack until they've 
3186         all been processed.
3187
3188         * decl.c (duplicate_decls): Don't complain about exception
3189         specification mismatch if flag_exceptions is off.
3190
3191 Mon Aug 11 15:01:56  1997  Marc Lehmann <pcg@goof.com>
3192
3193         * Make-lang.in (c++.distclean): Remove g++.c on make distclean.
3194
3195 Sun Aug 10 12:06:09 1997  Paul Eggert  <eggert@twinsun.com>
3196
3197         * cp-tree.h: Replace STDIO_PROTO with PROTO in include files.
3198         * cvt.c, error.c, except.c, expr.c, friend.c, init.c, rtti.c:
3199         Include <stdio.h> before include files that formerly used STDIO_PROTO. 
3200
3201         * decl.c, g++spec.c, lex.c, method.c, repo.c:
3202         Include "config.h" first, as per autoconf manual.
3203
3204 Fri Aug  8 11:47:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
3205
3206         * decl.c (duplicate_decls): Tweak wording.
3207         * lex.c (do_pending_defargs): Don't die if we see a default arg
3208         that isn't a DEFAULT_ARG.
3209         * error.c (dump_expr): Handle DEFAULT_ARG.
3210
3211         * decl2.c (lang_decode_option): Handle -fhandle-exceptions.
3212         * lang-options.h: Add -fhandle-exceptions.
3213
3214         * class.c (build_vtable): vtables are artificial.
3215         (prepare_fresh_vtable): Likewise.
3216
3217 Wed Aug  6 11:02:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
3218
3219         * cvt.c (ocp_convert): After converting to the target type, set
3220         LOOKUP_NO_CONVERSION.
3221
3222         * call.c (joust): Warn about potentially confusing promotion rules
3223         with -Wsign-promo.
3224         * cp-tree.h, lang-options.h, decl2.c: Support -Wsign-promo.
3225
3226 Tue Aug  5 15:15:07 1997  Michael Meissner  <meissner@cygnus.com>
3227
3228         * exception.cc: Declare __terminate_func with noreturn attribute.
3229
3230 Fri Aug  1 03:18:15 1997  Jason Merrill  <jason@yorick.cygnus.com>
3231
3232         * parse.y: Break out eat_saved_input, handle errors.
3233         (function_try_block): Use compstmt instead of compstmt_or_error.
3234
3235 Thu Jul 31 17:14:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
3236
3237         * tree.c (build_cplus_new): Don't set TREE_ADDRESSABLE.
3238
3239 Fri Jul  4 01:45:16 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
3240
3241         * Make-lang.in (cplib2.txt, cplib2.ready): Instead of checking for
3242         existence of cc1plus check whether $(LANGUAGES) contains C++.
3243
3244 Wed Jul 30 13:04:21 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
3245
3246         * method.c (do_build_copy_constructor): When copying an anonymous
3247         union member loop around to handle nested anonymous unions.  Use
3248         the offset of the member relative to the outer structure, not the
3249         union.
3250
3251 Tue Jul 29 21:17:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
3252
3253         * call.c (resolve_args): New fn.
3254         (build_new_function_call): Use it.
3255         (build_object_call): Likewise.
3256         (build_new_method_call): Likewise.
3257
3258 Mon Jul 28 16:02:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
3259
3260         * call.c (build_over_call): tsubst all default parms from templates.
3261
3262 Wed Jul 23 13:36:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
3263
3264         * decl.c (struct cp_function): Add static_labelno.
3265         (push_cp_function_context): Save it.
3266         (pop_cp_function_context): Restore it.
3267
3268 Tue Jul 22 14:43:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
3269
3270         * typeck.c (build_component_ref_1): Convert from reference.
3271
3272 Tue Jul 22 11:06:23 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
3273
3274         * parse.y (current_declspecs, prefix_attributes): Initialize to
3275         NULL_TREE.
3276
3277         * parse.y (initdcl0): Make sure CURRENT_DECLSPECS is non-nil
3278         before we try to force it to be a TREE_LIST.
3279         (decl): Make sure $1.t is non-nil.
3280
3281 Sun Jul 20 11:53:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
3282
3283         * pt.c (uses_template_parms): Handle template first-parse codes.
3284
3285         * decl.c (cp_finish_decl): Only warn about user-defined statics.
3286
3287 Fri Jul 18 17:56:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
3288
3289         * pt.c (unify): Handle BOOLEAN_TYPE.
3290
3291         * cp-tree.h: Lose PARM_DEFAULT_FROM_TEMPLATE.
3292         * pt.c (tsubst): Don't set it.
3293         * call.c (build_over_call): Use uses_template_parms.
3294
3295 Thu Jul 17 18:06:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
3296
3297         * method.c (build_overload_nested_name): Use static_labelno
3298         instead of var_labelno.
3299         (build_qualified_name): New fn.
3300         (build_overload_name): Split out from here.
3301         (build_static_name): Use build_qualified_name.
3302         * decl.c (cp_finish_decl): Statics in extern inline functions 
3303         have comdat linkage.
3304         (start_function): Initialize static_labelno.
3305
3306 Thu Jul 17 11:20:17 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
3307
3308         * class.c (finish_struct_methods): add check of warn_ctor_dtor_privacy
3309         before "all member functions in class [] are private"
3310
3311 Wed Jul 16 23:47:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
3312
3313         * lex.c (do_scoped_id): convert_from_reference.
3314         * init.c (build_offset_ref): Likewise.
3315
3316 Wed Jul 16 12:34:29 1997  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
3317
3318         * error.c (dump_expr): Check TREE_OPERAND before dump_expr_list.
3319
3320 Mon Jul 14 03:23:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
3321
3322         * typeck.c (get_member_function_from_ptrfunc): Promote index
3323         before saving it.
3324
3325 Sun Jul 13 00:11:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
3326
3327         * tree.c (layout_basetypes): Move non-virtual destructor warning.
3328         * decl.c (xref_basetypes): Remove non-virtual destructor warning.
3329
3330 Sat Jul 12 12:47:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
3331
3332         * decl.c (grokdeclarator): Call add_defarg_fn for the function
3333         type, too.
3334         * lex.c (add_defarg_fn): Adjust.
3335         (do_pending_defargs): Adjust.  Don't skip the first parm.
3336
3337 Fri Jul 11 01:39:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
3338
3339         * decl.c (build_enumerator): Global enumerators are also readonly.
3340
3341         * rtti.c (build_dynamic_cast_1): Renamed from build_dynamic_cast.
3342         (build_dynamic_cast): Call it and convert_from_reference.
3343
3344         * lex.c (add_defarg_fn): New fn.
3345         (snarf_defarg): Don't add to defarg_types.
3346         (do_pending_defargs): Lose defarg_types.  All fns we process now
3347         have defargs.
3348         * decl.c (grokfndecl): Call add_defarg_fn.
3349
3350         * Makefile.in (CONFLICTS): Expect 18 s/r conflicts.
3351         * cp-tree.def: Add DEFAULT_ARG.
3352         * spew.c (yylex): Call snarf_defarg as appropriate.
3353         * parse.y: New tokens DEFARG and DEFARG_MARKER.
3354         (defarg_again, pending_defargs, defarg, defarg1): New rules.
3355         (structsp): Use pending_defargs.
3356         (parms, full_parm): Use defarg.
3357         * lex.c (init_lex): Initialize inline_text_firstobj.
3358         (do_pending_inlines): Never pass the obstack to feed_input.
3359         (process_next_inline): Call end_input instead of restore_pending_input.
3360         (clear_inline_text_obstack, reinit_parse_for_expr, do_pending_defargs,
3361         finish_defarg, feed_defarg, snarf_defarg, maybe_snarf_defarg): New fns.
3362         * input.c (end_input): New fn.
3363         (sub_getch): At the end of some fed input, just keep returning EOF
3364         until someone calls end_input.
3365         Remove 'obstack' field from struct input_source.
3366         * decl.c (grokparms): Handle DEFAULT_ARG.
3367         (replace_defarg): New fn.
3368         * cp-tree.h (DEFARG_LENGTH, DEFARG_POINTER): New macros.
3369
3370 Wed Jul  9 13:44:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
3371
3372         * call.c (implicit_conversion): If nothing else works, try binding
3373         an rvalue to a reference.
3374
3375 Wed Jul  9 13:04:38 1997  Geoffrey Noer  <noer@cygnus.com>
3376
3377         * decl.c (init_decl_processing): fix Jun 30 patch -- move
3378         ifndef for Cygwin32 to include SIGSEGV.
3379
3380 Thu Jul  3 01:44:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
3381
3382         * class.c (finish_struct_1): Only complain about pointers without
3383         copy stuff if there are any constructors.
3384
3385         * rtti.c (build_dynamic_cast): Call complete_type on the types.
3386
3387         * decl.c (grokfndecl): If the function we chose doesn't actually
3388         match, die.
3389
3390         * decl2.c (grokclassfn): Don't specify 'const int' for the
3391         artificial destructor parm.
3392
3393         * pt.c (type_unification): If we are called recursively, nothing 
3394         decays.
3395
3396 Mon Jun 30 17:53:21 1997  Geoffrey Noer  <noer@cygnus.com>
3397
3398         * decl.c (init_decl_processing): Stop trying to catch signals
3399         other than SIGABRT since the Cygwin32 library doesn't support
3400         them correctly yet.  This fixes a situation in which g++ causes
3401         a hang on SIGSEGVs and other such signals in our Win32-hosted
3402         tools.
3403
3404 Mon Jun 30 14:50:01 1997  Jason Merrill  <jason@yorick.cygnus.com>
3405
3406         * tree.c (mapcar, case CALL_EXPR): Handle all the parse node data.
3407
3408 Fri Jun 27 15:18:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
3409
3410         * typeck2.c (store_init_value): Always return the value if our 
3411         type needs constructing.
3412
3413         * method.c (hack_identifier): Convert class statics from
3414         reference, too.
3415
3416 Thu Jun 26 11:44:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
3417
3418         * Make-lang.in (cplib2.ready): Add $(LANGUAGES) dependency.
3419
3420 Thu Jun 19 16:49:28 1997  Mike Stump  <mrs@cygnus.com>
3421
3422         * typeck.c (c_expand_return): Make sure we clean up temporaries at
3423         the end of return x;
3424
3425 Thu Jun 19 12:28:43 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
3426
3427         * lex.c (check_for_missing_semicolon): Also check for CV_QUALIFIER.
3428
3429 Tue Jun 17 18:35:57 1997  Mike Stump  <mrs@cygnus.com>
3430
3431         * except.c (expand_builtin_throw): Add support
3432         -fno-sjlj-exceptions -fPIC exception handling on the SPARC.
3433
3434 Mon Jun 16 01:24:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
3435
3436         * repo.c (extract_string): Null-terminate.
3437
3438         * cp-tree.h (TI_SPEC_INFO): New macro.
3439         (CLASSTYPE_TI_SPEC_INFO): New macro.
3440         * pt.c (push_template_decl): Correctly determine # of template parms 
3441         for partial specs.
3442
3443         * call.c (compare_ics): Really fix 'this' conversions.
3444
3445         * pt.c (do_decl_instantiation): Don't crash on explicit inst of
3446         non-template fn.
3447
3448         * pt.c (push_template_decl): Complain about mismatch in # of
3449         template parms between a class template and a member template.
3450
3451 Sun Jun 15 02:38:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
3452
3453         * method.c (synthesize_method): You can't call
3454         function_cannot_inline_p after finish_function.
3455         * decl.c (finish_function): Turn on flag_inline_functions and turn
3456         off DECL_INLINE before handing a synthesized method to the
3457         backend.
3458
3459 Thu Jun 12 17:35:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
3460
3461         * method.c (synthesize_method): Remove July 30 change to never set
3462         DECL_INLINE if at_eof.
3463
3464 Thu Jun 12 15:25:08 1997  Mike Stump  <mrs@cygnus.com>
3465
3466         * xref.c (GNU_xref_member): Ensure that the node has a
3467         decl_lang_specific part before checking DECL_FRIEND_P.
3468
3469 Thu Jun 12 12:36:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
3470
3471         * pt.c (instantiate_class_template): Diagnose non-class types used
3472         as bases.
3473
3474 Wed Jun 11 17:33:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
3475
3476         * typeck.c (build_conditional_expr): Use convert_for_initialization
3477         instead of convert_and_check.
3478
3479 Wed Jun 11 12:31:33 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
3480
3481         * parse.y (typespec): Don't pedwarn for typeof.
3482
3483 Tue Jun 10 00:22:09 1997  Jason Merrill  <jason@yorick.cygnus.com>
3484
3485         * repo.c (finish_repo): Only check changes if we would write a
3486         repo file.
3487
3488         * call.c (compare_ics): Fix handling of 'this' conversions.
3489
3490         * pt.c (do_decl_instantiation): Support static data too.  Rename
3491         from do_function_instantiation.
3492         * cp-tree.h: Adjust.
3493         * parse.y: Adjust.
3494
3495         * repo.c (extract_string): New fn.
3496         (get_base_filename): Use it.
3497         (init_repo): Compare old args with current args.
3498
3499 Mon Jun  9 14:25:30 1997  Mike Stump  <mrs@cygnus.com>
3500
3501         * Makefile.in, Make-lang.in: Protect C-ls with a comment
3502         character, idea from Paul Eggert <eggert@twinsun.com>.
3503
3504 Mon Jun  9 01:52:03 1997  Jason Merrill  <jason@yorick.cygnus.com>
3505
3506         * typeck.c (c_expand_return): Be more persistent in looking for
3507         returned temps.
3508
3509         * cvt.c (build_up_reference): Use NOP_EXPR for switching from
3510         pointer to reference.
3511
3512         * class.c (build_vbase_path): Don't do anything if PATH has no steps.
3513
3514 Sun Jun  8 03:07:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
3515
3516         * init.c (build_member_call, build_offset_ref):
3517         Use do_scoped_id instead of do_identifier.
3518
3519         * cvt.c (convert): Remove bogosity.
3520
3521 Sat Jun  7 20:50:17 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
3522
3523         * cvt.c (build_up_reference): Do checks of ARGTYPE and
3524         TARGET_TYPE before trying to use get_binfo.
3525
3526 Fri Jun  6 17:36:39 1997  Jason Merrill  <jason@yorick.cygnus.com>
3527
3528         * cvt.c (build_up_reference): Call get_binfo to get access control.
3529
3530         * decl2.c (import_export_decl): If we don't support weaks, leave
3531         statics undefined.
3532
3533 Fri Jun  6 15:55:49 1997  Mike Stump  <mrs@cygnus.com>
3534
3535         * except.c (expand_builtin_throw): Add support for machines that
3536         cannot access globals after throw's epilogue when
3537         -fno-sjlj-exceptions is used.
3538
3539 Thu Jun  5 16:28:43 1997  Jason Merrill  <jason@yorick.cygnus.com>
3540
3541         * parse.y: 'std::' becomes '::'.
3542         * lex.c (real_yylex): Remove 'namespace' warning.
3543         * init.c (build_member_call): Ignore 'std::'.
3544         (build_offset_ref): Likewise.
3545         * decl2.c (do_using_directive): Ignore 'using namespace std;'.
3546         (do_toplevel_using_decl): Ignore 'using std::whatever'.
3547         * decl.c (push_namespace): Just sorry.
3548         (pop_namespace): Nop.
3549         (init_decl_processing): Declare std namespace.
3550
3551 Tue Jun  3 18:08:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
3552
3553         * search.c (push_class_decls): A name which ambiguously refers to
3554         several instantiations of the same template just refers to the
3555         template.
3556
3557 Tue Jun  3 12:30:40 1997  Benjamin Kosnik  <bkoz@cirdan.cygnus.com>
3558
3559         * decl.c (build_enumerator): fix problem with unsigned long
3560         enumerated values being smashed to ints, causing overflow
3561         when computing next enumerated value. (for enum values around
3562         MAX_VAL).
3563
3564 Mon Jun  2 17:40:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
3565
3566         * typeck.c (build_component_ref): Only call mark_used on a decl.
3567
3568 Thu May 29 15:54:17 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
3569
3570         * typeck.c (build_c_cast): Make the check for a ptr to function
3571         more specific before possible default_conversion call.
3572
3573 Thu May 29 13:02:06 1997  Mike Stump  <mrs@cygnus.com>
3574
3575         * except.c (expand_exception_blocks): Simplify and fix and make
3576         sure we don't end a region in a sequence, as expand_end_bindings
3577         doesn't like it.
3578
3579 Wed May 28 17:08:03 1997  Mike Stump  <mrs@cygnus.com>
3580
3581         * except.c (init_exception_processing): Mark terminate as not
3582         returning so that the optimizer can optimize better.
3583
3584 Tue May 27 19:49:19 1997  Mike Stump  <mrs@cygnus.com>
3585
3586         * cvt.c (convert): Don't do any extra work, if we can avoid it
3587         easily.
3588
3589 Tue May 27 18:21:47 1997  Mike Stump  <mrs@cygnus.com>
3590
3591         * *.[chy]: Change cp_convert to ocp_convert, change convert to
3592         cp_convert.  convert is now reserved for the backend, and doesn't
3593         have the semantics a frontend person should ever want.
3594
3595 Fri May 23 10:58:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
3596
3597         * lang-specs.h: Define __EXCEPTIONS if exceptions are enabled.
3598         Lose -traditional support.
3599
3600 Thu May 22 15:41:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
3601
3602         * rtti.c (get_tinfo_var): Use TYPE_PRECISION (sizetype).
3603
3604         * parse.y (self_reference): Do it for templates, too.
3605         * class.c (pushclass): Don't overload_template_name; the alias
3606         generated by build_self_reference serves the same purpose.
3607
3608         * tree.c (list_hash): Make static, take more args.
3609         (list_hash_lookup): Likewise.
3610         (list_hash_add): Make static.
3611         (list_hash_canon): Lose.
3612         (hash_tree_cons): Only build a new node if one isn't already in the
3613         hashtable.
3614         (hash_tree_chain): Use hash_tree_cons.
3615         * cp-tree.h: Adjust.
3616         * decl.c (grokfndecl): Just check IDENTIFIER_GLOBAL_VALUE instead
3617         of calling lookup_name.
3618
3619 Wed May 21 18:24:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
3620
3621         * pt.c (instantiate_class_template): TYPE_VALUES for an enum
3622         doesn't refer to the CONST_DECLs.
3623
3624 Tue May 20 21:09:32 1997  Bob Manson  <manson@charmed.cygnus.com>
3625
3626         * rtti.c (get_tinfo_var): Either INT_TYPE_SIZE or 32, whichever
3627         is bigger.
3628         (expand_class_desc): Convert the last argument to a sizetype.
3629
3630 Tue May 20 13:55:57 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
3631
3632         * gxx.gperf (__complex, __complex__, __imag, __imag__, __real,
3633         __real__): Add reswords.
3634         * hash.h: Regenerate.
3635         * lex.h (rid): Add RID_COMPLEX.
3636         (RID_LAST_MODIFIER): Set to RID_COMPLEX.
3637         * lex.c (init_lex): Add building of RID_COMPLEX.
3638         (real_yylex): General cleanup in line with what c-lex.c also has,
3639         sans the cruft for traditional; add handling of SPEC_IMAG, complex
3640         types, and imaginary numeric constants.
3641         * parse.y (REALPART, IMAGPART): Add tokens.
3642         (unary_expr): Add REALPART and IMAGPART rules.
3643         * cp-tree.h (complex_{integer,float,double,long}_type_node): Declare.
3644         * decl.c (complex_{integer,float,double,long}_type_node): Define
3645         types.
3646         (init_decl_processing): Set up the types.
3647         (grokdeclarator): Add handling of RID_COMPLEX.  Set and use
3648         DEFAULTED_INT instead of EXPLICIT_INT when we default to int type.
3649         * call.c (build_new_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
3650         * cvt.c (cp_convert): Handle COMPLEX_TYPE.
3651         * error.c (dump_type_prefix, dump_type, dump_type_suffix): Add
3652         COMPLEX_TYPE case.
3653         * method.c (build_overload_name): Add handling of the different
3654         COMPLEX_TYPEs, prefixing them with `J'.
3655         * pt.c (process_template_parm): Don't let them use a COMPLEX_TYPE
3656         as a template parm.
3657         (uses_template_parms, tsubst, unify): Add COMPLEX_TYPE case.
3658         * tree.c (lvalue_p): Add REALPART_EXPR and IMAGPART_EXPR cases.
3659         (mapcar): Handle COMPLEX_CST.
3660         * typeck.c (build_binary_op_nodefault): Handle COMPLEX_TYPE.
3661         (common_type): Add code for complex types.
3662         (build_unary_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
3663         (convert_for_assignment): Likewise.
3664         (mark_addressable): Add REALPART_EXPR and IMAGPART_EXPR cases.
3665
3666 Mon May 19 12:26:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
3667
3668         * pt.c (tsubst): Don't pass the MINUS_EXPR for an array domain to
3669         tsubst_expr, as it might try to do overload resolution.
3670
3671 Sat May 17 10:48:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
3672
3673         * pt.c (instantiate_class_template): Oops.
3674
3675 Fri May 16 14:23:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
3676
3677         * cp-tree.def: Add TAG_DEFN.
3678         * pt.c (tsubst_enum): New fn.
3679         (instantiate_class_template): Use it.
3680         (tsubst_expr): Support TAG_DEFN.
3681         (tsubst): Support local enums.
3682         (tsubst_copy): Likewise.
3683         * decl.c (finish_enum): Likewise.
3684         (start_enum): If this is a local enum, switch to permanent_obstack.
3685
3686 Wed May 14 19:08:28 1997  Mike Stump  <mrs@cygnus.com>
3687
3688         * decl.c (store_parm_decls): Set last_parm_cleanup_insn here.
3689         (finish_function): Put the base init code for constructors just
3690         after the parm cleanup insns.
3691         (struct cp_function): Add last_parm_cleanup_insn.
3692         (push_cp_function_context): Likewise.
3693         (pop_cp_function_context): Likewise.
3694         
3695 Tue May 13 15:51:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
3696
3697         * pt.c (tsubst_copy): Handle BIT_NOT_EXPR.
3698
3699 Wed May  7 11:17:59 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
3700
3701         * method.c (emit_thunk) [ASM_OUTPUT_MI_THUNK]: Build up the RTL
3702         for THUNK_FNDECL before we switch to temporary allocation.
3703
3704 Mon May  5 14:46:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
3705
3706         * call.c (build_new_op): Handle null arg2 for ?:.
3707
3708 Thu May  1 18:26:37 1997  Mike Stump  <mrs@cygnus.com>
3709
3710         * except.c (expand_exception_blocks): Ensure that we flow through
3711         the end of the exception region for the exception specification.
3712         Move exception region for the exception specification in, so that
3713         it doesn't protect the parm cleanup.  Remove some obsolete code.
3714         * decl.c (store_parm_decls): Likewise.
3715         (finish_function): Likewise.
3716
3717 Tue Apr 29 15:38:54 1997  Jason Merrill  <jason@yorick.cygnus.com>
3718
3719         * init.c (build_new): Fix nothrow handling.
3720
3721 Tue Apr 29 14:29:50 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
3722
3723         * init.c (emit_base_init): Don't warn about the initialization
3724         list for an artificial member.
3725
3726 Fri Apr 25 17:47:59 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
3727
3728         * expr.c (do_case): Handle !START case for the error msg.
3729
3730 Fri Apr 25 11:55:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
3731
3732         * decl2.c, lang-options.h: New option -Weffc++.
3733         * class.c, decl.c, init.c, typeck.c: Move Effective C++ warnings
3734         to -Weffc++.
3735
3736         * decl2.c (finish_prevtable_vardecl): Change NO_LINKAGE_HEURISTICS
3737         to MULTIPLE_SYMBOL_SPACES.
3738
3739 Wed Apr 23 18:06:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
3740
3741         * method.c (emit_thunk, generic case): Set current_function_is_thunk.
3742
3743         * method.c (emit_thunk, macro case): Set up DECL_RESULT.
3744
3745         * typeck.c (c_expand_return): Don't complain about returning void
3746         to void in an artificial function.
3747         * method.c (make_thunk): Change settings of READONLY/VOLATILE, 
3748         don't set DECL_RESULT, set DECL_ARTIFICIAL.
3749         (emit_thunk, generic code): Also set up DECL_LANG_SPECIFIC. 
3750
3751 Wed Apr 23 14:43:06 1997  Mike Stump  <mrs@cygnus.com>
3752
3753         * init.c (init_decl_processing): Add supoprt for setjmp/longjmp based
3754         exception handling.
3755         * except.c (init_exception_processing): Likewise.
3756         (expand_end_catch_block): Likewise.
3757         (expand_exception_blocks): Likewise.
3758         (expand_throw): Likewise.
3759         * exception.cc (__default_terminate): Likewise.
3760
3761         * init.c (perform_member_init): Use new method of expr level
3762         cleanups, instead of cleanups_this_call and friends.
3763         (emit_base_init): Likewise.
3764         (expand_aggr_vbase_init_1): Likewise.
3765         (expand_vec_init): Likewise.
3766         * decl.c (cp_finish_decl): Likewise.
3767         (expand_static_init): Likewise.
3768         (store_parm_decls): Likewise.
3769         (cplus_expand_expr_stmt): Likewise.
3770         * decl2.c (finish_file): Likewise.
3771         
3772         * Make-lang.in (exception.o): Ok to compile with -O now.
3773
3774         * decl.c (maybe_build_cleanup_1): We no longer have to unsave, as
3775         we know it will be done later by the backend.
3776
3777         * decl2.c (lang_f_options): Remove support for short temps.
3778         * lang-options.h: Likewise.
3779         
3780 Wed Apr 23 04:12:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
3781
3782         * tree.c (varargs_function_p): New fn.
3783         * method.c (emit_thunk): Replace broken generic code with code to
3784         generate a heavyweight thunk function.
3785
3786 Tue Apr 22 02:45:18 1997  Jason Merrill  <jason@yorick.cygnus.com>
3787
3788         * pt.c (process_template_parm): pedwarn about floating-point parms.
3789
3790         * decl.c (grokdeclarator): inline no longer implies static.
3791
3792         * spew.c (yylex): Always return the TYPE_DECL if we got a scope.
3793
3794 Mon Apr 21 15:42:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
3795
3796         * class.c (check_for_override): The signature of an overriding
3797         function is not changed.
3798
3799         * call.c (build_over_call): Move setting of conv into the loop.
3800         Note: this change, along with the related changes of the 18th thru
3801         the 20th of April, fix an infinite loop problem in conversions.
3802
3803 Sun Apr 20 16:24:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
3804
3805         * call.c (build_user_type_conversion_1): Really ignore rvalue
3806         conversions when looking for a REFERENCE_TYPE.
3807
3808         * cvt.c (build_up_reference): Eviscerate, use build_unary_op.
3809         * cp-tree.h (TREE_REFERENCE_EXPR): #if 0.
3810         * typeck.c (decay_conversion): Don't set TREE_REFERENCE_EXPR.
3811         (build_unary_op): Likewise.
3812         * call.c (build_over_call): See through a CONVERT_EXPR around the
3813         ADDR_EXPR for on a temporary.
3814         * typeck.c (c_expand_return): See through a CONVERT_EXPR around
3815         the ADDR_EXPR for a local variable.
3816
3817 Fri Apr 18 12:11:33 1997  Jason Merrill  <jason@yorick.cygnus.com>
3818
3819         * call.c (build_user_type_conversion_1): If we're trying to
3820         convert to a REFERENCE_TYPE, only consider lvalue conversions.
3821         (build_new_function_call): Print candidates.
3822         (implicit_conversion): Try a temp binding if the lvalue conv is BAD.
3823         (reference_binding): Binding a temporary of a reference-related type
3824         is BAD.
3825
3826 Thu Apr 17 14:37:22 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
3827
3828         * inc/typeinfo (type_info::before): Add cv-qualifier-seq.
3829         * tinfo2.cc (type_info::before): Likewise.
3830
3831 Mon Apr 14 12:38:17 1997  Jason Merrill  <jason@yorick.cygnus.com>
3832
3833         * call.c (implicit_conversion): Oops.
3834
3835 Fri Apr 11 02:18:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
3836
3837         * call.c (implicit_conversion): Try to find a reference conversion
3838         before binding a const reference to a temporary.
3839
3840 Wed Apr  2 12:51:36 1997  Mike Stump  <mrs@cygnus.com>
3841
3842         * exception.cc (__default_unexpected): Call terminate by default,
3843         so that if the user overrides terminate, the correct function will
3844         be called.
3845         
3846 Wed Mar 19 14:14:45 1997  Mike Stump  <mrs@cygnus.com>
3847
3848         * parse.y (left_curly): Avoid trying to use any fields of
3849         error_mark_node, as there aren't any.
3850
3851 Thu Mar 13 16:33:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
3852
3853         * lex.c (do_identifier): Avoid breaking on overloaded methods
3854         as default arguments.
3855
3856 Wed Mar 12 13:55:10 1997  Hans-Peter Nilsson  <Hans-Peter.Nilsson@axis.se>
3857
3858         * call.c (add_template_candidate): Initialize the variable "dummy".
3859
3860 Mon Mar 10 15:13:14 1997  Brendan Kehoe  <brendan@canuck.cygnus.com>
3861
3862         * decl.c (start_decl): Make sure TYPE isn't an error_mark_node
3863         before we try to use TYPE_SIZE and TREE_CONSTANT on it.
3864
3865 Fri Mar  7 13:19:36 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
3866
3867         * cp-tree.h (comp_ptr_ttypes, more_specialized): Add decl.
3868         (debug_binfo): Delete decl, not needed.
3869
3870         * tree.c (fnaddr_from_vtable_entry, function_arg_chain,
3871         promotes_to_aggr_type): Delete fns.
3872         * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY,
3873         SET_FNADDR_FROM_VTABLE_ENTRY, FUNCTION_ARG_CHAIN,
3874         PROMOTES_TO_AGGR_TYPE): Delete alternates to #if 1.
3875
3876         * decl.c (pending_invalid_xref{,_file,_line}): Delete unused vars.
3877
3878         * friend.c (is_friend_type): Delete fn.
3879         * cp-tree.h (is_friend_type): Delete decl.
3880
3881         * decl.c (original_result_rtx, double_ftype_double,
3882         double_ftype_double_double, int_ftype_int, long_ftype_long,
3883         float_ftype_float, ldouble_ftype_ldouble, last_dtor_insn): Make static.
3884         * typeck.c (original_result_rtx, warn_synth): Delete extern decls.
3885
3886         * decl.c (push_overloaded_decl{,_top_level}): Make static, adding
3887         fwd decls.
3888         * cp-tree.h (push_overloaded_decl{,_top_level}): Delete decls.
3889
3890         * decl.c (pushdecl_nonclass_level): #if 0, unused.
3891         * cp-tree.h (pushdecl_nonclass_level): #if 0 decl.
3892
3893         * lex.c (reinit_lang_specific): #if 0, unused.
3894         * cp-tree.h (reinit_lang_specific): #if 0 decl.
3895
3896         * decl.c (revert_static_member_fn): Make static, adding fwd decl.
3897         * cp-tree.h (revert_static_member_fn): Delete decl.
3898
3899         * class.c (root_lang_context_p): Delete fn.
3900         * cp-tree.h (root_lang_context_p): Delete decl.
3901
3902         * decl.c (set_current_level_tags_transparency): #if 0, unused.
3903         * cp-tree.h (set_current_level_tags_transparency): #if 0 decl.
3904
3905         * lex.c (set_vardecl_interface_info): Make static.
3906         * cp-tree.h (set_vardecl_interface_info): Delete decl.
3907
3908         * call.c (find_scoped_type): Make static.
3909         * cp-tree.h (find_scoped_type): Delete decl.
3910
3911         * search.c (convert_pointer_to_vbase): Make static.
3912         * cp-tree.h (convert_pointer_to_vbase): Delete decl.
3913
3914         * decl.c (const_ptr_type_node): Likewise.
3915         * cp-tree.h (const_ptr_type_node): Delete decl.
3916
3917         * typeck.c (common_base_type): Make static.
3918         * cp-tree.h (common_base_types): Delete erroneous decl.
3919
3920         * pt.c (classtype_mangled_name): Make static.
3921         * cp-tree.h (classtype_mangled_name): Delete decl.
3922
3923         * lex.c (check_newline): Make static.
3924         * cp-tree.h (check_newline): Delete decl.
3925
3926         * typeck.c (build_x_array_ref): Delete fn, same idea as
3927         grok_array_decl.
3928         * cp-tree.h (build_x_array_ref): Delete decl.
3929
3930         * lex.c (copy_decl_lang_specific): Delete fn, same idea as
3931         copy_lang_decl.
3932         * cp-tree.h (copy_decl_lang_specific): #if 0 decl.
3933
3934         * class.c (build_vtable_entry): Make static.
3935         * cp-tree.h (build_vtable_entry): Delete decl.
3936
3937         * class.c (build_vbase_pointer): Make static.
3938         * cp-tree.h (build_vbase_pointer): Delete decl.
3939
3940         * sig.c (build_sptr_ref): Add forward decl and make static.
3941         * cp-tree.h (build_sptr_ref): Delete decl.
3942
3943         * call.c (build_new_method_call): Add forward decl and make static.
3944         * cp-tree.h (build_new_method_call): Delete decl.
3945
3946         * call.c (build_object_call): Make static.
3947         * class.c (check_for_override, complete_type_p, mark_overriders):
3948         Likewise.
3949         * decl.c (cp_function_chain): Likewise.
3950         * lex.c (set_typedecl_interface_info, reinit_parse_for_block):
3951         Likewise.
3952         * pt.c (comp_template_args, get_class_bindings, push_tinst_level):
3953         Likewise.
3954         * tree.c (build_cplus_array_type_1): Likewise.
3955         * typeck.c (comp_ptr_ttypes_{const,real,reinterpret}): Likewise.
3956         (comp_target_parms): Likewise.
3957
3958         * init.c (build_builtin_call): Make static.
3959         * cp-tree.h (build_builtin_call): Delete decl.
3960
3961         * typeck.c (binary_op_error): Delete decl.
3962         * cp-tree.h (binary_op_error): Likewise.
3963
3964 Thu Mar  6 16:13:52 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
3965
3966         * call.c (build_method_call): Compare against error_mark_node
3967         directly, rather than the ERROR_MARK tree code.
3968         * cvt.c (cp_convert): Likewise.
3969         * decl.c (print_binding_level): Likewise.
3970         (duplicate_decls): Likewise.
3971         (grokdeclarator): Likewise.
3972         (grokdeclarator): Likewise.
3973         * init.c (expand_aggr_init_1): Likewise.
3974         (decl_constant_value): Likewise.
3975         * method.c (build_opfncall): Likewise.
3976         (hack_identifier): Likewise.
3977         * typeck.c (build_modify_expr): Likewise.
3978
3979         * typeck.c (build_c_cast): Don't decl TYPE as register tree.
3980
3981 Sun Mar  2 02:54:36 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
3982
3983         * pt.c (unify): Strip NOP_EXPR wrappers before unifying integer values.
3984
3985         * pt.c (coerce_template_parms): Add new error message.
3986
3987         * method.c (build_overload_value): Implement name mangling for
3988         floating-point template arguments.
3989
3990         * method.c (build_overload_int, icat, dicat): Fix mangling of template
3991         arguments whose absolute value doesn't fit in a signed word.
3992
3993 Mon Mar  3 12:14:54 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
3994
3995         * friend.c: New file; put all of the friend stuff in here.
3996         * init.c: Instead of here.
3997         * Makefile.in (CXX_OBJS): Add friend.o.
3998         (friend.o): Add dependencies.
3999         * Make-lang.in (CXX_SRCS): Add $(srcdir)/cp/friend.c.
4000
4001 Sun Mar  2 11:04:43 1997  Jason Merrill  <jason@yorick.cygnus.com>
4002
4003         * call.c (build_scoped_method_call): Complain if the scope isn't a
4004         base.
4005
4006 Wed Feb 26 11:31:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
4007
4008         * parse.y (left_curly): Don't crash on erroneous type.
4009
4010         * init.c (build_delete): Fix type of ref.
4011
4012 Tue Feb 25 12:41:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
4013
4014         * search.c (get_vbase_1): Renamed from get_vbase.
4015         (get_vbase): Wrapper, now non-static.
4016         (convert_pointer_to_vbase): Now static.
4017
4018         * call.c (build_scoped_method_call): Accept a binfo for BASETYPE.
4019         * init.c (build_delete): Pass one.
4020         (build_partial_cleanup_for): Use build_scoped_method_call.
4021         * decl.c (finish_function): Pass a binfo.
4022
4023 Mon Feb 24 15:00:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
4024
4025         * call.c (build_over_call): Only synthesize non-trivial copy ctors.
4026
4027         * typeck.c (build_c_cast): Lose other reference to flag.
4028
4029         * call.c (build_field_call): Don't look for [cd]tor_identifier.
4030         * decl2.c (delete_sanity): Remove meaningless use of
4031         LOOKUP_HAS_IN_CHARGE.
4032         * decl.c (finish_function): Use build_scoped_method_call instead
4033         of build_delete for running vbase dtors.
4034         * init.c (build_delete): Call overload resolution code instead of
4035         duplicating it badly.
4036
4037 Thu Feb 20 15:12:15 1997  Jason Merrill  <jason@yorick.cygnus.com>
4038
4039         * call.c (build_over_call): Call mark_used before trying to elide
4040         the call.
4041
4042         * decl.c (implicitly_declare): Don't set DECL_ARTIFICIAL.
4043
4044 Wed Feb 19 11:18:53 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4045
4046         * typeck.c (build_modify_expr): Always pedwarn for a cast to
4047         non-reference used as an lvalue.
4048
4049 Wed Feb 19 10:35:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
4050
4051         * cvt.c (cp_convert_to_pointer): Convert from 0 to a pmf properly.
4052
4053 Tue Feb 18 15:40:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
4054
4055         * parse.y (handler): Fix template typo.
4056
4057 Sun Feb 16 02:12:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
4058
4059         * error.c (lang_decl_name): New fn.
4060         * tree.c (lang_printable_name): Use it.
4061
4062 Fri Feb 14 16:57:05 1997  Mike Stump  <mrs@cygnus.com>
4063
4064         * g++spec.c: Include config.h so that we can catch bzero #defines
4065         from the config file.
4066
4067 Tue Feb 11 13:50:48 1997  Mike Stump  <mrs@cygnus.com>
4068
4069         * new1.cc: Include a declaration for malloc, to avoid warning, and
4070         avoid lossing on systems that require one (ones that define malloc
4071         in xm.h).
4072
4073 Mon Feb 10 22:51:13 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
4074
4075         * decl2.c (max_tinst_depth): New variable.
4076         (lang_decode_option): Parse "-ftemplate-depth-NN" command line
4077         option.
4078         * pt.c (max_tinst_depth): Variable moved.
4079         * lang-options.h: Declare "-ftemplate-depth-NN" command line option
4080         as legal.
4081
4082 Fri Feb  7 15:43:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
4083
4084         * decl.c (xref_basetypes): Allow a base class that depends on
4085         template parms to be incomplete.
4086
4087         * decl2.c (build_expr_from_tree): Support typeid(type).
4088         * rtti.c (get_typeid): Support templates.
4089         (expand_si_desc, expand_class_desc): Fix string length.
4090         (expand_ptr_desc, expand_attr_desc, expand_generic_desc): Likewise.
4091
4092 Tue Feb  4 11:28:24 1997  Jason Merrill  <jason@yorick.cygnus.com>
4093
4094         * pt.c (unify, case TEMPLATE_CONST_PARM): Use cp_tree_equal.
4095
4096         * pt.c (tsubst): Put it back for -fno-ansi-overloading.
4097
4098 Mon Feb  3 18:41:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
4099
4100         * pt.c (tsubst, case FUNCTION_DECL): Lose obsolete code that
4101         smashes together template and non-template decls of the same
4102         signature.
4103
4104 Thu Jan 30 19:18:00 1997  Jason Merrill  <jason@yorick.cygnus.com>
4105
4106         * pt.c (tsubst): Don't recurse for the type of a TYPENAME_TYPE.
4107
4108 Wed Jan 29 11:40:35 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4109
4110         * decl.c (duplicate_decls): Next route, pedwarn about different
4111         exceptions if -pedantic *or* olddecl !DECL_IN_SYSTEM_HEADER.
4112
4113 Tue Jan 28 20:43:29 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4114
4115         * cp-tree.h (HAS_DEFAULT_IMPLEMENTATION): Delete macro.
4116         (struct lang_type): Delete has_default_implementation member.
4117         Increase dummy to 21.
4118         * decl.c (start_method): Delete usage.
4119
4120         * cp-tree.h (build_call, null_ptr_cst_p, in_function_p,
4121         store_after_parms, start_decl_1, auto_function): Add decls.
4122         (get_arglist_len_in_bytes, declare_implicit_exception,
4123         have_exceptions_p, make_type_decl, typedecl_for_tag,
4124         store_in_parms, pop_implicit_try_blocks, push_exception_cleanup,
4125         build_component_type_expr, cplus_exception_name,
4126         {make,clear}_anon_parm_name, dont_see_typename): Removed decls.
4127         * call.c (build_this): Make static.
4128         (is_complete): Likewise.
4129         (implicit_conversion): Likewise.
4130         (reference_binding): Likewise.
4131         (standard_conversion): Likewise.
4132         (strip_top_quals): Likewise.
4133         (non_reference): Likewise.
4134         (build_conv): Likewise.
4135         (user_harshness): Likewise.
4136         (rank_for_ideal): Likewise.
4137         * decl.c (start_decl_1): Delete forward decl.
4138         (push_decl_level): Make static.
4139         (resume_binding_level): Make static.
4140         (namespace_bindings_p): Make static.
4141         (declare_namespace_level): Make static.
4142         (lookup_name_real): Make static.
4143         (duplicate_decls): Make static.  Take register off NEWDECL and
4144         OLDDECL parm decls.
4145         * decl2.c (get_sentry): Make static.
4146         (temp_name_p): Delete fn.
4147         * except.c (auto_function): Delete decl.
4148         * lex.c (handle_{cp,sysv}_pragma): Make static.
4149         (handle_sysv_pragma) [HANDLE_SYSV_PRAGMA]: Add forward decl.
4150         * method.c (do_build_{copy_constructor,assign_ref}): Make static.
4151         * pt.c (tsubst_expr_values): Make static.
4152         * rtti.c (combine_strings): Delete decl.
4153
4154 Tue Jan 28 16:40:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
4155
4156         * pt.c (push_template_decl): Handle getting a typedef.
4157
4158         * call.c (build_new_function_call): Complain about void arg.
4159
4160 Tue Jan 28 15:25:09 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4161
4162         * decl.c (duplicate_decls): Give pedwarn of different exceptions
4163         if -pedantic, instead of olddecl !DECL_IN_SYSTEM_HEADER.
4164
4165 Mon Jan 27 19:21:29 1997  Mike Stump  <mrs@cygnus.com>
4166
4167         * except.c (expand_throw): Don't expand the cleanup tree here,
4168         since we are not going to write the rtl out.  Fixes problem with
4169         -g -O on SPARC.
4170
4171 Mon Jan 27 16:24:35 1997  Sean McNeil  <sean@mcneil.com>
4172
4173         * Make-lang.in: Add $(exeext) as necessary.
4174
4175 Mon Jan 27 13:20:39 1997  Mike Stump  <mrs@cygnus.com>
4176
4177         * parse.y (handler_seq): Must have at least one catch clause.
4178
4179 Sat Jan 25 12:00:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
4180
4181         * call.c (add_builtin_candidate): Restore ?: hack.
4182
4183         * decl.c (grok_op_properties): More warnings.
4184
4185 Sat Jan 25 08:50:03 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4186
4187         * decl.c (duplicate_decls): On second thought, do it as a pedwarn
4188         still but only if !DECL_IN_SYSTEM_HEADER (olddecl).
4189
4190         * decl.c (duplicate_decls): Scale back to a warning, and only do
4191         'em if -pedantic.
4192
4193 Fri Jan 24 17:52:54 1997  Mike Stump  <mrs@cygnus.com>
4194
4195         * decl.c (duplicate_decls): pedwarn mismatched exception
4196         specifications.
4197
4198 Thu Jan 23 18:18:54 1997  Mike Stump  <mrs@cygnus.com>
4199
4200         * call.c (build_new_method_call): Don't display the invisible
4201         argument for controlling virtual bases.
4202
4203 Thu Jan 23 16:48:10 1997  Mike Stump  <mrs@cygnus.com>
4204
4205         * new: Add nothrow new and delete, bad_alloc and throw specifications
4206         for delete.
4207         * decl.c (init_decl_processing): Add throw specification for delete.
4208         * new.cc (nothrow): Define.
4209         * lex.c (real_yylex): Removing warning that throw and friends are
4210         keywords.
4211         * new1.cc (operator new (size_t sz, const nothrow_t&)): Define.
4212         * new2.cc (operator new[] (size_t sz, const nothrow_t&): Define.
4213         * Make-lang.in: Add new{1,2}.{cc,o}.
4214
4215 Thu Jan 23 16:39:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
4216
4217         * lex.c (cons_up_default_function): Fix return type of synth op=.
4218
4219         * init.c (emit_base_init): Add warnings for uninitialized members
4220         and bases.
4221
4222         * decl.c (xref_basetypes): Add warning for non-polymorphic type
4223         with destructor used as base type.
4224
4225         * decl.c (grok_op_properties): Add warning for op= returning void.
4226         * typeck.c (c_expand_return): Add warning for op= returning anything
4227         other than *this.
4228
4229         * class.c (finish_struct_1): Add warning for class with pointers
4230         but not copy ctor or copy op=.
4231
4232         * cp-tree.h (TI_PENDING_TEMPLATE_FLAG): New macro.
4233         * pt.c (add_pending_template): Use it instead of LANG_FLAG_0.
4234         (instantiate_template): If -fexternal-templates, add this
4235         instantiation to pending_templates.
4236
4237         * decl2.c (copy_assignment_arg_p): Disable old hack to support
4238         Booch components.
4239
4240 Tue Jan 21 18:32:04 1997  Mike Stump  <mrs@cygnus.com>
4241
4242         * cvt.c (cp_convert): Pedwarn enum to pointer conversions.
4243
4244 Mon Jan 20 17:59:51 1997  Jason Merrill  <jason@yorick.cygnus.com>
4245
4246         * call.c (standard_conversion): Handle getting references.  Tack
4247         on RVALUE_CONV here.  Do it for non-class types, too.
4248         (reference_binding): Pass references to standard_conversion.
4249         (implicit_conversion): Likewise.
4250         (add_builtin_candidate): Disable one ?: kludge.
4251         (convert_like): Handle RVALUE_CONVs for non-class types.
4252         (joust): Disable the other ?: kludge.
4253
4254 Mon Jan 20 14:53:13 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4255
4256         * decl.c (init_decl_processing): Add code to build up common
4257         function types beforehand, to avoid creation then removal of
4258         things already in the hash table.
4259
4260 Mon Jan 20 14:43:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
4261
4262         * decl.c (finish_function): Also zero out DECL_INCOMING_RTL for
4263         the arguments.
4264
4265         * error.c (dump_expr, TEMPLATE_CONST_PARM): Don't require
4266         current_template_parms.
4267
4268 Fri Jan 17 10:25:42 1997  Jason Merrill  <jason@yorick.cygnus.com>
4269
4270         * search.c (lookup_field): Don't return a function, check want_type.
4271
4272 Thu Jan 16 18:14:35 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4273
4274         * init.c (build_new): Make sure PLACEMENT has a type.
4275
4276 Thu Jan 16 17:40:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
4277
4278         * init.c (build_new): Support new (nothrow).
4279
4280 Wed Jan 15 12:38:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
4281
4282         * pt.c (instantiate_decl): Also do push_to_top_level before setting
4283         up DECL_INITIAL.
4284
4285         * cp-tree.h (PARM_DEFAULT_FROM_TEMPLATE): New macro.
4286         * pt.c (tsubst): Defer instantiation of default args.
4287         * call.c (build_over_call): Until here.
4288
4289 Wed Jan 15 10:08:10 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4290
4291         * search.c (lookup_field): Make sure we have an
4292         IDENTIFIER_CLASS_VALUE before we try to return it.
4293
4294 Thu Jan  9 07:19:01 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
4295
4296         * call.c (build_method_call): Delete unused var PARM.
4297         (build_overload_call_real): Likewise.
4298         (build_object_call): Delete unused var P.
4299         (build_new_op): Likewise.
4300         * decl.c (builtin_type_tdescs_{arr, len, max}): #if 0 out static
4301         var definitions, which are never used.
4302         (shadow_tag): Delete unused var FN.
4303         * expr.c (cplus_expand_expr): Delete unused var ORIGINAL_TARGET.
4304         * init.c (build_new): Delete unused var ALLOC_TEMP.
4305         * method.c (hack_identifier): Delete unused var CONTEXT.
4306         (do_build_copy_constructor): Delete unused var NAME.
4307         (synthesize_method): Delete unused var BASE.
4308         * pt.c (lookup_template_class): Delete unused var CODE_TYPE_NODE.
4309         * rtti.c (build_headof): Delete unused var VPTR.
4310         (get_typeid): Delete unused var T.
4311         * typeck.c (build_conditional_expr): Delete unused vars ORIG_OP1
4312         and ORIG_OP2.
4313         (build_ptrmemfunc): Delete unused vars U and NINDEX.
4314         * typeck2.c (build_functional_cast): Delete unused var BINFO.
4315
4316 Wed Jan  8 13:09:54 1997  Jason Merrill  <jason@yorick.cygnus.com>
4317
4318         * search.c (lookup_field): Use IDENTIFIER_CLASS_VALUE to look up
4319         things in a type being defined.
4320         * decl.c (finish_enum): Reverse the values so that they are in
4321         the correct order.
4322
4323         * pt.c (instantiate_class_template): Don't initialize
4324         BINFO_BASETYPES until the vector is filled out.
4325         (unify): Don't abort on conflicting bindings, just fail.
4326         (instantiate_decl): Do push_tinst_level before any tsubsting.
4327
4328         * method.c (build_overload_value): Handle getting a
4329         TEMPLATE_CONST_PARM for a pointer.
4330
4331 Tue Jan  7 14:00:58 1997  Jason Merrill  <jason@yorick.cygnus.com>
4332
4333         * init.c (expand_member_init): Don't give 'not a base' error for
4334         templates.
4335
4336         * pt.c (instantiate_decl): Call import_export_decl later.
4337
4338         * pt.c (instantiate_class_template): Return a value.
4339
4340         * parse.y (extension): New rule for __extension__.
4341         (extdef, unary_expr, decl, component_decl): Use it.
4342
4343 Tue Jan  7 09:20:28 1997  Mike Stump  <mrs@cygnus.com>
4344
4345         * class.c (base_binfo): Remove unused base_has_virtual member.
4346         (finish_base_struct): Likewise.
4347         (finish_struct_1): Likewise.
4348
4349 Tue Dec 31 20:25:50 1996  Mike Stump  <mrs@cygnus.com>
4350
4351         * search.c (expand_upcast_fixups): Fix bogus code generation
4352         problem where the generated code uses the wrong index into the
4353         runtime built vtable on the stack.  Old code could clobber random
4354         stack values.
4355
4356 Tue Dec 31 15:16:56 1996  Mike Stump  <mrs@cygnus.com>
4357
4358         * init.c (perform_member_init): Make sure the partial EH cleanups
4359         live on the function_obstack.
4360
4361 Fri Dec 27 10:31:40 1996  Paul Eggert  <eggert@twinsun.com>
4362
4363         * Make-lang.in (g++spec.o): Don't use $< with an explicit target;
4364         this isn't portable to some versions of `make' (e.g. Solaris 2.5.1).
4365
4366 Tue Dec 24 10:24:03 1996  Jeffrey A Law  (law@cygnus.com)
4367
4368         * decl.c (grokvardecl): Avoid ANSI style initialization.
4369
4370 Sun Dec 22 04:22:06 1996  Jason Merrill  <jason@yorick.cygnus.com>
4371
4372         * pt.c (tsubst): Tweak arg types for a FUNCTION_TYPE.
4373
4374 Fri Dec 20 17:09:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
4375
4376         * pt.c (instantiate_class_template): Call grok_{ctor,op}_properties.
4377
4378 Fri Dec 20 12:17:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4379
4380         * g++spec.c (lang_specific_driver): Put missing hyphen in front of
4381         arguments we compare against.  Start the count of I at 1, not 0,
4382         since argv[0] is still the command.
4383
4384 Thu Dec 19 11:53:57 1996  Stan Shebs  <shebs@andros.cygnus.com>
4385
4386         * lang-specs.h: Accept .cp as an C++ extension.
4387
4388 Mon Dec 16 22:43:31 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4389
4390         * cp-tree.h (ptr_reasonably_similar): Add decl.
4391
4392 Thu Dec 12 15:00:35 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4393
4394         * decl.c (grokvardecl): Change SPECBITS parm to be the SPECBITS_IN
4395         pointer.  New local SPECBITS with the parm's value.
4396         (grokdeclarator): Pass &specbits down.
4397
4398         * parse.y (expr_no_commas): Make sure $$ is not an error_mark_node
4399         before we try to do C_SET_EXP_ORIGINAL_CODE on it.
4400
4401         * search.c (envelope_add_decl): Check that the CLASSTYPE_CID of
4402         CONTEXT is not 0 before we try to use TYPE_DERIVES_FROM.
4403
4404         * decl.c (cplus_expand_expr_stmt): Only expand the expr if EXP is
4405         not an error_mark_node.
4406
4407 Sat Dec  7 17:20:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
4408
4409         * cp-tree.h (TYPE_MAIN_DECL): Use TYPE_STUB_DECL.
4410         * *.c: Use TYPE_MAIN_DECL instead of TYPE_NAME where appropriate.
4411         
4412 Fri Dec  6 14:40:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
4413
4414         * decl.c (grokdeclarator): When giving an anonymous struct a name,
4415         replace TYPE_NAME instead of TYPE_IDENTIFIER (so TYPE_STUB_DECL is
4416         not affected).
4417
4418         * typeck2.c (build_m_component_ref): If component is a pointer
4419         to data member, resolve the OFFSET_REF now.
4420
4421         * call.c (convert_like): Don't go into infinite recursion.
4422
4423         * pt.c (coerce_template_parms): Use tsubst_expr for non-type args.
4424
4425         * class.c (finish_struct_1): Set DECL_ARTIFICIAL on the vptr.
4426         * tree.c (layout_basetypes): And on the vbase ptr.
4427
4428 Thu Dec  5 02:11:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
4429
4430         * decl.c (BOOL_TYPE_SIZE): Define in terms of POINTER_SIZE or
4431         CHAR_TYPE_SIZE so bool is always the same size as another type.
4432
4433         * decl.c (pushtag): Set DECL_IGNORED_P for DWARF, too.
4434
4435 Tue Dec  3 23:18:37 1996  Jason Merrill  <jason@yorick.cygnus.com>
4436
4437         * decl2.c (grok_x_components): Remove synthesized methods from
4438         TYPE_METHODS of an anonymous union, complain about member
4439         functions.
4440         * decl.c (shadow_tag): Wipe out memory of synthesized methods in
4441         anonymous unions.
4442         (finish_function): Just clear the DECL_RTL of our arguments.
4443
4444 Fri Nov 29 21:54:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
4445
4446         * decl2.c (finish_file): Emit DWARF debugging info for static data
4447         members.
4448
4449         * pt.c (tsubst): If t is a stub decl, return the stub decl for type.
4450
4451 Wed Nov 27 14:47:15 1996  Bob Manson  <manson@charmed.cygnus.com>
4452
4453         * typeck.c (build_component_ref): Don't die if COMPONENT isn't a
4454         IDENTIFIER_NODE.
4455
4456 Wed Nov 27 16:05:19 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
4457
4458         * Make-lang.in (g++-cross$(exeext)): Fix typo.
4459
4460 Wed Nov 27 08:14:00 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4461
4462         Make the g++ driver now be a standalone program, rather than one
4463         that tries to run the gcc driver after munging up the options.
4464         * Make-lang.in (g++.c, g++spec.o): New rules.
4465         (g++.o): New rule, based on gcc.o with -DLANG_SPECIFIC_DRIVER
4466         added.
4467         (g++$(exeext)): New rule, based on xgcc rule.
4468         (g++-cross$(exeext)): Now just copies g++$(exeext) over.
4469         * g++spec.c: New file.
4470         * g++.c: Removed file.
4471
4472 Tue Nov 26 19:01:09 1996  Mike Stump  <mrs@cygnus.com>
4473
4474         * cvt.c (build_up_reference): Arrange for any temporary values
4475         that have been keep in registers until now to be put into memory.
4476
4477 Mon Nov 25 15:16:41 1996  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4478
4479         * Make-lang.in (c++.stage[1234]): Depend upon stage[1-4]-start, so
4480         that make -j3 bootstrap works better.
4481
4482 Sun Nov 24 02:09:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
4483
4484         * decl.c (pushtag): Do pushdecl for anon tags.
4485
4486 Thu Nov 21 16:30:24 1996  Jason Merrill  <jason@yorick.cygnus.com>
4487
4488         * typeck.c (c_expand_return): Fix logic.
4489         (unary_complex_lvalue): Avoid unused warning on address of INIT_EXPR.
4490
4491 Wed Nov 20 18:47:31 1996  Bob Manson  <manson@charmed.cygnus.com>
4492
4493         * g++.c (main): Make sure arglist has a final NULL entry.  Add
4494         PEXECUTE_LAST to the flags passed to pexecute, as otherwise
4495         stdin/stdout of the invoked program are redirected to
4496         nowheresville.
4497
4498 Tue Nov 19 16:12:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
4499
4500         * decl.c (implicitly_declare): Set DECL_ARTIFICIAL.
4501
4502 Tue Nov 19 15:48:19 1996  Mike Stump  <mrs@cygnus.com>
4503
4504         * init.c (resolve_offset_ref): Handle obj.vfn better.
4505         * typeck.c (build_component_ref): Set TREE_TYPE on result from
4506         build_vfn_ref.
4507
4508 Tue Nov 19 13:14:33 1996  Mike Stump  <mrs@cygnus.com>
4509
4510         * typeck.c (convert_for_assignment): Also handle anachronistic
4511         implicit conversions from (::*)() to cv void*.
4512         * cvt.c (cp_convert_to_pointer): Likewise.
4513
4514 Mon Nov 18 17:05:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
4515
4516         * lex.c (handle_cp_pragma): Fix bogus warning.
4517
4518 Mon Nov 18 16:10:43 1996  Mike Stump  <mrs@cygnus.com>
4519
4520         * cvt.c (cp_convert_to_pointer): Avoid thinking a POINTER_TYPE
4521         (METHOD_TYPE) is a TYPE_PTRMEMFUNC_P.
4522
4523 Thu Nov 14 23:18:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
4524
4525         * class.c (finish_struct_1): Support DWARF2_DEBUG.
4526         * search.c (dfs_debug_mark): Likewise.
4527         * decl2.c (finish_vtable_vardecl): Likewise.
4528         * decl.c (pushtag, finish_enum): Likewise.
4529         * lex.c (check_newline): Use debug_* instead of calling *out
4530         functions directly.
4531
4532 Thu Nov 14 15:21:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4533
4534         * Make-lang.in (cplib2.ready): Add else clause to avoid problems
4535         on some picky hosts.
4536
4537 Wed Nov 13 12:32:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
4538
4539         * class.c (finish_struct_1): A class has a non-trivial copy
4540         constructor if it has virtual functions.
4541
4542         * cvt.c (cp_convert): Always call a constructor.
4543
4544         * call.c (reference_binding): Still tack on a REF_BIND
4545         for bad conversions.
4546         (build_user_type_conversion_1): Propagate ICS_BAD_FLAG.
4547
4548         * typeck.c (convert_arguments): Pass LOOKUP_ONLYCONVERTING.
4549         (c_expand_return): Likewise.
4550         * typeck2.c (digest_init): Likewise for { }.
4551         * init.c (expand_aggr_init_1): Keep the CONSTRUCTOR handling.
4552         * cvt.c (cp_convert): Handle failure better.
4553
4554 Wed Nov 13 11:51:20 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4555
4556         * g++.c (main): Also set PEXECUTE_SEARCH, to make the invocation
4557         of GCC be path-relative. 
4558
4559 Wed Nov 13 11:27:16 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
4560
4561         * Make-lang.in (g++-cross): G++-cross doesn't need version.o, but
4562         it does need choose-temp.o and pexecute.o.
4563
4564 Wed Nov 13 07:53:38 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4565
4566         * g++.c (error) [!HAVE_VPRINTF]: Put error back for the only time
4567         that we still use it.
4568         (P_tmpdir, R_OK, W_OK, X_OK) [__MSDOS__]: Delete unnecessary macros.
4569
4570 Wed Nov 13 02:00:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
4571
4572         * init.c (expand_default_init): Avoid calling constructors to 
4573         initialize reference temps.
4574
4575         * cvt.c (convert_to_reference): Fix.
4576
4577 Tue Nov 12 19:10:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
4578
4579         * cvt.c (cp_convert): Simplify for flag_ansi_overloading.
4580         (convert_to_reference): Likewise.
4581         * typeck.c (convert_for_initialization): Likewise.
4582         * init.c (expand_default_init): Likewise.
4583         (expand_aggr_init_1): Likewise.
4584         * cp-tree.h (CONV_NONCONVERTING): Lose.
4585         * typeck.c (build_c_cast): Lose allow_nonconverting parm.
4586         * *.c: Adjust.
4587         * call.c (build_user_type_conversion_1): Assume LOOKUP_ONLYCONVERTING.
4588
4589 Tue Nov 12 16:29:04 1996  Brendan Kehoe  <brendan@canuck.cygnus.com>
4590
4591         * pt.c (tsubst_expr): Reverse args to expand_start_catch_block.
4592
4593 Tue Nov 12 15:26:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
4594
4595         * init.c (expand_aggr_init_1): Don't crash on non-constructor
4596         TARGET_EXPR.
4597
4598 Tue Nov 12 14:00:50 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4599
4600         * g++.c: Include gansidecl.h.
4601         (VPROTO, PVPROTO, VA_START): Delete.
4602         (choose_temp_base_try, choose_temp_base, perror_exec,
4603         run_dos) [__MSDOS__]: Delete fns.
4604         (pfatal_with_name): Delete fn.
4605         (temp_filename): Declare like in gcc.c.
4606         (pexecute, pwait, choose_temp_base): Declare from gcc.c.
4607         (error_count, signal_count): Define.
4608         (error): Delete both definitions.
4609         (PEXECUTE_{FIRST,LAST,SEARCH,VERBOSE}): Define from gcc.c.
4610         (pfatal_pexecute): Add fn from gcc.c.
4611         (main): Rename local VERBOSE var to VERBOSE_FLAG.  Rewrite the
4612         code to use the pexecute stuff also used by gcc.c.
4613         (MIN_FATAL_STATUS): Define.
4614         * Make-lang.in (g++): Add dependency on and linking with
4615         choose-temp.o and pexecute.o.
4616
4617         * cp-tree.h: Include gansidecl.h.
4618         (STDIO_PROTO): Delete #undef/#define.
4619         * cvt.c (NULL): Delete #undef/#define.
4620         * expr.c (NULL): Likewise.
4621         * init.c (NULL): Likewise.
4622         * rtti.c (NULL): Likewise.
4623         * xref.c (NULL): Likewise.
4624
4625         * cp-tree.h (build_user_type_conversion): Add prototype.
4626         * call.c (build_user_type_conversion): Delete prototype.  Correct
4627         decl of FLAGS arg to be an int.
4628         * cvt.c (build_user_type_conversion): Likewise.
4629
4630 Tue Nov 12 12:16:20 1996  Jason Merrill  <jason@yorick.cygnus.com>
4631
4632         * cp-tree.def: Add TRY_BLOCK and HANDLER.
4633         * except.c (expand_start_catch_block): Support templates.
4634         * parse.y (try_block, handler_seq): Likewise.
4635         * pt.c (tsubst_expr): Support TRY_BLOCK and HANDLER.
4636
4637 Mon Nov 11 13:57:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
4638
4639         * pt.c (current_template_args): New fn.
4640         (push_template_decl): Use it.
4641         * decl.c (grokdeclarator): Use it.
4642
4643         * decl2.c (build_expr_from_tree): Dereference ref vars.
4644
4645         * decl.c (grokdeclarator): Generalize handling of TYPENAME_TYPEs in
4646         the decl-specifier-seq.
4647
4648         * decl.c (grok_op_properties): Don't force the type of a conversion
4649         op to be complete.  Don't warn about converting to the same type
4650         for template instantiations.
4651
4652         * decl2.c (finish_file): Don't call instantiate_decl on synthesized
4653         methods.
4654
4655 Mon Nov 11 13:20:34 1996  Bob Manson  <manson@charmed.cygnus.com>
4656
4657         * typeck.c (get_delta_difference): Remove previous bogusness.
4658         Don't give errors if force is set.
4659
4660 Fri Nov  8 17:38:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
4661
4662         * decl2.c (finish_file): Don't emit debug info.
4663         * decl.c (pushdecl): Lose obsolete code.
4664         (grokdeclarator): Still do the long long thing after complaining.
4665         * search.c (note_debug_info_needed): Don't do anything if we're in a 
4666         template.
4667         * method.c (synthesize_method): For non-local classes,
4668         push_to_top_level first.
4669
4670 Fri Nov  8 11:52:28 1996  Bob Manson  <manson@charmed.cygnus.com>
4671
4672         * typeck.c (get_delta_difference): Add no_error parameter.
4673         (build_ptrmemfunc): Call get_delta_difference with no_error set;
4674         we don't want error messages when converting unrelated
4675         pointer-to-member functions.
4676
4677 Thu Nov  7 11:16:24 1996  Mike Stump  <mrs@cygnus.com>
4678
4679         * error.c (dump_expr): Improve the wording on error messages that
4680         involve pointer to member functions.
4681
4682 Tue Nov  5 17:12:05 1996  Mike Stump  <mrs@cygnus.com>
4683
4684         * cvt.c (cp_convert_to_pointer): Move code for conversions from
4685         (::*)() to void* or (*)() up a bit, so that we can convert from
4686         METHOD_TYPEs as well.
4687
4688 Tue Nov  5 14:54:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
4689
4690         * rtti.c (get_tinfo_fn): Make sure 'type' is permanent.
4691         There are no 'member' types.
4692         (get_tinfo_fn_dynamic): Diagnose typeid of overloaded fn.
4693         (build_x_typeid): Handle errors.
4694
4695 Mon Nov  4 17:43:12 1996  Mike Stump  <mrs@cygnus.com>
4696
4697         * typeck.c (convert_for_assignment): Handle anachronistic implicit
4698         conversions from (::*)() to void* or (*)().
4699         * cvt.c (cp_convert_to_pointer): Likewise.
4700         (cp_convert_to_pointer_force): Remove cp_convert_to_pointer
4701         conversions from here.
4702         * decl2.c (lang_decode_option): Add -W{no-,}pmf-conversions.
4703         * lang-options.h: Likewise.
4704         * decl2.c (warn_pmf2ptr): Define.
4705         * cp-tree.h: Declare it.
4706         * typeck2.c (digest_init): Allow pmfs down into
4707         convert_for_initialization.
4708
4709 Sun Nov  3 09:43:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
4710
4711         * typeck.c (c_expand_return): Fix for returning overloaded fn.
4712
4713 Fri Nov  1 08:53:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
4714
4715         * cp-tree.h (DIRECT_BIND): Change from INDIRECT_BIND.
4716         * decl.c (grok_reference_init): Pass DIRECT_BIND.
4717         * cvt.c (build_up_reference): Don't mark 'this' addressable.  Use
4718         DIRECT_BIND.
4719         * call.c (convert_like): Don't pass INDIRECT_BIND.
4720         * typeck.c (convert_arguments): Likewise.
4721         * typeck.c (mark_addressable): Allow &this if flag_this_is_variable.
4722
4723 Thu Oct 31 17:08:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
4724
4725         * typeck.c (mark_addressable): Support TARGET_EXPR, unify with
4726         similar code in build_up_ref.
4727         * cvt.c (build_up_reference): Drastically simplify.
4728
4729 Mon Oct 28 12:45:05 1996  Jeffrey A Law  (law@cygnus.com)
4730
4731         * typeck.c (signed_or_unsigned_type): If the given type already
4732         as the correct signedness, then just return it.
4733
4734         * typeck.c ({un,}signed_type): If can't do anything, call
4735         signed_or_unsigned_type.
4736
4737 Thu Oct 24 14:21:59 1996  Bob Manson  <manson@charmed.cygnus.com>
4738
4739         * decl2.c (copy_assignment_arg_p): Don't buy the farm if
4740         current_class_type is NULL.
4741
4742 Wed Oct 23 00:43:10 1996  Jason Merrill  <jason@gerbil.cygnus.com>
4743
4744         * class.c (finish_struct_1): Avoid empty structs by adding a field
4745         so layout_type gets the mode right.
4746
4747         * typeck.c (c_expand_return): Drastically simplify.
4748
4749 Mon Oct 21 22:34:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
4750
4751         * typeck.c (decay_conversion): Handle overloaded methods.
4752
4753 Fri Oct 18 16:03:48 1996  Jason Merrill  <jason@yorick.cygnus.com>
4754
4755         * call.c (build_over_call): A TARGET_EXPR has side-effects.
4756
4757 Thu Oct 17 11:31:59 1996  Mike Stump  <mrs@cygnus.com>
4758
4759         * cvt.c (convert_to_pointer_force): Add code to support pointer to
4760         member function to pointer to function conversions.
4761         * init.c (resolve_offset_ref): Add code to allow faked up objects,
4762         ignoring them if they are not used, and giving an error, if they
4763         are needed.
4764         * typeck.c (get_member_function_from_ptrfunc): Fold e1 to improve
4765         code, and so that we can give an error, if we needed an object,
4766         and one was not provided.
4767         (build_c_cast): Don't call default_conversion when we want to
4768         convert to pointer to function from a METHOD_TYPE.
4769
4770 Mon Oct 14 00:28:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
4771
4772         * Make-lang.in (cplib2.ready): Fix logic.
4773
4774         * decl.c (shadow_tag): Only complain about non-artificial function
4775         members.
4776
4777         * class.c (finish_struct_1): Add synthesized methods to TYPE_METHODS.
4778
4779 Fri Oct 11 16:12:40 1996  Jason Merrill  <jason@yorick.cygnus.com>
4780
4781         * expr.c (cplus_expand_expr): Pre-tweak call_target like
4782         expand_inline_function would.
4783
4784         * pt.c (mark_decl_instantiated): If extern_p, call
4785         mark_inline_for_output.
4786
4787 Thu Oct 10 15:58:08 1996  Mike Stump  <mrs@cygnus.com>
4788
4789         * typeck.c (unary_complex_lvalue): Add code to handle intermediate
4790         pmd conversions.
4791
4792         * typeck.c (get_delta_difference): Fix wording, as we can be used
4793         for pointer to data members.
4794
4795 Tue Oct  8 12:43:51 1996  Bob Manson  <manson@charmed.cygnus.com>
4796
4797         * pt.c (tsubst): If the function decl isn't a member of this
4798         template, return a copy of the decl (including copying the
4799         lang-specific part) so we don't hose ourselves later.
4800
4801 Thu Oct  3 16:24:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
4802
4803         * class.c (finish_struct): Remove DWARF-specific tag handling.
4804         * decl.c (pushtag): Likewise.
4805         (finish_function): Always clear DECL_ARGUMENTS on function decls with
4806         no saved RTX.
4807         * decl2.c (finish_file): Emit DWARF debugging info for static data
4808         members.
4809
4810 Wed Oct  2 21:58:01 1996  Bob Manson  <manson@charmed.cygnus.com>
4811
4812         * decl.c (duplicate_decls): Make sure the old DECL_LANG_SPECIFIC
4813         isn't the same as the new one before we whack it.
4814
4815 Mon Sep 30 13:38:24 1996  Jason Merrill  <jason@yorick.cygnus.com>
4816
4817         * class.c, cp-tree.h, cvt.c, decl.c, decl2.c, gxx.gperf, hash.h,
4818         lex.c, method.c, parse.y, typeck.c, typeck2.c: Remove
4819         warn_traditional and warn_strict_prototypes; remove ancient
4820         'overload' code; remove references to flag_traditional.
4821
4822 Mon Sep 30 12:58:40 1996  Mike Stump  <mrs@cygnus.com>
4823
4824         * input.c (sub_getch): Handle 8-bit characters in string literals.
4825
4826 Sun Sep 29 03:12:01 1996  Jason Merrill  <jason@yorick.cygnus.com>
4827
4828         * tree.c (mapcar): Handle CONSTRUCTORs.
4829         (copy_to_permanent): Handle expression_obstack properly.
4830
4831         * Make-lang.in (cplib2.txt): Also depend on the headers.
4832
4833         * rtti.c (get_tinfo_var): Don't assume that POINTER_SIZE ==
4834         INT_TYPE_SIZE.
4835         (expand_class_desc): Use USItype for offset field.
4836         * tinfo.h (struct __class_type_info): Likewise.
4837
4838         * method.c (build_overload_int): TYPE_PRECISION should be applied
4839         to types.
4840
4841 Sat Sep 28 14:44:50 1996  Jason Merrill  <jason@yorick.cygnus.com>
4842
4843         * call.c (build_new_op): A COND_EXPR involving void must be a
4844         builtin.
4845
4846 Fri Sep 27 16:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
4847
4848         * typeck.c (build_x_component_ref): New fn.
4849         (build_object_ref): Use it.
4850         * parse.y (primary): Use it.
4851         * decl2.c (build_expr_from_tree): Use it.
4852         * cp-tree.h: Declare it.
4853
4854         * decl.c (start_decl): variable-sized arrays cannot be initialized.
4855         * error.c (dump_type_suffix): Handle variable arrays.
4856
4857 Fri Sep 27 13:14:05 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4858
4859         * Make-lang.in (exception.o): Put back compiling it with -fPIC.
4860
4861 Fri Sep 27 03:00:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
4862
4863         * decl.c (lookup_name_real): Don't try to look up anything in a
4864         TYPENAME_TYPE.
4865
4866         * tinfo2.cc (__throw_type_match_rtti): Oops.
4867
4868 Thu Sep 26 22:11:05 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4869
4870         * Make-lang.in (exception.o): Use -fno-PIC for now.
4871
4872 Thu Sep 26 10:59:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
4873
4874         * rtti.c (build_dynamic_cast): Pass tinfo fns rather than
4875         calling them.
4876         (get_tinfo_fn_dynamic): Extracted from build_typeid.
4877         * tinfo2.cc (__dynamic_cast): Adjust.
4878         
4879         * rtti.c (build_typeid): Use resolves_to_fixed_type_p.
4880         (build_x_typeid): Likewise.
4881
4882         * parse.y: Call build_x_typeid instead of build_typeid.
4883         * cp-tree.def: Add TYPEID_EXPR.
4884         * pt.c (tsubst_copy): Handle typeid.
4885         * decl2.c (build_expr_from_tree): Likewise.
4886         * rtti.c (build_x_typeid): Throw bad_typeid from here.
4887         (build_typeid): Not here.
4888         * cp-tree.h: Declare build_x_typeid.
4889
4890 Wed Sep 25 17:26:16 1996  Jason Merrill  <jason@yorick.cygnus.com>
4891
4892         * call.c (convert_like): Pull out constant values.
4893
4894         * tree.c (mapcar): Use build_cplus_array_type, not build_array_type.
4895
4896 Wed Sep 25 17:28:53 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
4897
4898         * decl.c (init_decl_processing): Create short int types before
4899         creating size_t in case a machine description needs to use
4900         unsigned short for size_t.
4901
4902 Tue Sep 24 18:18:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
4903
4904         * Make-lang.in (exception.o): Turn off pic.
4905
4906         * tinfo2.cc (__throw_type_match_rtti): Fix cv-variants of the same
4907         type, multi-level ptr conversions.
4908
4909         * rtti.c (call_void_fn): Renamed and genericized from throw_bad_cast.
4910         (throw_bad_cast): Use it.
4911         (throw_bad_typeid): New fn.
4912         (build_typeid): Throw bad_typeid as needed.
4913         Use build_call.
4914         (synthesize_tinfo_fn): Handle functions and arrays before checking
4915         for cv-quals.
4916
4917         * Remove .h from standard C++ headers, add new.h, move into inc
4918         subdirectory.
4919
4920         * exception*: Remove pointer from object, constructors.  Add
4921         default exception::what that uses type_info::name.  Add
4922         __throw_bad_typeid.
4923
4924         * init.c (build_new): Don't add a cookie to new (void *) T[2].
4925
4926 Mon Sep 23 15:21:53 1996  Jason Merrill  <jason@yorick.cygnus.com>
4927
4928         * Make-lang.in: Building C++ code depends on cc1plus.
4929
4930 Mon Sep 23 12:38:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4931
4932         * decl.c (struct saved_scope): Declare PROCESSING_TEMPLATE_DECL as
4933         a HOST_WIDE_INT, not a tree.
4934
4935 Mon Sep 23 12:36:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
4936
4937         * exception.cc: Don't include <stdlib.h>.
4938
4939         * Make-lang.in (c++.clean): Remove cplib2.*.
4940
4941 Mon Sep 23 09:42:19 1996  Doug Evans  <dje@canuck.cygnus.com>
4942
4943         * parse.y (component_decl_1, component_costructor_declarator case):
4944         Pass attributes/prefix_attributes in tree list.
4945
4946 Mon Sep 23 01:18:50 1996  Jason Merrill  <jason@yorick.cygnus.com>
4947
4948         * tinfo{,2}.cc: #include <stddef.h> instead of <stdlib.h>.
4949
4950 Sun Sep 22 05:31:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
4951
4952         * lex.c (do_identifier): Don't do deferred lookup in a template
4953         header.
4954
4955         * typeck2.c (store_init_value): Oops.
4956
4957         * new.{h,cc}, exception.{h,cc}, typeinfo.h, tinfo{2.cc,.cc,.h}: 
4958         New files for C++ lang-support library.
4959         * Make-lang.in (CXX_EXTRA_HEADERS): Define.
4960         (CXX_LIB2FUNCS): Define.
4961         And rules for building the C++ lang-support code.
4962         * config-lang.in (headers): Define.
4963         (lib2funcs): Define.
4964
4965 Sat Sep 21 19:17:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
4966
4967         * decl2.c (build_expr_from_tree): If CONSTRUCTOR has a type, call
4968         digest_init.
4969         * pt.c (tsubst_copy): Compute type for CONSTRUCTOR.
4970         * typeck2.c (store_init_value): Check for initializing pmf with { }
4971         here.
4972         (process_init_constructor): Not here.
4973
4974 Thu Sep 19 16:41:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
4975
4976         * pt.c (begin_template_parm_list): Increment
4977         processing_template_decl here.
4978         (end_template_parm_list): Not here.
4979         (process_template_parm): No need to add 1 to it now.
4980         * *.c: Use processing_template_decl instead of current_template_parms
4981         to check for being in a template.
4982
4983         * pt.c (uses_template_parms): Handle SCOPE_REF.  Fix CONSTRUCTOR.
4984         (tsubst_copy): Handle CONSTRUCTOR.
4985         (instantiate_decl): Set up context properly for variables.
4986         * decl2.c (build_expr_from_tree): Handle CONSTRUCTOR.
4987         * class.c (finish_struct): Reverse CLASSTYPE_TAGS.
4988
4989 Wed Sep 18 13:30:20 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
4990
4991         * lex.c (enum tree_node_kind) [GATHER_STATISTICS]: Put the enum back.
4992
4993 Wed Sep 18 04:24:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
4994
4995         * method.c (make_thunk): Call comdat_linkage before setting the
4996         TREE_CODE.
4997
4998         * decl2.c (comdat_linkage): Use make_decl_one_only.
4999         (import_export_decl): Likewise.
5000         * decl.c (init_decl_processing): Check supports_one_only instead of
5001         SUPPORTS_WEAK.
5002
5003 Sat Sep 14 08:34:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
5004
5005         * decl2.c (grokfield): Tighten checking for access decls.
5006
5007         * decl.c (make_typename_type): Resolve references to
5008         current_class_type.  Set CLASSTYPE_GOT_SEMICOLON.
5009         (lookup_name_real): Types that depend on a template parameter get
5010         an implicit 'typename' unless they're in the current scope.
5011         (start_decl_1): We don't care about incomplete types that depend
5012         on a template parm.
5013         (grokdeclarator): Resolve 'typename's in the type specifier that
5014         refer to members of the current scope.
5015
5016         * call.c (build_over_call): Remove 'inline called before
5017         definition' diagnostic.
5018         (build_method_call): Likewise.
5019         * decl.c (duplicate_decls): Downgrade 'used before declared
5020         inline' to a warning, only with -Winline.
5021
5022 Fri Sep 13 17:31:40 1996  Stan Shebs  <shebs@andros.cygnus.com>
5023
5024         * mpw-make.sed: Fix include paths, add @DASH_C_FLAG@ to compile.
5025
5026 Wed Sep 11 22:38:13 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
5027
5028         * call.c (build_method_call): When calling a signature
5029         default implementation, as in other cases, let instance_ptr simply
5030         be instance.
5031
5032 Wed Sep 11 22:14:44 1996  Mike Stump  <mrs@cygnus.com>
5033
5034         * parse.y (simple_stmt): Cleanup and use do_poplevel ().
5035
5036 Wed Sep 11 22:10:48 1996  Mike Stump  <mrs@cygnus.com>
5037
5038         * except.c (expand_start_catch_block): Add a pushlevel so that -g
5039         works on hppa and SPARC.
5040
5041 Wed Sep 11 10:18:06 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5042
5043         * typeck.c (build_indirect_ref): Catch PTR being an error_mark_node.
5044
5045 Mon Sep  9 19:51:14 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
5046
5047         * call.c (build_over_call): Check first whether DECL_CONTEXT exists
5048         before testing whether it's a signature.
5049
5050 Sun Sep  8 16:06:57 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
5051
5052         * call.c (build_new_method_call): Don't complain about signature
5053         pointers and references not being an aggr type.
5054         (build_this): If a signature pointer or reference was passed in,
5055         just return it.
5056         (build_new_method_call): If instance is a signature pointer, set
5057         basetype to the signature type of instance.
5058         * sig.c (build_signature_method_call): Deleted basetype and
5059         instance parameters, they can be found as the DECL_CONTEXT of
5060         function and as the first argument passed in.
5061         * cp-tree.h: Changed declaration of build_signature_method_call.
5062         * call.c (build_method_call): Deleted first two arguments in call
5063         of build_signature_method_call.
5064         (build_over_call): Added call to build_signature_method_call.
5065
5066 Thu Sep  5 16:51:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
5067
5068         * typeck.c (build_c_cast): Don't tack a non_lvalue_expr onto a
5069         target_expr.
5070
5071 Thu Sep  5 10:05:38 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5072
5073         * cvt.c (convert_to_reference): Use %#T, not %#D, for error.
5074
5075 Wed Sep  4 17:16:09 1996  Bob Manson  <manson@charmed.cygnus.com>
5076
5077         * except.c (expand_start_try_stmts): Move to except.c in the backend.
5078         (expand_end_try_stmts): Remove.
5079
5080         * init.c (perform_member_init): Use add_partial_entry () instead
5081         of directly manipulating lists.
5082         (emit_base_init): Ditto.
5083
5084 Wed Sep  4 12:14:36 1996  Mike Stump  <mrs@cygnus.com>
5085
5086         * except.c (expand_exception_blocks): Always make sure USE and
5087         CLOBBER insns that came at the end still do, the backend relies
5088         upon this.
5089
5090 Wed Sep  4 07:44:48 1996  Jason Merrill  <jason@yorick.cygnus.com>
5091
5092         * call.c (build_over_call): We can only use a TARGET_EXPR of the
5093         right type.
5094
5095 Tue Sep  3 19:26:05 1996  Jason Merrill  <jason@yorick.cygnus.com>
5096
5097         * cvt.c (convert_to_reference): Revert last change, don't complain
5098         about temp without target decl.
5099
5100 Tue Sep  3 10:22:56 1996  Mike Stump  <mrs@cygnus.com>
5101
5102         * decl.c (grokdeclarator): Don't core dump when void() is given.
5103
5104 Tue Sep  3 02:38:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
5105
5106         * decl.c (copy_args_p): Don't crash.
5107
5108 Fri Aug 30 14:26:57 1996  Mike Stump  <mrs@cygnus.com>
5109
5110         * pt.c (tsubst): And support template args inside the exception
5111         specification.
5112
5113         * pt.c (tsubst): Add support for exception specifications in
5114         template functions.
5115
5116 Fri Aug 30 10:01:55 1996  Mike Stump  <mrs@cygnus.com>
5117
5118         * cp-tree.def (DECL_STMT): Eliminate the throw spec field, only 3
5119         fields now.
5120         * cp-tree.h (start_decl): Eliminate the throw spec parameter.
5121         (start_function): Likewise.
5122         (start_method): Likewise.
5123         (grokfield): Likewise.
5124         (make_call_declarator): Add throw spec parameter.
5125         (set_quals_and_spec): Add routine.
5126         * lex.c (set_quals_and_spec): Likewise.
5127         * decl.h (grokdeclarator): Eliminate the throw spec parameter.
5128         * decl.c (shadow_tag): Eliminate the throw spec parameter to
5129         grokdeclarator.
5130         (groktypename): Likewise.
5131         (start_decl): Eliminate the throw spec parameter.  Eliminate the
5132         throw spec parameter to grokdeclarator.  Eliminate the throw spec
5133         field in DECL_STMT.
5134         (cp_finish_decl): Eliminate the throw spec field in DECL_STMT.
5135         (grokfndecl): Remove useless set of raises.
5136         (grokdeclarator): Eliminate the throw spec parameter.  Eliminate
5137         the throw spec parameter to start_decl.  Pull the throw spec out
5138         of the call declarator.
5139         (grokparms): Eliminate the throw spec parameter to grokdeclarator.
5140         (start_function): Eliminate the throw spec parameter.  Eliminate
5141         the throw spec parameter to grokdeclarator.
5142         (start_method): Likewise.
5143         * decl2.c (grokfield): Likewise.
5144         (grokbitfield): Eliminate the throw spec parameter to grokdeclarator.
5145         (grokoptypename): Likewise.
5146         (finish_file): Eliminate the throw spec parameter to
5147         start_function.  Add throw spec to make_call_declarator.
5148         * except.c (init_exception_processing): Add throw spec to
5149         make_call_declarator.  Eliminate the throw spec parameter to
5150         start_decl.
5151         (expand_start_catch_block): Eliminate the throw spec parameter to
5152         grokdeclarator.
5153         (expand_builtin_throw): Add throw spec to make_call_declarator.
5154         Eliminate the throw spec parameter to start_function.
5155         (start_anon_func): Likewise.
5156         * lex.c (make_call_declarator): Add throw spec parameter.
5157         (set_quals_and_spec): New routine.
5158         (cons_up_default_function): Add throw spec to make_call_declarator.
5159         Eliminate the throw spec parameter to grokfield.
5160         * method.c (synthesize_method): Eliminate the throw spec parameter
5161         to start_function.
5162         * pt.c (process_template_parm): Eliminate the throw spec parameter
5163         to grokdeclarator.
5164         (tsubst): Add throw spec to make_call_declarator.
5165         (tsubst_expr): Eliminate the throw spec parameter to start_decl.
5166         (do_function_instantiation): Eliminate the throw spec parameter to
5167         grokdeclarator.  Eliminate the throw spec parameter to
5168         start_function.
5169         * rtti.c (synthesize_tinfo_fn): Eliminate the throw spec parameter
5170         to start_function.
5171         * parse.y (datadef): Remove non-winning optimization.
5172         (decl): Likewise.
5173         (fndef): Remove ambiguous error productions uncovered by grammer
5174         fixing.
5175         (constructor_declarator): Add exception_specification_opt here.
5176         (component_constructor_declarator): Likewise.
5177         (direct_after_type_declarator): Likewise.
5178         (complex_direct_notype_declarator): Likewise.
5179         (direct_abstract_declarator): Likewise.
5180         (fn.def1): Remove exception_specification_opt.
5181         (fn.def2): Likewise.
5182         (condition): Likewise.
5183         (initdcl0): Likewise.
5184         (initdcl): Likewise.
5185         (notype_initdcl0): Likewise.
5186         (nomods_initdcl0): Likewise.
5187         (component_decl_1): Likewise.
5188         (component_declarator): Likewise.
5189         (after_type_component_declarator0): Likewise.
5190         (after_type_component_declarator): Likewise.
5191         (notype_component_declarator): Likewise.
5192
5193 Wed Aug 28 01:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
5194
5195         * call.c (build_over_call): Also use an INIT_EXPR when
5196         initializing anything from an rvalue.
5197
5198         * call.c (build_over_call): Call stabilize_reference when building
5199         an INIT_EXPR instead of calling the copy ctor.
5200
5201         * call.c (joust): Extend the previous change to all comparisons.
5202
5203         * decl2.c, method.c, lex.c: Use MAKE_DECL_ONE_ONLY and 
5204         NO_LINKAGE_HEURISTICS.
5205
5206         * decl2.c (finish_file): Emit any statics that weren't already.
5207
5208         * typeck.c (build_static_cast): Implement.
5209         * tree.c (build_cplus_new): Handle getting a TARGET_EXPR.
5210         * decl.c (grokparms): Use can_convert_arg instead of
5211         implicit_conversion directly.
5212         (copy_args_p): New fn.
5213         * cvt.c (convert_to_reference): Don't complain about temp with
5214         static_cast.
5215         (build_up_reference): Handle TARGET_EXPRs.
5216         * call.c (build_over_call): Elide unnecessary temps.
5217         (can_convert*): Use new overloading code.
5218
5219 Tue Aug 27 13:12:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
5220
5221         * call.c: Move TYPE_PTR*_MACROS ...
5222         * cp-tree.h: To here.
5223         * typeck.c (build_reinterpret_cast): Implement.
5224
5225         * call.c (add_builtin_candidate): Use TYPE_PTROB_P instead of
5226         ptr_complete_ob.
5227         (joust): If we're comparing a function to a builtin and the worst
5228         conversion for the builtin is worse than the worst conversion for the
5229         function, take the function.
5230
5231         * typeck.c (build_const_cast): Implement.
5232         (comp_ptr_ttypes_const): Like comp_ptr_ttypes, for const_cast.
5233         (comp_ptr_ttypes_reinterpret): Like cpt, for reinterpret_cast.
5234
5235 Tue Aug 27 13:14:58 1996  Bob Manson  <manson@charmed.cygnus.com>
5236
5237         * rtti.c (build_dynamic_cast): Don't try to dereference exprtype
5238         too early. Make sure we explode if exprtype turns out to be a
5239         NULL_TREE when it shouldn't be.
5240
5241 Tue Aug 27 10:56:21 1996  Mike Stump  <mrs@cygnus.com>
5242
5243         * cp-tree.h: New routine make_call_declarator.
5244         * lex.c (make_call_declarator): Define it.
5245         * except.c (init_exception_processing): Use it.
5246         (expand_builtin_throw): Likewise.
5247         (start_anon_func): Likewise.
5248         * decl2.c (finish_file): Likewise.
5249         * lex.c (cons_up_default_function): Likewise.
5250         * parse.y: Likewise.
5251         * pt.c (tsubst): Likewise.
5252         
5253 Mon Aug 26 17:40:03 1996  Mike Stump  <mrs@cygnus.com>
5254
5255         * decl2.c (groktypefield): Remove unused code.
5256
5257 Mon Aug 26 17:00:33 1996  Mike Stump  <mrs@cygnus.com>
5258
5259         * gxx.gperf: Change TYPE_QUAL into CV_QUALIFIER.
5260         * parse.y: Likewise.  Change maybe_type_qual into maybe_cv_qualifier.
5261         Change type_quals into cv_qualifiers.  Change nonempty_type_quals into
5262         nonempty_cv_qualifiers.
5263         * hash.h: Rebuild.
5264         
5265         * lex.c (make_pointer_declarator): Change type_quals into
5266         cv_qualifiers.
5267         (make_reference_declarator): Likewise.
5268         
5269 Thu Aug 22 01:09:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
5270
5271         * decl.c (start_function): Only check interface_* for templates
5272         with flag_alt_external_templates.
5273
5274         * call.c (build_new_op): Check for comparison of different enum types.
5275         (build_over_call): Fix arg # output.
5276
5277         * typeck.c (build_component_ref): Handle pre-found TYPE_DECL.
5278
5279 Wed Aug 21 00:13:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
5280
5281         * call.c (build_new_op): Check for erroneous args.
5282
5283         * call.c (build_new_method_call): Add missing args to cp_error.
5284
5285         * tree.c (error_type): Dont print reference-to-array.
5286
5287         * typeck.c (convert_for_assignment): Don't say contravariance for
5288         removing const.
5289
5290 Tue Aug 20 13:23:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
5291
5292         * call.c (build_over_call): Diagnose bad convs for `this'.
5293
5294         * lex.c (cons_up_default_function): Set DECL_ARTIFICIAL
5295         on _ctor_arg.
5296
5297         * call.c (convert_like): Handle bad convs.
5298         (build_over_call): Handle bad convs better.
5299
5300         * decl2.c: -fansi-overloading is now the default.
5301
5302         * call.c (build_new_method_call): Check for erroneous args.
5303
5304         * pt.c (instantiate_class_template): Propagate
5305         TYPE_USES_MULTIPLE_INHERITANCE.
5306
5307 Tue Aug 20 13:09:57 1996  Mike Stump  <mrs@cygnus.com>
5308
5309         * call.c (enforce_access): Add static to routine.
5310
5311 Sun Aug 18 14:35:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
5312
5313         * call.c (build_user_type_conversion_1): Fix bad handling.
5314         (compare_ics): Likewise.
5315
5316 Sat Aug 17 21:54:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
5317
5318         * call.c (standard_conversion): Oops.
5319
5320 Sat Aug 17 16:28:11 1996  Geoffrey Noer  <noer@cygnus.com>
5321
5322         * g++.c: Update test for win32 (&& ! cygwin32).
5323
5324 Sat Aug 17 03:45:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
5325
5326         * typeck.c (comp_ptr_ttypes_real): Handle OFFSET_TYPEs properly.
5327         (ptr_reasonably_similar): New fn.
5328         * call.c (BAD_RANK): New rank.
5329         (ICS_BAD_FLAG): New macro.
5330         (standard_conversion): Handle almost-right pointer conversions.
5331         (reference_binding): Handle bad rvalue bindings.
5332         (add_*_candidate): Stuff.
5333         (build_over_call): Pass bad conversions to convert_for_initialization.
5334         (compare_ics): Handle bad convs.
5335         (joust): Likewise.
5336
5337 Fri Aug 16 15:02:19 1996  Bob Manson  <manson@charmed.cygnus.com>
5338
5339         * init.c (expand_vec_init): Use ptrdiff_type_node instead of
5340         integer_type_node when computing pointer offsets.
5341
5342 Fri Aug 16 01:28:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
5343
5344         * tree.c (lvalue_type): New fn.
5345         (error_type): New fn.
5346         * call.c (op_error): Use error_type.
5347         (add_conv_candidate): Use lvalue_type.
5348         (add_builtin_candidates): Likewise.
5349         * error.c (args_as_string): Use error_type.
5350
5351 Thu Aug 15 17:27:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
5352
5353         * pt.c (instantiate_decl): Evaluate DECL_INITIAL of a VAR_DECL here.
5354         (tsubst): Not here.
5355
5356         * decl.c (init_decl_processing): With -ansi, __null's type is the
5357         signed integral type with the same number of bits as a pointer.
5358         Introduce a new variable null_node for it.
5359         * cp-tree.h: Adjust.
5360         * call.c (null_ptr_cst_p): Adjust.
5361
5362 Thu Aug 15 17:09:54 1996  Mike Stump  <mrs@cygnus.com>
5363
5364         * except.c (do_unwind): Mark %i7 as used on the SPARC so we can
5365         optimize.
5366
5367 Thu Aug 15 01:36:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
5368
5369         * decl2.c (import_export_decl): Ignore #pragma interface for tinfo
5370         fns of classes without virtual functions.
5371
5372         * call.c (add_function_candidate): Handle `this' specially.
5373         (compare_ics): Likewise.
5374
5375 Tue Aug 13 12:16:10 1996  Jason Merrill  <jason@yorick.cygnus.com>
5376
5377         * typeck.c (build_conditional_expr): Fix handling of __null.
5378
5379         * decl2.c (comdat_linkage): New fn.
5380         (import_export_vtable): Use it.
5381         (import_export_decl): Use it.
5382         * method.c (make_thunk): Use it.
5383
5384 Mon Aug 12 00:09:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
5385
5386         * pt.c (end_template_decl): If we don't actually have parms, return.
5387         * parse.y (template_header): Accept 'template <>'.
5388
5389         * errfn.c: Allow 5 args.
5390
5391 Sun Aug 11 15:20:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
5392
5393         * tree.c (make_temp_vec): New fn.
5394         * pt.c (push_template_decl): Handle partial specs.
5395         (instantiate_class_template): Likewise.
5396         (more_specialized): Use get_bindings.
5397         (more_specialized_class): New fn.
5398         (get_class_bindings): New fn.
5399         (most_specialized_class): New fn.
5400         (do_function_instantiation): List candidates for ambiguous case.
5401         * decl.c (duplicate_decls): Lose reference to DECL_TEMPLATE_MEMBERS.
5402         (shadow_tag): Call push_template_decl for partial specializations.
5403         * parse.y: Likewise.
5404         * cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Replaces
5405         DECL_TEMPLATE_MEMBERS.
5406         * call.c (print_z_candidates): Reduce duplication.
5407
5408 Fri Aug  9 14:36:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
5409
5410         * decl2.c (lang_decode_option): Allow -fansi-overloading.
5411
5412 Thu Aug  8 17:04:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
5413
5414         * pt.c (get_bindings): New fn.
5415         (most_specialized): Likewise.
5416         (do_function_instantiation): Use them.
5417         (add_maybe_template): New fn.
5418         * cp-tree.h (DECL_MAYBE_TEMPLATE): New macro.
5419         * call.c (build_new_op): Handle guiding decls.
5420         (build_new_function_call): Likewise.
5421         * decl2.c (finish_file): Likewise.
5422
5423         * decl2.c (mark_used): Do synthesis here.
5424         * call.c (build_method_call): Not here.
5425         (build_over_call): Or here.
5426         * typeck.c (build_function_call_real): Or here.
5427         * tree.c (bot_manip): Call mark_used on functions used in default
5428         args.
5429
5430 Thu Aug  8 17:48:16 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
5431
5432         * decl2.c (import_export_vtable): Delete code that disabled vtable
5433         heuristic on systems with ASM_OUTPUT_EXTERNAL.
5434
5435 Wed Aug  7 12:44:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
5436
5437         * typeck.c (build_x_function_call): Handle static call context
5438         better.
5439
5440         * decl.c (finish_function): Set the DECL_CONTEXT of the result to
5441         the function, not its outer block.
5442
5443         * call.c (build_field_call): Pass fields on to build_opfncall
5444         regardless of TYPE_OVERLOADS_CALL_EXPR.
5445         (build_method_call): Pass on to build_new_method_call sooner.
5446
5447         * typeck.c (build_ptrmemfunc): Just return what instantiate_type
5448         gives us.
5449         * class.c (instantiate_type): Don't put a POINTER_TYPE to
5450         METHOD_TYPE on an expression.  Also make a copy of rhs instead of
5451         modifying it.
5452
5453 Tue Aug  6 12:58:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
5454
5455         * call.c (compare_ics): Handle qual_conv after lvalue_conv.
5456         (add_builtin_candidate): Don't take enums for ++.
5457         (build_new_method_call): Handle non-aggregates and field calls.
5458         Move new overloading code from...
5459         * cvt.c: Here.
5460
5461         * decl.c (grokparms): Don't check default args in templates.
5462
5463 Mon Aug  5 17:17:06 1996  Jason Merrill  <jason@yorick.cygnus.com>
5464
5465         * cvt.c (build_new_op): Fix args to build_unary_op.
5466         (add_builtin_candidates): Don't call type_promotes_to on float.
5467
5468         * decl.c (grokparms): Check the type of the default arg.
5469
5470         * cvt.c (build_new_op): Pass non-overloaded cases on rather than
5471         returning NULL_TREE.
5472
5473         * typeck.c (build_x_binary_op): Avoid doing extra work.
5474         (build_x_unary_op): Likewise.
5475         (build_x_conditional_expr): Likewise.
5476         * cvt.c (build_over_call): Return.
5477         (add_builtin_candidate): Fix MEMBER_REF.
5478         (build_new_op): Likewise.
5479
5480 Mon Aug  5 17:07:47 1996  Mike Stump  <mrs@cygnus.com>
5481
5482         * method.c (build_overload_name): Put bug fix into code but leave
5483         disabled for now so we can be bug compatible with older releases
5484         that do repeats incorrectly.  In the future, we can enable it.
5485
5486 Mon Aug  5 13:46:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
5487
5488         * cvt.c (convert_like): Don't call build_cplus_new twice.
5489
5490         * call.c, cp-tree.h, cvt.c, decl2.c, init.c, method.c, pt.c, typeck.c:
5491         Control new overloading code with -fansi-overloading.
5492
5493 Sun Aug  4 15:29:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
5494
5495         * cvt.c (build_over_call): Call build_cplus_new.
5496         * call.c (build_method_call): Likewise.
5497         * typeck.c (build_function_call_real): Likewise.
5498         (build_conditional_expr): If both operands are TARGET_EXPRs, wrap
5499         the COND_EXPR in a TARGET_EXPR so they use the same slot.
5500
5501         * cvt.c (build_up_reference): Propagate INDIRECT_BIND to 
5502         recursive calls.
5503         * typeck.c (complete_type): Propagate
5504         TYPE_NEEDS_{CONSTRUCTING,DESTRUCTOR}.
5505
5506 Sat Aug  3 14:05:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
5507
5508         * cvt.c (joust): More ?: kludging.  Sigh.
5509         (build_over_call): Don't try to synthesize global fns.
5510
5511         * search.c (lookup_conversions): Use binfo marking.
5512
5513 Sat Aug  3 12:33:42 1996  Bob Manson  <manson@charmed.cygnus.com>
5514
5515         * search.c (build_mi_matrix): Use the correct value of cid
5516         when determining the new mi_size.
5517
5518 Sat Aug  3 01:27:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
5519
5520         * cvt.c (add_builtin_candidates): Do consider type conversion ops
5521         for the first parms of += et al.
5522         (strip_top_quals): New fn.
5523         (reference_binding): Use it instead of TYPE_MAIN_VARIANT.
5524         (implicit_conversion): Likewise.
5525         (add_builtin_candidates): Be careful about arrays.
5526         (build_new_method_call): Handle vtable optimization.
5527
5528 Fri Aug  2 01:26:59 1996  Jason Merrill  <jason@yorick.cygnus.com>
5529
5530         * cp-tree.h (LOOKUP_NO_TEMP_BIND): New flag.
5531         * cvt.c (reference_binding): Use it.
5532         (implicit_conversion): Use it.
5533         (add_builtin_candidate, COND_EXPR): Use it.
5534
5535         * cvt.c (build_new_function_call): Check for error args.
5536
5537         * typeck.c (comptypes): Just check DERIVED_FROM_P, not UNIQUELY.
5538
5539         * gxx.gperf: Add __null.
5540         * hash.h: Regenerate.
5541         * lex.h: Add RID_NULL.
5542         * lex.c (init_lex): Create null_pointer_node here, stick it in
5543         RID_NULL.
5544         * decl.c (init_decl_processing): Still set its type here.
5545         * cvt.c (cp_convert_to_pointer): Don't produce null_pointer_node.
5546         (convert_to_pointer_force): Likewise.
5547         (null_ptr_cst_p): Check for null_pointer_node; only accept (void*)0
5548         if (! pedantic).
5549         * call.c (convert_harshness): Use null_ptr_cst_p.
5550         * typeck.c (convert_for_assignment): Likewise.  Don't produce
5551         null_pointer_node.
5552
5553         * error.c (args_as_string): Handle lists of actual args, too.
5554         * cvt.c (null_ptr_cst): Support (void*)0 for now.
5555         (build_user_type_conversion_1): Improve diagnostics.
5556         (build_new_function_call): Likewise.
5557         (build_object_call): Likewise.
5558         (build_new_method_call): Likewise.  Move call before def diagnostic...
5559         (build_over_call): Here.
5560
5561         * cvt.c (build_new_method_call): Don't complain about no match if
5562         LOOKUP_SPECULATIVELY.
5563         (build_over_call): Fix 'this' for virtual fn.
5564         (build_new_method_call): Add diagnostic.
5565
5566 Thu Aug  1 16:45:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
5567
5568         * cvt.c (add_function_candidate): Expect 'this' and 'in_chrg' for
5569         constructors to be passed in.
5570         (build_over_call): Likewise.
5571         (build_user_type_conversion_1): Pass them in.
5572         (convert_like): Likewise.
5573         (build_object_call): Handle overloaded conversions.
5574         (build_over_call): Pass the right args to build_vfn_ref.
5575         (standard_conversion): Fix pmf convs.
5576         (joust): Handle comparing statics and non-statics.
5577         (build_new_method_call): New fn.
5578         * call.c (build_method_call): Call it if NEW_OVER.
5579
5580 Thu Aug  1 16:06:14 1996  Mike Stump  <mrs@cygnus.com>
5581
5582         * lex.c (do_identifier): Don't use %O on IDENTIFIER_OPNAME_Ps, use
5583         %D instead.
5584
5585 Thu Aug  1 15:24:02 1996  Mike Stump  <mrs@cygnus.com>
5586
5587         * except.c (expand_throw): Use maybe_build_cleanup_and_delete
5588         instead of just maybe_build_cleanup so that we deallocate the
5589         thrown object.
5590
5591 Thu Aug  1 15:18:00 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5592
5593         * decl2.c (finish_prevtable_vardecl): Make non-static for pt.c's use.
5594         * cp-tree.h (finish_prevtable_vardecl): Add decl.
5595
5596 Thu Aug  1 11:53:51 1996  Bob Manson  <manson@charmed.cygnus.com>
5597
5598         * pt.c (instantiate_class_template): Call complete_type. Also, if
5599         we're at the end of the file and we just instantiated a template
5600         class with a vtable, call finish_prevtable_vardecl.
5601
5602         * error.c (dump_decl): Don't explode (or explode more gracefully
5603         as appropriate) if the object being dumped has a null type.
5604         (dump_expr): Likewise.
5605
5606         * search.c (build_mi_matrix): Ensure that mi_size is large enough,
5607         by counting the number of nodes that we'll need before allocating
5608         the array.
5609         (lookup_fnfields): Fix comment.
5610         (breadth_first_search): Fix comment.
5611
5612 Wed Jul 31 09:57:05 1996  Jason Merrill  <jason@yorick.cygnus.com>
5613
5614         * pt.c (instantiate_class_template): Propagate TYPE_PACKED and
5615         TYPE_ALIGN.
5616         * class.c (finish_struct): Call cplus_decl_attributes here.
5617         (finish_struct_1): Not here.
5618         * cp-tree.h: Adjust.
5619
5620         * pt.c (type_unification): New parameter STRICT.
5621         (unify): If STRICT, don't allow cv addition or base deduction.
5622         * call.c, class.c, cvt.c, cp-tree.h: Adjust.
5623
5624 Tue Jul 30 13:06:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
5625
5626         * search.c (get_template_base{_recursive}): New fns.
5627         * pt.c (more_specialized): New fn.
5628         (do_function_instantiation): Use it.
5629         (unify): Handle base deduction.
5630         * cvt.c (joust): Use more_specialized.
5631         Don't arbitrarily choose between non-builtin candidates.
5632         (build_over_call): Call require_complete_type.
5633
5634         * decl.c (start_function): Statics are static even in a #pragma
5635         interface file.
5636
5637         * decl2.c (import_export_vtable): Disable vtable heuristic on
5638         systems with ASM_OUTPUT_EXTERNAL.
5639
5640         * cvt.c (compare_ics): Fix comparison of PMEM_CONV and BASE_CONV.
5641         (standard_conversion): No std conv to enum type.
5642
5643         * cvt.c (standard_conversion): Fix order of args to DERIVED_FROM_P
5644         for ptm's.
5645
5646         * cvt.c (reference_binding): Bind directly to a base subobject of
5647         a class rvalue.
5648
5649         * cvt.c (build_new_op): Enforce access control.
5650
5651 Tue Jul 30 09:22:53 1996  Bob Manson  <manson@charmed.cygnus.com>
5652
5653         * typeck2.c (process_init_constructor): When scanning the
5654         union for a named field, skip things that aren't FIELD_DECLs.
5655
5656         * method.c (synthesize_method): Don't scan fndecl's rtl if
5657         we're at the end of the file; just assume the function can't
5658         be inlined.
5659
5660 Mon Jul 29 15:48:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
5661
5662         * cvt.c (build_builtin_candidate): Stick a dummy conversion in if
5663         it failed.
5664
5665         * cvt.c (build_user_type_conversion_1): Handle overloaded
5666         conversion ops.
5667
5668         * cvt.c (add_builtin_candidates): Don't consider type conversion
5669         operators for the first parameter of operator=.
5670
5671 Mon Jul 29 15:33:55 1996  Bob Manson  <manson@charmed.cygnus.com>
5672
5673         * typeck.c (complete_type): Only call layout_type if we're not
5674         expanding a template.
5675
5676 Mon Jul 29 14:40:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
5677
5678         * cvt.c (compare_ics): Oops.
5679
5680         * cvt.c (op_error): Oops.
5681
5682         * cp-tree.def: Add RVALUE_CONV, rename EXACT_CONV to IDENTITY_CONV.
5683         * cvt.c: Add IDENTITY_RANK before others.  Use real_lvalue_p.
5684         (build_conv): Use them.
5685         (implicit_conversion): Use them.
5686         (convert_like): Handle them.
5687         (build_new_op): Handle builtin COND_EXPR again.
5688         (add_builtin_candidates): Strip cv-quals.  Fix oops.  Include enums
5689         in lists of types for COND_EXPR.
5690         (add_builtin_candidate): Add enum candidates for COND_EXPR.
5691
5692 Mon Jul 29 12:05:40 1996  Bob Manson  <manson@charmed.cygnus.com>
5693
5694         * typeck.c (build_modify_expr): Always attempt to build a call to
5695         the assignment operator, even if we're using a default one.
5696         (convert_for_initialization): Call complete_type.
5697
5698 Mon Jul 29 11:25:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
5699
5700         * cvt.c (reference_binding): A REF_BIND gets the reference type.
5701         (implicit_conversion): Likewise.
5702         (convert_like): Likewise.
5703         (compare_ics): Likewise.
5704         (compare_qual): Likewise.
5705         (print_z_candidates): Handle no candidates.
5706         (build_new_op): Don't handle builtin COND_EXPR for now.
5707
5708 Sat Jul 27 11:27:47 1996  Stan Shebs  <shebs@andros.cygnus.com>
5709
5710         * cvt.c (build_builtin_candidate): Init local var in an ANSI way.
5711
5712 Fri Jul 26 01:07:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
5713
5714         * cvt.c (joust): If the candidates are the same, arbitrarily pick one.
5715
5716         * cvt.c (build_builtin_candidate): Oops.
5717         (build_new_op): Oops.
5718
5719         * method.c (build_opfncall): Pass COND_EXPR on.
5720         * cvt.c (build_builtin_candidate): Reorganize, support COND_EXPR.
5721         (add_builtin_candidate{,s}): Likewise.
5722         (add_builtin_candidates): Likewise.
5723         (print_z_candidates, op_error, build_new_op): Likewise.
5724         (type_decays_to): New fn.
5725         * lex.c (init_lex): Just say ?: for COND_EXPR.
5726
5727 Thu Jul 25 09:33:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
5728
5729         * typeck.c (complete_type): Call layout_type rather than building
5730         a new array type.
5731
5732         * cvt.c (add_builtin_candidate): Pointer arithmetic candidates
5733         only use ptrdiff_t.
5734
5735 Wed Jul 24 12:45:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
5736
5737         * cvt.c: Always compile the new overloading code (but don't use it).
5738         (implicit_conversion): Add a BASE_CONV when converting to
5739         the same class type.
5740         (convert_like): Handle BASE_CONV.
5741
5742 Tue Jul 23 12:46:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
5743
5744         * cvt.c (build_new_op): Support {MAX,MIN}_EXPR.
5745         (add_builtin_candidate): Likewise.
5746
5747         NEW_OVER changes:
5748         * typeck.c (build_x_function_call): Try an operator function
5749         whenever we call an object of class type.
5750         * method.c (build_opfncall): Pass CALL_EXPRs through.
5751         * cvt.c (implicit_conversion): Do const-ref case first.
5752         (add_conv_candidate, build_object_call, op_error): New fns.
5753         (ptr_complete_ob, TYPE_PTROB_P): void is not an object type.
5754         ({add,build}_builtin_candidate{,s}, print_z_candidates): Display 
5755         builtin candidates.
5756         (build_new_op): Handle CALL_EXPR.  Don't try to decay void.
5757         Fall back on preincrement handling.  Use op_error.  
5758         Handle warn_synth.
5759         (convert_like): Pass INDIRECT_BIND.  Don't try to do anything with 
5760         an error_mark_node.
5761         (build_over_call): Handle PROMOTE_PROTOTYPES and ellipsis promotions
5762         properly.
5763
5764 Mon Jul 22 16:21:55 1996  Bob Manson  <manson@charmed.cygnus.com>
5765
5766         * pt.c (tsubst_expr): Handle CONTINUE_STMT.
5767
5768 Mon Jul 22 15:38:58 1996  Mike Stump  <mrs@cygnus.com>
5769
5770         * typeck.c (build_component_ref_1): Use build_component_ref
5771         instead of open coding it here.
5772
5773 Mon Jul 22 12:18:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
5774
5775         * g++.c (main): Don't link with -lg++.
5776
5777         NEW_OVER changes:
5778         * cvt.c (convert_to_reference): Don't use convert_from_refeence on
5779         result of build_type_conversion.
5780         (cp_convert): Only call build_method_call for ctors if
5781         build_type_conversion failed.
5782         (ptr_complete_ob): New function.
5783         (TYPE_PTR{,OB,MEM}_P): New macros.
5784         ({add,build}_builtin_candidate{,s}): New functions.
5785         (print_z_candidates): Handle builtins.
5786         (build_user_type_conversion_1): Don't use conversion fns for 
5787         converting to a base type.
5788         (build_user_type_conversion_1): Set ICS_USER_FLAG on AMBIG_CONVs.
5789         (build_user_type_conversion): Use convert_from_reference.
5790         (build_new_op): New function.
5791         (build_over_call): Fix handling of methods.
5792         (compare_ics): Handle AMBIG_CONV properly.
5793         * typeck2.c: Increment abort count.
5794         * method.c (build_opfncall): Forward most requests to build_new_op.
5795         * cp-tree.h (IS_OVERLOAD_TYPE): Tweak.
5796
5797 Fri Jul 19 17:59:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5798
5799         * error.c (dump_expr, case CONSTRUCTOR, case CAST_EXPR): Take out
5800         invalid second argument to dump_expr_list.
5801
5802 Fri Jul 19 14:04:05 1996  Mike Stump  <mrs@cygnus.com>
5803
5804         * decl.c (lookup_name_real): Make sure we do obj->X::i correctly.
5805
5806 Thu Jul 18 14:48:23 1996  Bob Manson  <manson@charmed.cygnus.com>
5807
5808         * decl2.c (import_export_vtable): ASM_OUTPUT_EXTERNAL, not
5809         ASSEMBLE_EXTERNAL.
5810
5811 Mon Jul 15 17:48:43 1996  Mike Stump  <mrs@cygnus.com>
5812
5813         * typeck2.c (process_init_constructor): New pedwarn for using { }
5814         to initialize a pointer to member function.
5815         * typeck.c (build_ptrmemfunc1): Avoid use of digest_init so that
5816         we can avoid the new error.
5817
5818 Mon Jul 15 15:42:03 1996  Mike Stump  <mrs@cygnus.com>
5819
5820         * typeck.c (build_ptrmemfunc1): New function to hide details of
5821         pointer to member functions better.
5822
5823 Mon Jul 15 14:23:02 1996  Mike Stump  <mrs@cygnus.com>
5824
5825         * init.c (resolve_offset_ref): Resolve OFFSET_REFs that are
5826         methods into the actual method, as we know the implied object is
5827         not used.
5828
5829 Mon Jul 15 13:08:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5830
5831         * parse.y (maybecomma_warn): Only emit the pedwarn if we're not
5832         inside a system header.
5833
5834 Fri Jul 12 16:30:05 1996  Bob Manson  <manson@charmed.cygnus.com>
5835
5836         * call.c (build_method_call): Call complete_type on the
5837         instance type.
5838
5839 Thu Jul 11 17:16:40 1996  Mike Stump  <mrs@cygnus.com>
5840
5841         * typeck.c (build_component_ref): Always build up an OFFSET_REF
5842         for obj_ptr->func so that we can know which object to use in a
5843         method call.
5844
5845 Wed Jul 10 19:36:37 1996  Mike Stump  <mrs@cygnus.com>
5846
5847         * typeck.c (build_ptrmemfunc): Remove sorry, now we can cast
5848         around things.  Also improve maintainability.
5849
5850 Wed Jul 10 18:20:11 1996  Bob Manson  <manson@charmed.cygnus.com>
5851
5852         * decl.c (grokdeclarator): Check for overflow when evaluating an
5853         array dimension.
5854
5855 Wed Jul 10 17:26:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
5856
5857         * cvt.c (cp_convert): Don't check for ambiguity with constructor
5858         if NEW_OVER.
5859
5860         * typeck.c (build_x_function_call): Pass function overload
5861         questions to new overloading code if NEW_OVER.
5862         * init.c (expand_aggr_init_1): Only check for type conversion ops
5863         if we're doing copy-initialization (i.e. LOOKUP_ONLYCONVERTING).
5864         Don't check for ambiguity with constructor if NEW_OVER.
5865         * cvt.c (convert_to_reference): Dereference the result of a type
5866         conversion operator.
5867         (build_conv): Propagate ICS_USER_FLAG.
5868         (implicit_conversion): Call instantiate_type.
5869         Pass LOOKUP_ONLYCONVERTING instead of LOOKUP_NORMAL.
5870         (add_function_candidate): Fix cv-quals on argtype.
5871         (print_z_candidates): New function.
5872         (build_new_function_call): Call it.
5873         (build_user_type_conversion_1): If LOOKUP_ONLYCONVERTING, don't
5874         consider non-converting constructors.
5875         Call print_z_candidates.
5876         Return an AMBIG_CONV for an ambiguous conversion.
5877         (build_user_type_conversion): Handle AMBIG_CONV.
5878         (convert_like): Fix test for building TARGET_EXPR.
5879         Call instantiate_type.
5880         Handle AMBIG_CONV and LVALUE_CONV.
5881         (build_over_call): Handle 0 args and ellipsis.
5882         * cp-tree.def: Add AMBIG_CONV.
5883
5884 Tue Jul  9 17:48:48 1996  Mike Stump  <mrs@cygnus.com>
5885
5886         * decl.c (lookup_name_real): If we find mem in obj when parsing
5887         `obj->mem', make sure we return the right value.
5888
5889 Tue Jul  9 16:11:28 1996  Bob Manson  <manson@charmed.cygnus.com>
5890
5891         * search.c (get_base_distance): Call complete_type.
5892
5893 Tue Jul  9 12:46:34 1996  Mike Stump  <mrs@cygnus.com>
5894
5895         * decl.c (store_bindings): Make static.
5896
5897 Mon Jul  8 16:42:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
5898
5899         * init.c (expand_aggr_init_1): Don't check type conversions if
5900         NEW_OVER.
5901
5902         * cvt.c (z_candidate): Put back template field.
5903         (add_function_candidate): Set it.
5904         (add_template_candidate): Likewise.
5905         (joust): Use it.
5906         (compare_qual): Handle references and pointers to members.
5907         (compare_ics): Handle reference bindings.
5908
5909         * decl.c (duplicate_decls): Propagate DECL_ONE_ONLY.
5910
5911 Mon Jul  8 16:18:56 1996  Bob Manson  <manson@charmed.cygnus.com>
5912
5913         * call.c (compute_conversion_costs): Call complete_type.
5914
5915         * tree.c (vec_binfo_member): Use comptypes instead of comparing
5916         pointers, so we can handle template parameters.
5917
5918 Fri Jul  5 16:51:53 1996  Bob Manson  <manson@charmed.cygnus.com>
5919
5920         * cvt.c (cp_convert_to_pointer): We have to call complete_type
5921         here; let's make it explicit instead of a side effect of an
5922         error check.
5923
5924 Wed Jul  3 16:29:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
5925
5926         * cvt.c (z_candidate): Remove template field.
5927         (reference_binding): Handle binding to temporary.
5928         (implicit_conversion): Likewise.
5929         (add_function_candidate): Handle artificial constructor parms.
5930         Handle functions with too few parms.
5931         (add_template_candidate): New function.
5932         (build_user_type_conversion_1): Handle constructors.
5933         (convert_like): Likewise.
5934         (build_over_call): Likewise.
5935         (build_new_function_call): Support templates.
5936         (compare_ics): Fix reference, inheritance handling.
5937
5938 Mon Jul  1 22:58:18 1996  Bob Manson  <manson@charmed.cygnus.com>
5939
5940         * decl.c: Add signed_size_zero_node.
5941         (init_decl_processing): Build it.
5942         * class.c (prepare_fresh_vtable): Use it instead of size_zero_node
5943         when we're trying to make a negative delta.
5944
5945 Mon Jul  1 17:56:19 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5946
5947         Stop doing this damn index==strchr variable name confusion.
5948         * class.c (add_virtual_function): Change local var INDEX to be
5949         named IDX.
5950         (add_method): Likewise.
5951         * lex.c (print_parse_statistics): Likewise.
5952         * search.c (make_memoized_table_entry): Likewise.
5953         (lookup_fnfields_here): Likewise.
5954         (lookup_field): Likewise.
5955         (lookup_fnfields): Likewise.
5956         (get_baselinks): Likewise.
5957         * sig.c (build_signature_table_constructor): Likewise.
5958         (build_signature_method_call): Likewise.
5959         * typeck.c (build_x_array_ref): Change INDEX parm to be named IDX.
5960         (get_member_function_from_ptrfunc): Likewise.
5961         (build_ptrmemfunc): Change local var INDEX to be IDX.
5962         (c_expand_start_case): Likewise.
5963
5964 Sat Jun 29 14:05:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
5965
5966         * cvt.c (cp_convert_to_pointer): Move user-defined type conversion
5967         handling to before extraction of TYPE_PTRMEMFUNC_FN_TYPE.
5968         (convert_to_reference): Use build_type_conversion to convert to
5969         the reference type directly.
5970         (standard_conversion): Fix void* case, non-conversions.
5971         (reference_binding): Fix expr == 0 case, non-conversions.
5972         (convert_like): Support REF_BIND.
5973         (compare_qual): Split out from compare_ics.
5974         (compare_ics): Use it, handle icses with only a qual_conv.
5975
5976         * init.c (expand_vec_init): Don't crash if decl is NULL.
5977
5978 Fri Jun 28 11:52:51 1996  Stan Shebs  <shebs@andros.cygnus.com>
5979
5980         * mpw-config.in: New file, configury for Mac MPW.
5981         * mpw-make.sed: New file, makefile editing for MPW.
5982
5983 Thu Jun 27 15:18:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
5984
5985         * pt.c (instantiate_class_template): Call repo_template_used.
5986
5987         * search.c (lookup_conversions): Only lookup conversions in
5988         complete types.
5989
5990 Thu Jun 27 12:59:53 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
5991
5992         * cp-tree.def: Renamed from tree.def, to avoid confusion with
5993         gcc's tree.def.
5994         * cp-tree.h, lex.c: Include cp-tree.def.
5995         * Makefile.in (CXX_TREE_H): Reference cp-tree.def.
5996
5997 Wed Jun 26 18:29:47 1996  Bob Manson  <manson@charmed.cygnus.com>
5998
5999         * init.c (build_vec_delete_1): Call complete_type.
6000
6001 Mon Jun 24 17:17:32 1996  Mike Stump  <mrs@cygnus.com>
6002
6003         * except.c (start_anon_func): Make sure anonymous functions are
6004         never external.
6005
6006 Fri Jun 21 15:10:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
6007
6008         * decl.c (finish_function): If function_depth > 1, set nested.
6009
6010         * decl2.c (grokbitfield): Revert Bob's change.
6011         * class.c (finish_struct_1): Fix handling of named bitfield widths.
6012
6013 Thu Jun 20 23:35:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
6014
6015         * pt.c (add_pending_template): Handle types.
6016         (lookup_template_class): With -fexternal-templates, just add the class
6017         to pending_templates instead of instantiating it now.
6018         * decl2.c (finish_file): Handle types in pending_templates.
6019
6020 Thu Jun 20 14:08:40 1996  Bob Manson  <manson@charmed.cygnus.com>
6021
6022         * decl2.c (grokbitfield): Handle constant decls appropriately.
6023         Give an appropriate error message now instead of spewing core
6024         later.
6025
6026 Thu Jun 20 13:01:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
6027
6028         * decl2.c: Don't turn on thunks by default for now.
6029
6030 Wed Jun 19 11:37:04 1996  Jason Merrill  <jason@yorick.cygnus.com>
6031
6032         * typeck.c (complete_type): Handle error_mark_node.
6033         (common_type, OFFSET_TYPE): Handle template_type_parms.
6034
6035 Tue Jun 18 10:02:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
6036
6037         * pt.c (instantiate_decl): If at_eof, call import_export_decl
6038         regardless of DECL_INLINE.
6039
6040         * typeck.c (mark_addressable): Set TREE_ADDRESSABLE on CONSTRUCTORs.
6041
6042         * class.c (finish_struct_bits): Copy TYPE_SIZE.
6043
6044         * rtti.c (build_dynamic_cast): Support templates.
6045         * tree.def: Support DYNAMIC_CAST_EXPR.
6046         * pt.c (tsubst_copy): Likewise.
6047         * decl2.c (build_expr_from_tree): Likewise.
6048
6049 Mon Jun 17 15:23:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
6050
6051         * typeck.c (build_static_cast): Support templates.
6052         (build_const_cast): Likewise.
6053         * tree.def: Support CONST/STATIC_CAST_EXPR.
6054         * pt.c (tsubst_copy): Likewise.
6055         * decl2.c (build_expr_from_tree): Likewise.
6056
6057 Sun Jun 16 12:33:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
6058
6059         * decl2.c (finish_vtable_vardecl): Don't trust
6060         TREE_SYMBOL_REFERENCED for vtables of local classes.
6061
6062 Fri Jun 14 18:13:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
6063
6064         * pt.c (tsubst_copy): Handle operator T.
6065
6066 Wed Jun 12 17:52:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6067
6068         * init.c (build_delete): Move creation of PARMS inside test of
6069         TYPE_HAS_DESTRUCTOR, since it's never used outside of that block.
6070
6071 Tue Jun 11 15:09:18 1996  Bob Manson  <manson@charmed.cygnus.com>
6072
6073         * typeck.c (build_conditional_expr): Don't assume that
6074         the arguments to ?: are always pointers or records.
6075
6076 Tue Jun 11 13:56:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
6077
6078         * decl2.c (import_export_decl): Still emit static/weak/comdat
6079         copies of inline template functions with -fno-implicit-templates.
6080
6081 Tue Jun 11 11:42:13 1996  Bob Manson  <manson@charmed.cygnus.com>
6082
6083         * init.c (build_delete): Determine the complete basetype
6084         path to the destructor we're calling.
6085
6086 Fri Jun  7 15:30:10 1996  Bob Manson  <manson@charmed.cygnus.com>
6087
6088         * decl.c (build_enumerator): Always copy the INTEGER_CST used to
6089         initialize the enum, because we really and truly don't know where
6090         it came from.
6091         (start_enum): Don't copy integer_zero_node because
6092         build_enumerator will do it.
6093
6094 Fri Jun  7 11:11:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
6095
6096         * decl.c (finish_function): Do access control on base destructors.
6097
6098         * pt.c (tsubst, case FUNCTION_DECL): Set up
6099         IDENTIFIER_GLOBAL_VALUE for member functions so pushdecl doesn't
6100         hose us.
6101
6102 Fri Jun  7 10:37:33 1996  Mike Stump  <mrs@cygnus.com>
6103
6104         * cvt.c (build_up_reference): If we have already extended the
6105         lifetime of the temporary, don't try it again.
6106         * typeck.c (c_expand_return): Don't try and convert the return
6107         value twice when we want a reference, once is enough.
6108         
6109 Tue Jun  4 15:41:45 1996  Jason Merrill  <jason@yorick.cygnus.com>
6110
6111         * pt.c (tsubst_expr, case DECL_STMT): Don't pass
6112         LOOKUP_ONLYCONVERTING at all for now.
6113
6114         * search.c (add_conversions): Put the conversion function in
6115         TREE_VALUE, the basetype in TREE_PURPOSE.
6116         * cvt.c (build_type_conversion): Adjust.
6117         * cvt.c (build_expr_type_conversion): Adjust.
6118         * call.c (user_harshness): Adjust.
6119
6120 Mon Jun  3 15:30:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
6121
6122         * method.c (emit_thunk): Pretend this is a FUNCTION_DECL for the
6123         backend's benefit.
6124
6125 Mon Jun 10 18:58:19 1996  Mike Stump  <mrs@cygnus.com>
6126
6127         * except.c (expand_start_catch_block): Add a dummy region, if we
6128         get an error, so that we can avoid core dumping later.
6129
6130 Fri May 31 14:56:13 1996  Mike Stump  <mrs@cygnus.com>
6131
6132         * cp-tree.h (OFFSET_REF): Remove.
6133         * tree.def (CP_OFFSET_REF): Rename to OFFSET_REF.
6134         * expr.c (cplus_expand_expr): Cleanup callers of expand_expr.
6135         * init.c (expand_aggr_init_1): Likewise.
6136         (build_new): Likewise.
6137         * typeck.c (expand_target_expr): Likewise.
6138
6139 Fri May 31 14:22:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
6140
6141         * typeck.c (build_modify_expr): Don't use TREE_VALUE on a
6142         TARGET_EXPR.
6143
6144 Wed May 29 17:04:33 1996  Mike Stump  <mrs@cygnus.com>
6145
6146         * cvt.c (build_up_reference): Redo how and when temporaries are
6147         created.
6148         * decl.c (grok_reference_init): Don't try and be smart about
6149         running cleanups.
6150
6151 Wed May 29 16:02:08 1996  Mike Stump  <mrs@cygnus.com>
6152
6153         * cvt.c (build_up_reference): Add NULL_TREE to all calls to build
6154         (TARGET_EXPR...), now that it has 4 arguments.
6155         * tree.c (build_cplus_new): Likewise.
6156
6157 Thu May 23 16:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
6158
6159         * error.c (dump_expr, case CAST_EXPR): Handle T() properly.
6160
6161         * pt.c (instantiate_decl): Don't call push/pop_cp_function_context.
6162         * decl.c (struct saved_scope): Remove named_labels,
6163         {base,member}_init_list.
6164         (maybe_push_to_top_level): Don't set them.  Call
6165         push_cp_function_context if appropriate.
6166         (pop_from_top_level): Likewise.
6167
6168         * method.c (do_build_assign_ref): Remove obsolete check of
6169         TYPE_HAS_ASSIGN_REF (basetype).
6170
6171         * decl.c (grokfndecl): Diagnose user definition of
6172         implicitly-declared methods.
6173
6174 Thu May 23 12:13:08 1996  Bob Manson  <manson@charmed.cygnus.com>
6175
6176         * method.c (do_build_copy_constructor): Add code to give
6177         meaningful error messages instead of crashing.
6178         (do_build_assign_ref): Don't synthesize assignment operators for
6179         classes containing reference or const members.
6180
6181         * class.c (struct base_info): Remove cant_synth_copy_ctor
6182         and cant_synth_asn_ref.
6183         (finish_base_struct): Remove the code that tries to conditionalize
6184         synthesis of copy constructors & assignment operators based on
6185         access permissions. Instead, let it fail when it tries to
6186         synthesize the copy constructor. This will give meaningful error
6187         messages instead of silently generating code to perform a bitcopy.
6188
6189 Wed May 22 11:45:19 1996  Bob Manson  <manson@charmed.cygnus.com>
6190
6191         * lex.c (real_yylex): Remove old-n-crufty #if 0 code for
6192         determining types for constant values.
6193
6194         * decl.c (struct named_label_list): Use instead of stuffing
6195         random items into a TREE_LIST node.
6196         (named_label_uses): Use the new struct.
6197         (poplevel): Likewise.
6198         (lookup_label): Likewise.
6199         (define_label): Add an error message to tell the user the line
6200         where the goto is located in addition to the destination of the
6201         goto.
6202         (init_decl_processing): Use NULL instead of NULL_TREE to initialize
6203         named_label_uses.
6204         (finish_function): Likewise.
6205         
6206         (start_decl): Complain about defining a static data member
6207         in a different type from which it was declared.
6208
6209 Wed May 22 09:33:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
6210
6211         * cvt.c (build_expr_type_conversion): Adjust.
6212
6213 Tue May 21 11:21:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
6214
6215         * call.c (build_method_call): Always convert 'this' to the
6216         appropriate type.
6217
6218         * search.c (add_conversions): Put the conversion function in
6219         TREE_VALUE, the type in TREE_PURPOSE.
6220         * cvt.c (build_type_conversion): Adjust.
6221         * call.c (user_harshness): Adjust.
6222
6223         * method.c (emit_thunk): Call temporary_allocation and
6224         permanent_allocation around the ASM_OUTPUT_MI_THUNK case, too.
6225
6226         * tree.c (build_cplus_array_type): Handle tweaking of
6227         TYPE_MAIN_VARIANT here.
6228         * typeck.c (common_type): Not here.
6229
6230         * typeck.c (complete_type): Only try to complete an array type if
6231         it has a domain.
6232
6233 Mon May 20 14:55:59 1996  Jason Merrill  <jason@yorick.cygnus.com>
6234
6235         * decl.c (grokvardecl): Call complete_type.
6236         (grokdeclarator): Call complete_type for PARM_DECLs.
6237
6238 Fri May 17 16:41:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
6239
6240         * pt.c (instantiate_class_template): Re-set
6241         CLASSTYPE_GOT_SEMICOLON after calling finish_struct_1.
6242
6243 Fri May 17 14:56:55 1996  Mike Stump  <mrs@cygnus.com>
6244
6245         * cp-tree.h (cp_expand_decl_cleanup): Remove, the backend is now
6246         smart enough to do it right.
6247         * tree.c (cp_expand_decl_cleanup): Likewise.
6248         * decl.c (cp_finish_decl): Use expand_decl_cleanup instead of
6249         cp_expand_decl_cleanup.
6250         (store_parm_decls): Likewise.
6251         (hack_incomplete_structures): Likewise.
6252         * except.c (push_eh_cleanup): Likewise.
6253
6254 Fri May 17 13:13:51 1996  Mike Stump  <mrs@cygnus.com>
6255
6256         * expr.c (expand_expr, cond UNSAVE_EXPR): Move from the C++
6257         frontend to the backend where it belongs.
6258         * tree.c (unsave_expr): Likewise.
6259         (unsave_expr_now): Likewise.
6260         * tree.def (UNSAVE_EXPR): Likewise.
6261         * cp-tree.h (unsave_expr): Likewise.
6262         (unsave_expr_now): Likewise.
6263
6264 Fri May 17 11:02:41 1996  Mike Stump  <mrs@cygnus.com>
6265
6266         * init.c (emit_base_init): Make sure the partial EH cleanups live
6267         on the function_obstack.
6268
6269 Thu May 16 15:29:33 1996  Bob Manson  <manson@charmed.cygnus.com>
6270
6271         * expr.c (do_case): Don't try to dereference null TREE_TYPEs
6272         when checking for pointer types.
6273
6274 Thu May 16 13:38:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
6275
6276         * pt.c (instantiate_class_template): Remove obsolete check for
6277         access declarations.
6278
6279 Thu May 16 13:34:15 1996  Mike Stump  <mrs@cygnus.com>
6280
6281         * call.c (build_overload_call): Simplify calls to
6282         build_overload_call by removing last parameter.
6283         (build_method_call): Likewise.
6284         * cp-tree.h: Likewise.
6285         * method.c (build_opfncall): Likewise.
6286         * typeck.c (build_x_function_call): Likewise.
6287
6288 Thu May 16 13:15:43 1996  Mike Stump  <mrs@cygnus.com>
6289
6290         * call.c (default_parm_conversions): Factor out common code.
6291         (build_method_call): Use it.
6292         (build_overload_call_real): Use it.
6293
6294 Wed May 15 14:46:14 1996  Mike Stump  <mrs@cygnus.com>
6295
6296         * call.c (build_method_call): Allow implicit & on METHOD_TYPEs,
6297         but pedwarn as the code is bogus.
6298         * typeck.c (decay_conversion): Likewise.
6299         (build_function_call_real): Use build_addr_func instead of
6300         default_conversion.  Don't allow pointer-to-method functions down
6301         here.
6302         (build_unary_op): Use real pointer-to-member functions instead of
6303         fake ones.
6304         (build_ptrmemfunc): Use build_addr_func instead of build_unary_op.
6305         (convert_for_assignment): Removed some obsolete code.
6306         * decl2.c (reparse_absdcl_as_expr): Pass current_class_ref to
6307         build_x_function_call instead of current_class_ptr.  Only call
6308         digest_init once on an initializer, we do this just checking
6309         TREE_TYPE.
6310         (build_expr_from_tree): Pass current_class_ref to
6311         build_x_function_call instead of current_class_ptr.
6312         * init.c (build_member_call): Likewise.
6313         * pase.y: Likewise.
6314         * error.c (dump_expr): Handle OFFSET_REFs better.
6315         * pt.c (unify): Handle pointer-to-member functions better.
6316         * decl.c (finish_function): Clear out current_class_ref just like
6317         we do for current_class_ptr.
6318
6319         * typeck.c (get_delta_difference): Handle virtual bases better.
6320
6321 Tue May 14 16:37:37 1996  Jason Merrill  <jason@yorick.cygnus.com>
6322
6323         * sig.c (build_signature_table_constructor): Use the delta for
6324         the original basetype for this virtual function with thunks.
6325         (build_signature_method_call): We still need to adjust 'this'
6326         with thunks.
6327
6328 Tue May 14 16:27:25 1996  Mike Stump  <mrs@cygnus.com>
6329
6330         * call.c (build_addr_func): New routine.  Used to get the `real'
6331         address of a function or a method.  Needed to avoid getting a
6332         pointer-to-member function.
6333         (build_call): New routine to build CALL_EXPRs.
6334         (build_method_call): Use it.
6335         * cvt.c (convert_to_aggr): Likewise.
6336         * typeck.c (build_function_call_real): Likewise.
6337         * sig.c (build_signature_table_constructor): Use build_addr_func.
6338         * cp-tree.h (build_call, build_addr_func): Declare them.
6339
6340 Tue May 14 12:47:47 1996  Mike Stump  <mrs@cygnus.com>
6341
6342         * cp-tree.h (LOOKUP_AGGR): Remove, unused.
6343         * parse.y: Remove uses of LOOKUP_AGGR.
6344
6345 Tue May 14 12:07:51 1996  Mike Stump  <mrs@cygnus.com>
6346
6347         * *.[chy]: Rename current_class_decl to current_class_ptr, and
6348         C_C_D to current_class_ref.
6349
6350 Mon May 13 16:55:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
6351
6352         * call.c (convert_harshness): Tighten up pointer conversions.
6353
6354 Sat May 11 04:33:50 1996  Doug Evans  <dje@canuck.cygnus.com>
6355
6356         * decl2.c (finish_vtable_vardecl): Surround DECL_ONE_ONLY with ifdef.
6357         (finish_file): Likewise.
6358
6359 Fri May 10 11:09:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
6360
6361         * cvt.c (convert_fn_ptr): We don't use thunks for pmfs.
6362
6363         * method.c (emit_thunk): Set flag_omit_frame_pointer in default
6364         code.
6365
6366 Thu May  9 18:18:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
6367
6368         * decl2.c: Turn on thunks by default where supported.
6369
6370 Tue May  7 20:39:57 1996  Mike Stump  <mrs@cygnus.com>
6371
6372         * cp-tree.h (build_overload_call_maybe): Removed.
6373         * call.c (build_overload_call_real): Invert meaning of last arg to
6374         be require_complete.
6375         (build_overload_call): Likewise.
6376         * typeck.c (build_x_function_call): Use build_overload_call_real
6377         instead of build_overload_call_maybe.
6378
6379 Mon May  6 01:23:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
6380
6381         * decl2.c (finish_file): Don't try to emit functions that haven't
6382         been compiled.
6383
6384 Fri May  3 09:30:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
6385
6386         * decl2.c (finish_vtable_vardecl): Oops.
6387
6388         * decl.c (maybe_push_to_top_level): Do save previous_class_*.
6389         Also store the bindings from previous_class_values.
6390         (pop_from_top_level): Restore them.
6391
6392 Thu May  2 21:56:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
6393
6394         * decl2.c (finish_vtable_vardecl): Only write out vtable if its
6395         symbol has been referenced.
6396         (finish_file): Re-join synthesis/vtable loop with inline emission
6397         loop, disable inlining when an inline is output.
6398
6399 Thu May  2 17:20:02 1996  Mike Stump  <mrs@cygnus.com>
6400
6401         * except.c (init_exception_processing): Setup saved_in_catch.
6402         (push_eh_cleanup): Reset __eh_in_catch.
6403         (expand_start_catch_block): Set __eh_in_catch.
6404
6405 Thu May  2 16:21:17 1996  Mike Stump  <mrs@cygnus.com>
6406
6407         * except.c (push_eh_cleanup): Add tracking for whether or not we
6408         have an active exception object.
6409         (expand_builtin_throw): Use it to make sure a rethrow without an
6410         exception object is caught.
6411
6412 Thu May  2 11:26:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
6413
6414         * decl.c (maybe_push_to_top_level): Clear out class-level bindings
6415         cache.
6416
6417 Wed May  1 11:26:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
6418
6419         * decl2.c (finish_file): Also use sentries for vars with
6420         DECL_ONE_ONLY or DECL_WEAK set (should any such happen to be
6421         created).
6422
6423         * lex.c (handle_cp_pragma): Disable #pragma
6424         interface/implementation if SUPPORTS_ONE_ONLY > 1.
6425
6426 Tue Apr 30 11:25:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
6427
6428         * method.c (emit_thunk): Wrap default case in
6429         temporary/permanent_allocation.
6430
6431         * method.c (make_thunk): Use DECL_ONE_ONLY.
6432         (emit_thunk): Call assemble_end_function.
6433
6434 Mon Apr 29 15:38:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
6435
6436         * decl2.c (import_export_vtable): Use DECL_ONE_ONLY.
6437         (import_export_decl): Likewise.
6438         (finish_prevtable_vardecl): Disable vtable hack if
6439         SUPPORTS_ONE_ONLY > 1.
6440
6441 Mon Apr 29 14:32:47 1996  Mike Stump  <mrs@cygnus.com>
6442
6443         * typeck.c (build_modify_expr): PREINCREMENT_EXPR and
6444         PREDECREMENT_EXPRs take two arguments, not one.
6445
6446 Mon Apr 29 00:27:53 1996  Jason Merrill  <jason@yorick.cygnus.com>
6447
6448         * class.c (build_vtable_entry): Don't build thunks for abstract
6449         virtuals.
6450
6451         * lex.c (real_yylex): Fix handling of __PRETTY_FUNCTION__ like C
6452         frontend.
6453
6454 Sat Apr 27 16:45:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
6455
6456         * class.c (set_rtti_entry): Use size_zero_node.
6457         (build_vtable): Likewise.
6458
6459 Sat Apr 27 14:48:57 1996  Jason Merrill  <jason@phydeaux.cygnus.com>
6460
6461         * class.c (finish_struct_1): Pass size_zero_node to set_rtti_entry.
6462         (prepare_fresh_vtable): Likewise.
6463
6464 Fri Apr 26 13:14:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
6465
6466         * method.c (emit_thunk): Call mark_used on the target function.
6467
6468         * call.c (build_method_call): Don't warn about pending templates.
6469
6470 Thu Apr 25 14:55:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
6471
6472         * decl2.c (finish_file): Fix list walking logic.
6473
6474         * typeck2.c (check_for_new_type): Only warn if -pedantic.
6475
6476 Wed Apr 24 15:41:15 1996  Bob Manson  <manson@charmed.cygnus.com>
6477
6478         * class.c (finish_struct_1): Remove old code for
6479         dont_allow_type_definitions.
6480         * cp-tree.h: Likewise.
6481         * spew.c: Make sure cp-tree.h is included before parse.h, so the
6482         definition of flagged_type_tree is found before it is used.
6483         * lex.c: Likewise.
6484         * parse.y: Added the ftype member to the type union, and changed a
6485         number of rules to use it instead of ttype. Added calls to
6486         check_for_new_type() as appropriate.
6487         * typeck2.c (check_for_new_type): New function for checking
6488         if a newly defined type appears in the specified tree.
6489         * cp-tree.h: Add new type flagged_type_tree. Add a prototype
6490         for check_for_new_type().
6491
6492 Wed Apr 24 00:36:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
6493
6494         * decl2.c (finish_file): Only use a sentry if the decl is public.
6495
6496         * pt.c (tsubst_expr, DECL_STMT): If we don't have an initializer,
6497         don't pass LOOKUP_ONLYCONVERTING.
6498
6499 Tue Apr 23 17:18:47 1996  Bob Manson  <manson@charmed.cygnus.com>
6500
6501         * typeck.c (common_type): Fix the ARRAY_TYPE case so it
6502         properly keeps track of const and volatile type modifiers.
6503
6504 Tue Apr 23 10:52:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
6505
6506         * tree.c (cp_tree_equal): C++ version of simple_cst_equal.
6507         * pt.c (comp_template_args): Use it.
6508
6509         * rtti.c (get_tinfo_fn, build_dynamic_cast, expand_*_desc): Call
6510         assemble_external for artificial function decls.
6511
6512         * decl.c (cp_finish_decl): Oops.
6513
6514 Mon Apr 22 17:28:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
6515
6516         * decl2.c (import_export_decl): Put static data member templates
6517         into common storage, or make them weak, depending on whether they
6518         are dynamically or statically initialized.
6519         (get_sentry): New function.
6520         (finish_file): Do import_export_decl for static data members before
6521         building the init/fini functions.  Don't init/fini a variable that's
6522         EXTERNAL.  Use a sentry for variables in common.  Fix mismatching
6523         push/pop_temp_slots.
6524         * decl.c (cp_finish_decl): If DECL_NOT_REALLY_EXTERN, do the
6525         expand_static_init thang.
6526         * method.c (get_id_2): New function.
6527
6528 Mon Apr 22 15:32:45 1996  Bob Manson  <manson@charmed.cygnus.com>
6529
6530         * parse.y (empty_parms): Make sure we use C++-style prototypes
6531         when we're declaring member functions.
6532
6533 Sun Apr 21 10:08:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
6534
6535         * Makefile.in (CONFLICTS): 16 s/r conflicts.
6536         * parse.y (self_template_type): New nonterminal.
6537
6538 Thu Apr 18 08:56:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
6539
6540         * decl.c (make_typename_type): Handle getting a TYPE_DECL for a
6541         name.
6542         * parse.y (base_class.1): Allow 'typename foo::bar'.
6543
6544         * lex.c (check_newline): Remove #pragma code that plays with the
6545         input stream, since we now deal with tokens.  Clear nextchar when
6546         we're done.
6547         (handle_cp_pragma): Use real_yylex.
6548         (handle_sysv_pragma): Don't do skipline here.  Only call real_yylex
6549         in one place.
6550
6551         * lex.c (check_for_missing_semicolon): Handle SELFNAME.
6552
6553         * lex.c (handle_cp_pragma): Fix "#pragma implementation".
6554
6555 Wed Apr 17 16:51:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
6556
6557         * parse.y: New token SELFNAME for potential constructor.
6558         * spew.c (yylex): Handle it.
6559         * lex.c (identifier_type): Produce it.
6560
6561         * parse.y (complete_type_name): In :: case, don't push class binding.
6562         (complex_type_name): Likewise.
6563
6564 Wed Apr 17 15:02:40 1996  Mike Stump  <mrs@cygnus.com>
6565
6566         * typeck.c (build_reinterpret_cast): Handle pointer to member
6567         functions.
6568
6569 Wed Apr 17 12:28:26 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6570
6571         * lex.c (handle_cp_pragma): New function, with decl, doing the cc1plus
6572         pragmas.
6573         (check_newline): Put the vtable/unit/implementation/interface pragma
6574         code into handle_cp_pragma, replacing it with a call.
6575         (handle_sysv_pragma): Give int return type, and take FINPUT and TOKEN
6576         args.  Get the next token after handling the pragma token.
6577
6578 Wed Apr 17 10:28:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
6579
6580         * cvt.c (cp_convert_to_pointer): Avoid doing base analysis on pmfs.
6581         (convert_to_pointer_force): Likewise.
6582
6583         * init.c (build_new): Fix array new without -fcheck-new.
6584
6585 Tue Apr 16 13:44:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
6586
6587         * cp-tree.h, call.c, class.c, decl.c, parse.y, pt.c, rtti.c,
6588         tree.c: Lose TYPE_NESTED_NAME.
6589
6590         * parse.y (nested_name_specifier_1): Don't treat non-identifiers
6591         as identifiers.
6592
6593         * tree.def: Add VEC_INIT_EXPR.
6594         * expr.c (cplus_expand_expr): Handle it.
6595         * init.c (build_new): Use it instead of the RTL_EXPR nastiness and
6596         the extra file-scope symbol nastiness.
6597
6598 Mon Apr 15 16:21:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
6599
6600         * method.c (make_thunk): Thunks are static.
6601         (emit_thunk): Use ASM_OUTPUT_MI_THUNK if it's defined.
6602
6603         * decl2.c (mark_vtable_entries): Emit thunks as needed.
6604         (finish_file): Don't emit them here.
6605
6606 Sun Apr 14 11:34:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
6607
6608         * rtti.c (build_dynamic_cast): Handle null pointers.
6609         (ifnonnull): New function.
6610
6611 Fri Apr 12 09:08:27 1996  Bob Manson  <manson@charmed.cygnus.com>
6612
6613         * call.c (build_method_call): Remember the original basetype we
6614         were called with. Give an error message instead of trying
6615         (incorrectly) to call a non-static member function through a
6616         non-inherited class.
6617
6618         * search.c (expand_upcast_fixups): Mark the new fixup as
6619         DECL_ARTIFICIAL.
6620
6621 Thu Apr 11 03:57:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
6622
6623         * init.c (build_new): Use a TARGET_EXPR for alloc_expr.
6624
6625         * class.c (set_rtti_entry): Fix for thunks.
6626
6627         * decl2.c (import_export_decl): Still emit typeinfo fns for
6628         cv-variants of builtin types.
6629
6630         * rtti.c (expand_class_desc): Set up base_info_type_node here.
6631         (init_rtti_processing): Instead of here.
6632
6633 Wed Apr 10 14:17:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
6634
6635         * rtti.c (init_rtti_processing): Do init regardless of -frtti.
6636         (build_typeid): Only complain about taking dynamic typeid without
6637         -frtti.
6638
6639         * decl2.c: flag_rtti defaults to 1.
6640
6641         * rtti.c (get_tinfo_var): The general class case is now smaller.
6642         (init_rtti_processing): Pack the latter three fields of base_info
6643         into 32 bits.
6644
6645 Wed Apr 10 13:50:14 1996  Mike Stump  <mrs@cygnus.com>
6646
6647         * init.c (expand_member_init): Don't dump if name is NULL_TREE.
6648
6649 Wed Apr 10 12:56:02 1996  Mike Stump  <mrs@cygnus.com>
6650
6651         * search.c (make_memoized_table_entry): Undefer the pop, if necessary.
6652         (push_memoized_context): Split out code to undefer pop_type_level to
6653         (clear_memoized_cache): here.
6654         (pop_memoized_context): We can only handle one layer of deferral of
6655         pop_type_level so clear the cache, if there was a previous level.
6656
6657 Tue Apr  9 23:06:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
6658
6659         * rtti.c (init_rtti_processing): Build up base_info_type_node.
6660         (expand_class_desc): Use one pointer to an array of base_info
6661         structs, passed using a CONSTRUCTOR.
6662
6663 Tue Apr  9 14:20:57 1996  Mike Stump  <mrs@cygnus.com>
6664
6665         * class.c (build_vbase_path): Remove block extern for
6666         flag_assume_nonnull_objects here.
6667         (build_vfn_ref): Split out functionality into build_vtbl_ref.
6668         (build_vtbl_ref): New routine.
6669         (build_vtable): Set up rtti info here.
6670         (add_virtual_function): Note in CLASSTYPE_RTTI the best
6671         place where we can get the rtti pointers from to avoid having to
6672         search around for a place.
6673         (finish_base_struct): Likewise.
6674         (finish_struct_1): Likewise.  Never create totally new vtables
6675         with totally new vtable pointers for rtti.  Disable code to layout
6676         vtable pointers better until we want to break binary
6677         compatibility.
6678         * rtti.c (build_headof_sub): New routine to convert down to a
6679         sub-object that has an rtti pointer in the vtable.
6680         (build_headof): Use it.  Also, use build_vtbl_ref now to be more
6681         maintainable.
6682         (build_dynamic_cast): Make sure we have saved it, if we need to.
6683         * search.c (dfs_init_vbase_pointers): Disable code that deals with
6684         a more efficient vtable layout, enable later.
6685         * call.c (flag_assume_nonnull_objects): Moved declaration to
6686         * cp-tree.h: here.  Declare build_vtbl_ref.
6687         * pt.c (instantiate_class_template): Use NULL_TREE instead of 0 in
6688         function calls that want a tree.
6689
6690 Tue Apr  9 12:10:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
6691
6692         * rtti.c (build_dynamic_cast): Handle downcasting to X* given
6693         other X subobjects in the most derived type.  Ack.
6694
6695         * rtti.c (build_dynamic_cast): No need to strip cv-quals here,
6696         get_typeid will do it for us.
6697         (get_typeid_1): Break out call-building for expand_*_desc to use.
6698         (get_typeid): Call it.
6699         (expand_*_desc): Likewise.
6700         * decl.c (init_decl_processing): Don't set TYPE_BUILT_IN on char *
6701         and void *.
6702         (init_decl_processing): Lose builtin_type_tdescs lossage.
6703         * decl2.c (finish_vtable_vardecl): Remove obsolete code.
6704
6705 Mon Apr  8 17:23:23 1996  Bob Manson  <manson@charmed.cygnus.com>
6706
6707         * pt.c (tsubst): When calling set_nested_typename, use
6708         TYPE_NESTED_NAME (current_class_type) instead of
6709         current_class_name.
6710
6711         * decl.c (pushdecl): Likewise.
6712         (pushdecl_class_level): Likewise.
6713         (grokdeclarator): Use NULL_TREE instead of 0 in the call to
6714         set_nested_typename.
6715
6716 Sun Apr  7 10:44:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
6717
6718         * rtti.c (synthesize_tinfo_fn): Handle arrays.
6719
6720         * cp-tree.h (DECL_REALLY_EXTERN): New macro.
6721
6722 Sat Apr  6 13:56:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
6723
6724         * rtti.c (throw_bad_cast): Use entry point __throw_bad_cast.
6725         (init_rtti_processing): Lose bad_cast_type.
6726         (build_dynamic_cast): Use throw_bad_cast.
6727
6728         * rtti.c (synthesize_tinfo_fn): Handle enums and pmfs.
6729
6730         * decl2.c (finish_file): Don't synthesize artificial functions
6731         that are external and not inline.
6732
6733         * rtti.c (get_tinfo_fn): If at_eof, call import_export_decl.
6734
6735         * decl2.c (finish_file): Handle having new inlines added to
6736         saved_inlines by synthesis.
6737
6738         * rtti.c (get_bad_cast_node): Don't require <typeinfo>.
6739
6740 Fri Apr  5 17:02:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
6741
6742         RTTI rewrite to initialize nodes as needed, not require that
6743         users #include <typeinfo>, complete functionality and reduce wasted 
6744         space.
6745         * rtti.c (init_rtti_processing): New fn.
6746         (build_typeid): The vtable entry is now a function.
6747         (get_tinfo_var): New fn.
6748         (get_tinfo_fn): Likewise.
6749         (get_typeid): Use it.
6750         (build_dynamic_cast): Declare and use entry point __dynamic_cast.
6751         (build_*_desc): Rename to expand_*_desc and rewrite to use entry
6752         points __rtti_*.
6753         (add_uninstantiated_desc, get_def_to_follow, build_t_desc): Lose.
6754         (synthesize_tinfo_fn): New fn.
6755         * method.c (build_t_desc_overload): Lose.
6756         (build_overload_with_type): More generic.
6757         * decl.c (init_decl_processing): Call init_rtti_processing.
6758         * class.c (set_rtti_entry): Use get_tinfo_fn.
6759         * decl2.c (mark_vtable_entries): Mark the rtti function.
6760         (finish_prevtable_vardecl): Don't build_t_desc.
6761         (import_export_decl): Handle tinfo functions.
6762         (finish_file): Likewise.
6763         * typeck.c (inline_conversion): New fn.
6764         (build_function_call_real): Use it.
6765         * cp-tree.h: Add decls.
6766
6767         * method.c (hack_identifier): Also convert component_refs from
6768         references.
6769
6770         * lex.c (cons_up_default_function): Use the type, not the name, in
6771         declspecs.
6772
6773         * decl2.c (import_export_vtable): Fix weak vtables.
6774
6775 Fri Apr  5 13:30:17 1996  Bob Manson  <manson@charmed.cygnus.com>
6776
6777         * search.c (get_base_distance_recursive): Fix access checks for
6778         protected bases.
6779
6780 Fri Apr  5 11:02:06 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6781
6782         * call.c (unary_complex_lvalue): Delete unneeded decl, it's in
6783         cp-tree.h.
6784         (convert_harshness): Add prototypes wrapped by PROTO.
6785         * decl2.c (grok_function_init): Likewise.
6786         (do_toplevel_using_decl): Change to void return type.
6787         * class.c (build_vtable_entry): Remove decl of make_thunk.
6788         (merge_overrides): Fix order of arg definitions.
6789         (finish_vtbls): Likewise.
6790         (fixup_vtable_deltas): Likewise.
6791         (modify_all_direct_vtables): Likewise.
6792         (modify_all_indirect_vtables): Likewise.
6793         * search.c (get_base_distance_recursive): Likewise.
6794         (get_abstract_virtuals_1): Likewise.
6795         (fixup_virtual_upcast_offsets): Likewise.
6796         (lookup_fnfields_1): Add prototypes wrapped by PROTO.
6797         * init.c (perform_member_init): Fix order of arg definitions.
6798         (expand_aggr_init_1): Add prototypes wrapped by PROTO.
6799         * cp-tree.h (make_thunk): Add decl.
6800         (overload_template_name, push_template_decl): Add decls.
6801         (do_toplevel_using_decl): Change to void return type.
6802         (vec_binfo_member): Add decl.
6803
6804 Thu Apr  4 13:33:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6805
6806         * typeck.c (mark_addressable, convert_for_assignment,
6807         convert_for_initialization, pointer_int_sum, pointer_diff,
6808         unary_complex_lvalue): Add prototypes wrapped by PROTO.
6809         (convert_sequence): #if 0 fn decl, since definition also is.
6810
6811 Thu Apr  4 11:00:53 1996  Mike Stump  <mrs@cygnus.com>
6812
6813         * rtti.c (build_dynamic_cast): Make sure we strip qualifiers on
6814         cast to pointer types for type searching.
6815
6816 Wed Apr  3 17:10:57 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6817
6818         * typeck.c (get_delta_difference): Use cp_error, not error, in the
6819         case where BINFO == 0.
6820
6821 Wed Apr  3 12:01:02 1996  Mike Stump  <mrs@cygnus.com>
6822
6823         * call.c (build_method_call): Fix wording of error messages so
6824         constructors come out right.
6825
6826 Tue Apr  2 16:06:59 1996  Bob Manson  <manson@charmed.cygnus.com>
6827
6828         * decl.c (push_overloaded_decl): Don't warn about hidden
6829         constructors when both the type and the function are declared
6830         in a system header file.
6831
6832 Mon Apr  1 09:03:13 1996  Bob Manson  <manson@charmed.cygnus.com>
6833
6834         * class.c (finish_struct_1): Propagate the TYPE_PACKED
6835         flag for the type to the type's fields.
6836
6837 Sat Mar 30 12:14:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6838
6839         * parse.y (complex_parmlist, ELLIPSES): Take out ARM-based warning.
6840
6841 Fri Mar 29 15:51:36 1996  Bob Manson  <manson@charmed.cygnus.com>
6842
6843         * class.c (base_info, finish_base_struct): Replace 
6844         needs_virtual_dtor with base_has_virtual.
6845
6846         (finish_struct_1): Remove the old code that tried to make default
6847         destructors virtual. Use base_has_virtual when checking if we need
6848         to add a vtable entry for the rtti code.
6849
6850 Fri Mar 29 14:02:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
6851
6852         * pt.c (push_template_decl): Complain about template decl with
6853         inappropriate declaration.
6854
6855 Fri Mar 29 12:15:35 1996  Bob Manson  <manson@charmed.cygnus.com>
6856
6857         * typeck.c (build_x_unary_op): Remove bogus check for taking
6858         the address of a member function.
6859
6860 Fri Mar 29 11:56:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
6861
6862         * parse.y (constructor_declarator): Only push the class if
6863         we are not already in the class.
6864
6865 Fri Mar 29 09:41:02 1996  Jeffrey A. Law  <law@cygnus.com>
6866
6867         * method.c (emit_thunk): Remove current_call_is_indirect nonsense.
6868         Add additional argument to INIT_CUMULATIVE_ARGS.
6869
6870 Thu Mar 28 16:41:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
6871
6872         * decl.c (shadow_tag): Fix error about anon union with methods.
6873
6874         * parse.y (self_reference): Only generate a self-reference if this
6875         is a non-template class.
6876         (opt.component_decl_list): Only use it if it was generated.
6877
6878         * parse.y (component_decl_1): Use constructor_declarator.
6879         (fn.def2): Likewise.
6880         (notype_component_declarator0): Likewise.
6881
6882 Thu Mar 28 15:11:35 1996  Bob Manson  <manson@charmed.cygnus.com>
6883
6884         * typeck.c (build_x_unary_op): Add checks for taking the address
6885         of a TARGET_EXPR or of a member function, and give appropriate
6886         warnings.
6887
6888 Thu Mar 28 14:49:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
6889
6890         * pt.c (process_template_parm): Allow template type parms to be
6891         used as types for template const parms.
6892
6893 Wed Mar 27 15:51:19 1996  Mike Stump  <mrs@cygnus.com>
6894
6895         * init.c (expand_vec_init): Ensure the eh cleanups are on the
6896         function_obstack.
6897
6898 Wed Mar 27 10:14:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
6899
6900         * decl.c (lookup_name_real): Be even more picky about the
6901         ambiguous lookup warning.
6902         (grokdeclarator): Tweak SCOPE_REF constructor declarators here.
6903         * parse.y (constructor_declarator): Rather than here.
6904
6905         * parse.y (constructor_declarator): New nonterminal.
6906         (fn.def1): Use it.
6907         (explicit_instantiation): Likewise.
6908
6909 Tue Mar 26 13:41:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
6910
6911         Add implicit declaration of class name at class scope.
6912         * decl.c (lookup_name_real): Restrict pedwarn about ambiguous lookup.
6913         * parse.y (self_reference): New nonterminal.
6914         (opt.component_decl_list): Use it.
6915         (fn.def1): Add nested_name_specifier type_name cases.
6916         * class.c (build_self_reference): New function.
6917         (finish_struct): Handle access_default later, move self-reference
6918         decl to the end.
6919         * pt.c (lookup_template_class): Handle getting a TYPE_DECL.
6920         * cp-tree.h: Adjust.
6921
6922         * pt.c (do_function_instantiation): Separate handling of member
6923         functions and non-member functions properly.
6924
6925 Mon Mar 25 14:23:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
6926
6927         * pt.c (process_template_parm): Improve error for 'volatile class K'.
6928
6929         * class.c (finish_struct_1): Check the right slot for destructors.
6930
6931         * decl.c (start_enum): Complain about enum templates.
6932
6933 Mon Mar 25 13:25:31 1996  Mike Stump  <mrs@cygnus.com>
6934
6935         * init.c (resolve_offset_ref): Offset pointers to member data by one.
6936         * typeck.c (unary_complex_lvalue): Likewise.
6937
6938 Mon Mar 25 13:30:42 1996  Bob Manson  <manson@charmed.cygnus.com>
6939
6940         * typeck.c (c_expand_return): Check for a returned local
6941         array name, similar to the check for an ADDR_EXPR.
6942
6943 Mon Mar 25 13:07:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
6944
6945         * decl.c (cp_finish_decl): Don't build cleanups for static
6946         variables here.
6947
6948 Fri Mar 22 17:57:55 1996  Mike Stump  <mrs@cygnus.com>
6949
6950         * typeck.c (build_modify_expr): Fix error messages to be more
6951         accurate.
6952         * cp-tree.h (assop_as_string): Parallel to op_as_string, but for
6953         assignment operators.
6954         * error.c (assop_as_string): Likewise.  Add support for `%Q' for
6955         assignment operators.
6956
6957 Fri Mar 22 13:48:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
6958
6959         * decl.c (grokdeclarator): Call bad_specifiers for typedefs.  Also
6960         give an error if initialized.  Pedwarn about nested type with the
6961         same name as its enclosing class.
6962
6963         * pt.c (tsubst, case TYPE_DECL): Set DECL_CONTEXT.
6964
6965         * typeck.c (require_complete_type): Be sure to instantiate the
6966         MAIN_VARIANT of the type.
6967
6968         * decl2.c (finish_file): Instantiate pending templates before
6969         processing static constructors and destructors.
6970
6971         * pt.c (instantiate_decl): Don't instantiate functions at toplevel
6972         unless at_eof.
6973
6974 Fri Mar 22 09:30:17 1996  Bob Manson  <manson@beauty.cygnus.com>
6975
6976         * decl2.c (delete_sanity): If error_mark_node is passed
6977         in as an expression, quit while we're ahead.
6978
6979         * decl.c (grokdeclarator): Give an error message if `friend'
6980         is combined with any storage class specifiers.
6981
6982 Wed Mar 20 14:51:55 1996  Jason Merrill  <jason@yorick.cygnus.com>
6983
6984         * parse.y (named_complex_class_head_sans_basetype): Don't crash on
6985         definition of nonexistent nested type.
6986
6987         * error.c (dump_decl, case TYPE_DECL): Fix decision for whether or
6988         not to say 'typedef'.
6989
6990 Wed Mar 20 00:11:47 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
6991
6992         * cp-tree.h (struct lang_type): Make search_slot a tree, not a char*.
6993         * search.c (dfs_walk, dfs_init_vbase_pointers,
6994         expand_upcast_fixups): Remove cast of CLASSTYPE_SEARCH_SLOT.
6995         (dfs_find_vbases): Remove cast for CLASSTYPE_SEARCH_SLOT init.
6996
6997 Tue Mar 19 17:56:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
6998
6999         * except.c (build_throw): Support minimal parse.
7000         * pt.c (tsubst_copy): Support THROW_EXPR.
7001         * decl2.c (build_expr_from_tree): Likewise.
7002
7003         * pt.c (mangle_class_name_for_template): Always allocate
7004         scratch_firstobj.
7005
7006 Tue Mar 19 16:34:31 1996  Bob Manson  <manson@beauty.cygnus.com>
7007
7008         * cvt.c (cp_convert_to_pointer): Give an appropriate error
7009         when trying to cast from an incomplete type.
7010
7011 Tue Mar 19 16:00:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
7012
7013         * pt.c (instantiate_class_template): Don't bother setting up
7014         CLASSTYPE_TAGS explicitly, as the nested types will add
7015         themselves.
7016
7017 Tue Mar 19 15:48:43 1996  Bob Manson  <manson@beauty.cygnus.com>
7018
7019         * decl.c (shadow_tag): Remove old error check for usage of
7020         an enum without a previous declaration.
7021         (xref_tag): Add error message about usage of enums without a
7022         previous declaration.
7023
7024 Tue Mar 19 09:21:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
7025
7026         * lex.c (do_identifier): Only do name consistency check if we're
7027         parsing.
7028
7029         * pt.c (push_template_decl): Don't crash if we get a member defn
7030         that doesn't match.
7031
7032         * decl.c (xref_tag_from_type): New function to do an xref without
7033         always having to figure out code_type_node.
7034         * cp-tree.h: Declare it.
7035         * pt.c (instantiate_class_template): Use it for friend classes.
7036         (lookup_template_class): Use it.
7037
7038         * typeck2.c (build_functional_cast): Pull out a single parm before
7039         passing it to build_c_cast.
7040
7041 Tue Mar 19 09:07:15 1996  Bob Manson  <manson@beauty.cygnus.com>
7042
7043         * expr.c (do_case): Give an error message if a pointer is
7044         given as a case value.
7045
7046 Mon Mar 18 21:57:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
7047
7048         * typeck.c (build_c_cast): Don't pull single TEMPLATE_DECL out of
7049         an overload list.
7050
7051         * lex.c (cons_up_default_function): Really, now, interface hackery
7052         does not apply to synthesized methods.
7053
7054 Mon Mar 18 18:20:57 1996  Mike Stump  <mrs@cygnus.com>
7055
7056         * call.c (build_method_call): Ctors and dtors now have special names
7057         with respect to lookups.
7058         * class.c (add_method): Likewise.
7059         (grow_method): Likewise.
7060         (finish_struct_methods): Likewise.
7061         (warn_hidden): Likewise.
7062         (finish_struct_1): Likewise.
7063         * cvt.c (convert_to_reference): Likewise.
7064         (convert_to_aggr): Likewise.
7065         (cp_convert): Likewise.
7066         * decl2.c (check_classfn): Likewise.
7067         * init.c (expand_member_init): Likewise.
7068         (expand_default_init): Likewise.
7069         (expand_aggr_init_1): Likewise.
7070         (build_offset_ref): Likewise.
7071         (build_new): Likewise.
7072         (build_delete): Likewise.
7073         * lex.c (do_inline_function_hair): Likewise.
7074         * search.c (lookup_field_1): Likewise.
7075         (lookup_fnfields_here): Likewise.
7076         (lookup_field): Likewise.
7077         (lookup_fnfields): Likewise.
7078         (get_virtual_destructor): Likewise.
7079         (dfs_debug_mark): Likewise.
7080         (dfs_pushdecls): Likewise.
7081         (dfs_compress_decls): Likewise.
7082         * tree.c (layout_basetypes): Likewise.
7083         * typeck.c (build_component_ref): Likewise.
7084         (build_x_function_call): Likewise.
7085         (build_modify_expr): Likewise.
7086         (convert_for_initialization): Likewise.
7087         (build_functional_cast): Likewise.
7088         * cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Likewise.
7089         (CTOR_NAME): New.
7090         (DTOR_NAME): New.
7091         * decl.c (ctor_identifier): New.
7092         (dtor_identifier): New.
7093         (init_decl_processing): Set them.
7094
7095 Mon Mar 18 18:00:51 1996  Mike Stump  <mrs@cygnus.com>
7096
7097         * typeck.c (build_component_ref): Don't get confused by fields whose
7098         context has no type name, like pointer to member functions.
7099
7100 Mon Mar 18 13:19:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
7101
7102         * decl.c (grokdeclarator): Handle typedef without declarator.
7103
7104         * pt.c (tsubst): Handle SCOPE_REF in declarator.
7105
7106         * parse.y (bad_parm): Catch another case of missing `typename'.
7107
7108         * lex.c (yyprint): Handle TYPE_DECLs.
7109
7110         * decl.c (start_function): Don't try to be clever.
7111
7112         * lex.c: Lose compiler_error_with_decl.
7113         * typeck2.c: Lose error_with_aggr_type.
7114         (incomplete_type_error): Use cp_* instead of old functions.
7115         (readonly_error): Likewise.
7116         * typeck.c (convert_arguments): Likewise.
7117         * search.c (lookup_nested_field): Likewise.
7118         * method.c (make_thunk): Likewise.
7119         * decl.c (grokparms): Likewise.
7120         * cp-tree.h: Update.
7121
7122         * tree.c (min_tree_cons): Call copy_to_permanent for the purpose
7123         and value.
7124
7125 Mon Mar 18 11:25:52 1996  Bob Manson  <manson@beauty.cygnus.com>
7126
7127         * method.c (build_opfncall): When deleting a pointer to an
7128         array, build a new pointer to the tree past any ARRAY_TYPE
7129         nodes.
7130
7131 Mon Mar 18 10:11:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7132
7133         * decl.c (lookup_name_real): Initialize local var TYPE to NULL_TREE.
7134
7135 Fri Mar 15 11:03:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
7136
7137         * pt.c (instantiate_decl): Only call import_export_decl if at_eof
7138         and ! DECL_INLINE.
7139
7140         * decl.c (finish_function): Don't set nested based on
7141         hack_decl_function_context.
7142         * parse.y (function_try_block): Check for nested function.
7143         (pending_inlines): Likewise.
7144
7145         * decl2.c (build_expr_from_tree): If a unary op already has a
7146         type, just return it.
7147
7148         * decl2.c (finish_prevtable_vardecl): Use ADJUST_VTABLE_LINKAGE.
7149
7150         * decl2.c (walk_vtables): vardecl_fn returns int; return 1 if it does.
7151         (finish_file): Check the return value of walk_vtables.
7152         (finish_prevtable_vardecl): Return int.
7153         (finish_vtable_vardecl): Likewise.
7154         (prune_vtable_vardecl): Likewise.
7155         * lex.c (set_vardecl_interface_info): Likewise.
7156         * cp-tree.h: Adjust return types.
7157
7158         * class.c (delete_duplicate_fields_1): Don't complain about
7159         duplicate nested types if they're the same type.
7160         (finish_struct): Remove check for duplicate.
7161         * decl2.c (grokfield): Don't check for typedef of anonymous type.
7162
7163 Thu Mar 14 10:00:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
7164
7165         * cp-tree.h: Lose SIGNATURE_GROKKING_TYPEDEF.
7166
7167         * decl.c (grokdeclarator): Lose special handling of class-level
7168         typedef.  Lose SIGNATURE_GROKKING_TYPEDEF.  Set
7169         SIGNATURE_HAS_OPAQUE_TYPEDECLS later.
7170
7171         * cvt.c (convert_pointer_to_real): Retain cv-quals in conversion.
7172
7173         * pt.c (tsubst_copy): Strip cv-quals from destructor name types.
7174
7175         * search.c (compute_access): Fix handling of anonymous union
7176         members.
7177         * class.c (finish_struct_anon): Propagate TREE_{PRIVATE,PROTECTED}
7178         from anonymous unions to their members.
7179
7180         * typeck.c (build_x_function_call): For static member functions,
7181         hand off to build_member_call.
7182
7183 Wed Mar 13 14:03:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
7184
7185         * typeck.c (build_component_ref): Handle OFFSET_REFs.
7186
7187         * init.c (expand_vec_init): Fix init == 0 case.
7188
7189 Tue Mar 12 14:36:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
7190
7191         * init.c (build_new): Pedwarn about init and array new.
7192         (expand_vec_init): Handle lists, use convert_for_initialization.
7193
7194         * typeck.c (convert_for_initialization): Pass LOOKUP_NO_CONVERSION
7195         when converting to an aggregate type.
7196         * cvt.c (cp_convert): Pass it through.
7197
7198         * typeck.c (build_conditional_expr): Handle user-defined
7199         conversions to slightly different types.
7200
7201         * decl.c (grokdeclarator): Force an array type in a parm to be
7202         permanent.
7203
7204         * decl2.c (do_using_directive): Sorry.
7205         (do_namespace_alias): Likewise.
7206         * lex.c (real_yylex): Warn about using the `namespace' keyword.
7207
7208 Sun Mar 10 22:26:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
7209
7210         * parse.y (datadef): Move call to note_list_got_semicolon up.
7211
7212 Fri Mar  8 11:47:26 1996  Mike Stump  <mrs@cygnus.com>
7213
7214         * tree.c (unsave_expr): Don't unsave, UNSAVE_EXPRs.
7215
7216 Fri Mar  8 11:29:06 1996  Mike Stump  <mrs@cygnus.com>
7217
7218         * decl.c (cp_finish_decl): The exception regions have to be
7219         nested, not overlapping.  We start the exception region for a
7220         decl, after it has been fully built, and all temporaries for it
7221         have been cleaned up.
7222
7223 Thu Mar  7 17:46:06 1996  Mike Stump  <mrs@cygnus.com>
7224
7225         * tree.c (vec_binfo_member): Don't core dump if we have no bases.
7226
7227 Thu Mar  7 14:11:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
7228
7229         * tree.def: Add RETURN_INIT.
7230         * pt.c (instantiate_decl): Handle RETURN_INIT.
7231         * decl.c (store_return_init): Handle minimal_parse_mode.
7232
7233         * tree.c (cp_build_type_variant): Just return an error_mark_node.
7234         * decl.c (make_typename_type): Don't try to get the file and line
7235         of an identifier.
7236         * typeck.c (comptypes): Handle TYPENAME_TYPE.
7237
7238 Wed Mar  6 18:47:50 1996  Per Bothner  <bothner@kalessin.cygnus.com>
7239
7240         * decl.c (poplevel): Make sure we clear out and restore old local
7241         non-VAR_DECL values by default when they go out of scope.
7242
7243 Wed Mar  6 09:57:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
7244
7245         * method.c (build_overload_value): Use DECL_ASSEMBLER_NAME in
7246         referring to addresses of variables and functions.
7247
7248         * error.c (dump_expr): Support SIZEOF_EXPR.
7249
7250         * init.c (do_friend): Use the return value of check_classfn.
7251
7252         * typeck.c (convert_arguments): Call complete_type.
7253
7254         * method.c (hack_identifier): After giving an error, set value to
7255         error_mark_node.
7256
7257 Tue Mar  5 16:00:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
7258
7259         * tree.c (hack_decl_function_context): Kludge around DECL_CONTEXT
7260         lossage for local classes.
7261         * cp-tree.h: Declare it.
7262         * decl.c (lookup_name_real): Evil, painful hack for local classes.
7263         (grokfndecl): Set DECL_CLASS_CONTEXT and DECL_NO_STATIC_CHAIN here.
7264         Use hack_decl_function_context.
7265         (grokdeclarator): Don't set DECL_NO_STATIC_CHAIN here.
7266         (start_function): Use hack_decl_function_context.
7267         (finish_function): Likewise.
7268         * method.c (synthesize_method): Likewise.
7269         * lex.c (process_next_inline): Likewise.
7270         (do_pending_inlines): Likewise.
7271         * decl2.c (finish_file): Unset DECL_STATIC_FUNCTION_P when we're
7272         done with it.
7273
7274 Mon Mar  4 22:38:39 1996  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
7275
7276         * sig.c (build_signature_pointer_or_reference_type): Align
7277         signature pointers/references on 8-byte boundaries so they can be
7278         grabbed 2 words at a time on a Sparc.
7279
7280 Tue Mar  5 10:21:01 1996  Jason Merrill  <jason@yorick.cygnus.com>
7281
7282         * method.c (hack_identifier): Requiring a static chain is now a
7283         hard error.
7284         * decl.c (grokdeclarator): Set DECL_NO_STATIC_CHAIN on nested
7285         functions.
7286
7287 Mon Mar  4 20:03:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
7288
7289         * init.c (build_offset_ref): Call complete_type.
7290
7291         * decl.c (pop_from_top_level): Always pop previous_class_type.
7292
7293         * parse.y: Handle multiple decls in a for-init-statement.
7294         * pt.c (tsubst_expr): Likewise.
7295
7296         * pt.c (tsubst): Use tsubst_expr for the second operand of an
7297         ARRAY_REF.
7298
7299         * decl.c (maybe_push_to_top_level): Don't save previous_class_type.
7300         (poplevel_class): Set it here.
7301         (pop_from_top_level): Pop it here if we're returning to class scope.
7302         * class.c (pushclass): Don't set it here.
7303
7304         * decl.c (maybe_push_to_top_level): Save current_template_parms,
7305         and clear it if !pseudo.
7306         (pop_from_top_level): Restore it.
7307
7308         * decl2.c (finish_file): Push the dummy each time we walk the list
7309         of vtables.
7310
7311         * error.c (dump_expr): Support LOOKUP_EXPR and actually do
7312         something for CAST_EXPR.
7313         
7314 Mon Feb 19 14:49:18 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
7315
7316         * cvt.c (cp_convert): Warn about implicit conversion of the
7317         address of a function to bool, as it is always true.
7318
7319 Fri Feb 23 23:06:01 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
7320
7321         * typeck.c (c_expand_return): Fix warning for local externs returned.
7322
7323 Mon Mar  4 15:03:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
7324
7325         * tree.c (mapcar): Propagate const and volatile properly.
7326
7327         * typeck.c (complete_type): Be sure to instantiate the
7328         MAIN_VARIANT of the type.
7329
7330         * method.c (synthesize_method): Class interface hackery does not
7331         apply to synthesized methods.
7332
7333 Mon Mar  4 14:05:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
7334
7335         * pt.c (comp_template_args): Use comptypes rather than just
7336         checking for TEMPLATE_TYPE_PARM equivalence.
7337
7338         * typeck.c (build_x_function_call): Call complete_type before
7339         checking TYPE_OVERLOADS_CALL_EXPR.
7340
7341 Mon Mar  4 18:48:30 1996  Manfred Hollstein   <manfred@lts.sel.alcatel.de>
7342
7343         * g++.c (main): Check also for new define ALT_LIBM.
7344
7345 Fri Mar  1 13:09:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
7346
7347         * pt.c (instantiate_class_template): If we don't have a pattern
7348         yet, that's OK.
7349         (coerce_template_parms): If we see a local class, bail.
7350
7351         * decl.c (grok_reference_init): Make sure there's a type before
7352         checking its code.
7353
7354         * pt.c (do_function_instantiation): Avoid crashing on invalid decls.
7355         (push_template_decl): Likewise.
7356
7357         * parse.y (named_class_head): Set
7358         CLASSTYPE_TEMPLATE_SPECIALIZATION here if we have basetypes.
7359
7360         * decl.c (xref_tag): Diagnose redeclaration of template
7361         type-parameter name.
7362
7363         * error.c (dump_type): Handle anonymous template type parms.
7364
7365         * pt.c (instantiate_template): Use TYPE_MAIN_DECL instead of
7366         TYPE_STUB_DECL.
7367         (coerce_template_parms): Likewise.
7368
7369 Thu Feb 29 16:26:01 1996  Mike Stump  <mrs@cygnus.com>
7370
7371         * class.c (instantiate_type, case {ARRAY,INDIRECT}_REF,
7372         case ADDR_EXPR): Don't modify rhs if a subinstantiation fails.
7373
7374 Thu Feb 29 08:20:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
7375
7376         * pt.c (instantiate_template): Take the MAIN_VARIANT of the type
7377         before trying to get its STUB_DECL.
7378         (coerce_template_parms): Likewise.
7379
7380         * parse.y (template_type_parm): If they didn't use 'class',
7381         pretend they did after giving an error.
7382
7383         * pt.c (coerce_template_parms): Diagnose use of local class.
7384
7385         * decl.c (grok_reference_init): Use instantiate_type.
7386
7387         * error.c (dump_expr): Handle TEMPLATE_DECLs.
7388
7389         * parse.y (named_class_head): Diagnose mismatching types and tags.
7390
7391         * decl.c (pushdecl): Type decls and class templates clash with
7392         artificial type decls, not hide them.
7393
7394         * decl.c (redeclaration_error_message): Diagnose redefinition of
7395         templates properly.
7396         (duplicate_decls): Diagnose disallowed overloads for template
7397         functions, too.
7398
7399         * decl.c (start_decl): Call complete_type before checking for a
7400         destructor.
7401
7402         * pt.c (tsubst): Use tsubst_expr on the elts of a VEC.
7403
7404         * decl.c (xref_tag): A TEMPLATE_TYPE_PARM is a match.
7405
7406 Wed Feb 28 09:28:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
7407
7408         * decl.c (grok_op_properties): Don't check for operator++(int) in
7409         a template.
7410
7411         * tree.c (perm_manip): Return a copy of variable and function
7412         decls with external linkage.
7413
7414         * tree.def: Change some of the min tree codes to type "1".
7415         * pt.c (uses_template_parms): Handle 'e's, return 1 for LOOKUP_EXPRs.
7416         * method.c (build_overload_int): Emit something arbitrary for
7417         anything but an INTEGER_CST if we're in a template.
7418
7419         * decl.c (cp_finish_decl): Call complete_type before deciding
7420         whether or not to lay out the decl.
7421
7422         * lex.c (do_identifier): Check for DECL_INITIAL before using it.
7423
7424 Tue Feb 27 16:35:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
7425
7426         * typeck2.c (build_x_arrow): Call complete_type.
7427
7428         * pt.c (add_pending_template): Broken out.
7429         (lookup_template_class): If -fexternal-templates, call it for all
7430         the methods of implemented types.
7431         (instantiate_class_template): Instead of instantiating them here.
7432         (instantiate_decl): Handle -fexternal-templates earlier.
7433
7434 Tue Feb 27 15:51:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7435
7436         * search.c, lex.c, decl.c, class.c, cp-tree.h: Don't wrap the
7437         memoized lookup stuff inside GATHER_STATISTICS.
7438
7439 Tue Feb 27 10:38:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
7440
7441         * decl.c (start_decl): Complain about array of incomplete type
7442         here.
7443         (grokdeclarator): Not here.
7444
7445         * parse.y (template_parm): Expand full_parm inline so we can set
7446         the rule's precedence.
7447
7448         * pt.c (tsubst_expr): If we're in a template, just do tsubst_copy.
7449         (tsubst): tsubst_expr the DECL_INITIAL of FIELD_DECLs.
7450         * decl2.c (grokbitfield): Don't check for integer constant here.
7451         * class.c (finish_struct_1): Check here.
7452
7453         * decl.c (define_label): Make the min decl go on permanent_obstack.
7454
7455         * pt.c (unify): Don't handle CONST_DECLs.
7456         (uses_template_parms): Don't check DECL_INITIAL on a CONST_DECL.
7457         (tsubst_copy): Likewise.
7458
7459         * lex.c (do_identifier): Do pull the DECL_INITIAL out of a
7460         CONST_DECL for a template parm.
7461
7462 Mon Feb 26 12:48:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
7463
7464         * decl.c (grokdeclarator): Complain about array of incomplete type
7465         here.
7466         (start_decl_1): Not here.
7467
7468         * pt.c (tsubst): Handle pointer-to-function declarators.
7469
7470         * method.c (hack_identifier): If pedantic, diagnose local class
7471         methods that require a static chain.
7472
7473         * decl.c (grok_op_properties): No longer static.
7474         * cp-tree.h: Declare it.
7475         * pt.c (tsubst): Call it for operators.
7476         Use tsubst_copy for TREE_VECs.
7477
7478         * parse.y (template_arg): The expr has precedence like '>'.
7479
7480 Fri Feb 23 14:51:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
7481
7482         * pt.c (coerce_template_parms): Don't coerce an expression using
7483         template parms.
7484         (uses_template_parms): Also check DECL_INITIAL in CONST_DECLs.
7485         (tsubst): Don't use build_index_2_type if the max_value uses template
7486         parms.
7487         * method.c (build_overload_int): Emit something arbitrary for an
7488         expression using template parms.
7489
7490         * parse.y (template_close_bracket): New non-terminal to catch use
7491         of '>>' instead of '> >' in template class names.
7492         (template_type): Use it.
7493         * Makefile.in (CONFLICTS): Causes one more r/r conflict.
7494
7495         * tree.def: Add CAST_EXPR.
7496         * typeck2.c (build_functional_cast): Use CAST_EXPR instead of
7497         CONVERT_EXPR for minimal_parse_mode.
7498         * typeck.c (build_c_cast): Likewise.
7499         * pt.c (tsubst_copy): Likewise.
7500         * decl2.c (build_expr_from_tree): Likewise.
7501         * error.c (dump_expr): Likewise.
7502
7503 Fri Feb 23 10:36:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7504
7505         * except.c (SetTerminate, SetUnexpected): Put back global vars.
7506         (init_exception_processing): Put back decl/init of
7507         set_unexpected_fndecl and set_terminate_fndecl, needed to get the
7508         fns from libstdc++.
7509
7510         * decl.c (struct binding_level): Delete ACCEPT_ANY bitfield.
7511         (declare_uninstantiated_type_level, uninstantiated_type_level_p):
7512         Delete unused fns.
7513         * cp-tree.h (declare_uninstantiated_type_level,
7514         uninstantiated_type_level_p): Delete prototypes.
7515
7516 Thu Feb 22 19:36:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
7517
7518         * pt.c (tsubst_expr): Add default return.
7519
7520 Thu Feb 22 16:47:24 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7521
7522         * error.c (fndecl_as_string): Delete unused arg CNAME.
7523         * sig.c (build_signature_table_constructor,
7524         build_signature_method_call): Fix calls.
7525
7526         * class.c (the_null_vtable_entry): Delete var definition.
7527         (init_class_processing): Delete tree the_null_vtable_entry init.
7528         * decl.c (no_print_{functions, builtins}): Declare as static.
7529         (__tp_desc_type_node): #if 0 var definition.
7530         (init_type_desc): #if 0 init of __tp_desc_type_node.
7531         (vb_off_identifier): Move var decl into init_decl_processing.
7532         (current_function_assigns_this): Declare as static.
7533         (int_ftype_ptr_ptr_int, void_ftype_ptr_int_int): Delete var decls.
7534         (init_decl_processing): Delete init of void_ftype_ptr_ptr_int.
7535         Move decls of string_ftype_ptr_ptr and int_ftype_string_string here.
7536         * decl2.c (delete_sanity): Delete definition/mod of local var ELT_SIZE.
7537         * init.c (BI_header_type, BI_header_size): Declare as static.
7538         * pt.c (template_classes): Delete unused var.
7539         (add_pending_template): Delete decl for non-existent fn.
7540         (lookup_template_class): Delete vars CODE and TAG_CODE.
7541         (instantiate_template): Delete unused var TARGS.
7542         * cp-tree.h (vb_off_identifier, current_function_assigns_this):
7543         Delete decls.
7544         (__tp_desc_type_node): #if 0 var decl.
7545         (fndecl_as_string): Fix prototype.
7546
7547 Thu Feb 22 15:56:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
7548
7549         * tree.def: Add GOTO_STMT.
7550         * pt.c (tsubst_expr): Support goto and labels.
7551         * decl.c (define_label): Support minimal parsing.
7552         * parse.y (simple_stmt): Likewise.
7553
7554 Thu Feb 22 15:30:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7555
7556         * xref.c (GNU_xref_member): Only define/set var I if
7557         XREF_SHORT_MEMBER_NAMES is defined, to match when it's actually
7558         used.
7559         (GNU_xref_end_scope): Delete unused fifth arg TRNS.
7560         (GNU_xref_end): Fix call.
7561         * decl.c (poplevel, poplevel_class, finish_method): Fix calls.
7562         * cp-tree.h (GNU_xref_end_scope): Fix prototype.
7563
7564         * tree.c (build_exception_variant): Delete unused vars I, A, T,
7565         T2, and CNAME.
7566         (layout_vbasetypes): Delete unused var NONVIRTUAL_VAR_SIZE.
7567         (mapcar): Delete unused var CODE.
7568         (build_cplus_new): Delete unused arg WITH_CLEANUP_P.
7569         (break_out_cleanups): Fix call.
7570         (bot_manip): Likewise.
7571         * call.c (build_method_call): Likewise.
7572         * cvt.c (build_up_reference, convert_to_reference, cp_convert):
7573         Likewise.
7574         * typeck.c (unary_complex_lvalue, build_modify_expr,
7575         convert_for_initialization): Likewise.
7576         * typeck2.c (build_functional_cast): Likewise.
7577         * cp-tree.h (build_cplus_new): Fix prototype.
7578
7579         * repo.c (open_repo_file): Delete unused var Q.
7580         (repo_compile_flags, repo_template_declared,
7581         repo_template_defined, repo_class_defined, repo_inline_used,
7582         repo_vtable_used, repo_tinfo_used): #if 0 unused fns.
7583         (repo_get_id, repo_vtable_used): Declare as static. 
7584         * cp-tree.h (mark_{decl,class}_instantiated, finish_repo): Add
7585         prototypes.
7586
7587 Thu Feb 22 14:53:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
7588
7589         * parse.y (pending_inlines): Add function_try_block case.
7590
7591         * pt.c (unify): Fix for template const parms.
7592
7593 Thu Feb 22 13:24:15 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7594
7595         * lex.c (extract_interface_info): Delete forward decl.
7596         (default_copy_constructor_body, default_assign_ref_body): Delete
7597         decls for non-existent functions.
7598         (synth_firstobj, inline_text_firstobjs): Delete unused vars.
7599         (init_lex): Delete setting them.
7600         (cons_up_default_function): Delete unused vars FUNC_BUF,
7601         FUNC_LEN, and COMPLEX.  Delete code setting COMPLEX.  Delete old
7602         #if 0'd synth code.
7603         (toplevel, expression_obstack): Delete unused extern decls.
7604         (tree_node_kind): Delete unused enum.
7605         (tree_node_counts, tree_node_sizes): Wrap with #ifdef
7606         GATHER_STATISTICS.
7607         (tree_node_kind_names): Delete unused extern decl.
7608         (synth_obstack): Delete unused var.
7609         (init_lex): Don't set it.
7610         (init_parse): Add decl before use.
7611         (reduce_count): Only define #ifdef GATHER_STATISTICS && REDUCE_LENGTH.
7612         (current_unit_{name, language}): Delete unused vars. 
7613         (check_newline): Don't bother setting them, just accept the #pragma.
7614         * cp-tree.h (init_repo, peek_yylex): Add prototypes.
7615         (current_unit_{name, language}): Delete decls.
7616
7617         * search.c: Wrap all of the memoized functions, macros, and
7618         variables inside #ifdef GATHER_STATISTICS.
7619         (lookup_field, lookup_fnfields): Likewise.
7620         (init_search_processing): Likewise.
7621         (reinit_search_statistics): Wrap whole function.
7622         * lex.c (reinit_lang_specific): Wrap call to reinit_search_statistics.
7623
7624         * decl.c (finish_function): Only call pop_memoized_context if
7625         GATHER_STATISTICS is defined.
7626         (start_function): Likewise for push_memoized_context.
7627         * class.c (pushclass, popclass): Likewise.
7628
7629         * cp-tree.h (CLASSTYPE_MTABLE_ENTRY): Move definition from here...
7630         * search.c (CLASSTYPE_MTABLE_ENTRY): ... to here.
7631
7632         * cvt.c (cp_convert): Delete unused local var FORM.
7633         * cp-tree.h (can_convert, can_convert_arg, real_lvalue_p): Add
7634         prototypes.
7635
7636 Thu Feb 22 13:19:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
7637
7638         * pt.c (do_poplevel): Oops; really return what we get from
7639         poplevel this time.
7640
7641 Thu Feb 22 11:41:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7642
7643         * cp-tree.h (is_aggr_type): Add prototype.
7644
7645         * cp-tree.h ({push,pop}_cp_function_context): Add decls.
7646         * method.c ({push,pop}_cp_function_context): Delete decls.
7647         * except.c (start_eh_unwinder, end_eh_unwinder): Declare as void.
7648         (SetUnexpected, SetTerminate): Delete unused vars.
7649         (init_exception_processing): Don't set SetUnexpected or
7650         SetTerminate.  Don't set SET_UNEXPECTED_FNDECL or SET_TERMINATE_FNDECL.
7651         (output_exception_table_entry): Delete unused array LABEL.
7652         (expand_internal_throw): Delete unused var PARAMS.
7653         (expand_start_catch_block): Delete unused var CLEANUP.
7654         (emit_exception_table): Delete unused var EH_NODE_DECL.
7655         (expand_builtin_throw): Delete unused vars UNWIND_AND_THROW and
7656         GOTO_UNWIND_AND_THROW.  Don't set them.
7657         (end_eh_unwinder): Add top decl.
7658         (pop_rtl_from_perm): Delete unused decl of PERMANENT_OBSTACK.
7659         (exception_section, push_rtl_perm, do_function_call,
7660         lang_interim_eh, push_eh_cleanup, eh_outer_context,
7661         expand_end_eh_spec, end_eh_unwinder): Declare as static.
7662         (saved_pc, saved_throw_type, saved_throw_value, saved_cleanup,
7663         throw_used): Likewise.
7664         * cp-tree.h (expand_end_eh_spec): Delete prototype.
7665
7666         * search.c (dfs_mark, dfs_mark_vtable_path,
7667         dfs_unmark_vtable_path, dfs_mark_new_vtable,
7668         dfs_unmark_new_vtable, dfs_clear_search_slot,
7669         dfs_search_slot_nonempty_p, bfs_markedp, bfs_unmarkedp,
7670         bfs_marked_vtable_pathp, bfs_unmarked_vtable_pathp,
7671         bfs_marked_new_vtablep, bfs_unmarked_new_vtablep): #if 0 unused
7672         functions.
7673         (n_fields_searched, n_calls_lookup_field, n_calls_lookup_field_1,
7674         n_calls_lookup_fnfields, n_calls_lookup_fnfields_1,
7675         n_calls_get_base_type, n_outer_fields_searched, n_contexts_saved):
7676         Only define #ifdef GATHER_STATISTICS.
7677         (reinit_search_statistics): Only init some vars if GATHER_STATISTICS
7678         is defined.
7679         (vbase_decl): Delete var definition.
7680         (init_search): Delete old decl.
7681         (init_vbase_pointers): Delete building of VBASE_DECL, since it's
7682         never actually used.
7683         (expand_indirect_vtbls_init): Delete init of VBASE_DECL.
7684         (get_base_distance_recursive): Delete unused fourth arg
7685         BASETYPE_PATH.  Fix call .
7686         (get_base_distance): Fix call.
7687         (push_class_decls): Delete unused var ID.
7688         (make_memoized_table_entry): Declare as static.
7689         (breadth_first_search): Declare as static.
7690         (tree_has_any_destructor_p): Declare as static.
7691         (pop_class_decls): Delete unused arg pop_class_decls.
7692         * class.c (popclass): Fix call to pop_class_decls.
7693         * cp-tree.h (make_memoized_table_entry, breadth_first_search,
7694         tree_has_any_destructor_p): Delete prototypes.
7695
7696         * rtti.c (build_ptmf_desc): Delete unused arg TYPE.
7697         (build_t_desc): Fix call.  Delete unused vars ELEMS and TT.
7698         (build_dynamic_cast): Delete unused local vars TMP1 and RETVAL.
7699         (build_user_desc): Delete unused var T.
7700         (build_class_desc): Delete unused vars T and OFF.
7701         (build_t_desc): Delete unused var NAME_STRING.
7702         (build_headof): Make static.
7703         (get_bad_cast_node): Likewise.
7704         (get_def_to_follow): Likewise.
7705         * cp-tree.h (init_type_desc): Add prototype.
7706         (build_headof): Remove prototype.
7707
7708 Thu Feb 22 00:54:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
7709
7710         * pt.c (tsubst): Only look for matching decls at file scope for
7711         non-member functions.
7712
7713         * call.c (build_scoped_method_call): Handle scoped destructor
7714         calls in templates.
7715
7716         * decl.c (*_top_level): Also save previous_class_values.
7717
7718         * pt.c (tsubst_expr): Support do {} while loops.
7719         * parse.y (simple_stmt): Likewise.
7720         * tree.def: Likewise.
7721
7722         * method.c (build_overload_identifier): For a class nested in a
7723         template class, don't mangle in the template parms from our
7724         context.
7725
7726         * lex.c, cp-tree.h: Remove support for template instantiations in
7727         the pending_inlines code.
7728         * pt.c: Remove dead functions and unused arguments.
7729         (uses_template_parms): TYPENAME_TYPEs always use template parms.
7730         * parse.y: Stop passing anything to end_template_decl.
7731         * tree.c (print_lang_statistics): Only print tinst info #ifdef
7732         GATHER_STATISTICS.
7733
7734 Wed Feb 21 16:57:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7735
7736         * init.c (expand_recursive_init{,_1}): Delete decls. 
7737         (sort_member_init): Delete unused var INIT.
7738         (emit_base_init): Delete unused var X.
7739         (build_offset_ref): Delete unused var CNAME.
7740         (sort_member_init): Delete unused var FIELDS_TO_UNMARK.
7741         (emit_base_init): Delete unused local var BASE.  Delete extern
7742         decl of IN_CHARGE_IDENTIFIER.
7743         (build_delete): Delete unused local var VIRTUAL_SIZE.
7744
7745         * init.c (build_vec_delete): Delete unused third arg ELT_SIZE.
7746         (build_delete): Fix call.
7747         * decl2.c (delete_sanity): Likewise.
7748         * cp-tree.h (build_vec_delete): Update prototype.
7749
7750         * typeck.c (common_base_type): Delete unused var TMP.
7751         (build_binary_op): Delete local var ARGS_SAVE.
7752         (build_array_ref): Delete unused var ITYPE.
7753         (c_expand_return): Delete unused var USE_TEMP.
7754
7755         * typeck.c (compexcepttypes): Delete unused arg STRICT.
7756         (comptypes): Fix calls.
7757         * decl.c (duplicate_decls): Likewise.
7758         * cp-tree.h (compexcepttypes): Delete extra arg.
7759
7760         * decl2.c (check_classfn): Delete unused second arg CNAME.
7761         * decl.c (start_decl, grokfndecl): Fix calls.
7762         * init.c (do_friend): Likewise.
7763         * cp-tree.h (check_classfn): Update prototype.
7764
7765         * cp-tree.h (signature_error, import_export_vtable,
7766         append_signature_fields, id_in_current_class, mark_used,
7767         copy_assignment_arg_p): Add decls.
7768         * decl2.c (mark_used): Delete decl.
7769
7770         * class.c (n_*): Wrap with #ifdef GATHER_STATISTICS.
7771
7772         * class.c (get_vtable_entry): Diable unused function.
7773         (doing_hard_virtuals): Delete unused static global var.
7774         (finish_struct_1): Don't init DOING_HARD_VIRTUALS.
7775         (prepare_fresh_vtable): Delete unused vars PATH and RESULT.
7776         (overrides): Delete unused vars RETTYPE and BASE_RETTYPE.
7777         (modify_one_vtable): Delete unused var OLD_RTTI.
7778         (finish_struct_anon): Delete unused vars OFFSET and X.
7779         (finish_struct_bits): Delete unused var METHOD_VEC.
7780         (get_basefndecls): Delete unused var PURPOSE.  Delete unused
7781         for-scope local variable METHODS.
7782
7783         * call.c (user_harshness): Delete unused/unneeded arg PARM.
7784         (ideal_candidate): Delete unused args BASETYPE and PARMS.
7785         (build_method_call): Delete unused args passed into ideal_candidate.
7786         (build_overload_call_real): Likewise.  Delete unused var OVERLOAD_NAME.
7787         * cp-tree.h (synthesize_method): Add decl.
7788
7789         * decl.c (note_level_for_for): Give void return type.
7790         (pushdecl_nonclass_level): Likewise.
7791         (finish_function): Delete unused vars VFIELDS and ALLOCATED_THIS.
7792         (poplevel): Delete unused var IMPLICIT_TRY_BLOCK.
7793         (suspend_binding_level): Delete unused var LEVEL.
7794         (duplicate_decls): Delete unused var CTYPE.
7795         (duplicate_decls): Delete unused var PREVIOUS_C_DECL.
7796         (init_decl_processing): Delete unused vars FLOAT_ENDLINK and
7797         PTR_ENDLINK.
7798         (grokdeclarator): Delete unused var C.
7799         (grokdeclarator): Delete unused var SIZE_VARIES.
7800         (grokparms): Delete unused var SAW_VOID.
7801         (start_function): Delete unused var OLDDECL.
7802         (cplus_expand_expr_stmt): Delete unused var
7803         REMOVE_IMPLICIT_IMMEDIATELY. 
7804
7805         * cp-tree.h (pushdecl_nonclass_level): Fix prototype.
7806
7807         * Makefile.in (CONFLICTS): Update to 12 shift/reduce.
7808
7809 Wed Feb 21 00:06:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
7810
7811         * tree.c (build_min): Set TREE_COMPLEXITY to lineno.
7812         (build_min_nt): Likewise.
7813         * pt.c (do_pushlevel): Emit line note.
7814         (do_poplevel): Return what we get from poplevel.
7815         (tsubst_expr): Set lineno from TREE_COMPLEXITY in stmt nodes.
7816         * parse.y: Use do_pushlevel and do_poplevel.
7817         * cp-tree.h: Declare do_poplevel.
7818         
7819         * cp-tree.h: Declare at_eof.
7820         * decl.c (cp_finish_decl): Pass it to rest_of_decl_compilation.
7821         * decl2.c (import_export_decl): Renamed from import_export_inline.
7822         (finish_file): Call it to do interface handling for statics.
7823         * pt.c (tsubst_copy): Call mark_used on variables and functions
7824         used here.
7825
7826         * decl2.c (finish_file): Don't emit statics we can't generate.
7827         * pt.c (instantiate_decl): Don't set interface on instantiations
7828         we can't generate.
7829
7830         * cp-tree.h (struct tinst_level): Change 'classname' to 'decl'.
7831         * tree.c (print_lang_statistics): Print max template depth.
7832         * pt.c (push_tinst_level): Dump entire instantiation context.
7833         (instantiate_class_template): Use it and pop_tinst_level.
7834         (instantiate_decl): Likewise.
7835
7836         * call.c class.c cp-tree.h decl.c decl2.c error.c lex.c method.c
7837         pt.c ptree.c tree.def: Remove all traces of UNINSTANTIATED_P_TYPE.
7838
7839 Tue Feb 20 18:21:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
7840
7841         * call.c class.c cp-tree.h cvt.c decl.c decl2.c error.c expr.c
7842         init.c lex.c method.c parse.y pt.c repo.c search.c spew.c tree.c
7843         tree.def typeck.c typeck2.c xref.c: Massive, systemic changes for
7844         the new template implementation.
7845
7846 Tue Feb 20 17:14:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7847
7848         * decl2.c (check_cp_case_value): Use STRIP_TYPE_NOPS.
7849
7850 Thu Feb 15 18:44:42 1996  Mike Stump  <mrs@cygnus.com>
7851
7852         * decl.c (cp_finish_decl): Delay emitting the debug information for
7853         a typedef that has been installed as the canonical typedef, if the
7854         type has not yet been defined.
7855
7856 Thu Feb 15 09:39:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
7857
7858         * decl2.c (grokfield): Still call pop_nested_class for access decls.
7859
7860 Wed Feb 14 17:30:04 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7861
7862         * decl.c (lookup_label): Call label_rtx.
7863
7864         * decl.c (make_binding_level): New function.
7865         (pushlevel, pushlevel_class): Call it instead of explicit
7866         duplicate calls to xmalloc.
7867
7868         * decl.c (init_decl_processing): Delete useless build_pointer_type
7869         call.
7870
7871         * decl.c (float_ftype_float, ldouble_ftype_ldouble): Add definitions.
7872         (sizet_ftype_string): Delete variable.
7873         (init_decl_processing): Add built-in functions fabsf, fabsl,
7874         sqrtf, sqrtl, sinf, sin, sinl, cosf, cos, cosl.  New local
7875         variable strlen_ftype, used for strlen.
7876
7877 Wed Feb 14 16:21:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
7878
7879         * decl.c (push_to_top_level): Start from current_binding_level
7880         again for now; the stl hacks depend on g++ being broken in this
7881         way, and it'll be fixed in the template rewrite.
7882
7883         * tree.def: Add USING_DECL.
7884         * decl2.c (do_class_using_decl): Implement.
7885         (grokfield): Pass access decls off to do_class_using_decl instead of
7886         grokdeclarator.
7887         * error.c (dump_decl): Handle USING_DECLs.
7888         * decl.c (grokdeclarator): Remove code for handling access decls.
7889         * class.c (finish_struct_1): Adjust accordingly, treat using-decls
7890         as access decls for now.
7891         (finish_struct): Don't check USING_DECLs for other uses of the name.
7892
7893         * search.c (get_matching_virtual): Use cp_error_at.
7894
7895 Wed Feb 14 10:36:58 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7896
7897         * typeck.c (comptypes): Default COMP_TYPE_ATTRIBUTES to 1, to
7898         match c-typeck.c.
7899         (self_promoting_args_p): Move the check that TYPE is non-nil
7900         before trying to look at its main variant.
7901         (unsigned_type, signed_type): Add checking of DI/SI/HI/QI nodes.
7902
7903         * cp-tree.h (DECL_WAITING_FRIENDS, SET_DECL_WAITING_FRIENDS):
7904         Delete macros.
7905         * init.c (xref_friend, embrace_waiting_friends): Delete functions.
7906         (do_friend): Delete call to xref_friend.
7907         * class.c (finish_struct_1): Delete call to embrace_waiting_friends.
7908
7909         * typeck.c (convert_sequence): #if 0 unused function.
7910
7911         * cp-tree.h (DECL_IN_MEMORY_P): New macro w/ the check that used to
7912         be in decl_in_memory_p.
7913         (decl_in_memory_p): Delete decl.
7914         * expr.c (decl_in_memory_p): Delete fn.
7915         * typeck.c (mark_addressable): Use DECL_IN_MEMORY_P.
7916
7917         * decl.c (cp_finish_decl): Use DECL_IN_MEMORY_P.
7918
7919 Tue Feb 13 12:51:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
7920
7921         * class.c (finish_struct_1): Check for a pure-specifier on a
7922         non-virtual function here.
7923
7924         * decl2.c (grok_function_init): Don't check whether the function
7925         is virtual here.
7926         (grokfield): Don't call check_for_override here.
7927
7928         * decl.c (push_to_top_level): Start from inner_binding_level,
7929         check class_shadowed in class levels.
7930
7931 Mon Feb 12 17:46:59 1996  Mike Stump  <mrs@cygnus.com>
7932
7933         * decl.c (resume_level): Ignore things that don't have names, instead
7934         of core dumping.
7935
7936 Mon Feb 12 15:47:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7937
7938         * decl2.c (grokfield): Set DECL_VINDEX properly for FUNCTION_DECLs.
7939
7940 Sat Feb 10 17:59:45 1996  Jason Merrill  <jason@yorick.cygnus.com>
7941
7942         * class.c (finish_struct_1): Set DECL_VINDEX properly on a
7943         synthesized dtor.
7944
7945         * parse.y (complete_type_name): Bind global_scope earlier.
7946         (complex_type_name): Likewise.
7947         (qualified_type_name): Remove.
7948
7949 Thu Feb  8 15:15:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
7950
7951         * decl.c (grokfndecl): Move code that looks for virtuals in base
7952         classes...
7953         * class.c (check_for_override): ... to a new function.
7954         (finish_struct_1): Call it.
7955
7956         * cp-tree.h: Declare warn_sign_compare.
7957
7958         * typeck.c (build_binary_op_nodefault): Check warn_sign_compare
7959         rather than extra_warnings to decide whether to warn about
7960         comparison of signed and unsigned.
7961
7962         * decl2.c (lang_decode_option): Handle warn_sign_compare.  -Wall
7963         implies -Wsign-compare.  -Wall doesn't imply -W.
7964
7965 Wed Feb  7 15:27:57 1996  Mike Stump  <mrs@cygnus.com>
7966
7967         * typeck.c (build_component_ref): Fix to handle anon unions in base
7968         classes as well.
7969
7970 Wed Feb  7 14:29:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7971
7972         * class.c (resolves_to_fixed_type_p): Delete code dealing with
7973         a WITH_CLEANUP_EXPR, since we don't generate them any more.
7974         * cvt.c (build_up_reference): Likewise.
7975         * decl.c (grok_reference_init): Likewise.
7976         (cp_finish_decl): Likewise.
7977         * error.c (dump_expr): Likewise.
7978         * tree.c (real_lvalue_p): Likewise.
7979         (lvalue_p): Likewise.
7980         (build_cplus_new): Likewise.
7981         (unsave_expr_now): Likewise.
7982         * typeck.c (unary_complex_lvalue, build_modify_expr,
7983         c_expand_return): Likewise.
7984
7985 Tue Feb  6 13:39:22 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
7986
7987         Make the C++ front-end pay attention to attributes for structures.
7988         * class.c (finish_struct): New argument ATTRIBUTES, passed down into
7989         finish_struct_1.
7990         (finish_struct_1): New argument ATTRIBUTES; call cplus_decl_attributes.
7991         Take out old round_up_size use and setting the DECL_ALIGN possibly
7992         using it.  Take out setting of TYPE_ALIGN to round_up_size, which
7993         can override what the attribute set.
7994         * cp-tree.h (finish_struct): Update prototype.
7995         * parse.y (template_instantiate_once): Pass a NULL_TREE for the
7996         attributes to finish_struct.
7997         (structsp): For a CLASS decl, add maybe_attribute to rule and pass that
7998         value down into finish_struct.
7999         * Makefile.in (CONFLICTS): Switch to 7 shift/reduce conflicts.
8000
8001 Tue Feb  6 13:12:15 1996  Per Bothner  <bothner@kalessin.cygnus.com>
8002
8003         * decl.c (poplevel):  Re-word dead for local handling.
8004         (pushdecl):  Remove useless DECL_DEAD_FOR_LOCAL test.
8005         (cp_finish_decl):  If is_for_scope, check for duplicates so
8006         we can disable is_for_scope.  Otherwise, preserve_temp_slots.
8007
8008         * lex.c (do_identifier):  Use global binding in preference of
8009         dead for local variable.
8010
8011 Mon Feb  5 17:46:46 1996  Mike Stump  <mrs@cygnus.com>
8012
8013         * init.c (initializing_context): Handle anon union changes, the
8014         context where fields of anon unions can be initialized now has to be
8015         found by walking up the TYPE_CONTEXT chain.
8016
8017 Fri Feb  2 14:54:04 1996  Doug Evans  <dje@charmed.cygnus.com>
8018
8019         * decl.c (start_decl): #ifdef out code to set DECL_COMMON
8020         if ASM_OUTPUT{,_ALIGNED}_BSS is defined.
8021         (obscure_complex_init): If bss is supported, always set
8022         DECL_INITIAL to error_mark_node.
8023
8024 Thu Feb  1 16:19:56 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8025
8026         * init.c (is_friend): Make sure there's a context before we see if
8027         it's an aggr type.
8028
8029 Thu Feb  1 15:44:53 1996  Mike Stump  <mrs@cygnus.com>
8030
8031         * init.c (is_friend): Classes are not friendly with nested classes.
8032
8033 Thu Feb  1 15:27:37 1996  Doug Evans  <dje@charmed.cygnus.com>
8034
8035         * lex.c (check_newline): Pass last character read to HANDLE_PRAGMA,
8036         and record its result.
8037
8038 Thu Feb  1 09:27:01 1996  Mike Stump  <mrs@cygnus.com>
8039
8040         * class.c (finish_struct_anon): Switch around code to not move anon
8041         union elements around, nor mess up their contexts, nor offsets,
8042         instead we now build up the right number of COMPONENT_REFs for all
8043         the anon unions that may be present at build_component_ref time.
8044         * typeck.c (lookup_anon_field): New routine to handle field lookup
8045         on fields without names.  We find them, based upon their unique type
8046         instead.
8047         * typeck.c (build_component_ref): Allow FIELD_DECL components.
8048         Handle finding components in anonymous unions, and ensure that a
8049         COMPONENT_REF is built for each level as necessary.
8050
8051 Tue Jan 30 18:18:23 1996  Mike Stump  <mrs@cygnus.com>
8052
8053         * cvt.c (build_up_reference): Make the INDIRECT_BIND case come after
8054         code that ensures that copy ctors are used if appropriate.
8055
8056 Tue Jan 30 17:35:14 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8057
8058         * init.c (build_vec_delete): Only give an error if base isn't an
8059         error_mark_node.
8060
8061 Mon Jan 29 17:09:06 1996  Mike Stump  <mrs@cygnus.com>
8062
8063         * spew.c (do_aggr): `new struct S;' isn't a forward declaration.
8064         (yylex): If we see `new', keep slurping.
8065
8066 Thu Jan 25 18:31:36 1996  Mike Stump  <mrs@cygnus.com>
8067
8068         * class.c (finish_struct_1): Move code for handling anon unions...
8069         (finish_struct_anon): to here.  Fixup so that we do the offset
8070         calculations right, and so that the fields are physically moved to
8071         the containers's chain.
8072
8073 Thu Jan 25 18:27:37 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8074
8075         * decl.c (grokdeclarator): Avoid trying to get an operand off an
8076         identifier node.
8077
8078 Wed Jan 24 11:25:30 1996  Jim Wilson  <wilson@chestnut.cygnus.com>
8079
8080         * typeck.c (pointer_int_sum): Use TYPE_PRECISION (sizetype) not
8081         POINTER_SIZE to agree with expr.c.
8082
8083 Thu Jan 25 13:01:23 1996  Mike Stump  <mrs@cygnus.com>
8084
8085         * search.c (lookup_field): Don't report ambiguities if protect is 0,
8086         instead return NULL_TREE.
8087
8088 Wed Jan 24 13:01:26 1996  Mike Stump  <mrs@cygnus.com>
8089
8090         * class.c (finish_struct_1): Call warn_hidden if we want warnings
8091         about overloaded virtual functions.
8092         (warn_hidden): New routine to warn of virtual functions that are
8093         hidden by other virtual functions, that are not overridden.
8094         (get_basefndecls): New routine, used by warn_hidden.
8095         (mark_overriders): New routine, used by warn_hidden.
8096         * search.c (get_matching_virtual): Remove old warning that just
8097         isn't very useful.
8098
8099 Tue Jan 23 12:26:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8100
8101         * decl.c (output_builtin_tdesc_entries): #if 0 the function definition.
8102
8103         * typeck.c (null_ptr_cst_p): Delete unused fn.
8104         (build_function_call_maybe): Delete unused fn.
8105
8106         * expr.c (extract_init): #if 0 the code after unconditional return 0
8107         for now.
8108
8109         Delete old cadillac code.
8110         * edsel.c: Remove file.
8111         * Make-lang.in (CXX_SRCS): Take edsel.c off the list.
8112         * Makefile.in (CXX_OBJS): Delete edsel.o.
8113         (edsel.o): Delete rule.
8114         * cp-tree.h (flag_cadillac): Delete var decl.
8115         * lang-options.h: Delete "-fcadillac" and "-fno-cadillac".
8116         * decl2.c (flag_cadillac): Delete var definition.
8117         (lang_decode_option): Delete handling of -fcadillac and -fno-cadillac.
8118         (grokfield): Delete code depending on flag_cadillac.
8119         (finish_anon_union): Likewise.
8120         * class.c (finish_struct_1): Likewise.
8121         (pushclass): Likewise.
8122         (popclass): Likewise.
8123         (push_lang_context): Likewise.
8124         (pop_lang_context): Likewise.
8125         * decl.c (init_decl_processing): Likewise.
8126         (start_decl): Likewise.
8127         (cp_finish_decl): Likewise.
8128         (xref_tag): Likewise.
8129         (finish_enum): Likewise.
8130         (start_function): Likewise.
8131         (finish_function): Likewise.
8132         (finish_stmt): Likewise.
8133         * lex.c (lang_init): Likewise.
8134         (check_newline): Likewise.
8135
8136         * lex.c (do_pending_inlines): Delete synthesized method kludge.
8137
8138         Delete defunct, ancient garbage collection implementation.
8139         * rtti.c: New file with the RTTI stuff from gc.c.
8140         * gc.c: Removed file (moved the remaining stuff into rtti.c).
8141         * Makefile.in (CXX_OBJS): Replace gc.o with rtti.o.
8142         (rtti.o): New rule, replacing gc.o.
8143         * Make-lang.in (CXX_SRCS): Replace gc.c with rtti.c.
8144         * cp-tree.h: Delete gc-related fn decls.
8145         (DECL_GC_OFFSET): Delete macro.
8146         (flag_gc): Delete extern decl.
8147         * decl.c (current_function_obstack_index): Delete var decl.
8148         (current_function_obstack_usage): Delete var decl.
8149         (start_function): Delete clearing of current_function_obstack_index
8150         and current_function_obstack_usage.
8151         (init_decl_processing): Delete code relying on -fgc.
8152         Delete call to init_gc_processing.
8153         (cp_finish_decl): Delete calls to build_static_gc_entry and
8154         type_needs_gc_entry.  Delete gc code setting DECL_GC_OFFSET.
8155         (store_parm_decls): Delete -fgc calls to cp_expand_decl_cleanup
8156         and to expand_expr of a __gc_main call.
8157         (maybe_gc_cleanup): Delete var decl.
8158         (finish_function): Delete call to expand_gc_prologue_and_epilogue.
8159         * decl2.c (flag_gc): Delete var decl.
8160         (lang_f_options): Delete offering of -fgc.
8161         (lang_decode_option): Delete -fgc and -fno-gc handling.
8162         (get_temp_regvar): Delete gc code.
8163         * init.c (build_new): Delete gc code.
8164         * lex.c (init_lex): Delete checking of flag_gc.
8165
8166         * typeck.c (convert_arguments): Delete gc code.
8167         (build_component_addr): Delete -fgc warning.
8168         (build_modify_expr): Delete gc code.
8169
8170         * decl2.c (build_push_scope): Delete fn.
8171         * cp-tree.h (build_push_scope): Delete decl.
8172
8173         * search.c (clear_search_slots): Delete fn.
8174         * cp-tree.h (clear_search_slots): Delete decl.
8175
8176         * search.c (tree_needs_constructor_p): Delete fn.
8177         * cp-tree.h (tree_needs_constructor_p): Delete decl.
8178
8179         * tree.c (id_cmp): Delete fn.
8180
8181         * tree.c (set_fnaddr_from_vtable_entry): Delete fn.
8182         * cp-tree.h (set_fnaddr_from_vtable_entry): Delete decl.
8183
8184         * tree.c (decl_value_member): Delete fn.
8185         * cp-tree.h (decl_value_member): Delete decl.
8186
8187         * tree.c (list_hash_lookup_or_cons): Delete fn.
8188         * cp-tree.h (list_hash_lookup_or_cons): Delete decl.
8189
8190         * method.c (cplus_exception_name): Delete fn.
8191         (EXCEPTION_NAME_{PREFIX, LENGTH}): Delete macros.
8192
8193         * spew.c (shift_tokens): Delete fn.
8194
8195 Mon Jan 22 17:49:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
8196
8197         * except.c (init_exception_processing): Pass 1 to needs_pop in calls
8198         to cp_finish_decl.
8199         * parse.y: Likewise.
8200
8201 Mon Jan 22 17:34:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8202
8203         * tree.c (build_cplus_staticfn_type): Delete function definition;
8204         never used.
8205         * cp-tree.h (build_cplus_staticfn_type): Delete decl.
8206
8207         * tree.c (virtual_member): Delete function definition; never used.
8208         * cp-tree.h (virtual_member): Delete decl.
8209
8210 Fri Jan 19 18:03:14 1996  Mike Stump  <mrs@cygnus.com>
8211
8212         * typeck.c (build_component_ref): Handle getting vbase pointers
8213         out of complex multiple inheritance better.
8214
8215 Fri Jan 19 16:27:40 1996  Mike Stump  <mrs@cygnus.com>
8216
8217         * typeck.c (build_object_ref): Make sure we use the real type, not
8218         any reference type.
8219
8220 Fri Jan 19 16:01:47 1996  Mike Stump  <mrs@cygnus.com>
8221
8222         * tree.c (build_exception_variant): Don't create new types if we
8223         don't have to, also build new types on the right obstack.
8224
8225 Fri Jan 19 14:09:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
8226
8227         * decl.c (store_bindings): Split out from push_to_top_level.
8228         (push_to_top_level): Call it for b->type_shadowed on class binding
8229         levels.
8230
8231 Fri Jan 19 13:53:14 1996  Mike Stump  <mrs@cygnus.com>
8232
8233         * search.c (expand_upcast_fixups): Fix so that offsets stored in
8234         vbase_offsets are always right.  Fixes a problem where virtual base
8235         upcasting and downcasting could be wrong during conversions on this
8236         during virtual function dispatch at ctor/dtor time when dynamic
8237         vtable fixups for deltas are needed.  This only sounds easier than
8238         it is.  :-)
8239         (fixup_virtual_upcast_offsets): Change to reflect new calling
8240         convention for expand_upcast_fixups.
8241
8242 Fri Jan 19 12:23:08 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8243
8244         * decl2.c (grokbitfield): Strip the NOPs from WIDTH before we
8245         check that it's usable as the bitfield width.
8246
8247 Wed Jan 17 21:22:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8248
8249         * decl2.c (grokfield): Call cplus_decl_attributes with the attrlist.
8250         Pass a null tree to grokdeclarator for its ATTRLIST arg, since it's
8251         only ever used for functions in it.
8252
8253 Wed Jan 17 12:10:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
8254
8255         * parse.y (qualified_type_name): Use the TYPE_DECL, not the type.
8256         (nested_type): Likewise.
8257         (nested_name_specifier): Use lastiddecl.
8258
8259         * decl.c (grokdeclarator): Adjust accordingly.
8260         * init.c (expand_member_init): Likewise.
8261         * parse.y (base_class): Likewise.
8262         * typeck2.c (build_functional_cast): Likewise.
8263
8264         * typeck2.c (build_functional_cast): Fill in name after we've
8265         checked for non-aggr type.
8266
8267 Wed Jan 17 10:18:01 1996  Mike Stump  <mrs@cygnus.com>
8268
8269         * decl2.c (warn_pointer_arith): Default to on.
8270
8271 Tue Jan 16 12:45:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
8272
8273         * lex.c (is_rid): New function.
8274         * decl.c (grokdeclarator): Diagnose reserved words used as
8275         declarator-ids.
8276
8277 Tue Jan 16 11:39:40 1996  Jason Merrill  <jason@yorick.cygnus.com>
8278
8279         * tree.c (get_decl_list): Don't lose cv-quals.
8280
8281         * decl.c (grokdeclarator): Fix SCOPE_REF handling and diagnose
8282         typespecs used as declarator-ids.
8283
8284 Tue Jan 16 11:09:42 1996  Mike Stump  <mrs@cygnus.com>
8285
8286         * decl.c (poplevel): When poping a level, don't give a warning for
8287         any subblocks that already exist.
8288
8289 Tue Jan 16 00:25:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
8290
8291         * typeck.c (build_object_ref): Finish what I started.
8292
8293         * parse.y (qualified_type_name): Don't check TYPE_BUILT_IN.
8294
8295         * decl2.c (constructor_name_full): Handle TEMPLATE_TYPE_PARMs.
8296
8297         * decl.c (grokdeclarator): Also accept TEMPLATE_TYPE_PARM as a
8298         scope.
8299
8300 Mon Jan 15 16:19:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
8301
8302         * decl.c (xref_tag): Handle passing a type in directly.
8303
8304         * parse.y (qualified_type_name): Pull out the type.
8305         (nested_type): Likewise.
8306         Take types directly instead of as identifiers.
8307         * call.c (build_scoped_method_call): Take types directly instead of
8308         as identifiers.
8309         * decl.c (xref_basetypes): Likewise.
8310         * init.c (expand_member_init): Likewise.
8311         (build_member_call): Likewise.
8312         (build_offset_ref): Likewise.
8313         * typeck2.c (build_scoped_ref): Likewise, remove bogus code.
8314         * method.c (do_build_assign_ref): Likewise.
8315         * decl.c (grokdeclarator): Handle a type appearing as the
8316         declarator-id for constructors.
8317         * method.c (do_build_copy_constructor): current_base_init_list now
8318         uses the types directly, not their names.
8319         * init.c (sort_base_init): Likewise.
8320         (expand_member_init): Likewise.
8321         * init.c (is_aggr_type): New function, like is_aggr_typedef.
8322
8323 Mon Jan 15 08:45:01 1996  Jeffrey A Law  <law@cygnus.com>
8324
8325         * tree.c (layout_basetypes): Call build_lang_field_decl instead
8326         of build_lang_decl if first arg is a FIELD_DECL.
8327
8328 Thu Jan 11 14:55:07 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8329
8330         * decl.c (cp_finish_decl): Only clear TREE_USED if DECL_NAME is
8331         non-empty.
8332         * except.c (expand_start_catch_block): Set TREE_USED to avoid
8333         warnings about the catch handler.
8334
8335 Mon Jan  8 17:35:12 1996  Jason Merrill  <jason@yorick.cygnus.com>
8336
8337         * typeck.c (build_modify_expr): Use a COMPOUND_EXPR instead of
8338         expand_target_expr.
8339
8340 Thu Jan  4 12:30:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
8341
8342         Fix access control to use trees rather than integers.
8343         * class.c (access_{default, public, protected, private,
8344         default_virtual, public_virtual, private_virtual}_node): Add
8345         definitions.
8346         (init_class_processing): Do creation of those nodes.
8347         * cp-tree.h (access_type): Delete enum decl.
8348         (access_{default, public, protected, private, default_virtual,
8349         public_virtual, private_virtual}_node): Add decls.
8350         (compute_access): Change return type.
8351         * search.c (compute_access): Have tree return type, instead of enum.
8352         (lookup_field): Declare THIS_V and NEW_V to be tree nodes.
8353         * lex.c (real_yylex): Use yylval.ttype for giving the value of the
8354         access_* node for each of RID_{PUBLIC, PRIVATE, PROTECTED}.
8355         * parse.y (VISSPEC): Make ttype rather than itype.
8356         (base_class_access_list): Likewise.
8357         * *.[cy]: Change all refs of `access_public' to `access_public_node',
8358         etc.
8359         * call.c (build_method_call): Make ACCESS be a tree.
8360         * class.c (alter_access, finish_struct_1, filter_struct): Likewise.
8361         * cvt.c (convert_to_aggr): Likewise.
8362         * init.c (build_offset_ref, resolve_offset_ref, build_delete):
8363         Likewise.
8364         * method.c (hack_identifier): Likewise.
8365         * typeck.c (build_component_ref_1, build_component_ref): ): Likewise.
8366
8367 Thu Jan  4 11:02:20 1996  Mike Stump  <mrs@cygnus.com>
8368
8369         * typeck.c (pointer_int_sum, pointer_diff): Make code agree with C
8370         frontend, and make it more consistent with respect to
8371         warn_pointer_arith.
8372
8373 Tue Jan  2 00:13:38 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
8374
8375         * decl.c (pushdecl): Check for duplicate parameter names.
8376
8377 Wed Jan  3 09:25:48 1996  Mike Stump  <mrs@cygnus.com>
8378
8379         * decl.c (expand_static_init): Call assemble_external for atexit.
8380
8381 Wed Jan  3 07:55:19 1996  Mike Stump  <mrs@cygnus.com>
8382
8383         * except.c (do_unwind): Remove some generated dead code.
8384         (eh_outer_context): New routine, factor out some common code from
8385         expand_builtin_throw and end_eh_unwinder.  Add code to do return
8386         address masking for the PA.
8387         (expand_builtin_throw): Use eh_outer_context instead of open coding
8388         it here.
8389         (end_eh_unwinder): Likewise.
8390
8391 Tue Jan  2 17:00:56 1996  Mike Stump  <mrs@cygnus.com>
8392
8393         * except.c (expand_throw): Call assemble_external for __empty, if we
8394         use it.
8395
8396 Thu Dec 28 11:13:15 1995  Mike Stump  <mrs@cygnus.com>
8397
8398         * except.c (expand_builtin_throw): Use RETURN_ADDR_OFFSET instead of
8399         NORMAL_RETURN_ADDR_OFFSET.
8400         (end_eh_unwinder): Likewise.
8401
8402 Wed Dec 27 22:18:16 1995  Mike Stump  <mrs@cygnus.com>
8403
8404         * gc.c (build_dynamic_cast): Make sure we don't cast away const
8405         when dealing with references, and make sure we handle dynamic
8406         casting to a cv qualified reference.
8407
8408 Thu Dec 21 23:50:35 1995  Mike Stump  <mrs@cygnus.com>
8409
8410         * except.c (struct eh_context): New structure top hold eh context
8411         information.
8412         (push_eh_context): New routine.
8413         (pop_eh_context): Likewise.
8414         * decl.c (push_cp_function_context): Use them.
8415         (pop_cp_function_context): Likewise.
8416
8417 Wed Dec 20 12:42:51 1995  Jason Merrill  <jason@yorick.cygnus.com>
8418
8419         * decl2.c (finish_file): Also prune uninteresting functions in the
8420         inline emission loop.
8421
8422 Wed Dec 20 02:32:07 1995  Jeffrey A Law  <law@cygnus.com>
8423
8424         * sig.c (build_signature_table_constructor): Mark functions
8425         in the signature as referenced.
8426
8427 Tue Dec 19 22:36:56 1995  Jason Merrill  <jason@yorick.cygnus.com>
8428
8429         * decl2.c (finish_file): Do all the vtable/synthesis stuff before
8430         the inline emission stuff.
8431
8432 Mon Dec 18 15:51:33 1995  Jason Merrill  <jason@yorick.cygnus.com>
8433
8434         * cp-tree.h, decl2.c (flag_weak): New flag to control the use of
8435         weak symbols.   
8436         * lang-options.h: Add -f{no-,}weak.
8437         * decl.c (init_decl_processing): If the target does not support weak
8438         symbols, don't use them.
8439         * decl2.c, pt.c: s/SUPPORTS_WEAK/flag_weak/.
8440
8441 Sun Dec 17 21:13:23 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
8442
8443         * init.c (expand_member_init): warning for base init after members.
8444
8445 Fri Dec 15 15:32:18 1995  Jason Merrill  <jason@yorick.cygnus.com>
8446
8447         * cvt.c (build_expr_type_conversion): Don't convert to a reference
8448         type.
8449
8450 Thu Dec 14 16:05:58 1995  Mike Stump  <mrs@cygnus.com>
8451
8452         * method.c (report_type_mismatch): Improve wording for volatile
8453         mismatches.
8454
8455 Thu Dec 14 14:16:26 1995  Mike Stump  <mrs@cygnus.com>
8456
8457         * init.c (expand_aggr_init_1): Use expand_aggr_init_1 instead of
8458         expand_assignment, as the later doesn't handle things that have
8459         copy constructors well.  The compiler would do bitwise copying,
8460         instead of ctor calling in some cases.
8461
8462 Wed Dec 13 17:05:54 PST 1995  Paul Eggert  <eggert@twinsun.com>
8463
8464         * g++.c (my_strerror): Return "cannot access" if errno is 0.
8465         (pfatal_with_name, perror_exec): Don't assume that
8466         the returned value from my_strerror contains no '%'s.
8467         (concat): Remove.
8468         (sys_nerror): Declare only if HAVE_STRERROR is not defined.
8469
8470 Wed Dec 13 16:22:38 1995  Jason Merrill  <jason@yorick.cygnus.com>
8471
8472         Lose CLASSTYPE_METHODS/DECL_NEXT_METHOD chain; make
8473         TYPE_METHODS/TREE_CHAIN mean what they used to. 
8474         * decl2.c (constructor_name_full): Refer to CLASSTYPE_METHOD_VEC
8475         instead of TYPE_METHODS.
8476         * decl.c (duplicate_decls): Lose references to DECL_NEXT_METHOD.
8477         * tree.c (tree_copy_lang_decl_for_deferred_output): Likewise.
8478         * cp-tree.h (CLASSTYPE_METHODS): Lose.
8479         (CLASSTYPE_METHOD_VEC): Point to lang_spec->methods instead of
8480         TYPE_METHODS.
8481         (struct lang_decl): Lose next_method field.
8482         (DECL_NEXT_METHOD): Lose.
8483         * class.c (finish_struct_methods): Don't mess with TYPE_METHODS.
8484         (finish_struct): Just use TYPE_METHODS; we don't need fn_fields
8485         anymore.
8486         (finish_struct_methods): Don't mess with the TREE_CHAINs in
8487         fn_fields.
8488
8489         * search.c (add_conversions): Don't use TREE_CHAIN to traverse method
8490         vector.
8491
8492         * call.c (build_method_call): Synthesize here even when not inlining.
8493         * typeck.c (build_function_call_real): Likewise.
8494
8495 Wed Dec 13 15:02:39 1995  Ian Lance Taylor  <ian@cygnus.com>
8496
8497         * cp/lex.c (check_newline): If DBX_DEBUGGING_INFO and write_symbols
8498         == DBX_DEBUG, call dbxout_start_new_source_file and
8499         dbxout_resume_previous_source_file when appropriate.
8500
8501 Tue Dec 12 20:38:55 1995  Mike Stump  <mrs@cygnus.com>
8502
8503         * except.c (start_anon_func): Push to the top level.
8504         (end_anon_func): Pop from the top level.
8505
8506 Mon Dec 11 18:56:14 1995  Mike Stump  <mrs@cygnus.com>
8507
8508         * cp-tree.h (build_cleanup): New routine to build cleanups.
8509         * decl.c (expand_static_init): Use build_cleanup to build a cleanup
8510         call at ctor time and use atexit to run it later.
8511         * decl2.c (build_cleanup): New routine, taken from finish_file.
8512         (finish_file): Use build_cleanup instead, and don't put function
8513         local statics in global dtor list.
8514         
8515 Wed Dec  6 14:34:29 1995  Mike Stump  <mrs@cygnus.com>
8516
8517         * except.c (expand_throw): Ensure that we have cleanups, if we try
8518         and expand cleanups.
8519
8520 Wed Dec  6 11:48:21 1995  Mike Stump  <mrs@cygnus.com>
8521
8522         * except.c (expand_throw): Add logic to manage dynamic cleanups for
8523         the EH object.
8524         (expand_end_catch_block): Use the magic of expand_goto, instead of
8525         emit_jump so that we get the cleanup for any catch clause parameter
8526         and the cleanup for the exception object.  Update to reflect label
8527         changes.
8528         (push_eh_cleanup): New routine to register a cleanup for an
8529         exception object.
8530         (empty_fndecl): Used to default cleanup actions to
8531         nothing.
8532         (init_exception_processing): Setup empty_fndecl.  Setup
8533         saved_cleanup.
8534         (expand_start_catch_block): Update to reflect label changes.  Call
8535         push_eh_object to register the cleanup for the EH object.
8536         (start_anon_func): New routine to start building lambda expressions
8537         from trees.
8538         (end_anon_func): New routine to end them.
8539         (struct labelNode): Change so that we can use tree labels, or rtx
8540         labels.
8541         (saved_cleanup): Object to check for dynamic cleanups for the
8542         exception handling object.
8543         (push_label_entry): Change so that we can use tree labels, or rtx
8544         labels.
8545         (pop_label_entry): Likewise.
8546         (top_label_entry): Likewise.
8547         (expand_start_all_catch): Use tree label instead of rtx label, so
8548         that we can get the magic of expand_goto.
8549         (expand_end_all_catch): Update to reflect label changes.
8550
8551         * class.c (build_vfn_ref): Remove building_cleanup logic, as we now
8552         use UNSAVE_EXPRs.
8553         typeck.c (get_member_function_from_ptrfunc): Remove remnants of
8554         building_cleanup logic, as we now use UNSAVE_EXPRs.
8555         * cp-tree.h (unsave_expr): Declare it.
8556         * decl.c (building_cleanup): Remove.
8557         (maybe_build_cleanup): Remove building_cleanup logic, and use
8558         UNSAVE_EXPR instead.
8559
8560 Sun Dec  3 01:34:58 1995  Mike Stump  <mrs@cygnus.com>
8561
8562         * gc.c (build_t_desc): Update error message to say <typeinfo>.
8563
8564 Thu Nov 30 12:30:05 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
8565
8566         * decl.c (pushdecl): Only warn about shadowing a local variable if
8567         warn_shadow is true.
8568
8569 Sun Nov 26 16:06:55 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
8570
8571         * typeck.c (build_binary_op_nodefault): Added warning about
8572         comparisons between different enum types with -Wall, unless
8573         -fenum-int-equiv set.
8574
8575 Wed Nov 22 15:44:02 1995  Mike Stump  <mrs@cygnus.com>
8576
8577         * class.c (finish_struct_1): Skip down to the inner type in
8578         multidimensional arrays.  Ensures ctors will be made for types that
8579         need constructing.
8580
8581 Wed Nov 22 14:19:22 1995  Mike Stump  <mrs@cygnus.com>
8582
8583         * decl.c (last_dtor_insn): New to track the last compiler generated
8584         insn in a dtor.
8585         (store_parm_decls): Set it.
8586         (finish_function): Use it to see if the dtor is empty.  Avoid doing
8587         vtable setup all the time, if we can.
8588         (struct cp_function): Add last_dtor_insn.
8589         (push_cp_function_context): Save it.
8590         (pop_cp_function_context): Restore it.
8591
8592 Wed Nov 22 11:52:19 1995  Paul Russell  <Rusty.Russell@adelaide.maptek.com.au>
8593
8594         * typeck.c (build_unary_op): Set TREE_NO_UNUSED_WARNING to avoid
8595         warnings.
8596
8597 Tue Nov 21 17:15:23 1995  Mike Stump  <mrs@cygnus.com>
8598
8599         * typeck.c (expand_target_expr): Make sure targets get put into the
8600         current temp_slot_level, so that the free_temp_slots call will reuse
8601         them.
8602
8603 Tue Nov 21 13:32:03 1995  Mike Stump  <mrs@cygnus.com>
8604
8605         * class.c (finish_struct_1): Delay delta fixups for virtual bases
8606         until after we have done the hard virtuals, to avoid a bogus `every
8607         virtual function must have a unique final overrider' for virtual
8608         functions that are only overridden by hard virtuals.
8609
8610 Thu Nov  9 13:35:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
8611
8612         * pt.c (do_function_instantiation): Don't try to find a file-scope
8613         template for a member function.
8614
8615 Tue Nov 14 06:20:35 1995  Mike Stump  <mrs@cygnus.com>
8616
8617         * g++.c (main): Add handling of -nodefaultlibs.
8618
8619 Mon Nov 13 15:45:34 1995  Mike Stump  <mrs@cygnus.com>
8620
8621         * cp-tree.h (INDIRECT_BIND): Add a way for the frontend to
8622         distinguish between direct bindings of reference variables, and
8623         indirect bindings of reference variables.
8624         * cvt.c (build_up_reference): Use it.
8625         * typeck.c (convert_arguments): Use it to indicate this is an
8626         indirect binding.
8627         * decl.c (cp_finish_decl): Ensure that we reuse stack slots as fast
8628         as they are unused.
8629         (expand_static_init): Likewise.
8630         (cplus_expand_expr_stmt): Likewise.
8631         * decl2.c (finish_file): Likewise.
8632         * init.c (perform_member_init): Likewise.
8633         (emit_base_init): Likewise.
8634         (expand_aggr_vbase_init_1): Likewise.
8635
8636 Fri Nov 10 09:18:09 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
8637
8638         * decl.c (push_namespace): Rewrite to use build_lang_decl, so we
8639         get a DECL_LANG_SPECIFIC node.
8640         * cp-tree.h (lang_decl_flags): Add new member `level'.
8641         (NAMESPACE_LEVEL): Don't use decl.arguments, instead use the
8642         decl_flags level member.
8643
8644 Mon Nov  6 18:36:13 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
8645
8646         * call.c (build_method_call): Make sure instance has a
8647         TYPE_LANG_SPECIFIC node before we dive into it.  
8648
8649 Sat Nov  4 20:01:52 1995  Jason Molenda  <crash@phydeaux.cygnus.com>
8650
8651         * method.c (make_thunk): use TREE_SET_CODE to set thunk's tree code.
8652
8653 Thu Nov  2 17:56:57 1995  Mike Stump  <mrs@cygnus.com>
8654
8655         * decl.c (duplicate_decls): When smashing decls, smash staticness in
8656         the usual way.
8657
8658 Thu Nov  2 16:44:02 1995  Mike Stump  <mrs@cygnus.com>
8659
8660         * decl.c (poplevel): Handle the merging of subblocks of cleanups
8661         when finishing blocks that have already been created (usually due to
8662         the fixup goto code).  Fixes bad debugging information.
8663
8664 Wed Nov  1 12:33:53 1995  Jason Merrill  <jason@yorick.cygnus.com>
8665
8666         * method.c (hack_identifier): Don't abort when we get a TREE_LIST
8667         that's not a list of overloaded functions.
8668
8669 Wed Nov  1 11:38:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
8670
8671         * decl2.c (mark_vtable_entries): Check DECL_LANG_SPECIFIC on fn
8672         before trying to use DECL_ABSTRACT_VIRTUAL_P.
8673
8674 Tue Oct 31 11:56:55 1995  Jason Merrill  <jason@yorick.cygnus.com>
8675
8676         * decl2.c (mark_used): New function for hooking into setting of
8677         TREE_USED on decls.
8678         * call.c (build_method_call): Use it.
8679         * class.c (instantiate_type): Likewise.
8680         * init.c (build_offset_ref): Likewise.  Don't call assemble_external
8681         for all like-named functions.
8682         * method.c (hack_identifier): Likewise.
8683         (emit_thunk): Don't call assemble_external.
8684         (make_thunk): Create thunk as a FUNCTION_DECL so that it
8685         gets the right mode and ENCODE_SECTION_INFO works.
8686         
8687         * parse.y: Use mark_used.  Pass operator names to do_identifier.
8688         * lex.c (do_identifier): Handle operator names.
8689
8690         * decl2.c (grokclassfn): Tweak __in_chrg attributes.
8691
8692 Thu Oct 26 16:45:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
8693
8694         * errfn.c: Include stdio.h.
8695         (cp_sprintf): Take out decl of sprintf, and cast sprintf to errorfn*.
8696
8697 Wed Oct 25 18:58:41 1995  Mike Stump  <mrs@cygnus.com>
8698
8699         * typeck2.c (digest_init): Always convert initializers to the
8700         right type.
8701
8702 Wed Oct 25 13:25:24 1995  Mike Stump  <mrs@cygnus.com>
8703
8704         * init.c (member_init_ok_or_else): Don't allow member initializers
8705         for indirect members, as it is invalid.
8706
8707 Wed Oct 25 11:35:28 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
8708
8709         * decl.c (grokdeclarator): Don't allow `friend signed ()'.
8710
8711 Fri Oct 20 10:30:59 1995  Mike Stump  <mrs@cygnus.com>
8712
8713         * parse.y (for.init.statement): Catch compound statements inside for
8714         initializations, if we're being pedantic.
8715
8716 Fri Oct 20 10:03:42 1995  Mike Stump  <mrs@cygnus.com>
8717
8718         * decl.c (lookup_tag): Return NULL_TREE if we don't find what we are
8719         looking for.
8720
8721 Thu Oct 19 14:26:10 1995  Mike Stump  <mrs@cygnus.com>
8722
8723         * error.c (dump_expr): Don't core dump when a boolean expression is
8724         used as a default argument.
8725
8726 Thu Oct 19 10:36:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
8727
8728         * class.c (finish_struct_bits): Check aggregate_value_p instead of
8729         RETURN_IN_MEMORY.
8730
8731 Wed Oct 18 18:12:32 1995  Jason Merrill  <jason@yorick.cygnus.com>
8732
8733         * class.c (finish_struct_bits): Also set TREE_ADDRESSABLE on a
8734         BLKmode type that would otherwise be returned in registers.
8735
8736 Mon Oct 16 12:32:19 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
8737
8738         * g++.c (WITHLIBC): New macro.
8739         (main): Declare saw_libc.  Use WITHLIBC if `-lc' was used; set
8740         saw_libc and pass it at the end if it was set.
8741
8742 Wed Oct 11 16:30:34 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
8743
8744         * parse.y (fn.def1): Call split_specs_attrs in
8745         declmods notype_declarator case.
8746 \f
8747 Use a consistent time stamp format in ChangeLog entries.
8748 Not everyone has Emacs 20 yet, so stick with Emacs 19 format for now.
8749
8750 Local Variables:
8751 add-log-time-format: current-time-string
8752 End: