OSDN Git Service

PR c++/41468
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog-1997
1 Mon Dec 22 11:36:27 1997  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2
3         * call.c (add_builtin_candidate): Add default case in enumeration
4         switch.
5         (build_new_op): Likewise.
6         (convert_like): Likewise.
7         * cvt.c (build_expr_type_conversion): Likewise.
8         * tree.c (real_lvalue_p): Likewise.
9         (lvalue_p): Likewise.
10         (cp_tree_equal): Likewise.
11         * typeck.c (comptypes): Likewise.
12         (build_component_ref): Likewise.
13         (build_function_call_real): Likewise.
14         (build_binary_op_nodefault): Likewise.
15         (build_unary_op): Likewise.
16         (build_modify_expr): Likewise.
17         * typeck2.c (initializer_constant_valid_p): Likewise.
18
19 Sun Dec 21 15:59:00 1997  Nick Clifton  <nickc@cygnus.com>
20
21         * decl2.c (lang_decode_option): Add support for -Wunknown-pragmas.
22
23 Thu Dec 18 14:51:50 1997  Mark Mitchell  <mmitchell@usa.net>
24
25         * pt.c (coerce_template_parms): Make sure to digest_init if
26         possible.
27
28         * decl.c (duplicate_decls): Make the newdecl virtual if the
29         olddecl was, just as is done with other attributes of olddecl.
30
31 Thu Dec 18 14:43:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
32
33         * typeck.c (unary_complex_lvalue): Ignore op0 when taking the
34         address of an OFFSET_REF.
35
36         * cp-tree.def: Add AGGR_INIT_EXPR.
37         * error.c, tree.c, typeck.c: Replace uses of NEW_EXPR with
38         AGGR_INIT_EXPR where appropriate.
39         * expr.c (cplus_expand_expr): Likewise.  Simplify.
40
41         * decl2.c (finish_file): Remove call to register_exception_table.
42
43 Wed Dec 17 17:08:52 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
44
45         * pt.c (instantiate_class_template): Don't do injection when
46         processing_template_decl is true, as pollutes current_binding_level
47         for base classes.
48
49 Wed Dec 17 21:17:39 1997  Peter Schmid  <schmid@ltoi.iap.physik.tu-darmstadt.de>
50
51         * pt.c (maybe_fold_nontype_arg): Add prototype.
52
53 Tue Dec 16 10:31:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
54
55         * tree.c (mapcar): Handle TRY_CATCH_EXPR et al.
56         * error.c (dump_expr): Likewise.
57
58 Mon Dec 15 12:22:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
59
60         * typeck.c (build_function_call_real): Remove "inline called before
61         definition" pedwarn.
62
63         * pt.c (coerce_template_parms): Use maybe_fold_nontype_arg.
64
65 Sun Dec 14 22:34:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
66
67         * cvt.c (cp_convert_to_pointer): Fix base conversion of pm's.
68
69         * pt.c (type_unification_real): Change __null to type void* with
70         a warning.
71
72 Sun Dec 14 20:38:35 1997  Mark Mitchell  <mmitchell@usa.net>
73
74         * call.c (implicit_conversion): Don't call
75         build_user_type_conversion_1 with a NULL expr, since it will
76         crash.
77
78         * pt.c (unify): Don't try to unify array bounds if either array is
79         unbounded.
80
81 Fri Dec 12 16:09:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
82
83         * errfn.c (cp_pedwarn, cp_pedwarn_at, cp_error_at, cp_warning_at):
84         Replace extern decls with casts.
85
86         * decl.c (expand_start_early_try_stmts): Don't mess with a sequence.
87         Update last_parm_cleanup_insn.
88         (store_after_parms): Remove.
89         * cp-tree.h: Adjust.
90
91 Thu Dec 11 22:18:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
92
93         * decl2.c (comdat_linkage): Also set DECL_COMDAT.
94         (finish_file): Check DECL_COMDAT instead of weak|one_only.
95         (import_export_vtable): Use make_decl_one_only instead of
96         comdat_linkage for win32 tweak.
97         (import_export_decl): Likewise.
98         * pt.c (mark_decl_instantiated): Likewise.
99
100         * decl2.c (finish_file): Lose handling of templates in pending_statics.
101
102 Thu Dec 11 21:12:09 1997  Jason Merrill  <jason@yorick.cygnus.com>
103
104         * decl2.c (finish_file): Lose call to expand_builtin_throw.
105         * except.c (expand_builtin_throw): Remove.
106         * cp-tree.h: Remove ptr_ptr_type_node.
107         * decl.c: Likewise.
108
109 Thu Dec 11 20:43:33 1997  Teemu Torma  <tot@trema.com>
110
111         * decl.c (ptr_ptr_type_node): Define.
112         (init_decl_processing): Initialize it.
113         * cp-tree.h: Declare it.
114         * exception.cc (__cp_exception_info): Use __get_eh_info.
115         (__cp_push_exception): Likewise.
116         (__cp_pop_exception): Likewise.
117
118         From Scott Snyder <snyder@d0sgif.fnal.gov>:
119         * except.c (expand_builtin_throw): Use get_saved_pc_ref instead of
120         saved_pc.
121         (init_exception_processing): Removed saved_pc initialization.
122
123 Wed Dec 10 11:04:45 1997  Jason Merrill  <jason@yorick.cygnus.com>
124
125         * pt.c (instantiate_decl): Defer all templates but inline functions.
126
127 Mon Dec  8 23:17:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
128
129         * init.c (expand_vec_init): Don't fold a list of parameters.
130
131         * decl.c (copy_args_p): Handle copy elision for types with virtual
132         bases.
133         * call.c (build_over_call): Likewise.
134
135 Sun Dec  7 22:38:12 1997  Mark Mitchell  <mmitchell@usa.net>
136
137         * pt.c (lookup_template_function): Copy the template arguments,
138         not just the list containing them, to the permanent obstack.
139
140 Sun Dec  7 15:53:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
141
142         * except.c (expand_start_catch_block): suspend_momentary for the
143         terminate handler.
144
145         * error.c (dump_decl): Handle LOOKUP_EXPR.
146
147 Sun Dec  7 15:45:07 1997  Mark Mitchell  <mmitchell@usa.net>
148
149         * rtti.c (build_dynamic_cast): Copy the cast-to type to the
150         permanent obstack if we are processing a template decl.
151         * typeck.c (build_static_cast): Likewise.
152         (build_const_cast): Likewise.
153         (build_reinterpret_cast): Likewise.
154
155         * pt.c (coerce_template_parms): Coerce some expressions, even
156         when processing_template_decl.
157
158 Sun Dec  7 01:46:33 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
159
160         * typeck.c (build_binary_op_nodefault, pointer_diff): Symmetric
161         handling of pointer difference expressions.
162
163         * typeck.c (comp_target_types): Comparison of function/method types
164         is independent of nptrs.
165
166 Sun Dec  7 01:40:27 1997  Mark Mitchell  <mmitchell@usa.net>
167
168         * pt.c (tsubst): Avoid creating pointer to reference and
169         reference to reference types.
170
171 Sat Dec  6 01:29:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
172
173         * parse.y (do_id): New nonterminal.
174         (template_id): Use it.
175
176 Fri Dec  5 01:17:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
177
178         * parse.y (template_id): do_identifier for PFUNCNAMEs, too.
179         * spew.c (yylex): Don't do_identifier here.
180         * decl2.c (build_expr_from_tree): Revert last change.
181
182         * decl2.c (build_expr_from_tree): Expand the name for a method call.
183         * parse.y (object_template_id): Don't try to take the DECL_NAME.
184
185 Wed Dec  3 20:02:39 1997  Jason Merrill  <jason@yorick.cygnus.com>
186
187         * init.c (build_new): Use a TARGET_EXPR instead of SAVE_EXPR for
188         alloc_expr.
189         * call.c (build_op_delete_call): Adjust.
190
191         * except.c (expand_end_catch_block): Lose rethrow region.
192         (expand_start_catch_block): Likewise.
193         (expand_end_catch_block): Don't expand_leftover_cleanups.
194
195 Wed Dec  3 13:24:04 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
196
197         * pt.c (tsubst): Remove tree_cons call (places redundant info into
198         DECL_TEMPLATE_INSTANTIATION).
199
200 Wed Dec  3 11:44:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
201
202         * tree.c (is_overloaded_fn): Handle getting a fn template.
203         (really_overloaded_fn): Likewise.
204         * error.c (dump_decl): Handle TEMPLATE_ID_EXPRs better.
205         * pt.c (check_explicit_specialization): Tweak.
206         (determine_explicit_specialization): Tweak.
207
208         * tree.c, cp-tree.h (get_target_expr): New fn.
209
210 Wed Dec  3 08:47:27 1997  Paul Eggert  <eggert@twinsun.com>
211
212         * pt.c (check_explicit_specialization): Fix misspelling in
213         diagnostic: `preceeded'.
214         * typeck.c (get_delta_difference): Fix misspelling in diagnostic:
215         `conversiona'.
216
217 1997-12-02  Mark Mitchell  <mmitchell@usa.net>
218
219         * pt.c (determine_explicit_specialization): Avoid an internal
220         error for bad specializations.
221
222         * method.c (build_overload_value): Handle SCOPE_REF.
223
224 Tue Dec  2 19:18:50 1997  Mike Stump  <mrs@wrs.com>
225
226         * class.c (prepare_fresh_vtable): Enable even more complex MI
227         vtable names.
228
229 Tue Dec  2 01:37:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
230
231         * exception.cc (__check_eh_spec): Optimize a bit.
232
233         * exception.cc (__cp_pop_exception): Lose handler arg.
234         * except.c (do_pop_exception): Likewise.
235         (push_eh_cleanup): Let the cleanup mechanism supply the handler.
236         (expand_end_catch_block): Likewise.
237
238 Fri Nov 28 01:58:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
239
240         * pt.c (check_explicit_specialization): Complain about using a
241         template-id for a non-specialization.
242
243 Fri Nov 28 12:35:19 1997  Scott Christley  <scottc@net-community.com>
244
245         * repo.c: Prototype rindex only if needed.
246         * xref.c: Likewise.
247
248 Fri Nov 28 01:56:35 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
249
250         * error.c (dump_decl): Handle TEMPLATE_ID_EXPR.
251
252 Thu Nov 27 00:59:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
253
254         * typeck.c (build_const_cast): Handle references here instead of
255         handing off to convert_to_reference.
256
257         * except.c: Lose Unexpected, SetTerminate, SetUnexpected,
258         TerminateFunctionCall.
259         (init_exception_processing): Likewise.  Terminate et al are now
260         the fns, not ADDR_EXPRs.
261         (various): Lose redundant assemble_external calls.
262         (do_unwind): s/BuiltinReturnAddress/builtin_return_address_fndecl/.
263
264         * cp-tree.h (struct lang_decl_flags): Add comdat.
265         (DECL_COMDAT): New macro.
266         * decl.c (duplicate_decls): Propagate it.
267         (cp_finish_decl): Handle it.
268         * decl2.c (import_export_decl): Just set DECL_COMDAT on VAR_DECLs.
269
270         * class.c: Remove static pending_hard_virtuals.
271         (add_virtual_function): Take pointers to pending_virtuals
272         and pending_hard_virtuals.
273         (finish_struct_1): Pass them.  Declare pending_hard_virtuals.
274
275 Wed Nov 26 20:28:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
276
277         * decl2.c (import_export_vtable): If we support one_only but not
278         weak symbols, mark instantiated template vtables one_only.
279         (import_export_decl): Likewise for tinfo functions.
280         (finish_vtable_vardecl): Also write out vtables from explicitly
281         instantiated template classes.
282         * pt.c (mark_class_instantiated): Revert last change.
283
284         * except.c (expand_throw): Call mark_used on the destructor.
285
286 Wed Nov 26 15:13:48 1997  Jeffrey A Law  (law@cygnus.com)
287
288         * lex.c (lang_init): Enable flag_exceptions by default if no
289         command line switch was specified.
290
291 1997-11-26  Mark Mitchell  <mmitchell@usa.net>
292
293         * pt.c (unify): Handle `void' template parameters in
294         specializations.
295
296 Wed Nov 26 01:11:24 1997  Jason Merrill  <jason@yorick.cygnus.com>
297
298         * rtti.c (build_dynamic_cast): Handle template case here.
299         (build_dynamic_cast_1): Not here.
300
301         * typeck2.c (digest_init): Make copies where appropriate.
302
303         * decl2.c (delete_sanity): resolve_offset_ref.
304
305         * except.c: Call terminate without caching so many bits.
306
307         * except.c (expand_start_catch_block): Fix catching a reference
308         to pointer.
309
310 Tue Nov 25 11:28:21 1997  Jason Merrill  <jason@yorick.cygnus.com>
311
312         * init.c (build_new): Copy size to the saveable obstack.
313
314         * init.c (build_new): Stick a CLEANUP_POINT_EXPR inside the
315         TRY_CATCH_EXPR for now.
316
317 Mon Nov 24 12:15:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
318
319         * typeck.c (mark_addressable): Don't assume a FUNCTION_DECL
320         has DECL_LANG_SPECIFIC.
321
322         * exception.cc (struct cp_eh_info): Add handlers field.
323         (__cp_push_exception): Initialize it.
324         (__cp_pop_exception): Decrement it.  Don't pop unless it's 0.
325         (__throw_bad_exception): Remove.
326         * except.c (call_eh_info): Add handlers field.
327         (get_eh_handlers): New fn.
328         (push_eh_cleanup): Increment handlers.
329
330 Fri Nov 21 12:22:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
331
332         * except.c (expand_start_eh_spec): Use the try/catch code.
333         (expand_end_eh_spec): Likewise.  Call __check_eh_spec instead of
334         doing everything inline.
335         (init_exception_processing): throw_type_match now takes
336         const void pointers.
337         * exception.cc (__check_eh_spec): New fn.
338         * inc/exception: Neither terminate nor unexpected return.
339         * decl.c: Make const_ptr_type_node public.
340         * tinfo2.cc (__throw_type_match_rtti): Take the typeinfos constly.
341
342         * except.c (expand_start_catch_block): We only need the rethrow
343         region for non-sjlj exceptions.
344         (expand_end_catch_block): Likewise.  Use outer_context_label_stack.
345
346 Thu Nov 20 14:40:17 1997  Jason Merrill  <jason@yorick.cygnus.com>
347
348         * Make-lang.in (CXX_LIB2FUNCS): Add new op new and op delete objs.
349         (various.o): Likewise.
350         * inc/new: Add placement deletes.  Add throw specs for default new.
351         * new.cc (set_new_handler): Move here from libgcc2.
352         * new1.cc (new (nothrow)): Catch a bad_alloc thrown from the handler.
353         (new): Move from libgcc2.  Throw bad_alloc.
354         * new2.cc: Move the rest of the op news and op deletes from libgcc2.
355         * decl.c (init_decl_processing): Update exception specs on new and
356         delete.
357
358         * method.c (build_decl_overload_real): Don't mess with global
359         placement delete.
360
361         * init.c (build_new): Check for null throw spec, not nothrow_t.
362
363         * decl.c (duplicate_decls): Don't complain about different exceptions
364         from an internal declaration.
365
366         * call.c (build_op_delete_call): Fix check for member fns again.
367
368         * decl2.c (import_export_decl): Interface hackery affects
369         virtual synthesized methods.
370
371 Wed Nov 19 18:24:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
372
373         * decl.c (start_decl): Don't just complain about a mismatched
374         scope, fix it.
375
376         * decl.c (make_implicit_typename): Handle case where t is not
377         actually from context.
378         * tree.c (get_type_decl): Lose identifier case.
379         * spew.c (yylex): Lose useless call to identifier_typedecl_value.
380         * parse.y (nonnested_type): Just use lookup_name.
381         (complex_type_name): Just use IDENTIFIER_GLOBAL_VALUE.
382
383 Wed Nov 19 11:45:07 1997  Michael Tiemann  <tiemann@axon.cygnus.com>
384
385         * error.c (dump_function_name): Test DECL_LANG_SPECIFIC in case
386         T was built in C language context (for example, by
387         output_func_start_profiler).
388
389 Wed Nov 19 10:39:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
390
391         * decl.c (make_implicit_typename): New fn.
392         (lookup_name_real): Use it.  Use current_class_type as the context.
393
394 Mon Nov 17 23:42:03 1997  Bruno Haible  <haible@ilog.fr>
395
396         * pt.c (do_poplevel): Don't prohibit jumps into this contour.
397
398 Mon Nov 17 02:01:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
399
400         * friend.c (do_friend): Warn about non-template friends in templates.
401
402         * call.c (build_op_delete_call): Fix handling of inherited delete.
403
404         * search.c (dfs_record_inheritance): Ignore template type parms.
405
406 Sat Nov 15 00:30:51 1997  Jason Merrill  <jason@yorick.cygnus.com>
407
408         * call.c (build_new_op): Fix copy error.
409         (build_op_new_call): New fn.
410         (build_op_delete_call): New fn.
411         * cp-tree.h: Declare them.
412         * init.c (build_new): Use them.  Support placement delete.
413         (build_x_delete): Use build_op_delete_call.
414         (build_delete): Likewise.
415         * decl2.c (delete_sanity): Likewise.
416         (coerce_delete_type): Don't complain about placement delete.
417
418 Thu Nov 13 01:52:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
419
420         * call.c (build_new_function_call): Remove unused 'obj' parm.
421         * cp-tree.h, typeck.c: Adjust.
422
423         * init.c (build_new): Make the cleanup last longer.
424         (expand_vec_init): Call do_pending_stack_adjust.
425
426 Wed Nov 12 11:04:33 1997  Jason Merrill  <jason@yorick.cygnus.com>
427
428         * pt.c (do_type_instantiation): Fix typo.
429         (mark_class_instantiated): If we support one_only but not weak
430         symbols, don't mark this as known.
431
432         * init.c (build_new): Handle vec delete in EH cleanup.
433
434 Wed Nov 12 08:11:55 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
435
436         * call.c (build_method_call): Call complete_type before checking
437         for destructor.
438
439 Sun Nov  9 01:29:55 1997  Jim Wilson  (wilson@cygnus.com)
440
441         * decl.c (add_block_current_level): Delete.
442         * init.c (build_vec_delete_1): Delete build_block and
443         add_block_current_level calls.
444
445 Wed Nov 12 00:48:16 1997  Jason Merrill  <jason@yorick.cygnus.com>
446
447         * init.c (build_new): Handle freeing allocated memory when the
448         constructor throws.
449
450         * call.c (build_new_method_call): Fix flags arg.
451
452         * pt.c (do_type_instantiation): Don't try to instantiate
453         member templates.
454         (mark_decl_instantiated): If we support one_only but not
455         weak symbols, mark this one_only.
456         * decl2.c (import_export_vtable): Don't defer handling of vtables
457         if MULTIPLE_SYMBOL_SPACES.
458
459 Tue Nov 11 12:02:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
460
461         * except.c (expand_end_catch_block): Lose call to __sjpopnthrow.
462
463 Tue Nov 11 02:53:44 1997  Jason Merrill  <jason@lasher.cygnus.com>
464
465         * except.c (do_pop_exception): Return a value.
466
467 Mon Nov 10 20:25:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
468
469         * call.c (build_new_method_call): Handle getting a
470         TEMPLATE_ID_EXPR around a TEMPLATE_DECL.  Don't look for a field
471         if we got template parms.
472         * typeck.c (build_x_function_call): Remember the TEMPLATE_ID_EXPR,
473         not just the args.
474         * decl2.c (build_expr_from_tree): Tweak last change.
475         * pt.c (tsubst_copy): Use get_first_fn instead of TREE_VALUE.
476         (maybe_fold_nontype_arg): Split out from tsubst_copy.
477         * tree.c (get_first_fn): Just return a TEMPLATE_ID_EXPR.
478
479 Mon Nov 10 20:08:38 1997  Kriang Lerdsuwanakij  <lerdsuwa@scf-fs.usc.edu>
480
481         * pt.c (tsubst_copy): Handle explicit template arguments in
482         function calls.
483         * typeck.c (build_x_function_call): Likewise.
484         * decl2.c (build_expr_from_tree): Lookup function name if it
485         hasn't been done.
486
487         * pt.c (tsubst): Instantiate template functions properly when
488         template parameter does not appear in function arguments and return
489         type.
490         (comp_template_args): Handle member templates required by tsubst.
491
492 Mon Nov 10 20:08:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
493
494         * decl.c (grokdeclarator): Tweak conditions for pedwarn in
495         previous change.
496
497 Mon Nov 10 20:08:29 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
498
499         * pt.c (coerce_template_parms): Tweak error message.
500
501         * decl.c (grokdeclarator): If -Wreturn-type, warn everytime a
502         return type defaults to `int', even if there are storage-class
503         specifiers.
504
505 Mon Nov 10 03:04:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
506
507         Complete nested exception support.
508         * except.c (do_pop_exception): Split out...
509         (push_eh_cleanup): From here.  Handle the EH region by hand.
510         (expand_start_catch_block): Add a new level for the catch parm.
511         Move the rethrow region outside the two cleanup regions.
512         Protect the initializer for the catch parm with terminate.
513         (expand_end_catch_block): Likewise.  End the region for the eh_cleanup.
514         * exception.cc (__cp_pop_exception): Now takes two parms.  Handle
515         popping off the middle of the stack.
516         * tree.c (lvalue_p, real_lvalue_p): Handle TRY_CATCH_EXPR,
517         WITH_CLEANUP_EXPR, and UNSAVE_EXPR.
518         (build_cplus_new): Only wrap CALL_EXPRs.
519         * init.c (expand_default_init): Handle a TRY_CATCH_EXPR around
520         the constructor call.
521
522 Sun Nov  9 18:00:26 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
523
524         * Make-lang.in (c++.distdir): Make inc subdirectory.
525
526 Fri Nov  7 11:57:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
527
528         * decl2.c (finish_file): Put back some code.
529
530 Thu Nov  6 11:28:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
531
532         * decl2.c (finish_file): Remove redundant code.
533         * method.c (emit_thunk): Don't let the backend defer generic thunks.
534
535 Wed Nov  5 23:52:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
536
537         * except.c (call_eh_info): Split out...
538         (push_eh_info): From here.
539         (expand_builtin_throw): Use it.
540         (expand_start_catch_block): Move region start back.
541
542 Tue Nov  4 13:45:10 1997  Doug Evans  <devans@canuck.cygnus.com>
543
544         * lex.c (MULTIBYTE_CHARS): #undef if cross compiling.
545         (real_yylex): Record wide strings using target endianness, not host.
546
547 1997-11-03  Brendan Kehoe  <brendan@lisa.cygnus.com>
548
549         * repo.c (rindex): Add decl unconditionally.
550         (get_base_filename, open_repo_file): Don't cast rindex.
551         * xref.c (rindex): Add decl unconditionally.
552         (index): Remove unused decl.
553         (open_xref_file): Don't cast rindex.
554
555 Sun Nov  2 15:04:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
556
557         * class.c (build_vbase_path): Propagate the result type properly.
558
559 1997-11-01  Brendan Kehoe  <brendan@lisa.cygnus.com>
560
561         * except.c (expand_builtin_throw) [!DWARF2_UNWIND_INFO]: Replace
562         remaining use of saved_throw_type with a call to get_eh_type.
563
564 1997-10-31  Brendan Kehoe  <brendan@lisa.cygnus.com>
565
566         * lex.c (FILE_NAME_NONDIRECTORY): Delete macro.
567         (file_name_nondirectory): New function, doing the same as the macro.
568         (set_typedecl_interface_info): Use it instead of the macro.
569         (check_newline): Likewise.
570         (handle_cp_pragma): Likewise.
571
572         * repo.c (get_base_filename): Cast result of rindex to char*.
573         (open_repo_file): Likewise.
574         * xref.c (open_xref_file): Likewise.
575         * error.c (dump_char): Make its arg int, not char.
576
577         * except.c (push_eh_info): Pass the number of fields - 1 down, not
578         the exact number of fields.
579
580 Fri Oct 31 01:47:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
581
582         Support for nested exceptions.
583         * tinfo2.cc (__is_pointer): New fn.
584         * exception.cc (struct cp_eh_info): Define.
585         (__cp_exception_info, __uncatch_exception): New fns.
586         (__cp_push_exception, __cp_pop_exception): New fns.
587         * except.c: Lose saved_throw_{type,value,cleanup,in_catch}.
588         Lose empty_fndecl.
589         (init_exception_processing): Likewise.  __eh_pc is now external.
590         (push_eh_info): New fn.
591         (get_eh_{info,value,type,caught}): New fns.
592         (push_eh_cleanup): Just call __cp_pop_exception.
593         (expand_start_catch_block): Use push_eh_info.  Start the eh region
594         sooner.
595         (expand_end_eh_spec): Use push_eh_info.
596         (expand_throw): Call __cp_push_exception to set up the exception info.
597         Just pass the destructor or 0 as the cleanup.  Call __uncatch_exception
598         when we rethrow.
599         (expand_builtin_throw): Don't refer to empty_fndecl.
600
601 Thu Oct 23 02:01:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
602
603         * pt.c (instantiate_decl): SET_DECL_IMPLICIT_INSTANTIATION on new decl.
604
605 1997-10-22  Brendan Kehoe  <brendan@cygnus.com>
606
607         * method.c (build_template_parm_names, build_decl_overload_real):
608         Add static to definitions.
609         * pt.c (add_to_template_args, note_template_header,
610         processing_explicit_specialization, type_unification_real): Likewise.
611         ({determine,check}_explicit_specialization): Use a single string for
612         error messages.
613
614 Mon Oct 20 12:06:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
615
616         * except.c (expand_exception_blocks): Call do_pending_stack_adjust.
617         (expand_end_catch_block): Likewise.
618         (expand_end_eh_spec): Likewise.
619
620 Mon Oct 20 11:44:20 1997  Mark Mitchell  <mmitchell@usa.net>
621
622         * decl.c (duplicate_decls): Handle template specializations
623         correctly.
624         * error.c (dump_function_name): Fix printing of specializations of
625         member functions that are not member templates.
626         * cp-tree.h (processing_specialization): Make global.
627         * pt.c (processing_specialization): Likewise.
628         * lex.c (cons_up_default_function): Save and restore
629         processing_specialization to avoid confusion.
630
631 Mon Oct 20 10:52:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
632
633         * decl.c (init_decl_processing): Give null_node unknown* type.
634         * typeck.c (comp_target_types): Handle UNKNOWN_TYPE.
635         (common_type): Likewise.
636         * error.c (args_as_string): Recognize null_node.
637
638 Sun Oct 19 09:13:01 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
639
640         * typeck.c (rationalize_conditional_expr): Handle {MIN,MAX}_EXPR.
641         (unary_complex_lvalue): Call it for {MIN,MAX}_EXPR.
642
643         * decl.c (init_decl_processing): Call using_eh_for_cleanups.
644
645         * Make-lang.in (g++): Include prefix.o.
646
647 Thu Oct 16 15:31:09 1997  Judy Goldberg  <judygold@sanwafp.com>
648
649         * pt.c (determine_explicit_specialization): Initialize "dummy"
650         to keep Purify quiet.
651
652 Thu Oct 16 00:14:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
653
654         * method.c (build_overload_value): Handle TEMPLATE_CONST_PARMs here.
655         (build_overload_int): Not here.
656
657 Wed Oct 15 00:35:28 1997  Mike Stump  <mrs@wrs.com>
658
659         * class.c (build_type_pathname): Remove.
660         (prepare_fresh_vtable): Fix problem with complex MI vtable names.
661
662 1997-10-14  Brendan Kehoe  <brendan@lisa.cygnus.com>
663
664         * parse.y (unary_expr): Give a pedwarn if someone tries to use the
665         &&label GNU extension.
666
667 Tue Oct 14 12:01:00 1997  Mark Mitchell  <mmitchell@usa.net>
668
669         * decl.c (pushtag): Unset DECL_ASSEMBLER_NAME before setting it,
670         so as to avoid incorrect manglings.
671         * method.c (build_decl_overload_real): Don't mangle return types
672         for constructors.
673
674 Tue Oct 14 11:46:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
675
676         * cp-tree.h (scratchalloc, build_scratch_list, make_scratch_vec,
677         scratch_tree_cons): Define as macros for now.
678         * call.c, class.c, cvt.c, decl.c, decl2.c, except.c, expr.c, init.c,
679         lex.c, method.c, parse.y, pt.c, rtti.c, search.c, tree.c, typeck.c,
680         typeck2.c: Use them and the expression_obstack variants.
681
682 Mon Oct 13 17:41:26 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
683
684         * decl.c (store_return_init): Allow classes with explicit ctors to
685         be used with the named return values extension.
686
687 Fri Oct 10 12:21:11 1997  Jason Merrill  <jason@yorick.cygnus.com>
688
689         * pt.c (instantiate_decl): Fix previous change.
690
691 Thu Oct  9 12:08:21 1997  Jason Merrill  <jason@yorick.cygnus.com>
692
693         * pt.c (tsubst): Fix thinko.
694         (instantiate_decl): Really use the original template.
695
696         * call.c (build_new_method_call): Use simple constructor_name for
697         error messages.
698
699 Wed Oct  8 22:44:42 1997  Jeffrey A Law  <law@cygnus.com>
700
701         * method.c (build_underscore_int): Don't use ANSI specific
702         features.
703
704 Wed Oct  8 00:18:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
705
706         * decl2.c (finish_prevtable_vardecl): Check DECL_REALLY_EXTERN
707         for our key method; it might have been inlined by -O3.
708
709 Tue Oct  7 23:00:12 1997  Mark Mitchell  <mmitchell@usa.net>
710
711         * decl.c (make_typename_type): Do not try to call lookup_field for
712         non-aggregate types.
713
714 Tue Oct  7 22:52:10 1997  Jason Merrill  <jason@yorick.cygnus.com>
715
716         * typeck.c (build_reinterpret_cast): Tweak.
717
718 Tue Oct  7 22:45:31 1997  Alexandre Oliva  <oliva@dcc.unicamp.br>
719
720         * typeck.c (build_reinterpret_cast): Converting a void pointer
721         to function pointer with a reinterpret_cast produces a warning
722         if -pedantic is issued.
723
724 Tue Oct  7 22:43:43 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
725
726         * typeck.c (c_expand_return): Don't warn about returning a
727         reference-type variable as a reference.
728
729 Tue Oct  7 21:11:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
730
731         * method.c (build_static_name): Fix typo.
732
733 1997-10-07  Brendan Kehoe  <brendan@lisa.cygnus.com>
734
735         * decl.c (duplicate_decls): Make sure DECL_LANG_SPECIFIC is set on
736         OLDDECL before we try to do DECL_USE_TEMPLATE.
737
738 Tue Oct  7 00:48:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
739
740         * decl.c (duplicate_decls): Don't warn about template instances.
741
742         * typeck.c (mark_addressable): Lose ancient code that unsets
743         DECL_EXTERNAL.
744
745         * pt.c (do_decl_instantiation): Lose support for instantiating
746         non-templates.
747
748         * call.c (build_new_function_call): Fix handling of null explicit
749         template args.
750         (build_new_method_call): Likewise.
751
752 Mon Oct  6 23:44:34 1997  Mark Mitchell  <mmitchell@usa.net>
753
754         * method.c (build_underscore_int): Fix typo.
755
756 1997-10-06  Brendan Kehoe  <brendan@lisa.cygnus.com>
757
758         * tree.c (print_lang_statistics): #if 0 call to
759         print_inline_obstack_statistics until its definition is checked in.
760
761 Mon Oct  6 09:27:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
762
763         * decl2.c (finish_file): Move dump_tree_statistics to end.
764
765         * pt.c (instantiate_decl): Look for the original template.
766         (tsubst): Set DECL_IMPLICIT_INSTANTIATION on partial instantiations
767         of member templates.
768
769 Wed Oct  1 08:41:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
770
771         * Makefile.in (g++FAQ.*): New rules.
772         (CONFLICTS): Update.
773         * g++FAQ.texi: Moved from libg++.
774
775         * parse.y (PFUNCNAME): Only specify the type once.
776
777 1997-10-01  Brendan Kehoe  <brendan@lasher.cygnus.com>
778
779         * lex.c (real_yylex): Clean up the code to fully behave the way
780         the c-lex.c parser does for complex and real numbers.
781
782 Tue Sep 30 08:51:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
783
784         * method.c (build_decl_overload_real): Reformat.
785
786 Tue Sep 30 00:18:26 1997  Jason Merrill  <jason@yorick.cygnus.com>
787
788         * method.c (synthesize_method): If at_eof, determine our linkage.
789
790 1997-09-29  Paul Eggert  <eggert@twinsun.com>
791
792         * lex.c (real_yylex): Treat `$' just like `_', except issue a
793         diagnostic if !dollars_in_ident or if pedantic.
794
795         * lang-specs.h (@c++): -ansi no longer implies -$.
796
797         * decl2.c (lang_decode_option):
798         -traditional and -ansi now do not mess with
799         dollars_in_ident.
800
801 Mon Sep 29 19:57:51 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>
802
803         * Makefile.in (parse.o, decl.o): Also depend on
804         $(srcdir)/../except.h $(srcdir)/../output.h.
805         (decl2.o): Also depend on $(srcdir)/../expr.h ../insn-codes.h
806         $(srcdir)/../except.h $(srcdir)/../output.h.
807         (typeck.o, init.o): Also depend on $(srcdir)/../expr.h
808         ../insn-codes.h.
809
810         * call.c, cp-tree.h, decl.c, tree.c: Finish prototyping.
811
812         * expr.c (cplus_expand_expr): Make it static.
813
814         * decl2.c, init.c, typeck.c: Include "expr.h".
815         (expand_expr): Use proper values when calling the function.
816
817 Mon Sep 29 11:05:54 1997  Alexandre Oliva  <oliva@dcc.unicamp.br>
818
819         * lang-options.h: New -Wold-style-cast flag.
820         * cp-tree.h (warn_old_style_cast): New variable.
821         * decl2.c (warn_old_style_cast): Likewise.
822         (lang_decode_option): Support -Wold-style-cast.
823         (reparse_absdcl_as_casts): Produce old-style-cast warning.
824
825 Mon Sep 29 09:20:53 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
826
827         * decl.c (cp_finish_decl): Allow expand_aggr_init to set
828         TREE_USED, reset value based on already_used.
829
830         * init.c (expand_member_init): Revert change.
831
832 Mon Sep 29 08:57:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
833
834         * cp-tree.h, decl.c, decl2.c, pt.c:
835         Lose DECL_C_STATIC and DECL_PUBLIC.  Don't pretend statics are public.
836
837         * decl2.c (lang_decode_option): Add missing ;.
838
839 Sat Sep 27 16:22:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
840
841         * friend.c (do_friend): Disable injection for all template-derived
842         decls.
843         * decl2.c (lang_decode_option): Handle -fguiding-decls.
844         * parse.y (notype_template_declarator): New nonterminal.
845         (direct_notype_declarator): Use it.
846         (complex_direct_notype_declarator): Likewise.
847         (object_template_id): Accept any kind of identifier after TEMPLATE.
848         (notype_qualified_id): Don't add template declarators here.
849
850 Sat Sep 27 16:21:58 1997  Mark Mitchell  <mmitchell@usa.net>
851
852         * call.c (add_template_candidate): Add explicit_targs parameter.
853         (build_scoped_method_call): Use it.
854         (build_overload_call_real): Likewise.
855         (build_user_type_conversion_1): Likewise.
856         (build_new_function_call): Likewise.
857         (build_object_call): Likewise.
858         (build_new_op): Likewise.
859         (build_new_method_call): Likewise.
860         (build_new_function_call): Handle TEMPLATE_ID_EXPR.
861         (build_new_method_call): Likewise.
862
863         * class.c (finish_struct_methods): Add specialization pass to
864         determine which methods were specializing which other methods.
865         (instantiate_type): Handle TEMPLATE_ID_EXPR.
866
867         * cp-tree.def (TEMPLATE_ID_EXPR): New tree code.
868
869         * cp-tree.h (name_mangling_version): New variable.
870         (flag_guiding_decls): Likewise.
871         (build_template_decl_overload): New function.
872         (begin_specialization): Likewise.
873         (reset_specialization): Likewise.
874         (end_specialization): Likewise.
875         (determine_explicit_specialization): Likewise.
876         (check_explicit_specialization): Likewise.
877         (lookup_template_function): Likewise.
878         (fn_type_unification): Add explicit_targs parameter.
879         (type_unification): Likewise.
880
881         * decl.c (duplicate_decls): Add smarts for explicit
882         specializations.
883         (grokdeclarator): Handle TEMPLATE_ID_EXPR, and function
884         specializations.
885         (grokfndecl): Call check_explicit_specialization.
886
887         * decl2.c (lang_decode_option): Handle -fname-mangling-version.
888         (build_expr_from_tree): Handle TEMPLATE_ID_EXPR.
889         (check_classfn): Handle specializations.
890
891         * error.c (dump_function_name): Print specialization arguments.
892
893         * friend.c (do_friend): Don't call pushdecl for template
894         instantiations.
895
896         * init.c (build_member_call): Handle TEMPLATE_ID_EXPR.
897
898         * lang-options.h: Add -fname-mangling-version, -fguiding-decls,
899         and -fno-guiding-decls.
900
901         * lex.c (identifier_type): Return PFUNCNAME for template function
902         names.
903
904         * method.c (build_decl_overload_real): New function.
905         (build_template_parm_names): New function.
906         (build_overload_identifier): Use it.
907         (build_underscore_int): New function.
908         (build_overload_int): Use it.  Add levels for template
909         parameters.
910         (build_overload_name): Likewise.  Also, handle TYPENAME_TYPEs.
911         (build_overload_nested_names): Handle template type parameters.
912         (build_template_decl_overload): New function.
913
914         * parse.y (YYSTYPE): New ntype member.
915         (nested_name_specifier): Use it.
916         (nested_name_specifier_1): Likewise.
917         (PFUNCNAME): New token.
918         (template_id, object_template_id): New non-terminals.
919         (template_parm_list): Note specializations.
920         (template_def): Likewise.
921         (structsp): Likewise.
922         (fn.def2): Handle member template specializations.
923         (component_decl_1): Likewise.
924         (direct_notype_declarator): Handle template-ids.
925         (component_decl_1): Likewise.
926         (direct_notype_declarator): Handle template-ids.
927         (primary): Handle TEMPLATE_ID_EXPR, and template-ids.
928
929         * pt.c (processing_specializations): New variable.
930         (template_header_count): Likewise.
931         (type_unification_real): New function.
932         (processing_explicit_specialization): Likewise.
933         (note_template_header): Likewise.
934         (is_member_template): Handle specializations.
935         (end_template_decl): Call reset_specialization.
936         (push_template_decl): Handle member template specializations.
937         (tsubst): Likewise.
938         (tsubst_copy): Handle TEMPLATE_ID_EXPR.
939         (instantiate_template): Handle specializations.
940         (instantiate_decl): Likewise.
941         (fn_type_unification): Handle explicit_targs.
942         (type_unification): Likewise.  Allow incomplete unification
943         without an error message, if allow_incomplete.
944         (get_bindings): Use new calling sequence for fn_type_unification.
945
946         * spew.c (yylex): Handle PFUNCNAME.
947
948         * tree.c (is_overloaded_fn): Handle TEMPLATE_ID_EXPR.
949         (really_overloaded_fn): Likewise.
950         (get_first_fn): Handle function templates.
951
952         * typeck.c (build_x_function_call): Use really_overloaded_fn.
953         Handle TEMPLATE_ID_EXPR.
954         (build_x_unary_op): Likewise.
955         (build_unary_op): Likewise.
956         (mark_addressable): Templates whose address is taken are marked
957         as used.
958
959 1997-09-25  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
960
961         * decl.c (init_decl_processing): Declare __builtin_constant_p as
962         accepting any kind of type, not only int.
963
964 Fri Sep 26 00:22:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
965
966         * search.c (get_matching_virtual): Notice virtual bases when sorrying
967         about covariant returns.
968
969         * parse.y (member_init): Also imply typename here.  Remove ancient
970         extension for initializing base members.
971
972 Thu Sep 25 11:11:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
973
974         Handle multi-level typenames and implicit typename in base list.
975         * parse.y (typename_sub{,[0-2]}): New rules.
976         (structsp, rule TYPENAME_KEYWORD): Use typename_sub.
977         (nonnested_type): New rule.
978         (complete_type_name): Use it.
979         (base_class.1): Use typename_sub and nonnested_type.
980         (nested_name_specifier): Don't elide std:: here.
981         * decl.c (make_typename_type): Handle getting a type for NAME.
982         (lookup_name_real): Turn std:: into :: here.
983
984         Rvalue conversions were removed in London.
985         * call.c (is_subseq): Don't consider lvalue transformations.
986         (build_conv): LVALUE_CONV and RVALUE_CONV get IDENTITY_RANK.
987         (joust): Re-enable ?: kludge.
988
989 1997-09-22  Brendan Kehoe  <brendan@lisa.cygnus.com>
990
991         * decl.c (start_function): Up warning of no return type to be a
992         pedwarn.
993
994 Mon Sep 22 14:15:34 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
995
996         * init.c (expand_member_init): Don't set TREE_USED.
997         * decl.c (cp_finish_decl): Mark decls used if type has TREE_USED
998         set,don't clear TREE_USED wholesale.
999
1000 Sat Sep 20 15:31:00 1997  Jason Merrill  <jason@yorick.cygnus.com>
1001
1002         * call.c (build_over_call): Do require_complete_type before
1003         build_cplus_new.
1004
1005 Thu Sep 18 16:47:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
1006
1007         * search.c (lookup_field): Call complete_type in all cases.
1008
1009         * decl.c (finish_function): Just warn about flowing off the end.
1010
1011 Wed Sep 17 10:31:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
1012
1013         * decl.c (grokparms): Don't bash a permanent list node if we're
1014         in a function.
1015
1016 1997-09-17  Brendan Kehoe  <brendan@lisa.cygnus.com>
1017
1018         * Makefile.in (CONFLICTS): Fix s/r conflict count to 18.
1019
1020 Tue Sep 16 14:06:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
1021
1022         * call.c (build_new_op): Give better error for syntactically
1023         correct, but semantically invalid, use of undeclared template.
1024
1025         * call.c (compare_qual): Handle pmfs.
1026
1027         * decl.c (store_parm_decls): last_parm_cleanup_insn is the insn
1028         after the exception spec.
1029
1030 Mon Sep 15 11:52:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
1031
1032         * call.c (null_ptr_cst_p): Integer type, not integral type.
1033
1034         * call.c (joust): Disable warnings until they can be moved to the
1035         right place.
1036
1037 Fri Sep 12 16:11:13 1997  Per Bothner  <bothner@cygnus.com>
1038
1039         * Makefile.in, config-lang.in:  Convert to autoconf.
1040
1041 Thu Sep 11 17:14:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
1042
1043         * decl.c (lookup_name_real): Add implicit 'typename' to types from
1044         base classes.
1045
1046         * pt.c (most_specialized_class): Fix typo.
1047         (tsubst): Move constant folding to TREE_VEC case.
1048
1049 Thu Sep 11 10:08:45 1997  Mark Mitchell  <mmitchell@usa.net>
1050
1051         * pt.c (do_poplevel): Don't warn about unused local variables
1052         while processing_template_decl since we don't always know whether
1053         or not they will need constructing/destructing.
1054
1055         * pt.c (uses_template_parms): Check the values of an enumeration
1056         type to make sure they don't depend on template parms.
1057
1058         * decl.c (make_typename_type): Don't lookup the field if the
1059         context uses template parms, even if we're not
1060         processing_template_decl at the moment.
1061
1062         * pt.c (coerce_template_parms): Avoid looking at the
1063         TYPE_LANG_DECL portion of a typename type, since there won't be
1064         one.
1065         (tsubst): Do constant folding as necessary to make sure that
1066         arguments passed to lookup_template_class really are constants.
1067
1068 Wed Sep 10 16:39:26 1997  Jim Wilson  <wilson@cygnus.com>
1069
1070         * Make-lang.in (LN, LN_S): New macros, use where appropriate.
1071
1072 Wed Sep 10 11:21:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
1073
1074         * except.c (expand_builtin_throw): #ifndef DWARF2_UNWIND_INFO.
1075         * decl2.c (finish_file): Only register exception tables if we
1076         need to.
1077
1078         * decl.c (init_decl_processing): Add __builtin_[fs]p.
1079
1080 Tue Sep  9 19:49:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
1081
1082         * pt.c (unify): Just return 0 for a TYPENAME_TYPE.
1083
1084 Tue Sep  9 17:57:25 1997  Mark Mitchell  <mmitchell@usa.net>
1085
1086         * error.c (dump_decl): Avoid crashing when presented with a
1087         uninitialized constant, as can occur with a template parameter.
1088         (dump_expr): Make sure that there are enough levels of
1089         current_template_parms before we start diving through them.
1090
1091 1997-09-09  Brendan Kehoe  <brendan@lisa.cygnus.com>
1092
1093         * typeck.c (build_indirect_ref): Heed FLAG_VOLATILE similar to
1094         c-typeck.c.
1095
1096 Tue Sep  9 09:36:39 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
1097
1098         * except.c (expand_throw): Call build_delete for all
1099         exception types, not just objects with destructors.
1100
1101 Mon Sep  8 02:33:20 1997  Jody Goldberg  <jodyg@idt.net>
1102
1103         * decl.c (current_local_enum): Remove static.
1104         * pt.c (tsubst_enum): Save and restore value of current_local_enum
1105         in case template is expanded in enum decl.
1106         (instantiate_class_template): Use new tsubst_enum signature.
1107         (tsubst_expr): Likewise.
1108
1109 Mon Sep  8 01:21:43 1997  Mark Mitchell  <mmitchell@usa.net>
1110
1111         * pt.c (begin_member_template_processing): Take a function as
1112         argument, not a set of template arguments.  Use the template
1113         parameters, rather than the arguments.  Handle non-type parameters
1114         correctly.  Push a binding level for the parameters so that multiple
1115         member templates using the same parameter names can be declared.
1116         (end_member_template_processing): Pop the binding level.
1117         (push_template_decl): Mark member templates as static when
1118         appropriate.
1119
1120         * lex.c (do_pending_inlines): Pass the function, not its template
1121         arguments, to begin_member_template_processing.
1122         (process_next_inline): Likewise.
1123         (do_pending_defargs): Likewise.
1124
1125         * error.c (dump_expr): Obtain the correct declaration for a
1126         TEMPLATE_CONST_PARM.
1127
1128         * call.c (add_template_conv_candidate): New function.
1129         (build_object_call): Handle member templates, as done in the other
1130         build_ functions.
1131
1132 Sat Sep  6 10:20:27 1997  Mark Mitchell  <mmitchell@usa.net>
1133
1134         * decl.c (replace_defag): Undo previous change.
1135         * lex.c (do_pending_defargs): Deal with member templates.
1136
1137         * pt.c (is_member_template): Avoid crashing when passed a
1138         non-function argument.
1139
1140 Fri Sep  5 17:27:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
1141
1142         * class.c (grow_method): Remove check for redeclaration.
1143
1144 Fri Sep  5 01:37:17 1997  Mark Mitchell  <mmitchell@usa.net>
1145
1146         * cp-tree.h (INNERMOST_TEMPLATE_PARMS): New macro.
1147         (DECL_INNERMOST_TEMPLATE_PARMS): Likewise.
1148         (PRIMARY_TEMPLATE_P): Use it.
1149         * call.c (build_overload_call_real): Use it.
1150         * class.c (instantiate_type): Likewise.
1151         * decl.c (decls_match): Likewise.
1152         * method.c (build_overload_identifier): Likewise.
1153         * pt.c (push_template_decl): Likewise.
1154         (classtype_mangled_name): Likewise.
1155         (lookup_template_class): Likewise.
1156
1157         * cp-tree.h (DECL_NTPARMS): Change name from DECL_NT_PARMS to
1158         DECL_NTPARMS to conform to usage elsewhere.
1159         * call.c (add_template_candidate): Likewise.
1160         * class.c (instantiate_type): Likewise.
1161         * pt.c (instantiate_template): Likewise.
1162         (get_bindings): Likewise.
1163
1164         * class.c (grow_method): Use DECL_FUNCTION_TEMPLATE_P instead of
1165         is_member_template.
1166
1167         * pt.c (unify): Undo changes to allow multiple levels of template
1168         parameters.
1169         (type_unification): Likewise.
1170         (fn_type_unification): Likewise.
1171         (get_class_bindings): Likewise.
1172         * cp-tree.h (Likewise).
1173
1174         * decl.c (replace_defarg): Check that the type of the default
1175         parameter does not invlove a template type before complaining
1176         about the initialization.
1177
1178         * error.c (dump_expr): Deal with template constant parameters in
1179         member templates correctly.
1180
1181         * pt.c (is_member_template): Deal with class specializations
1182         correctly.
1183         (tsubst): Handle "partial instantiation" of member templates
1184         correctly.
1185
1186 Wed Sep  3 12:30:24 1997  Mark Mitchell  <mmitchell@usa.net>
1187
1188         * pt.c (type_unification): Change calling sequence to allow for
1189         multiple levels of template parameters.
1190         (tsubst_expr): Likewise.
1191         (tsubst): Likewise.
1192         (tsubst_copy): Likewise.
1193         (instantiate_template): Likewise.
1194         (unify): Likewise.
1195         * call.c (build_overload_call_real): Use it.
1196         (add_builtin_candidate): Use it.
1197         (build_new_method_call): Use it.
1198         * class.c (instantiate_type): Use it.
1199         * decl.c (grokdeclarator): Use it.
1200         * decl2.c (finish_file): Use it.
1201         * method.c (build_overload_identifier): Use it.
1202
1203         * call.c (add_template_candidate):  Add additional parameter for
1204         the function return type.  Call fn_type_unification istead of
1205         type_unification.
1206         (build_user_type_conversion_1): Handle member templates.
1207         (build_new_function_call): Likewise.
1208         (build_new_op): Likewise.
1209         (build_new_method_call): Likewise.
1210
1211         * class.c (grow_method): Don't give an error message indicating
1212         that two member templates with the same name are ambiguous.
1213         (finish_struct): Treat member template functions just like member
1214         functions.
1215
1216         * cp-tree.h (check_member_template): Add declaration.
1217         (begin_member_template_processing): Likewise.
1218         (end_member_template_processing): Likewise.
1219         (fn_type_unification): Likewise.
1220         (is_member_template): Likewise.
1221         (tsubst): Change prototype.
1222         (tsubst_expr): Likewise.
1223         (tsubst_copy): Likewise.
1224         (instantiate_template): Likewise.
1225         (get_bindings): Likewise.
1226
1227         * decl.c (decls_match): Handle multiple levels of template
1228         parameters.
1229         (pushdecl): Handle template type params just like other type
1230         declarations.
1231         (push_class_level_binding): Return immediately if the
1232         class_binding_level is NULL.
1233         (grokfndecl): If check_classfn() returns a member_template, use
1234         the result of the template, not the template itself.
1235
1236         * decl2.c (check_member_template): New function.  Check to see
1237         that the entity declared to be a member template can be one.
1238         (check_classfn): Allow redeclaration of member template functions
1239         with different types; the new functions can be specializations or
1240         explicit instantiations.
1241
1242         * error.c (dump_decl): Handle multiple levels of template
1243         parameters.
1244         (dump_function_decl): Update to handle function templates.
1245
1246         * lex.c (do_pending_inlines): Set up template parameter context
1247         for member templates.
1248         (process_next_inline): Likewise.
1249
1250         * method.c (build_overload_identifier): Adjust for multiple levels
1251         of template parameters.
1252
1253         * parse.y (fn.def2): Add member templates.
1254         (component_decl_1): Likewise.
1255
1256         * pt.c (begin_member_template_processing): New function.
1257         (end_member_template_processing): Likewise.
1258         (is_member_template): Likewise.
1259         (fn_type_unification): Likewise.
1260         (current_template_parms): Return a vector of all the template
1261         parms, not just the innermost level of parms.
1262         (push_template_decl): Deal with the possibility of member
1263         templates.
1264         (lookup_template_class): Likewise.
1265         (uses_template_parms): Likewise.
1266         (tsubst): Modify processing to TEMPLATE_TYPE_PARM and
1267         TEMPLATE_CONST_PARM to deal with multiple levels of template
1268         arguments.   Add processing of TEMPLATE_DECL to produce new
1269         TEMPLATE_DECLs from old ones.
1270         (do_decl_instantiation): Handle member templates.
1271
1272         * search.c (lookup_fnfields_1): Handle member template conversion
1273         operators.
1274
1275         * tree.c (cp_tree_equal): Check the levels, as well as the
1276         indices, of TEMPLATE_CONST_PARMs.
1277
1278         * typeck.c (comptypes): Check the levels, as well as the indices,
1279         fo TEMPLATE_TYPE_PARMs.
1280         (build_x_function_call): Treat member templates like member
1281         functions.
1282
1283 Wed Sep  3 11:09:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
1284
1285         * typeck.c (c_expand_return): Always convert_for_initialization
1286         before checking for returning a pointer to local.
1287
1288         * pt.c (type_unification): If strict and the function parm doesn't
1289         use template parms, just compare types.
1290
1291 Wed Sep  3 10:35:49 1997  Klaus Espenlaub  <kespenla@student.informatik.uni-ulm.de>
1292
1293         * method.c (build_overloaded_value): Replace direct call
1294         to the floating point emulator with REAL_VALUE_TO_DECIMAL macro.
1295
1296 Wed Sep  3 00:02:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
1297
1298         * typeck.c (convert_arguments): Don't arbitrarily choose the first
1299         of a set of overloaded functions.
1300
1301 Tue Sep  2 12:09:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
1302
1303         * lex.c (real_yylex): Don't elide __FUNCTION__.
1304
1305         * method.c (build_overload_value): Add in_template parm.
1306         (build_overload_int): Likewise.
1307         (build_overload_identifier): Pass it.
1308
1309         * decl.c (duplicate_decls): Don't bash a previous template
1310         definition with a redeclaration.
1311
1312         * pt.c (unify): float doesn't match double.
1313
1314         * pt.c (do_type_instantiation): Handle getting a _TYPE or a
1315         TYPE_DECL.  Handle getting non-template types.
1316         * parse.y (explicit_instantiation): Use typespec instead of
1317         aggr template_type.
1318
1319 Tue Sep  2 10:27:08 1997  Richard Henderson  <rth@cygnus.com>
1320
1321         * typeck.c (build_ptrmemfunc1): Clean up ptr->int cast warnings.
1322
1323 Mon Sep  1 13:19:04 1997  Eugene Mamchits  <eugin@ips.ras.ru>
1324
1325         * call.c (add_builtin_candidate): Add missing TREE_TYPE.
1326         (compare_ics): Likewise.
1327
1328 Mon Sep  1 13:19:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
1329
1330         * call.c (joust): Warn about choosing one conversion op over
1331         another because of 'this' argument when the other return type is
1332         better.
1333         (source_type): New fn.
1334
1335         * call.c (build_new_op): Strip leading REF_BIND from first operand
1336         to builtin operator.
1337
1338         * decl2.c (mark_vtable_entries): Mark abort_fndecl as used when we
1339         use its RTL.
1340
1341 Thu Aug 28 09:45:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
1342
1343         * call.c (null_ptr_cst_p): Remove support for (void*)0.
1344
1345 Wed Aug 27 02:03:34 1997  Jeffrey A Law  <law@cygnus.com>
1346
1347         * typeck.c (expand_target_expr): Make definition match declaration.
1348
1349         * class.c (get_basefndecls): Make definition match declaration.
1350
1351 Mon Aug 25 14:30:02 1997  Jason Merrill  <jason@yorick.cygnus.com>
1352
1353         * input.c (sub_getch): Eventually give up and release the input file.
1354
1355         * decl.c (cp_finish_decl): If #p i/i, put inline statics in the
1356         right place.
1357
1358         * call.c (joust): Tweak message.
1359
1360 Sat Aug 23 18:02:59 1997  Mark Mitchell  <mmitchell@usa.net>
1361
1362         * error.c (type_as_string): Put const/volatile on template type
1363         parameters where appropriate.
1364
1365 Sat Aug 23 17:47:22 1997  Jeffrey A Law  <law@cygnus.com>
1366
1367         * call.c (strictly_better): Make arguments unsigned ints.
1368
1369 Thu Aug 21 18:48:44 1997  Jason Merrill  <jason@yorick.cygnus.com>
1370
1371         * lex.c (real_yylex): Refer to __complex instead of complex.
1372
1373 Thu Aug 21 22:25:46 1997  J"orn Rennecke  <amylaar@cygnus.co.uk>
1374
1375         * lex.c (real_yylex): Don't use getc directly.
1376
1377 Wed Aug 20 17:25:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
1378
1379         * call.c (is_subseq): Don't try to be clever.
1380
1381 Wed Aug 20 03:13:36 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
1382
1383         * parse.y, pt.c: Include "except.h".
1384         * call.c, class.c, class.h, cp-tree.h, cvt.c, decl.c, decl2.c,
1385         error.c, except.c, expr.c, friend.c, g++spec.c, init.c, input.c,
1386         lex.c, lex.h, method.c, parse.y, pt.c, repo.c, rtti.c, search.c,
1387         sig.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c: Finish
1388         prototyping.
1389
1390 Wed Aug 20 01:34:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
1391
1392         * decl2.c (mark_vtable_entries): Instead of replacing pure
1393         virtuals with a reference to __pure_virtual, copy the decl and
1394         change the RTL.
1395
1396 Tue Aug 19 02:26:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
1397
1398         * pt.c (lookup_nested_type_by_name): Handle typedef wierdness.
1399
1400         * typeck2.c (my_friendly_abort): Report bugs to egcs-bugs@cygnus.com.
1401
1402         * pt.c (instantiate_class_template): Call repo_template_used
1403         before finish_prevtable_vardecl.
1404
1405         * call.c (is_subseq): New fn.
1406         (compare_ics): Use it.
1407
1408         * repo.c (finish_repo): Don't crash on no args.
1409
1410         * parse.y (named_complex_class_head_sans_basetype): Handle
1411         explicit global scope.
1412         * decl2.c (handle_class_head): New fn.
1413
1414         * pt.c (unify): Add CONST_DECL case.
1415
1416 Thu Aug 14 10:05:13 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
1417
1418         * rtti.c (permanent_obstack): Fix decl to not be a pointer.
1419
1420         * cp-tree.h (report_type_mismatch): Add prototype.
1421         * call.c (build_overload_call_real): Remove erroneous fourth
1422         argument to report_type_mismatch.
1423         (build_user_type_conversion_1): Remove erroneous second arg to
1424         tourney.
1425         (build_new_function_call): Likewise.
1426         (build_object_call): Likewise.
1427         (build_new_op): Likewise.
1428         (build_new_method_call): Likewise.
1429
1430 Wed Aug 13 19:19:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
1431
1432         * error.c (dump_decl): Don't bother processing a function with no
1433         DECL_LANG_SPECIFIC.
1434
1435         * method.c (emit_thunk): Call init_function_start in the macro case.
1436
1437 Wed Aug 13 10:46:19 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
1438
1439         * decl2.c (DEFAULT_VTABLE_THUNKS): Define to be 0 if not
1440         defined and used to set flag_vtable_thunks.
1441
1442 Tue Aug 12 20:13:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
1443
1444         * parse.y: Don't clear the inlines from their obstack until they've
1445         all been processed.
1446
1447         * decl.c (duplicate_decls): Don't complain about exception
1448         specification mismatch if flag_exceptions is off.
1449
1450 Mon Aug 11 15:01:56 1997  Marc Lehmann  <pcg@goof.com>
1451
1452         * Make-lang.in (c++.distclean): Remove g++.c on make distclean.
1453
1454 Sun Aug 10 12:06:09 1997  Paul Eggert  <eggert@twinsun.com>
1455
1456         * cp-tree.h: Replace STDIO_PROTO with PROTO in include files.
1457         * cvt.c, error.c, except.c, expr.c, friend.c, init.c, rtti.c:
1458         Include <stdio.h> before include files that formerly used STDIO_PROTO.
1459
1460         * decl.c, g++spec.c, lex.c, method.c, repo.c:
1461         Include "config.h" first, as per autoconf manual.
1462
1463 Fri Aug  8 11:47:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
1464
1465         * decl.c (duplicate_decls): Tweak wording.
1466         * lex.c (do_pending_defargs): Don't die if we see a default arg
1467         that isn't a DEFAULT_ARG.
1468         * error.c (dump_expr): Handle DEFAULT_ARG.
1469
1470         * decl2.c (lang_decode_option): Handle -fhandle-exceptions.
1471         * lang-options.h: Add -fhandle-exceptions.
1472
1473         * class.c (build_vtable): Vtables are artificial.
1474         (prepare_fresh_vtable): Likewise.
1475
1476 Wed Aug  6 11:02:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
1477
1478         * cvt.c (ocp_convert): After converting to the target type, set
1479         LOOKUP_NO_CONVERSION.
1480
1481         * call.c (joust): Warn about potentially confusing promotion rules
1482         with -Wsign-promo.
1483         * cp-tree.h, lang-options.h, decl2.c: Support -Wsign-promo.
1484
1485 Tue Aug  5 15:15:07 1997  Michael Meissner  <meissner@cygnus.com>
1486
1487         * exception.cc: Declare __terminate_func with noreturn attribute.
1488
1489 Fri Aug  1 03:18:15 1997  Jason Merrill  <jason@yorick.cygnus.com>
1490
1491         * parse.y: Break out eat_saved_input, handle errors.
1492         (function_try_block): Use compstmt instead of compstmt_or_error.
1493
1494 Thu Jul 31 17:14:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
1495
1496         * tree.c (build_cplus_new): Don't set TREE_ADDRESSABLE.
1497
1498 Fri Jul  4 01:45:16 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
1499
1500         * Make-lang.in (cplib2.txt, cplib2.ready): Instead of checking for
1501         existence of cc1plus check whether $(LANGUAGES) contains C++.
1502
1503 Wed Jul 30 13:04:21 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
1504
1505         * method.c (do_build_copy_constructor): When copying an anonymous
1506         union member loop around to handle nested anonymous unions.  Use
1507         the offset of the member relative to the outer structure, not the
1508         union.
1509
1510 Tue Jul 29 21:17:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
1511
1512         * call.c (resolve_args): New fn.
1513         (build_new_function_call): Use it.
1514         (build_object_call): Likewise.
1515         (build_new_method_call): Likewise.
1516
1517 Mon Jul 28 16:02:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
1518
1519         * call.c (build_over_call): tsubst all default parms from templates.
1520
1521 Wed Jul 23 13:36:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
1522
1523         * decl.c (struct cp_function): Add static_labelno.
1524         (push_cp_function_context): Save it.
1525         (pop_cp_function_context): Restore it.
1526
1527 Tue Jul 22 14:43:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
1528
1529         * typeck.c (build_component_ref_1): Convert from reference.
1530
1531 Tue Jul 22 11:06:23 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
1532
1533         * parse.y (current_declspecs, prefix_attributes): Initialize to
1534         NULL_TREE.
1535
1536         * parse.y (initdcl0): Make sure CURRENT_DECLSPECS is non-nil
1537         before we try to force it to be a TREE_LIST.
1538         (decl): Make sure $1.t is non-nil.
1539
1540 Sun Jul 20 11:53:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
1541
1542         * pt.c (uses_template_parms): Handle template first-parse codes.
1543
1544         * decl.c (cp_finish_decl): Only warn about user-defined statics.
1545
1546 Fri Jul 18 17:56:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
1547
1548         * pt.c (unify): Handle BOOLEAN_TYPE.
1549
1550         * cp-tree.h: Lose PARM_DEFAULT_FROM_TEMPLATE.
1551         * pt.c (tsubst): Don't set it.
1552         * call.c (build_over_call): Use uses_template_parms.
1553
1554 Thu Jul 17 18:06:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
1555
1556         * method.c (build_overload_nested_name): Use static_labelno
1557         instead of var_labelno.
1558         (build_qualified_name): New fn.
1559         (build_overload_name): Split out from here.
1560         (build_static_name): Use build_qualified_name.
1561         * decl.c (cp_finish_decl): Statics in extern inline functions
1562         have comdat linkage.
1563         (start_function): Initialize static_labelno.
1564
1565 Thu Jul 17 11:20:17 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
1566
1567         * class.c (finish_struct_methods): Add check of warn_ctor_dtor_privacy
1568         before "all member functions in class [] are private".
1569
1570 Wed Jul 16 23:47:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
1571
1572         * lex.c (do_scoped_id): convert_from_reference.
1573         * init.c (build_offset_ref): Likewise.
1574
1575 Wed Jul 16 12:34:29 1997  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
1576
1577         * error.c (dump_expr): Check TREE_OPERAND before dump_expr_list.
1578
1579 Mon Jul 14 03:23:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
1580
1581         * typeck.c (get_member_function_from_ptrfunc): Promote index
1582         before saving it.
1583
1584 Sun Jul 13 00:11:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
1585
1586         * tree.c (layout_basetypes): Move non-virtual destructor warning.
1587         * decl.c (xref_basetypes): Remove non-virtual destructor warning.
1588
1589 Sat Jul 12 12:47:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
1590
1591         * decl.c (grokdeclarator): Call add_defarg_fn for the function
1592         type, too.
1593         * lex.c (add_defarg_fn): Adjust.
1594         (do_pending_defargs): Adjust.  Don't skip the first parm.
1595
1596 Fri Jul 11 01:39:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
1597
1598         * decl.c (build_enumerator): Global enumerators are also readonly.
1599
1600         * rtti.c (build_dynamic_cast_1): Renamed from build_dynamic_cast.
1601         (build_dynamic_cast): Call it and convert_from_reference.
1602
1603         * lex.c (add_defarg_fn): New fn.
1604         (snarf_defarg): Don't add to defarg_types.
1605         (do_pending_defargs): Lose defarg_types.  All fns we process now
1606         have defargs.
1607         * decl.c (grokfndecl): Call add_defarg_fn.
1608
1609         * Makefile.in (CONFLICTS): Expect 18 s/r conflicts.
1610         * cp-tree.def: Add DEFAULT_ARG.
1611         * spew.c (yylex): Call snarf_defarg as appropriate.
1612         * parse.y: New tokens DEFARG and DEFARG_MARKER.
1613         (defarg_again, pending_defargs, defarg, defarg1): New rules.
1614         (structsp): Use pending_defargs.
1615         (parms, full_parm): Use defarg.
1616         * lex.c (init_lex): Initialize inline_text_firstobj.
1617         (do_pending_inlines): Never pass the obstack to feed_input.
1618         (process_next_inline): Call end_input instead of restore_pending_input.
1619         (clear_inline_text_obstack, reinit_parse_for_expr, do_pending_defargs,
1620         finish_defarg, feed_defarg, snarf_defarg, maybe_snarf_defarg): New fns.
1621         * input.c (end_input): New fn.
1622         (sub_getch): At the end of some fed input, just keep returning EOF
1623         until someone calls end_input.
1624         Remove 'obstack' field from struct input_source.
1625         * decl.c (grokparms): Handle DEFAULT_ARG.
1626         (replace_defarg): New fn.
1627         * cp-tree.h (DEFARG_LENGTH, DEFARG_POINTER): New macros.
1628
1629 Wed Jul  9 13:44:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
1630
1631         * call.c (implicit_conversion): If nothing else works, try binding
1632         an rvalue to a reference.
1633
1634 Wed Jul  9 13:04:38 1997  Geoffrey Noer  <noer@cygnus.com>
1635
1636         * decl.c (init_decl_processing): Fix Jun 30 patch -- move
1637         ifndef for Cygwin32 to include SIGSEGV.
1638
1639 Thu Jul  3 01:44:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
1640
1641         * class.c (finish_struct_1): Only complain about pointers without
1642         copy stuff if there are any constructors.
1643
1644         * rtti.c (build_dynamic_cast): Call complete_type on the types.
1645
1646         * decl.c (grokfndecl): If the function we chose doesn't actually
1647         match, die.
1648
1649         * decl2.c (grokclassfn): Don't specify 'const int' for the
1650         artificial destructor parm.
1651
1652         * pt.c (type_unification): If we are called recursively, nothing
1653         decays.
1654
1655 Mon Jun 30 17:53:21 1997  Geoffrey Noer  <noer@cygnus.com>
1656
1657         * decl.c (init_decl_processing): Stop trying to catch signals
1658         other than SIGABRT since the Cygwin32 library doesn't support
1659         them correctly yet.  This fixes a situation in which g++ causes
1660         a hang on SIGSEGVs and other such signals in our Win32-hosted
1661         tools.
1662
1663 Mon Jun 30 14:50:01 1997  Jason Merrill  <jason@yorick.cygnus.com>
1664
1665         * tree.c (mapcar, case CALL_EXPR): Handle all the parse node data.
1666
1667 Fri Jun 27 15:18:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
1668
1669         * typeck2.c (store_init_value): Always return the value if our
1670         type needs constructing.
1671
1672         * method.c (hack_identifier): Convert class statics from
1673         reference, too.
1674
1675 Thu Jun 26 11:44:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
1676
1677         * Make-lang.in (cplib2.ready): Add $(LANGUAGES) dependency.
1678
1679 Thu Jun 19 16:49:28 1997  Mike Stump  <mrs@cygnus.com>
1680
1681         * typeck.c (c_expand_return): Make sure we clean up temporaries at
1682         the end of return x;
1683
1684 Thu Jun 19 12:28:43 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
1685
1686         * lex.c (check_for_missing_semicolon): Also check for CV_QUALIFIER.
1687
1688 Tue Jun 17 18:35:57 1997  Mike Stump  <mrs@cygnus.com>
1689
1690         * except.c (expand_builtin_throw): Add support
1691         -fno-sjlj-exceptions -fPIC exception handling on the SPARC.
1692
1693 Mon Jun 16 01:24:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
1694
1695         * repo.c (extract_string): Null-terminate.
1696
1697         * cp-tree.h (TI_SPEC_INFO): New macro.
1698         (CLASSTYPE_TI_SPEC_INFO): New macro.
1699         * pt.c (push_template_decl): Correctly determine # of template parms
1700         for partial specs.
1701
1702         * call.c (compare_ics): Really fix 'this' conversions.
1703
1704         * pt.c (do_decl_instantiation): Don't crash on explicit inst of
1705         non-template fn.
1706
1707         * pt.c (push_template_decl): Complain about mismatch in # of
1708         template parms between a class template and a member template.
1709
1710 Sun Jun 15 02:38:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
1711
1712         * method.c (synthesize_method): You can't call
1713         function_cannot_inline_p after finish_function.
1714         * decl.c (finish_function): Turn on flag_inline_functions and turn
1715         off DECL_INLINE before handing a synthesized method to the
1716         backend.
1717
1718 Thu Jun 12 17:35:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
1719
1720         * method.c (synthesize_method): Remove July 30 change to never set
1721         DECL_INLINE if at_eof.
1722
1723 Thu Jun 12 15:25:08 1997  Mike Stump  <mrs@cygnus.com>
1724
1725         * xref.c (GNU_xref_member): Ensure that the node has a
1726         decl_lang_specific part before checking DECL_FRIEND_P.
1727
1728 Thu Jun 12 12:36:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
1729
1730         * pt.c (instantiate_class_template): Diagnose non-class types used
1731         as bases.
1732
1733 Wed Jun 11 17:33:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
1734
1735         * typeck.c (build_conditional_expr): Use convert_for_initialization
1736         instead of convert_and_check.
1737
1738 Wed Jun 11 12:31:33 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
1739
1740         * parse.y (typespec): Don't pedwarn for typeof.
1741
1742 Tue Jun 10 00:22:09 1997  Jason Merrill  <jason@yorick.cygnus.com>
1743
1744         * repo.c (finish_repo): Only check changes if we would write a
1745         repo file.
1746
1747         * call.c (compare_ics): Fix handling of 'this' conversions.
1748
1749         * pt.c (do_decl_instantiation): Support static data too.  Rename
1750         from do_function_instantiation.
1751         * cp-tree.h: Adjust.
1752         * parse.y: Adjust.
1753
1754         * repo.c (extract_string): New fn.
1755         (get_base_filename): Use it.
1756         (init_repo): Compare old args with current args.
1757
1758 Mon Jun  9 14:25:30 1997  Mike Stump  <mrs@cygnus.com>
1759
1760         * Makefile.in, Make-lang.in: Protect C-ls with a comment
1761         character, idea from Paul Eggert <eggert@twinsun.com>.
1762
1763 Mon Jun  9 01:52:03 1997  Jason Merrill  <jason@yorick.cygnus.com>
1764
1765         * typeck.c (c_expand_return): Be more persistent in looking for
1766         returned temps.
1767
1768         * cvt.c (build_up_reference): Use NOP_EXPR for switching from
1769         pointer to reference.
1770
1771         * class.c (build_vbase_path): Don't do anything if PATH has no steps.
1772
1773 Sun Jun  8 03:07:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
1774
1775         * init.c (build_member_call, build_offset_ref):
1776         Use do_scoped_id instead of do_identifier.
1777
1778         * cvt.c (convert): Remove bogosity.
1779
1780 Sat Jun  7 20:50:17 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
1781
1782         * cvt.c (build_up_reference): Do checks of ARGTYPE and
1783         TARGET_TYPE before trying to use get_binfo.
1784
1785 Fri Jun  6 17:36:39 1997  Jason Merrill  <jason@yorick.cygnus.com>
1786
1787         * cvt.c (build_up_reference): Call get_binfo to get access control.
1788
1789         * decl2.c (import_export_decl): If we don't support weaks, leave
1790         statics undefined.
1791
1792 Fri Jun  6 15:55:49 1997  Mike Stump  <mrs@cygnus.com>
1793
1794         * except.c (expand_builtin_throw): Add support for machines that
1795         cannot access globals after throw's epilogue when
1796         -fno-sjlj-exceptions is used.
1797
1798 Thu Jun  5 16:28:43 1997  Jason Merrill  <jason@yorick.cygnus.com>
1799
1800         * parse.y: 'std::' becomes '::'.
1801         * lex.c (real_yylex): Remove 'namespace' warning.
1802         * init.c (build_member_call): Ignore 'std::'.
1803         (build_offset_ref): Likewise.
1804         * decl2.c (do_using_directive): Ignore 'using namespace std;'.
1805         (do_toplevel_using_decl): Ignore 'using std::whatever'.
1806         * decl.c (push_namespace): Just sorry.
1807         (pop_namespace): Nop.
1808         (init_decl_processing): Declare std namespace.
1809
1810 Tue Jun  3 18:08:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
1811
1812         * search.c (push_class_decls): A name which ambiguously refers to
1813         several instantiations of the same template just refers to the
1814         template.
1815
1816 Tue Jun  3 12:30:40 1997  Benjamin Kosnik  <bkoz@cirdan.cygnus.com>
1817
1818         * decl.c (build_enumerator): Fix problem with unsigned long
1819         enumerated values being smashed to ints, causing overflow
1820         when computing next enumerated value (for enum values around
1821         MAX_VAL).
1822
1823 Mon Jun  2 17:40:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
1824
1825         * typeck.c (build_component_ref): Only call mark_used on a decl.
1826
1827 Thu May 29 15:54:17 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
1828
1829         * typeck.c (build_c_cast): Make the check for a ptr to function
1830         more specific before possible default_conversion call.
1831
1832 Thu May 29 13:02:06 1997  Mike Stump  <mrs@cygnus.com>
1833
1834         * except.c (expand_exception_blocks): Simplify and fix and make
1835         sure we don't end a region in a sequence, as expand_end_bindings
1836         doesn't like it.
1837
1838 Wed May 28 17:08:03 1997  Mike Stump  <mrs@cygnus.com>
1839
1840         * except.c (init_exception_processing): Mark terminate as not
1841         returning so that the optimizer can optimize better.
1842
1843 Tue May 27 19:49:19 1997  Mike Stump  <mrs@cygnus.com>
1844
1845         * cvt.c (convert): Don't do any extra work, if we can avoid it
1846         easily.
1847
1848 Tue May 27 18:21:47 1997  Mike Stump  <mrs@cygnus.com>
1849
1850         * *.[chy]: Change cp_convert to ocp_convert, change convert to
1851         cp_convert.  convert is now reserved for the backend, and doesn't
1852         have the semantics a frontend person should ever want.
1853
1854 Fri May 23 10:58:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
1855
1856         * lang-specs.h: Define __EXCEPTIONS if exceptions are enabled.
1857         Lose -traditional support.
1858
1859 Thu May 22 15:41:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
1860
1861         * rtti.c (get_tinfo_var): Use TYPE_PRECISION (sizetype).
1862
1863         * parse.y (self_reference): Do it for templates, too.
1864         * class.c (pushclass): Don't overload_template_name; the alias
1865         generated by build_self_reference serves the same purpose.
1866
1867         * tree.c (list_hash): Make static, take more args.
1868         (list_hash_lookup): Likewise.
1869         (list_hash_add): Make static.
1870         (list_hash_canon): Lose.
1871         (hash_tree_cons): Only build a new node if one isn't already in the
1872         hashtable.
1873         (hash_tree_chain): Use hash_tree_cons.
1874         * cp-tree.h: Adjust.
1875         * decl.c (grokfndecl): Just check IDENTIFIER_GLOBAL_VALUE instead
1876         of calling lookup_name.
1877
1878 Wed May 21 18:24:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
1879
1880         * pt.c (instantiate_class_template): TYPE_VALUES for an enum
1881         doesn't refer to the CONST_DECLs.
1882
1883 Tue May 20 21:09:32 1997  Bob Manson  <manson@charmed.cygnus.com>
1884
1885         * rtti.c (get_tinfo_var): Either INT_TYPE_SIZE or 32, whichever
1886         is bigger.
1887         (expand_class_desc): Convert the last argument to a sizetype.
1888
1889 Tue May 20 13:55:57 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
1890
1891         * gxx.gperf (__complex, __complex__, __imag, __imag__, __real,
1892         __real__): Add reswords.
1893         * hash.h: Regenerate.
1894         * lex.h (rid): Add RID_COMPLEX.
1895         (RID_LAST_MODIFIER): Set to RID_COMPLEX.
1896         * lex.c (init_lex): Add building of RID_COMPLEX.
1897         (real_yylex): General cleanup in line with what c-lex.c also has,
1898         sans the cruft for traditional; add handling of SPEC_IMAG, complex
1899         types, and imaginary numeric constants.
1900         * parse.y (REALPART, IMAGPART): Add tokens.
1901         (unary_expr): Add REALPART and IMAGPART rules.
1902         * cp-tree.h (complex_{integer,float,double,long}_type_node): Declare.
1903         * decl.c (complex_{integer,float,double,long}_type_node): Define
1904         types.
1905         (init_decl_processing): Set up the types.
1906         (grokdeclarator): Add handling of RID_COMPLEX.  Set and use
1907         DEFAULTED_INT instead of EXPLICIT_INT when we default to int type.
1908         * call.c (build_new_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
1909         * cvt.c (cp_convert): Handle COMPLEX_TYPE.
1910         * error.c (dump_type_prefix, dump_type, dump_type_suffix): Add
1911         COMPLEX_TYPE case.
1912         * method.c (build_overload_name): Add handling of the different
1913         COMPLEX_TYPEs, prefixing them with `J'.
1914         * pt.c (process_template_parm): Don't let them use a COMPLEX_TYPE
1915         as a template parm.
1916         (uses_template_parms, tsubst, unify): Add COMPLEX_TYPE case.
1917         * tree.c (lvalue_p): Add REALPART_EXPR and IMAGPART_EXPR cases.
1918         (mapcar): Handle COMPLEX_CST.
1919         * typeck.c (build_binary_op_nodefault): Handle COMPLEX_TYPE.
1920         (common_type): Add code for complex types.
1921         (build_unary_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
1922         (convert_for_assignment): Likewise.
1923         (mark_addressable): Add REALPART_EXPR and IMAGPART_EXPR cases.
1924
1925 Mon May 19 12:26:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
1926
1927         * pt.c (tsubst): Don't pass the MINUS_EXPR for an array domain to
1928         tsubst_expr, as it might try to do overload resolution.
1929
1930 Sat May 17 10:48:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
1931
1932         * pt.c (instantiate_class_template): Oops.
1933
1934 Fri May 16 14:23:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
1935
1936         * cp-tree.def: Add TAG_DEFN.
1937         * pt.c (tsubst_enum): New fn.
1938         (instantiate_class_template): Use it.
1939         (tsubst_expr): Support TAG_DEFN.
1940         (tsubst): Support local enums.
1941         (tsubst_copy): Likewise.
1942         * decl.c (finish_enum): Likewise.
1943         (start_enum): If this is a local enum, switch to permanent_obstack.
1944
1945 Wed May 14 19:08:28 1997  Mike Stump  <mrs@cygnus.com>
1946
1947         * decl.c (store_parm_decls): Set last_parm_cleanup_insn here.
1948         (finish_function): Put the base init code for constructors just
1949         after the parm cleanup insns.
1950         (struct cp_function): Add last_parm_cleanup_insn.
1951         (push_cp_function_context): Likewise.
1952         (pop_cp_function_context): Likewise.
1953
1954 Tue May 13 15:51:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
1955
1956         * pt.c (tsubst_copy): Handle BIT_NOT_EXPR.
1957
1958 Wed May  7 11:17:59 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
1959
1960         * method.c (emit_thunk) [ASM_OUTPUT_MI_THUNK]: Build up the RTL
1961         for THUNK_FNDECL before we switch to temporary allocation.
1962
1963 Mon May  5 14:46:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
1964
1965         * call.c (build_new_op): Handle null arg2 for ?:.
1966
1967 Thu May  1 18:26:37 1997  Mike Stump  <mrs@cygnus.com>
1968
1969         * except.c (expand_exception_blocks): Ensure that we flow through
1970         the end of the exception region for the exception specification.
1971         Move exception region for the exception specification in, so that
1972         it doesn't protect the parm cleanup.  Remove some obsolete code.
1973         * decl.c (store_parm_decls): Likewise.
1974         (finish_function): Likewise.
1975
1976 Tue Apr 29 15:38:54 1997  Jason Merrill  <jason@yorick.cygnus.com>
1977
1978         * init.c (build_new): Fix nothrow handling.
1979
1980 Tue Apr 29 14:29:50 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
1981
1982         * init.c (emit_base_init): Don't warn about the initialization
1983         list for an artificial member.
1984
1985 Fri Apr 25 17:47:59 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
1986
1987         * expr.c (do_case): Handle !START case for the error msg.
1988
1989 Fri Apr 25 11:55:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
1990
1991         * decl2.c, lang-options.h: New option -Weffc++.
1992         * class.c, decl.c, init.c, typeck.c: Move Effective C++ warnings
1993         to -Weffc++.
1994
1995         * decl2.c (finish_prevtable_vardecl): Change NO_LINKAGE_HEURISTICS
1996         to MULTIPLE_SYMBOL_SPACES.
1997
1998 Wed Apr 23 18:06:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
1999
2000         * method.c (emit_thunk, generic case): Set current_function_is_thunk.
2001
2002         * method.c (emit_thunk, macro case): Set up DECL_RESULT.
2003
2004         * typeck.c (c_expand_return): Don't complain about returning void
2005         to void in an artificial function.
2006         * method.c (make_thunk): Change settings of READONLY/VOLATILE,
2007         don't set DECL_RESULT, set DECL_ARTIFICIAL.
2008         (emit_thunk, generic code): Also set up DECL_LANG_SPECIFIC.
2009
2010 Wed Apr 23 14:43:06 1997  Mike Stump  <mrs@cygnus.com>
2011
2012         * init.c (init_decl_processing): Add support for setjmp/longjmp based
2013         exception handling.
2014         * except.c (init_exception_processing): Likewise.
2015         (expand_end_catch_block): Likewise.
2016         (expand_exception_blocks): Likewise.
2017         (expand_throw): Likewise.
2018         * exception.cc (__default_terminate): Likewise.
2019
2020         * init.c (perform_member_init): Use new method of expr level
2021         cleanups, instead of cleanups_this_call and friends.
2022         (emit_base_init): Likewise.
2023         (expand_aggr_vbase_init_1): Likewise.
2024         (expand_vec_init): Likewise.
2025         * decl.c (cp_finish_decl): Likewise.
2026         (expand_static_init): Likewise.
2027         (store_parm_decls): Likewise.
2028         (cplus_expand_expr_stmt): Likewise.
2029         * decl2.c (finish_file): Likewise.
2030
2031         * Make-lang.in (exception.o): Ok to compile with -O now.
2032
2033         * decl.c (maybe_build_cleanup_1): We no longer have to unsave, as
2034         we know it will be done later by the backend.
2035
2036         * decl2.c (lang_f_options): Remove support for short temps.
2037         * lang-options.h: Likewise.
2038
2039 Wed Apr 23 04:12:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
2040
2041         * tree.c (varargs_function_p): New fn.
2042         * method.c (emit_thunk): Replace broken generic code with code to
2043         generate a heavyweight thunk function.
2044
2045 Tue Apr 22 02:45:18 1997  Jason Merrill  <jason@yorick.cygnus.com>
2046
2047         * pt.c (process_template_parm): pedwarn about floating-point parms.
2048
2049         * decl.c (grokdeclarator): inline no longer implies static.
2050
2051         * spew.c (yylex): Always return the TYPE_DECL if we got a scope.
2052
2053 Mon Apr 21 15:42:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
2054
2055         * class.c (check_for_override): The signature of an overriding
2056         function is not changed.
2057
2058         * call.c (build_over_call): Move setting of conv into the loop.
2059         Note: this change, along with the related changes of the 18th thru
2060         the 20th of April, fix an infinite loop problem in conversions.
2061
2062 Sun Apr 20 16:24:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
2063
2064         * call.c (build_user_type_conversion_1): Really ignore rvalue
2065         conversions when looking for a REFERENCE_TYPE.
2066
2067         * cvt.c (build_up_reference): Eviscerate, use build_unary_op.
2068         * cp-tree.h (TREE_REFERENCE_EXPR): #if 0.
2069         * typeck.c (decay_conversion): Don't set TREE_REFERENCE_EXPR.
2070         (build_unary_op): Likewise.
2071         * call.c (build_over_call): See through a CONVERT_EXPR around the
2072         ADDR_EXPR for on a temporary.
2073         * typeck.c (c_expand_return): See through a CONVERT_EXPR around
2074         the ADDR_EXPR for a local variable.
2075
2076 Fri Apr 18 12:11:33 1997  Jason Merrill  <jason@yorick.cygnus.com>
2077
2078         * call.c (build_user_type_conversion_1): If we're trying to
2079         convert to a REFERENCE_TYPE, only consider lvalue conversions.
2080         (build_new_function_call): Print candidates.
2081         (implicit_conversion): Try a temp binding if the lvalue conv is BAD.
2082         (reference_binding): Binding a temporary of a reference-related type
2083         is BAD.
2084
2085 Thu Apr 17 14:37:22 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
2086
2087         * inc/typeinfo (type_info::before): Add cv-qualifier-seq.
2088         * tinfo2.cc (type_info::before): Likewise.
2089
2090 Mon Apr 14 12:38:17 1997  Jason Merrill  <jason@yorick.cygnus.com>
2091
2092         * call.c (implicit_conversion): Oops.
2093
2094 Fri Apr 11 02:18:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
2095
2096         * call.c (implicit_conversion): Try to find a reference conversion
2097         before binding a const reference to a temporary.
2098
2099 Wed Apr  2 12:51:36 1997  Mike Stump  <mrs@cygnus.com>
2100
2101         * exception.cc (__default_unexpected): Call terminate by default,
2102         so that if the user overrides terminate, the correct function will
2103         be called.
2104
2105 Wed Mar 19 14:14:45 1997  Mike Stump  <mrs@cygnus.com>
2106
2107         * parse.y (left_curly): Avoid trying to use any fields of
2108         error_mark_node, as there aren't any.
2109
2110 Thu Mar 13 16:33:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
2111
2112         * lex.c (do_identifier): Avoid breaking on overloaded methods
2113         as default arguments.
2114
2115 Wed Mar 12 13:55:10 1997  Hans-Peter Nilsson  <Hans-Peter.Nilsson@axis.se>
2116
2117         * call.c (add_template_candidate): Initialize the variable "dummy".
2118
2119 Mon Mar 10 15:13:14 1997  Brendan Kehoe  <brendan@canuck.cygnus.com>
2120
2121         * decl.c (start_decl): Make sure TYPE isn't an error_mark_node
2122         before we try to use TYPE_SIZE and TREE_CONSTANT on it.
2123
2124 Fri Mar  7 13:19:36 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
2125
2126         * cp-tree.h (comp_ptr_ttypes, more_specialized): Add decl.
2127         (debug_binfo): Delete decl, not needed.
2128
2129         * tree.c (fnaddr_from_vtable_entry, function_arg_chain,
2130         promotes_to_aggr_type): Delete fns.
2131         * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY,
2132         SET_FNADDR_FROM_VTABLE_ENTRY, FUNCTION_ARG_CHAIN,
2133         PROMOTES_TO_AGGR_TYPE): Delete alternates to #if 1.
2134
2135         * decl.c (pending_invalid_xref{,_file,_line}): Delete unused vars.
2136
2137         * friend.c (is_friend_type): Delete fn.
2138         * cp-tree.h (is_friend_type): Delete decl.
2139
2140         * decl.c (original_result_rtx, double_ftype_double,
2141         double_ftype_double_double, int_ftype_int, long_ftype_long,
2142         float_ftype_float, ldouble_ftype_ldouble, last_dtor_insn): Make static.
2143         * typeck.c (original_result_rtx, warn_synth): Delete extern decls.
2144
2145         * decl.c (push_overloaded_decl{,_top_level}): Make static, adding
2146         fwd decls.
2147         * cp-tree.h (push_overloaded_decl{,_top_level}): Delete decls.
2148
2149         * decl.c (pushdecl_nonclass_level): #if 0, unused.
2150         * cp-tree.h (pushdecl_nonclass_level): #if 0 decl.
2151
2152         * lex.c (reinit_lang_specific): #if 0, unused.
2153         * cp-tree.h (reinit_lang_specific): #if 0 decl.
2154
2155         * decl.c (revert_static_member_fn): Make static, adding fwd decl.
2156         * cp-tree.h (revert_static_member_fn): Delete decl.
2157
2158         * class.c (root_lang_context_p): Delete fn.
2159         * cp-tree.h (root_lang_context_p): Delete decl.
2160
2161         * decl.c (set_current_level_tags_transparency): #if 0, unused.
2162         * cp-tree.h (set_current_level_tags_transparency): #if 0 decl.
2163
2164         * lex.c (set_vardecl_interface_info): Make static.
2165         * cp-tree.h (set_vardecl_interface_info): Delete decl.
2166
2167         * call.c (find_scoped_type): Make static.
2168         * cp-tree.h (find_scoped_type): Delete decl.
2169
2170         * search.c (convert_pointer_to_vbase): Make static.
2171         * cp-tree.h (convert_pointer_to_vbase): Delete decl.
2172
2173         * decl.c (const_ptr_type_node): Likewise.
2174         * cp-tree.h (const_ptr_type_node): Delete decl.
2175
2176         * typeck.c (common_base_type): Make static.
2177         * cp-tree.h (common_base_types): Delete erroneous decl.
2178
2179         * pt.c (classtype_mangled_name): Make static.
2180         * cp-tree.h (classtype_mangled_name): Delete decl.
2181
2182         * lex.c (check_newline): Make static.
2183         * cp-tree.h (check_newline): Delete decl.
2184
2185         * typeck.c (build_x_array_ref): Delete fn, same idea as
2186         grok_array_decl.
2187         * cp-tree.h (build_x_array_ref): Delete decl.
2188
2189         * lex.c (copy_decl_lang_specific): Delete fn, same idea as
2190         copy_lang_decl.
2191         * cp-tree.h (copy_decl_lang_specific): #if 0 decl.
2192
2193         * class.c (build_vtable_entry): Make static.
2194         * cp-tree.h (build_vtable_entry): Delete decl.
2195
2196         * class.c (build_vbase_pointer): Make static.
2197         * cp-tree.h (build_vbase_pointer): Delete decl.
2198
2199         * sig.c (build_sptr_ref): Add forward decl and make static.
2200         * cp-tree.h (build_sptr_ref): Delete decl.
2201
2202         * call.c (build_new_method_call): Add forward decl and make static.
2203         * cp-tree.h (build_new_method_call): Delete decl.
2204
2205         * call.c (build_object_call): Make static.
2206         * class.c (check_for_override, complete_type_p, mark_overriders):
2207         Likewise.
2208         * decl.c (cp_function_chain): Likewise.
2209         * lex.c (set_typedecl_interface_info, reinit_parse_for_block):
2210         Likewise.
2211         * pt.c (comp_template_args, get_class_bindings, push_tinst_level):
2212         Likewise.
2213         * tree.c (build_cplus_array_type_1): Likewise.
2214         * typeck.c (comp_ptr_ttypes_{const,real,reinterpret}): Likewise.
2215         (comp_target_parms): Likewise.
2216
2217         * init.c (build_builtin_call): Make static.
2218         * cp-tree.h (build_builtin_call): Delete decl.
2219
2220         * typeck.c (binary_op_error): Delete decl.
2221         * cp-tree.h (binary_op_error): Likewise.
2222
2223 Thu Mar  6 16:13:52 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
2224
2225         * call.c (build_method_call): Compare against error_mark_node
2226         directly, rather than the ERROR_MARK tree code.
2227         * cvt.c (cp_convert): Likewise.
2228         * decl.c (print_binding_level): Likewise.
2229         (duplicate_decls): Likewise.
2230         (grokdeclarator): Likewise.
2231         (grokdeclarator): Likewise.
2232         * init.c (expand_aggr_init_1): Likewise.
2233         (decl_constant_value): Likewise.
2234         * method.c (build_opfncall): Likewise.
2235         (hack_identifier): Likewise.
2236         * typeck.c (build_modify_expr): Likewise.
2237
2238         * typeck.c (build_c_cast): Don't decl TYPE as register tree.
2239
2240 Sun Mar  2 02:54:36 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
2241
2242         * pt.c (unify): Strip NOP_EXPR wrappers before unifying integer values.
2243
2244         * pt.c (coerce_template_parms): Add new error message.
2245
2246         * method.c (build_overload_value): Implement name mangling for
2247         floating-point template arguments.
2248
2249         * method.c (build_overload_int, icat, dicat): Fix mangling of template
2250         arguments whose absolute value doesn't fit in a signed word.
2251
2252 Mon Mar  3 12:14:54 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
2253
2254         * friend.c: New file; put all of the friend stuff in here.
2255         * init.c: Instead of here.
2256         * Makefile.in (CXX_OBJS): Add friend.o.
2257         (friend.o): Add dependencies.
2258         * Make-lang.in (CXX_SRCS): Add $(srcdir)/cp/friend.c.
2259
2260 Sun Mar  2 11:04:43 1997  Jason Merrill  <jason@yorick.cygnus.com>
2261
2262         * call.c (build_scoped_method_call): Complain if the scope isn't a
2263         base.
2264
2265 Wed Feb 26 11:31:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
2266
2267         * parse.y (left_curly): Don't crash on erroneous type.
2268
2269         * init.c (build_delete): Fix type of ref.
2270
2271 Tue Feb 25 12:41:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
2272
2273         * search.c (get_vbase_1): Renamed from get_vbase.
2274         (get_vbase): Wrapper, now non-static.
2275         (convert_pointer_to_vbase): Now static.
2276
2277         * call.c (build_scoped_method_call): Accept a binfo for BASETYPE.
2278         * init.c (build_delete): Pass one.
2279         (build_partial_cleanup_for): Use build_scoped_method_call.
2280         * decl.c (finish_function): Pass a binfo.
2281
2282 Mon Feb 24 15:00:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
2283
2284         * call.c (build_over_call): Only synthesize non-trivial copy ctors.
2285
2286         * typeck.c (build_c_cast): Lose other reference to flag.
2287
2288         * call.c (build_field_call): Don't look for [cd]tor_identifier.
2289         * decl2.c (delete_sanity): Remove meaningless use of
2290         LOOKUP_HAS_IN_CHARGE.
2291         * decl.c (finish_function): Use build_scoped_method_call instead
2292         of build_delete for running vbase dtors.
2293         * init.c (build_delete): Call overload resolution code instead of
2294         duplicating it badly.
2295
2296 Thu Feb 20 15:12:15 1997  Jason Merrill  <jason@yorick.cygnus.com>
2297
2298         * call.c (build_over_call): Call mark_used before trying to elide
2299         the call.
2300
2301         * decl.c (implicitly_declare): Don't set DECL_ARTIFICIAL.
2302
2303 Wed Feb 19 11:18:53 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
2304
2305         * typeck.c (build_modify_expr): Always pedwarn for a cast to
2306         non-reference used as an lvalue.
2307
2308 Wed Feb 19 10:35:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
2309
2310         * cvt.c (cp_convert_to_pointer): Convert from 0 to a pmf properly.
2311
2312 Tue Feb 18 15:40:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
2313
2314         * parse.y (handler): Fix template typo.
2315
2316 Sun Feb 16 02:12:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
2317
2318         * error.c (lang_decl_name): New fn.
2319         * tree.c (lang_printable_name): Use it.
2320
2321 Fri Feb 14 16:57:05 1997  Mike Stump  <mrs@cygnus.com>
2322
2323         * g++spec.c: Include config.h so that we can catch bzero #defines
2324         from the config file.
2325
2326 Tue Feb 11 13:50:48 1997  Mike Stump  <mrs@cygnus.com>
2327
2328         * new1.cc: Include a declaration for malloc, to avoid warning, and
2329         avoid lossing on systems that require one (ones that define malloc
2330         in xm.h).
2331
2332 Mon Feb 10 22:51:13 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
2333
2334         * decl2.c (max_tinst_depth): New variable.
2335         (lang_decode_option): Parse "-ftemplate-depth-NN" command line
2336         option.
2337         * pt.c (max_tinst_depth): Variable moved.
2338         * lang-options.h: Declare "-ftemplate-depth-NN" command line option
2339         as legal.
2340
2341 Fri Feb  7 15:43:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
2342
2343         * decl.c (xref_basetypes): Allow a base class that depends on
2344         template parms to be incomplete.
2345
2346         * decl2.c (build_expr_from_tree): Support typeid(type).
2347         * rtti.c (get_typeid): Support templates.
2348         (expand_si_desc, expand_class_desc): Fix string length.
2349         (expand_ptr_desc, expand_attr_desc, expand_generic_desc): Likewise.
2350
2351 Tue Feb  4 11:28:24 1997  Jason Merrill  <jason@yorick.cygnus.com>
2352
2353         * pt.c (unify, case TEMPLATE_CONST_PARM): Use cp_tree_equal.
2354
2355         * pt.c (tsubst): Put it back for -fno-ansi-overloading.
2356
2357 Mon Feb  3 18:41:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
2358
2359         * pt.c (tsubst, case FUNCTION_DECL): Lose obsolete code that
2360         smashes together template and non-template decls of the same
2361         signature.
2362
2363 Thu Jan 30 19:18:00 1997  Jason Merrill  <jason@yorick.cygnus.com>
2364
2365         * pt.c (tsubst): Don't recurse for the type of a TYPENAME_TYPE.
2366
2367 Wed Jan 29 11:40:35 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
2368
2369         * decl.c (duplicate_decls): Next route, pedwarn about different
2370         exceptions if -pedantic *or* olddecl !DECL_IN_SYSTEM_HEADER.
2371
2372 Tue Jan 28 20:43:29 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
2373
2374         * cp-tree.h (HAS_DEFAULT_IMPLEMENTATION): Delete macro.
2375         (struct lang_type): Delete has_default_implementation member.
2376         Increase dummy to 21.
2377         * decl.c (start_method): Delete usage.
2378
2379         * cp-tree.h (build_call, null_ptr_cst_p, in_function_p,
2380         store_after_parms, start_decl_1, auto_function): Add decls.
2381         (get_arglist_len_in_bytes, declare_implicit_exception,
2382         have_exceptions_p, make_type_decl, typedecl_for_tag,
2383         store_in_parms, pop_implicit_try_blocks, push_exception_cleanup,
2384         build_component_type_expr, cplus_exception_name,
2385         {make,clear}_anon_parm_name, dont_see_typename): Removed decls.
2386         * call.c (build_this): Make static.
2387         (is_complete): Likewise.
2388         (implicit_conversion): Likewise.
2389         (reference_binding): Likewise.
2390         (standard_conversion): Likewise.
2391         (strip_top_quals): Likewise.
2392         (non_reference): Likewise.
2393         (build_conv): Likewise.
2394         (user_harshness): Likewise.
2395         (rank_for_ideal): Likewise.
2396         * decl.c (start_decl_1): Delete forward decl.
2397         (push_decl_level): Make static.
2398         (resume_binding_level): Make static.
2399         (namespace_bindings_p): Make static.
2400         (declare_namespace_level): Make static.
2401         (lookup_name_real): Make static.
2402         (duplicate_decls): Make static.  Take register off NEWDECL and
2403         OLDDECL parm decls.
2404         * decl2.c (get_sentry): Make static.
2405         (temp_name_p): Delete fn.
2406         * except.c (auto_function): Delete decl.
2407         * lex.c (handle_{cp,sysv}_pragma): Make static.
2408         (handle_sysv_pragma) [HANDLE_SYSV_PRAGMA]: Add forward decl.
2409         * method.c (do_build_{copy_constructor,assign_ref}): Make static.
2410         * pt.c (tsubst_expr_values): Make static.
2411         * rtti.c (combine_strings): Delete decl.
2412
2413 Tue Jan 28 16:40:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
2414
2415         * pt.c (push_template_decl): Handle getting a typedef.
2416
2417         * call.c (build_new_function_call): Complain about void arg.
2418
2419 Tue Jan 28 15:25:09 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
2420
2421         * decl.c (duplicate_decls): Give pedwarn of different exceptions
2422         if -pedantic, instead of olddecl !DECL_IN_SYSTEM_HEADER.
2423
2424 Mon Jan 27 19:21:29 1997  Mike Stump  <mrs@cygnus.com>
2425
2426         * except.c (expand_throw): Don't expand the cleanup tree here,
2427         since we are not going to write the rtl out.  Fixes problem with
2428         -g -O on SPARC.
2429
2430 Mon Jan 27 16:24:35 1997  Sean McNeil  <sean@mcneil.com>
2431
2432         * Make-lang.in: Add $(exeext) as necessary.
2433
2434 Mon Jan 27 13:20:39 1997  Mike Stump  <mrs@cygnus.com>
2435
2436         * parse.y (handler_seq): Must have at least one catch clause.
2437
2438 Sat Jan 25 12:00:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
2439
2440         * call.c (add_builtin_candidate): Restore ?: hack.
2441
2442         * decl.c (grok_op_properties): More warnings.
2443
2444 Sat Jan 25 08:50:03 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
2445
2446         * decl.c (duplicate_decls): On second thought, do it as a pedwarn
2447         still but only if !DECL_IN_SYSTEM_HEADER (olddecl).
2448
2449         * decl.c (duplicate_decls): Scale back to a warning, and only do
2450         'em if -pedantic.
2451
2452 Fri Jan 24 17:52:54 1997  Mike Stump  <mrs@cygnus.com>
2453
2454         * decl.c (duplicate_decls): pedwarn mismatched exception
2455         specifications.
2456
2457 Thu Jan 23 18:18:54 1997  Mike Stump  <mrs@cygnus.com>
2458
2459         * call.c (build_new_method_call): Don't display the invisible
2460         argument for controlling virtual bases.
2461
2462 Thu Jan 23 16:48:10 1997  Mike Stump  <mrs@cygnus.com>
2463
2464         * new: Add nothrow new and delete, bad_alloc and throw specifications
2465         for delete.
2466         * decl.c (init_decl_processing): Add throw specification for delete.
2467         * new.cc (nothrow): Define.
2468         * lex.c (real_yylex): Removing warning that throw and friends are
2469         keywords.
2470         * new1.cc (operator new (size_t sz, const nothrow_t&)): Define.
2471         * new2.cc (operator new[] (size_t sz, const nothrow_t&): Define.
2472         * Make-lang.in: Add new{1,2}.{cc,o}.
2473
2474 Thu Jan 23 16:39:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
2475
2476         * lex.c (cons_up_default_function): Fix return type of synth op=.
2477
2478         * init.c (emit_base_init): Add warnings for uninitialized members
2479         and bases.
2480
2481         * decl.c (xref_basetypes): Add warning for non-polymorphic type
2482         with destructor used as base type.
2483
2484         * decl.c (grok_op_properties): Add warning for op= returning void.
2485         * typeck.c (c_expand_return): Add warning for op= returning anything
2486         other than *this.
2487
2488         * class.c (finish_struct_1): Add warning for class with pointers
2489         but not copy ctor or copy op=.
2490
2491         * cp-tree.h (TI_PENDING_TEMPLATE_FLAG): New macro.
2492         * pt.c (add_pending_template): Use it instead of LANG_FLAG_0.
2493         (instantiate_template): If -fexternal-templates, add this
2494         instantiation to pending_templates.
2495
2496         * decl2.c (copy_assignment_arg_p): Disable old hack to support
2497         Booch components.
2498
2499 Tue Jan 21 18:32:04 1997  Mike Stump  <mrs@cygnus.com>
2500
2501         * cvt.c (cp_convert): pedwarn enum to pointer conversions.
2502
2503 Mon Jan 20 17:59:51 1997  Jason Merrill  <jason@yorick.cygnus.com>
2504
2505         * call.c (standard_conversion): Handle getting references.  Tack
2506         on RVALUE_CONV here.  Do it for non-class types, too.
2507         (reference_binding): Pass references to standard_conversion.
2508         (implicit_conversion): Likewise.
2509         (add_builtin_candidate): Disable one ?: kludge.
2510         (convert_like): Handle RVALUE_CONVs for non-class types.
2511         (joust): Disable the other ?: kludge.
2512
2513 Mon Jan 20 14:53:13 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
2514
2515         * decl.c (init_decl_processing): Add code to build up common
2516         function types beforehand, to avoid creation then removal of
2517         things already in the hash table.
2518
2519 Mon Jan 20 14:43:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
2520
2521         * decl.c (finish_function): Also zero out DECL_INCOMING_RTL for
2522         the arguments.
2523
2524         * error.c (dump_expr, TEMPLATE_CONST_PARM): Don't require
2525         current_template_parms.
2526
2527 Fri Jan 17 10:25:42 1997  Jason Merrill  <jason@yorick.cygnus.com>
2528
2529         * search.c (lookup_field): Don't return a function, check want_type.
2530
2531 Thu Jan 16 18:14:35 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
2532
2533         * init.c (build_new): Make sure PLACEMENT has a type.
2534
2535 Thu Jan 16 17:40:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
2536
2537         * init.c (build_new): Support new (nothrow).
2538
2539 Wed Jan 15 12:38:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
2540
2541         * pt.c (instantiate_decl): Also do push_to_top_level before setting
2542         up DECL_INITIAL.
2543
2544         * cp-tree.h (PARM_DEFAULT_FROM_TEMPLATE): New macro.
2545         * pt.c (tsubst): Defer instantiation of default args.
2546         * call.c (build_over_call): Until here.
2547
2548 Wed Jan 15 10:08:10 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
2549
2550         * search.c (lookup_field): Make sure we have an
2551         IDENTIFIER_CLASS_VALUE before we try to return it.
2552
2553 Thu Jan  9 07:19:01 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
2554
2555         * call.c (build_method_call): Delete unused var PARM.
2556         (build_overload_call_real): Likewise.
2557         (build_object_call): Delete unused var P.
2558         (build_new_op): Likewise.
2559         * decl.c (builtin_type_tdescs_{arr, len, max}): #if 0 out static
2560         var definitions, which are never used.
2561         (shadow_tag): Delete unused var FN.
2562         * expr.c (cplus_expand_expr): Delete unused var ORIGINAL_TARGET.
2563         * init.c (build_new): Delete unused var ALLOC_TEMP.
2564         * method.c (hack_identifier): Delete unused var CONTEXT.
2565         (do_build_copy_constructor): Delete unused var NAME.
2566         (synthesize_method): Delete unused var BASE.
2567         * pt.c (lookup_template_class): Delete unused var CODE_TYPE_NODE.
2568         * rtti.c (build_headof): Delete unused var VPTR.
2569         (get_typeid): Delete unused var T.
2570         * typeck.c (build_conditional_expr): Delete unused vars ORIG_OP1
2571         and ORIG_OP2.
2572         (build_ptrmemfunc): Delete unused vars U and NINDEX.
2573         * typeck2.c (build_functional_cast): Delete unused var BINFO.
2574
2575 Wed Jan  8 13:09:54 1997  Jason Merrill  <jason@yorick.cygnus.com>
2576
2577         * search.c (lookup_field): Use IDENTIFIER_CLASS_VALUE to look up
2578         things in a type being defined.
2579         * decl.c (finish_enum): Reverse the values so that they are in
2580         the correct order.
2581
2582         * pt.c (instantiate_class_template): Don't initialize
2583         BINFO_BASETYPES until the vector is filled out.
2584         (unify): Don't abort on conflicting bindings, just fail.
2585         (instantiate_decl): Do push_tinst_level before any tsubsting.
2586
2587         * method.c (build_overload_value): Handle getting a
2588         TEMPLATE_CONST_PARM for a pointer.
2589
2590 Tue Jan  7 14:00:58 1997  Jason Merrill  <jason@yorick.cygnus.com>
2591
2592         * init.c (expand_member_init): Don't give 'not a base' error for
2593         templates.
2594
2595         * pt.c (instantiate_decl): Call import_export_decl later.
2596
2597         * pt.c (instantiate_class_template): Return a value.
2598
2599         * parse.y (extension): New rule for __extension__.
2600         (extdef, unary_expr, decl, component_decl): Use it.
2601
2602 Tue Jan  7 09:20:28 1997  Mike Stump  <mrs@cygnus.com>
2603
2604         * class.c (base_binfo): Remove unused base_has_virtual member.
2605         (finish_base_struct): Likewise.
2606         (finish_struct_1): Likewise.
2607
2608
2609 \f
2610 Copyright (C) 1997 Free Software Foundation, Inc.
2611
2612 Copying and distribution of this file, with or without modification,
2613 are permitted in any medium without royalty provided the copyright
2614 notice and this notice are preserved.