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