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