OSDN Git Service

* call.c (build_op_delete_call): Use BASELINK_FUNCTIONS.
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2002-06-25  Mark Mitchell  <mark@codesourcery.com>
2
3         * call.c (build_op_delete_call): Use BASELINK_FUNCTIONS.
4         * class.c (handle_using_decl): Likewise.
5         (instantiate_type): Likewise.
6         * cp-tree.h (BASELINK_FUNCTIONS): New macro.
7         (xref_basetypes): Change prototype.
8         (begin_mem_initializers): New function.
9         (get_overloaded_fn): Likewise.
10         * decl.c (xref_basetypes): Simplify.
11         * error.c (dump_expr): Use BASELINK_FUNCTIONS.
12         * init.c (build_offset_ref): Likewise.
13         * parse.y (base_init): Use begin_mem_initializers().
14         (structsp): Adjust call to xref_basetypes.
15         * pt.c (determine_specialization): Use BASELINK_FUNCTIONS.
16         (instantiate_class_template): Adjust call to xref_basetypes.
17         * semantics.c (begin_mem_initializers): New function.
18         * tree.c (is_overloaded_fn): Use BASELINK_FUNCTIONS.
19         (really_overlaoded_fn): Likewise.
20         (get_overloaded_fn): New function.'
21         (get_first_fn): USe BASELINK_FUNCTIONS.
22         
23 2002-06-24  Mark Mitchell  <mark@codesourcery.com>
24
25         * cp-tree.h (SCALAR_TYPE_P): New macro.
26         (check_for_out_of_scope_variable): New function.
27         (at_class_scope_p): Likewise.
28         (finish_fname): Likewise.
29         * class.c (finish_struct): Use at_function_scope_p.
30         * decl.c (check_for_out_of_scope_variable): New function, split
31         out from do_identifier.
32         (finish_enum): Use at_function_scope_p.
33         * lex.c (do_identifier): Use check_for_out_of_scope_variable.
34         * parse.y (VAR_FUNC_NAME): Give it <ttype>.  Use finish_fname.
35         (primary): Use at_function_scope_p.
36         * search.c (at_class_scope_p): New function.
37         * semantics.c (finish_fname): Likewise.
38         (check_multiple_declarators): Use at_function_scope_p.
39         
40 2002-06-23  Mark Mitchell  <mark@codesourcery.com>
41
42         * parse.y (parse_scoped_id): New function.
43         (primary): Use it.
44         * cp-tree.h (do_scoped_id): Adjust declaration.
45         * lex.c (do_scoped_id): Remove call to yylex.
46         * decl2.c (build_expr_from_tree): Adjust use of do_scoped_id.
47         * typeck2.c (add_exception_specifier): Use tree_cons, rather than
48         expanding it inline.
49         
50 2002-06-23  Matt Thomas  <matt@3am-software.com>
51
52         * decl.c (finish_function): Change "#ifdef VMS_TARGET" to
53         "#if VMS_TARGET".
54
55 2002-06-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
56
57         * mangle.c (integer_type_codes): Const-ify.
58
59 2002-06-20  Richard Henderson  <rth@redhat.com>
60
61         PR c++/6747
62         * typeck.c (mark_addressable): Don't test TREE_ADDRESSABLE early.
63         Call put_var_into_stack.
64
65 2002-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
66
67         * spew.c (remove_last_token): Use ARRAY_SIZE in lieu of explicit
68         array size calculation.
69
70 2002-06-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
71
72         PR c++/6892
73         * pt.c (tsubst_expr): Handle FILE_STMT.
74
75 2002-06-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
76
77         PR c++/6723
78         * pt.c (lookup_template_class): Don't build complete argument of
79         BOUND_TEMPLATE_TEMPLATE_PARM if appeared as a default template
80         argument.
81
82 2002-06-19  Akim Demaille  <akim@epita.fr>
83
84         * parse.y (TYPENAME): Rename as tTYPENAME to avoid the clash with
85         decl.h's TYPENAME.
86         * spew.c, lex.c: Adjust.
87         * parse.y (explicit_instantiation): Add empty action to override
88         the default $$ = $1 where it introduces a type clash.
89
90 2002-06-14  Jason Merrill  <jason@redhat.com>
91
92         * semantics.c (begin_for_stmt): Push the 'for' scope before
93         adding the FOR_STMT.
94
95         C++ ABI changes.
96         * class.c (build_base_field): Set DECL_PACKED.
97         (layout_class_type): Don't use tail padding of PODs.
98         * mangle.c (write_unqualified_name): Fix template conversion op
99         mangling.
100
101 2002-06-16  Richard Henderson  <rth@redhat.com>
102
103         PR opt/6793
104         * tree.c (cp_cannot_inline_tree_fn): Don't short-circuit test
105         after template instantiation.
106
107 2002-06-16  Richard Henderson  <rth@redhat.com>
108
109         * cp-tree.h, decl2.c (flag_ms_extensions): Move to c-common.
110
111 2002-06-15  Gabriel Dos Reis  <gdr@codesourcery.com>
112
113         * cp-tree.h (compiler_error): Remove declaration.
114         * lex.c (compiler_error): Remove definition.
115
116 2002-06-14  Steve Ellcey  <sje@cup.hp.com>
117
118         * g++spec.c (LIBUNWIND): New.
119         (lang_specific_driver): Add it if USE_UNWIND_EXCEPTIONS is set.
120
121 2002-06-13  Jessica Han  <jessica@cup.hp.com>
122
123         * class.c (build_vtable): Use TARGET_VTABLE_ENTRY_ALIGN.
124         (build_vtbl_initializer): Honor TARGET_VTABLE_DATA_ENTRY_DISTANCE.
125         (build_vbase_offset_vtbl_entries): Likewise.
126         * rtti.c (build_headof): Likewise.
127         (get_tinfo_decl_dynamic): Likewise.
128         (create_pseudo_type_info): Likewise.
129
130 2002-06-12  Stan Shebs  <shebs@apple.com>
131
132         * mpw-config.in: Remove file, no longer used.
133         * mpw-make.sed: Ditto.
134
135 2002-06-07  Zack Weinberg  <zack@codesourcery.com>
136
137         * decl2.c: Update call to cpp_handle_option.
138
139 2002-06-07  H.J. Lu  (hjl@gnu.org)
140
141         * decl2.c (flag_use_cxa_atexit): Set to DEFAULT_USE_CXA_ATEXIT.
142
143 2002-06-06  Gabriel Dos Reis  <gdr@codesourcery.com>
144
145         * error.c (cp_error_at): Fix typo.
146
147 2002-06-04  Gabriel Dos Reis  <gdr@codesourcery.com>
148
149         * error.c (cp_diagnostic_starter): Adjust call.
150         (maybe_print_instantiation_context): Change prototype to take a
151         'diagnostic_info *'.
152         (print_instantiation_full_context): Likewise.
153         (print_instantiation_partial_context): Likewise.
154         (cp_diagnostic_starter): Likewise.
155         (cp_diagnostic_finalizer): Likewise.
156         (cp_print_error_function): Likewise.
157         (cp_printer): Take a secondary parameter as a 'text_info *'.
158         Remove output_state savings.  Adjust calls.
159
160 2002-06-03  Geoffrey Keating  <geoffk@redhat.com>
161
162         * pt.c (inline_parm_levels): Mark for GC.
163
164         * mangle.c (start_mangling): Allocate G.substitutions here...
165         (init_mangle): ... rather than here.
166         (finish_mangling): Clear the varray pointer when done with it.
167         * spew.c (yylexstring): Don't use VARRAY_FREE.
168         * search.c (bfs_walk): Don't use VARRAY_FREE.
169         * decl2.c (pending_statics): Use gengtype to mark.
170         (deferred_fns): Likewise.
171         (ssdf_decls): Likewise.
172         (init_decl2): Delete.
173         * decl.c (pop_from_top_level): Don't use VARRAY_FREE.
174         (cxx_init_decl_processing): Don't call init_decl2.
175         (cxx_pop_function_context): Don't use VARRAY_FREE.
176         * cp-tree.h (struct saved_scope): No need for special marking
177         of varrays.
178         (struct language_function): Likewise.
179         (local_classes): Use gengtype to mark.
180         (init_decl2): Delete prototype.
181         * class.c (init_class_processing): Don't use
182         ggc_add_tree_varray_root.
183         (build_vtbl_initializer): Don't use VARRAY_FREE.
184
185         * decl.c (typename_compare): Don't use same_type_p.
186
187         * decl.c: Include hashtab.h instead of hash.h.
188         (typename_hash): Update to use htab_h.
189         (typename_compare): Likewise.
190         (typename_htab): Use gengtype to mark.
191         (build_typename_type): Update to use htab_h.
192         * Make-lang.in (cp/decl.o): Use HASHTAB_H instead of hash.h.
193
194         * Make-lang.in (gt-cp-tree.h): New rule.
195         (cp/tree.o): Depend on gt-cp-tree.h.
196         * config-lang.in (gtfiles): Add cp/tree.c.
197         * tree.c: Include gt-cp-tree.h.
198         (list_hash_table): Use gengtype to mark.
199         (init_tree): Use gengtype to mark trees.
200
201         * Make-lang.in (cp/decl.o): Add debug.h dependency.
202         * call.c (struct z_candidate): Use gengtype.
203         (USER_CONV_CAND): Use WRAPPER_ZC.
204         (convert_class_to_reference): Use build_zc_wrapper.
205         (build_type_conversion_1): Likewise.
206         (build_over_call): Use WRAPPER_ZC.
207         (add_warning): Use build_zc_wrapper.
208         * cp-lang.c (LANG_HOOKS_MARK_TREE): Delete.
209         * cp-tree.h (struct lang_identifier): Use gengtype.
210         (struct template_parm_index_s): Likewise.
211         (struct ptrmem_cst): Likewise.
212         (struct tree_binding): Likewise.
213         (struct tree_overload): Likewise.
214         (struct tree_srcloc): Likewise.
215         (struct tree_wrapper): Likewise.  Also modify to have a pointer
216         to struct z_candidate rather than void.
217         (enum cp_tree_node_structure_enum): New.
218         (union lang_tree_node): New.
219         (cxx_mark_tree): Delete prototype.
220         (cp_tree_node_structure): New prototype.
221         (build_ptr_wrapper): Delete prototype.
222         (build_int_wrapper): Delete prototype.
223         (build_zc_wrapper): New prototype.
224         * decl.c: Include debug.h
225         (cxx_mark_tree): Delete.
226         (cp_tree_node_structure): New.
227         * tree.c (build_ptr_wrapper): Delete.
228         (build_int_wrapper): Delete.
229         (build_zc_wrapper): New.
230
231         * cp-tree.h [! ENABLE_TREE_CHECKING] (LANG_TYPE_PTRMEM_CHECK):
232         Correct typo.  Patch from k_fukui@highway.ne.jp.
233
234         * semantics.c (current_stmt_tree): Update for change to
235         struct language_function.
236         (finish_mem_initializers): Likewise.
237         * decl.c (cxx_init_decl_processing): Don't set mark_lang_status.
238         * cp-tree.h (struct language_function): Rename from
239         cp_language_function.  Change all uses.
240         (cp_function_chain): Don't need to cast.
241
242         * class.c (duplicate_tag_error): Reset discriminator.
243         (check_bases_and_members): Update for data structure changes.
244         * cp-tree.h (struct lang_id2): Use gengtype.
245         (flagged_type_tree): Likewise.
246         (SET_LANG_ID): Use GGC on struct lang_id2.
247         (struct cp_language_function): Use gengtype.  Remove field
248         'x_vcalls_possible_p'.
249         (current_vcalls_possible_p): Delete.
250         (struct lang_type_header): New.
251         (struct lang_type_class): Rename from struct lang_type.  Include
252         struct lang_type_header.
253         (struct lang_type_ptrmem): New.
254         (struct lang_type): New.
255         (LANG_TYPE_CLASS_CHECK): New.  Use it in all the appropriate macros.
256         (LANG_TYPE_PTRMEM_CHECK): New.  Use it in all the appropriate macros.
257         (TYPE_SET_PTRMEMFUNC_TYPE): Set discriminator, update for changes.
258         (struct lang_decl_flags): Use gengtype.  Add discriminators.
259         (struct lang_decl): Use gengtype.  Add and use discriminators.
260         Update the macros that reference moved fields.
261         (LANG_DECL_U2_CHECK): New function.  Use it when appropriate.
262         (SET_DECL_THUNK_P): Set discriminator too.
263         (clear_inline_text_obstack): Delete prototype.
264         (finish_inline_definitions): Delete prototype.
265         (mark_pending_inlines): Delete prototype.
266         (lang_check_failed): New prototype.
267         * decl.c (struct named_label_use_list): Use gengtype.
268         (struct named_label_list): Likewise.
269         (mark_binding_level): Delete.
270         (mark_named_label_lists): Delete.
271         (push_local_name): Set discriminator on DECL_LANG_SPECIFIC.
272         (cxx_init_decl_processing): Use generated marker routine.
273         (begin_destructor_body): Delete dead set to
274         current_vcalls_possible_p.
275         (mark_lang_function): Delete.
276         (mark_cp_function_context): Delete.
277         (lang_mark_tree): Use generated marker routines.
278         * decl2.c (start_objects): Set discriminator when setting
279         GLOBAL_INIT_PRIORITY.
280         * lex.c (retrofit_lang_decl): Set discriminators.
281         (copy_lang_type): Update for changes to lang_type structure.
282         (cp_make_lang_type): Set discriminator.
283         * parse.y: Use gengtype on YYLVAL.  Don't use dots in identifiers.
284         * search.c: Include ggc.h.
285         * semantics.c (anon_aggr_type_p): Use the macro, don't hand-code it.
286         (finish_inline_definitions): Delete.
287         * spew.c (struct token): Use gengtype.
288         (struct token_chunk): New.
289         (struct unparsed_text): Use gengtype.  Store tokens in chunks.
290         (struct feed): Use gengtype.
291         (feed_obstack): Delete.
292         (feed): Mark as GC root.
293         (pending_inlines): Mark as GC root.
294         (pending_inlines_tail): Likewise.
295         (processing_these_inlines): Likewise.
296         (token_obstack): Make static.
297         (first_token): Likewise.
298         (init_spew): Don't initialise deleted things; use gengtype for roots.
299         (clear_inline_text_obstack): Delete.
300         (feed_input): Use GC for struct feed.  Update for changes to
301         struct unparsed_text.
302         (mark_pending_inlines): Delete.
303         (next_token): Rename from add_token.  Change all callers.  Update
304         for changes to struct unparsed_text.
305         (space_for_token): New.
306         (remove_last_token): New.
307         (alloc_unparsed_text): New.
308         (snarf_block): Take an unparsed_text.  Update for changes to struct
309         unparsed_text.
310         (snarf_method): Update for changes to struct unparsed_text.
311         (snarf_defarg): Update for changes to struct unparsed_text.
312         * tree.c (lang_check_failed): New.
313
314         * Make-lang.in (gt-cp-call.h gt-cp-decl2.h gt-cp-parse.h
315         gt-cp-pt.h gt-cp-repo.h gt-cp-spew.h): New rules.
316         (cp/spew.o): Add dependency on gt-<filename>.h.
317         (cp/decl2.o): Add dependency on gt-<filename>.h.
318         (cp/call.o): Add dependency on gt-<filename>.h.
319         (cp/pt.o): Add dependency on gt-<filename>.h.
320         (cp/repo.o): Add dependency on gt-<filename>.h.
321         (cp/parse.o): Add dependency on gt-<filename>.h.
322         * call.c: Use gengtype for roots.
323         * config-lang.in (gtfiles): Add cp-tree.h decl.h lex.h call.c
324         decl2.c parse.y pt.c repo.c spew.c.
325         * cp-tree.h: Use gengtype for roots.
326         (struct saved_scope): Use GGC, gengtype.
327         (cp_parse_init): Delete prototype.
328         (init_pt): Delete prototype.
329         * decl.c: Use gengtype for roots.
330         (mark_saved_scope): Delete.
331         (cxx_init_decl_processing): Don't call deleted initilisation
332         routines.
333         (signed_size_zero_node): Delete, unused.
334         * decl.h: Use gengtype for roots.
335         * decl2.c: Use gengtype for roots.
336         * lex.h: Use gengtype for roots.
337         * parse.y: Use gengtype for roots.
338         (cp_parse_init): Delete.
339         * pt.c: Use gengtype for roots.
340         (init_pt): Delete.
341         * repo.c: Use gengtype for roots.
342         * spew.c: Use gengtype for roots.
343
344         * Make-lang.in: Allow for filename changes.  Add gtype-cp.h.
345         (cp/decl.o): Add dependency on gtype-cp.h.
346         * decl.c: Remove use of add_deletable_root, use GTY marker instead.
347         Include gtype-cp.h.  Allow for filename changes.
348
349         * Make-lang.in (cp/gt-decl.h): Generate using gengtype.
350         (cp/decl.o): Add cp/gt-decl.h dependency.
351         * config-lang.in (gtfiles): New.
352         * tree.h: Rename struct binding_level to struct cp_binding_level.
353         * decl.c: Rename struct binding_level to struct cp_binding_level.
354         Include cp/gt-decl.h.
355         (struct cp_binding_level): Use gengtype.
356         (make_binding_level): Use GGC on struct cp_binding_level.
357         (mark_binding_level): Use gt_ggc_m_cp_binding_level.
358         (cxx_init_decl_processing): Mark free_binding_level as
359         deletable.
360
361         * decl.c (mark_cp_function_context): Update calling sequence.
362
363         * decl.c (start_function): Don't free 'struct
364         cp_language_function'.
365         (pop_cp_function_context): Likewise.
366         (save_function_data): Allocate it using GC.
367         * semantics.c (genrtl_start_function): Don't free 'struct
368         cp_language_function'.
369
370 2002-05-31  Matthew Woodcraft  <mattheww@chiark.greenend.org.uk>
371
372         * lang-specs.h: Use cpp_debug_options.
373
374 2002-05-28  Zack Weinberg  <zack@codesourcery.com>
375
376         * mangle.c, tree.c: Include real.h.
377         * Make-lang.in: Update dependency lists.
378
379 2002-05-25  Neil Booth  <neil@daikokuya.demon.co.uk>
380
381         * lex.c: Don't include c-lex.h.
382         * parse.y, spew.c: Don't include c-lex.h; include c-pragma.h.
383
384 2002-05-23  Neil Booth  <neil@daikokuya.demon.co.uk>
385
386         * spew.c (yyungetc, snarf_block): Remove indent_level handling.
387
388 2002-05-22  Richard Henderson  <rth@redhat.com>
389
390         * decl.c (obscure_complex_init): Check for VAR_DECL
391         before using DECL_THREAD_LOCAL.
392
393 2002-05-22  Richard Henderson  <rth@redhat.com>
394
395         * decl.c (check_tag_decl): Handle RID_THREAD.
396         (obscure_complex_init): Reject run-time init of tls.
397         (grokvardecl, grokdeclarator): Handle RID_THREAD.
398         * lex.c (reswords): Add __thread.
399         (rid_to_yy): Map RID_THREAD to SCSPEC.
400
401 2002-05-22  Neil Booth  <neil@daikokuya.demon.co.uk>
402
403         * cp-lang.c (LANG_HOOKS_POST_OPTIONS): Use c_common_post_options.
404         * cp-tree.h (cxx_post_options): Kill.
405         * cp-lex.c (cxx_post_options): Kill.
406
407 2002-05-21  Richard Henderson  <rth@redhat.com>
408
409         * lex.c (rid_to_yy): Add RID_THREAD.
410
411 2002-05-21  Alexandre Oliva  <aoliva@redhat.com>
412
413         * init.c (build_vec_init): Test for trivial copy-assignment when
414         copy-assigning arrays.
415
416 2002-05-20  Andreas Jaeger  <aj@suse.de>
417
418         * init.c (build_default_init): Remove unused variable.
419
420 2002-05-20  Alexandre Oliva  <aoliva@redhat.com>
421
422         * call.c (any_strictly_viable): New.
423         (build_new_op): Use it for COMPOUND_EXPR and ADDR_EXPRs.
424
425 2002-05-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
426
427         * error.c (dump_type) [TYPEOF_TYPE]: Fix parenthesis printing.
428
429 2002-05-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
430
431         PR c++/186, DR 259
432         * pt.c (do_decl_instantiation): Don't complain explicit
433         instantiation after explicit specialization.
434         (do_type_instantiation): Likewise.
435
436 2002-05-19  Alexandre Oliva  <aoliva@redhat.com>
437
438         * cp-tree.h (complete_type_or_diagnostic): Changed prototype,
439         renamed from...
440         (complete_type_or_else): ... this.  Redefined as macro.
441         (cxx_incomplete_type_diagnostic): Declare.
442         (cxx_incomplete_type_error): Define as macro.
443         * init.c (build_delete): Warn about incomplete types other than
444         void, and use the built-in operator delete for them.
445         * typeck.c (complete_type_or_diagnostic): Renamed from
446         complete_type_or_else.  Added warn_only argument, passed to...
447         * typeck2.c (cxx_incomplete_type_diagnostic): ... this.  Print
448         warnings or errors depending on new warn_only argument.  Renamed
449         from...
450         (cxx_incomplete_type_error): ... this.  New implementation in
451         terms of cxx_incomplete_type_diagnostic.
452
453 2002-05-18  Jason Merrill  <jason@redhat.com>
454
455         * decl2.c (import_export_decl): If we clear
456         DECL_NOT_REALLY_EXTERN, make sure DECL_EXTERNAL is set.
457
458 2002-05-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
459
460         PR c++/6620
461         * pt.c (verify_class_unification): Don't check if PARM is template
462         parameter dependent.  Simplify.
463         (unify) [TEMPLATE_PARM_INDEX]: Handle when ARG is a template
464         parameter dependent expression.
465
466 2002-05-14  Jason Merrill  <jason@redhat.com>
467
468         * rtti.c (get_tinfo_decl): Don't call comdat_linkage.
469         Do set DECL_COMDAT.
470         (synthesize_tinfo_var): Take the public decl.
471         (create_real_tinfo_var): Likewise.  Check DECL_COMDAT.
472         (emit_tinfo_decl): Adjust.  Call import_export_decl.
473         * decl2.c (import_export_decl): Simplify tinfo decl handling.
474
475 2002-05-14  Alexandre Oliva  <aoliva@redhat.com>
476
477         * cp-tree.h (struct lang_type): Added non_zero_init.
478         (CLASSTYPE_NON_ZERO_INIT_P): New macro.
479         (zero_init_p, force_store_init_value, build_forced_zero_init): Declare.
480         * class.c (check_field_decls): Test non_zero_init.
481         * cvt.c (convert_to_pointer_force): Use cp_convert_to_pointer for
482         zero-to-NULL conversions.
483         * decl.c (obscure_complex_init): Don't reset DECL_INITIAL of a
484         type that needs zero-initialization without zeros.
485         (check_initializer_decl): Compute zero-initializer for types
486         that require a non-trivial one.
487         * init.c (build_forced_zero_init): New function.
488         (build_default_init): Use it.
489         * tree.c (zero_init_p): New function.
490         * typeck2.c (force_store_init_value): New function.
491         (process_init_constructor): Create non-trivial zero-initializers
492         for array members and class fields.
493
494 2002-05-14  Neil Booth  <neil@daikokuya.demon.co.uk>
495
496         * lang-specs.h: Remove redundant -lang-c++.
497
498 2002-05-13  Jason Merrill  <jason@redhat.com>
499
500         * class.c (build_vtbl_ref_1): Use fixed_type_or_null.
501         (fixed_type_or_null): See through reference vars.
502         (build_base_path): Vtable contents are constant.
503         * typeck.c (get_member_function_from_ptrfunc): Likewise.
504
505 2002-05-12  Jason Merrill  <jason@redhat.com>
506
507         * cp-lang.c (ok_to_generate_alias_set_for_type): Backend-created
508         structs are safe.
509
510 2002-05-09  Neil Booth  <neil@daikokuya.demon.co.uk>
511
512         * cp-tree.h (flag_ansi): Remove.
513         * decl2.c (flag_ansi): Remove.
514         (cxx_decode_option): Set flag_iso and flag_undef.
515
516 2002-05-09  Jason Merrill  <jason@redhat.com>
517
518         * typeck.c (get_member_function_from_ptrfunc): Reorganize.
519         Use subtraction rather than a bitmask to get the index.
520         * cvt.c (cp_convert_to_pointer): Bail on an error_mark_node.
521
522         * pt.c (tsubst_expr) [ASM_STMT]: Copy ASM_INPUT_P.
523
524 2002-05-07  Neil Booth  <neil@daikokuya.demon.co.uk>
525
526         * Make-lang.in (decl2.o): Update.
527         * cp-tree.h (warn_multichar): Remove.
528         * decl2.c: Include c-common.h.
529         (warn_multichar): Remove.
530
531 2002-05-03  Jason Merrill  <jason@redhat.com>
532
533         * tree.c (build_cplus_array_type): Only const and volatile get
534         special handling.
535
536         * decl.c (BOOL_TYPE_SIZE): Move default to defaults.h.
537
538 2002-04-30  Mark Mitchell  <mark@codesourcery.com>
539
540         ABI change, returning simple classes from functions.
541         * class.c (finish_struct_bits): Only mark TREE_ADDRESSABLE if
542         TYPE_HAS_TRIVIAL_INIT_REF is false or
543         TYPE_HAS_NONTRIVIAL_DESTRUCTOR is true.
544
545 2002-04-30  Jason Merrill  <jason@redhat.com>
546
547         PR debug/6436
548         * decl.c (grokdeclarator): Don't override TYPE_NAME of an
549         anonymous class with a typedef if there are attributes.
550
551 2002-04-29  Paul Eggert  <eggert@twinsun.com>
552
553         * parse.y (nomods_initdcl0): Replace $<ttype>3 with $<ttype>$.
554
555 2002-04-29  Jakub Jelinek  <jakub@redhat.com>
556
557         PR c++/6477
558         * decl.c (follow_tag_typedef): Check if TYPE_NAME (original) is
559         non-NULL first.
560
561 2002-04-29  Mark Mitchell  <mark@codesourcery.com>
562
563         PR c++/6492
564         * pt.c (tsubst_friend_class): If the friend has an explicit scope,
565         enter that scope before name lookup.
566
567         PR c++/6486
568         * method.c (do_build_copy_constructor): Avoid building
569         cv-qualified reference types.
570
571 2002-04-29  Nathan Sidwell  <nathan@codesourcery.com>
572
573         PR c++/5719
574         * decl.c (grok_op_properties): Assignment ops don't have to return
575         by value. operator% should.
576
577 2002-04-28  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
578
579         PR c/6343
580         * decl.c (duplicate_decls): Call merge_weak.
581
582 2002-04-26  Richard Henderson  <rth@redhat.com>
583
584         * parse.y (malloced_yyss, malloced_yyvs): New.
585         (yyoverflow): Re-add.  Set them.
586         (free_parser_stacks): New.
587
588 2002-04-26  Mark Mitchell  <mark@codesourcery.com>
589
590         PR c++/6497
591         * method.c (do_build_assign_ref): Pass a derivation to
592         build_method_call when calling base class assignment operators.
593
594 2002-04-26  Richard Henderson  <rth@redhat.com>
595
596         * parse.y (yyoverflow): Revert.
597
598 2002-04-26  Richard Henderson  <rth@redhat.com>
599
600         PR c/3581
601         * parse.y (string): Remove.  Update all uses to use STRING
602         instead, and not call combine_strings.
603         * rtti.c (tinfo_name): Use fix_string_type.
604         * semantics.c (finish_asm_stmt): Don't call combine_strings.
605         * spew.c (yylexstring): New.
606         (read_token): Use it.
607
608 2002-04-25  Richard Henderson  <rth@redhat.com>
609
610         PR c/2161
611         * parse.y (yyoverflow): New.
612
613 2002-04-25  Jason Merrill  <jason@redhat.com>
614
615         PR c++/5607
616         * search.c (check_final_overrider): No longer static.
617         * class.c (update_vtable_entry_for_fn): Call it.
618         * cp-tree.h: Adjust.
619
620 2002-04-25  Neil Booth  <neil@daikokuya.demon.co.uk>
621
622         * cp-lang.c (LANG_HOOKS_SET_YYDEBUG): Remove.
623         * cp-tree.h (cxx_set_yydebug): Die.
624         * lex.c (YYDEBUG): Get from c-lex.h.
625         (cxx_set_yydebug): Remove.
626         * parse.y: Include c-lex.h.
627         (YYDEBUG): Get from c-lex.h.
628
629 2002-04-24  Mark Mitchell  <mark@codesourcery.com>
630
631         PR c++/6438.
632         * cvt.c (convert_to_void): Don't unconditionally make COND_EXPRs
633         void.
634
635 2002-04-24  Neil Booth  <neil@daikokuya.demon.co.uk>
636
637         * cp-lang.c (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE,
638         LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE, LANG_HOOKS_ATTRIBUTE_TABLE):
639         Redefine.
640         * cp-tree.h (cp_attribute_table): Rename.
641         * decl.c (lang_attribute_table): Remove declaration.
642         (cxx_init_decl_processing): Don't set it.
643         * tree.c (cp_attribute_table): Rename.
644
645 2002-04-24  Jason Merrill  <jason@redhat.com>
646
647         PR c++/6331
648         * method.c (do_build_copy_constructor): Use cp_build_qualified_type.
649         * typeck.c (build_modify_expr): Allow arrays to differ in cv-quals.
650         The pedwarn for array assignment is now unconditional.
651         * tree.c (build_cplus_array_type_1): Still process simple array types
652         normally in templates.
653
654         PR c++/6395
655         * decl.c (make_rtl_for_nonlocal_decl): Don't mess with #pragma i/i
656         stuff for comdats.
657
658 2002-04-23  Jakub Jelinek  <jakub@redhat.com>
659
660         * parse.y (check_class_key): Allow KEY to be union/enum/struct/class
661         node with attributes.
662
663 2002-2-23  David O'Brien  <obrien@FreeBSD.org>
664
665         * g++spec.c (MATH_LIBRARY_PROFILE, LIBSTDCXX_PROFILE): Add.
666         Use MATH_LIBRARY_PROFILE and LIBSTDCXX_PROFILE if profile flag given.
667
668 2002-04-23  Mark Mitchell  <mark@codesourcery.com>
669
670         PR c++/6256:
671         * pt.c (tsubst_friend_class): Handle templates with explicit
672         nested names.
673
674         PR c++/6331:
675         * typeck.c (merge_types): Remember the cv-qualification of pointer
676         types when merging them.
677
678 2002-04-20  Neil Booth  <neil@daikokuya.demon.co.uk>
679
680         * cp-lang.c (LANG_HOOKS_FUNCTION_INIT,
681         LANG_HOOKS_FUNCTION_FREE, LANG_HOOKS_FUNCTION_MARK): Redefine.
682         * cp-tree.h (cxx_push_function_context, cxx_pop_function_context,
683         cxx_mark_function_context): New.
684         * decl.c (push_cp_function_context, pop_cp_function_context,
685         mark_cp_function_context): Rename for consistency.
686         (cxx_init_decl_processing): Don't set old hooks.
687
688 2002-04-19  Neil Booth  <neil@daikokuya.demon.co.uk>
689
690         * call.c (convert_type_from_ellipsis): Rename, update.
691         * cp-lang.c (LANG_HOOKS_TYPE_PROMOTES_TO): Redefine.
692         * cp-tree.h (convert_type_from_ellipsis): Rename.
693         * decl.c (cxx_init_decl_processing): Don't set hook.
694
695 2002-04-18  Neil Booth  <neil@daikokuya.demon.co.uk>
696
697         * call.c (build_new_method_call): Update.
698         * cp-lang.c (LANG_HOOKS_INCOMPLETE_TYPE_ERROR): Redefine.
699         * cp-tree.h (cxx_incomplete_type_error): New.
700         * decl.c (grokdeclarator, grokparms): Update.
701         * decl2.c (check_classfn): Update.
702         * pt.c (tsubst): Update.
703         * typeck.c (complete_type_or_else, expr_sizeof,
704         decay_conversion): Update.
705         * typeck2.c (incomplete_type_error): Rename.
706         (add_exception_specifier): Update.
707
708 2002-04-18  Jason Merrill  <jason@redhat.com>
709
710         PR c++/5658
711         * search.c (setup_class_bindings): A class template qualifies as a
712         type binding.
713
714 2002-04-17  Jakub Jelinek  <jakub@redhat.com>
715
716         PR c++/6316
717         * decl2.c (finish_file): Clear DECL_EXTERNAL in a separate loop
718         before expanding.
719
720 2002-04-16  Mark Mitchell  <mark@codesourcery.com>
721
722         * init.c (begin_init_stmts): Remove commented out code.
723         (finish_init_stmts): Set STMT_EXPR_NO_SCOPE.
724         * semantics.c (begin_gobal_stmt_expr): Adjust call to
725         expand_start_stmt_expr.
726
727 2002-04-15  Mark Mitchell  <mark@codesourcery.com>
728
729         * decl.c (register_dtor_fn): Pass the address of dso_handle, not
730         dso_handle itself, to __cxa_atexit.
731
732 2002-04-15  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
733
734         * error.c (cxx_print_error_function): Adjust call to macros.
735
736 2002-04-14  Jakub Jelinek  <jakub@redhat.com>
737
738         * class.c (layout_virtual_bases): Do all dsize computation on trees.
739
740 2002-04-14  Jason Merrill  <jason@redhat.com>
741
742         * typeck.c (get_member_function_from_ptrfunc): Don't do
743         gratuitious division and multiplication on
744         ptrmemfunc_vbit_in_delta targets.
745
746 2002-04-12  Mark Mitchell  <mark@codesourcery.com>
747
748         PR c++/5373.
749         * semantics.c (finish_expr_stmt): Remember the type of the
750         expression before any conversions are performed.
751
752 2002-04-12  Mark Mitchell  <mark@codesourcery.com>
753
754         PR c++/5189.
755         * call.c (add_template_candidate_real): Do not treat member
756         templates as copy constructors.
757
758 2002-04-12  Mark Mitchell  <mark@codesourcery.com>
759
760         * decl.c (duplicate_decls): Do not copy the RTL for a variable
761         declaration if the old variable had an incomplete type and the new
762         variable does not.
763         (complete_vars): Do not call layout_decl for completed variables.
764
765 2002-04-12  Richard Sandiford  <rsandifo@redhat.com>
766
767         * decl.c (duplicate_decls): Don't try to unify an implicit typedef
768         with an explicit one.
769         (follow_tag_typedef): New.
770         (lookup_tag): Use it to extract the tag of an explicit typedef.
771         (xref_tag): Likewise.
772
773 2002-04-11  Andrew Haley  <aph@redhat.com>
774
775         * typeck.c (type_after_usual_arithmetic_conversions):
776         If two types have the same variant, return immediately.
777         When two floating-point operands are the same precision:
778           convert to float if one of the operands is float;
779           if neither operand is one of the standard types, return the type
780           of the first operand.
781
782 2002-04-10  Nathan Sidwell  <nathan@codesourcery.com>
783
784         PR c++/5507
785         * decl.c (make_typename_type): Remove implicit typenameness.
786
787 2002-04-09  Jason Merrill  <jason@redhat.com>
788
789         PR optimization/6189
790         * semantics.c (genrtl_start_function): Don't free
791         DECL_SAVED_FUNCTION_DATA for inline functions.
792
793         * init.c (build_member_call): For now, don't convert to
794         intermediate base if it would cause an error.
795
796 2002-04-08  Paolo Carlini  <pcarlini@unitus.it>
797
798         * parse.y (namespace_qualifier, maybe_identifier,
799         begin_explicit_instantiation, end_explicit_instantiation,
800         apparent_template_type, .finish_template_type,
801         do_id, maybe_init, defarg_again, component_decl_1):
802         Add ending ';', in accordance with POSIX.
803
804 2002-04-06  Mark Mitchell  <mark@codesourcery.com>
805
806         PR c++/5571
807         * class.c (layout_class_type): Remember incomplete static
808         variables.
809         (finish_struct_1): Call complete_vars, not
810         hack_incomplete_structures.
811         * cp-tree.h (hack_incomplete_structures): Rename to ...
812         (complete_vars): ... this.
813         (struct saved_scope): Remove incomplete.
814         (namespace_scope_incomplete): Remove.
815         * decl.c (struct binding_level): Remove incomplete.
816         (incomplete_vars): New variable.
817         (mark_binding_level): Don't mark incomplete.
818         (print_binding_level): Don't print it.
819         (mark_saved_scope): Don't mark incomplete.
820         (pushdecl): Use maybe_register_incopmlete_var.
821         (cxx_init_decl_processing): Register incomplete_vars for GC.
822         (start_decl_1): Clarify error message.
823         (hack_incomplete_vars): Remove.
824         (maybe_register_incomplete_var): New function.
825         (complete_vars): Likewise.
826
827 2002-04-06  Jason Merrill  <jason@redhat.com>
828
829         PR c++/4934
830         * error.c (dump_expr) [CONVERT_EXPR]: Make sure TREE_TYPE (t) is
831         set before checking it.
832
833         PR c++/525
834         * init.c (build_member_call): Use build_scoped_ref.
835         (resolve_offset_ref): Likewise.
836         * call.c (build_scoped_method_call): Likewise.
837         * tree.c (maybe_dummy_object): Kludge around current_class_type being
838         wrong.
839         * typeck2.c (build_scoped_ref): Return the binfo via binfo_p parm.
840         * cp-tree.h: Adjust.
841
842         * init.c (push_base_cleanups): Just use build_scoped_method_call.
843
844         PR c++/6179
845         * method.c (implicitly_declare_fn): Pass unqualified type to
846         synthesize_exception_spec.
847
848 2002-04-04  Neil Booth  <neil@daikokuya.demon.co.uk>
849
850         * cp-lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine.
851         * cvt.c: Update comment.
852         * init.c (expand_cleanup_for_base): Update.
853         * semantics.c (finish_parenthesized_expr): Update.
854         * typeck.c (cp_truthvalue_conversion): Update.
855
856 2002-04-04  Jason Merrill  <jason@redhat.com>
857
858         * semantics.c (finish_eh_cleanup): New fn.
859         * cp-tree.h: Add prototype.
860         * init.c (perform_member_init, expand_cleanup_for_base): Use
861         finish_eh_cleanup.
862         * cp-tree.def (SUBOBJECT, CTOR_STMT): Remove.
863         * cp-tree.h: Remove references.
864         * decl.c (begin_constructor_body, end_constructor_body): Likewise.
865         * dump.c (cp_dump_tree): Likewise.
866         * pt.c (tsubst_expr): Likewise.
867         * semantics.c (genrtl_ctor_stmt, genrtl_subobject): Remove.
868         (cp_expand_stmt): Remove handling of CTOR_STMT and SUBOBJECT.
869         * tree.c (cp_statement_code_p): Likewise.
870
871         * init.c (build_new_1): Set CLEANUP_EH_ONLY on deleting cleanup.
872
873         PR c++/5636
874         * semantics.c (nullify_returns_r): Just set CLEANUP_EH_ONLY on
875         cleanup for nrv.
876
877         PR c++/5104
878         * typeck.c (comptypes) [FUNCTION_TYPE]: Don't compare exception
879         specifiers.
880         [METHOD_TYPE]: Use same code as FUNCTION_TYPE.
881
882 2002-04-03  Richard Henderson  <rth@redhat.com>
883
884         * cp-lang.c (cxx_warn_unused_global_decl): New.
885         (LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL): New.
886
887 2002-04-03  Neil Booth  <neil@daikokuya.demon.co.uk>
888
889         * cp-lang.c (LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): Redefine.
890         * tree.c (init_tree): Don't set hook.
891
892 2002-04-03  Roger Sayle  <roger@eyesopen.com>
893
894         PR c++/5998:
895         * decl.c (duplicate_decls): Don't mess with assembler names when
896         redeclaring builtin functions as static.
897
898 2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>
899
900         * call.c (build_addr_func): Update.
901         * class.c (resolve_address_of_overloaded_function): Update.
902         * cp-lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine.
903         * cp-tree.h (cxx_mark_addressable): New.
904         * decl.c (register_dtor_fn, cxx_maybe_build_cleanup): Update.
905         * decl2.c (build_cleanup): Update.
906         * except.c (build_throw): Update.
907         * init.c (resolve_offset_ref): Update.
908         * pt.c (convert_nontype_argument): Update.
909         * semantics.c (finish_asm_stmt, simplify_affr_init_exprs_r): Update.
910         * typeck.c (decay_conversion, build_array_ref, build_unary_op,
911         unary_complex_lvalue): Update.
912         (mark_addressable): Rename.
913
914 2002-04-01  Roger Sayle  <roger@eyesopen.com>
915
916         PR c++/5998:
917         * decl.c (duplicate_decls):  Overwrite the RTL when (and only
918         when) overwriting a built-in function.  Don't use COPY_DECL_RTL,
919         but follow the SET_DECL_RTL idiom used elsewhere in the function.
920
921 2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>
922
923         * cp-lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
924         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New.
925         * decl.c (grokdeclarator): Update.
926         * mangle.c (write_integer_cst): Update.
927         * typeck.c (build_binary_op): Update.
928
929 2002-03-31  Neil Booth  <neil@daikokuya.demon.co.uk>
930
931         * cp-lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Redefine.
932         * lex.c (cxx_init): Don't set hook.
933
934 2002-03-31  Neil Booth  <neil@daikokuya.demon.co.uk>
935
936         * Make-lang.in (error.o): Update.
937         * cp-lang.c (LANG_HOOKS_PRINT_ERROR_FUNCTION): Redefine.
938         * cp-tree.h (struct diagnostic_context): Predeclare.
939         (cxx_print_error_function): New.
940         * error.c: Include langhooks-def.h.
941         (lang_print_error_function): Rename.  Update.
942         (init_error): Don't set hook.
943
944 2002-03-29  Neil Booth  <neil@daikokuya.demon.co.uk>
945
946         * cp-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
947         Redefine.
948         * cvt.c (cp_convert_to_pointer, type_promotes_to): Use new hooks.
949         * decl.c (finish_enum): Similarly.
950         * error.c (dump_type): Similarly.
951         * lex.c (cxx_init): Similarly.
952         * mangle.c (write_builtin_type): Similarly.
953         * typeck.c (comptypes): Similarly.
954
955 2002-03-28  Roger Sayle  <roger@eyesopen.com>
956
957         PR c++/5998:
958         * decl.c (cxx_init_decl_processing): Re-enable built-in functions
959         in the g++ front-end.
960         (duplicate_decl): Allow redefinition of anticipated built-ins.
961         Fix inlining problem by over-writing the old DECL_RTL.
962         (lookup_namespace_name): Fail to find an identifier in the
963         specified namespace if its still anticipated.
964         (builtin_function_1): New function split out from builtin_function
965         to create a builtin in the current namespace with given context.
966         (builtin_function): Call builtin_function_1 to define the
967         appropriate builtins in both the std and global namespaces.
968         (select_decl): Don't test for anticipated decls here.
969         (unqualified_namespace_lookup): Instead ignore them whilst
970         searching through scopes and namespaces.
971         * decl2.c (do_nonmember_using_decl): If a using declaration
972         specifies an anticipated built-in function, mark it as no longer
973         anticipated in that scope.
974         (ambiguous_decl):  Avoid resolving to an anticipated decl.
975         * lex.c (do_scoped_id): Fail to find an identifier in the global
976         namespace if its still anticipated.
977
978 2002-03-29  Neil Booth  <neil@daikokuya.demon.co.uk>
979
980         * cp-lang.c (LANG_HOOKS_MAKE_TYPE): Redefine.
981         * cp-tree.h (cp_make_lang_type): Rename.
982         * lex.c (cp_make_lang_type): Rename.
983         (make_aggr_type): Update.
984         * tree.c (init_tree): Don't set make_lang_type_fn.
985
986 2002-03-29  Jakub Jelinek  <jakub@redhat.com>
987
988         PR c++/6073
989         * class.c (finish_struct_1): Update static field's DECL_MODE even
990         if its type is a variant of t.
991
992 2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>
993
994         * cp-lang.c (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES): Redefine.
995         * cp-tree.h (cxx_insert_default_attributes): New.
996         * decl.c (insert_default_attributes): Rename.
997
998 2002-03-27  Mark Mitchell  <mark@codesourcery.com>
999
1000         PR c++/4884
1001         * call.c (build_op_delete_call): Allow for the fact the placement
1002         may be a COMPOUND_EXPR.
1003
1004 2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>
1005
1006         * cp-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
1007         * cp-tree.h (init_cplus_expand): Remove.
1008         (cxx_expand_expr): New.
1009         * expr.c (cplus_expand_expr): Rename cxx_expand_expr,
1010         fix prototype.
1011         (init_cplus_expand): Remove.
1012         * lex.c (cxx_init): Don't call init_cplus_expand.
1013
1014 2002-03-26  Mark Mitchell  <mark@codesourcery.com>
1015
1016         PR c++/4884.
1017         * init.c (build_new_1): Allow for the fact the result of
1018         build_function_call may be a COMPOUND_EXPR.
1019
1020 2002-03-26  Nathan Sidwell  <nathan@codesourcery.com>
1021
1022         PR c++/5682
1023         * cp-tree.h (BINFO_PRIMARY_P): Explain meaning better.
1024         (dfs_skip_nonprimary_vbases_unmarkedp): Remove.
1025         (dfs_skip_nonprimary_vbases_markedp): Remove.
1026         * search.c (get_shared_vbase_if_not_primary): Remove.
1027         (dfs_skip_nonprimary_vbases_unmarkedp): Remove.
1028         (dfs_skip_nonprimary_vbases_markedp): Remove.
1029         (dfs_unmarked_real_bases_queue_p): Just get the canonical binfo.
1030         (dfs_marked_real_bases_queue_p): Likewise.
1031
1032 2002-03-26  Neil Booth  <neil@daikokuya.demon.co.uk>
1033
1034         * cp-lang.c (LANG_HOOKS_MARK_TREE): Redefine.
1035         * cp-tree.h (cxx_mark_tree): New.
1036         * decl.c (lang_mark_tree): Rename cxx_mark_tree.
1037
1038 2002-03-25  Neil Booth  <neil@daikokuya.demon.co.uk>
1039
1040         * cp-tree.h (cxx_maybe_build_cleanup): New.
1041         * decl.c (destroy_local_var, hack_incomplete_structures): Update.
1042         (maybe_build_cleanup): Rename cxx_maybe_build_cleanup.
1043         * tree.c (build_target_expr): Update.
1044         * cp-lang.c (LANG_HOOKS_MAYBE_BUILD_CLEANUP): Redefine.
1045
1046 2002-03-24  Neil Booth  <neil@daikokuya.demon.co.uk>
1047
1048         * decl2.c (cxx_decode_option): Handle -E.
1049         * lang-specs.h (default_compilers): Preprocess with cc1plus.
1050         * lex.c (cxx_init): Exit quickly if c_common_init returns NULL.
1051
1052 2002-03-23  Jakub Jelinek  <jakub@redhat.com>
1053
1054         PR c++/6037
1055         * decl.c (start_enum): Don't set TREE_ADDRESSABLE on TREE_LIST node.
1056
1057 2002-03-23  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
1058
1059         * error.c (dump_type): Be careful about implicit typenames.
1060
1061 2002-03-21  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
1062
1063         PR C++/3656
1064         * semantics.c (finish_base_specifier): Handle erronous base
1065         classes.
1066
1067 2002-03-22  Zack Weinberg  <zack@codesourcery.com>
1068
1069         * error.c: Always use REAL_VALUE_TO_DECIMAL; don't test
1070         REAL_IS_NOT_DOUBLE.
1071
1072 2002-03-22  Jeff Knaggs  <jknaggs@redhat.com>
1073
1074         * typeck.c (get_member_function_from_ptrfunc): Scale idx down to
1075         an index into the vtable_entry array regardless of
1076         TARGET_PTRMEMFUNC_VBIT_LOCATION.
1077
1078 2002-03-21  Aldy Hernandez  <aldyh@redhat.com>
1079
1080         * tree.c (cp_cannot_inline_tree_fn): Same.
1081
1082 2002-03-21  Neil Booth  <neil@daikokuya.demon.co.uk>
1083
1084         * cp-tree.h (pushdecl, pushlevel, poplevel, set_block,
1085         insert_block, getdecls, global_bindings_p): New.
1086
1087 2002-03-20  Nathan Sidwell  <nathan@codesourcery.com>
1088
1089         PR c++/4361
1090         * mangle.c (struct globals) Add internal_mangling_p member.
1091         (write_template_param): Do internal mangling, if needed.
1092         (mangle_conv_op_name_for_type): Request internal mangling.
1093
1094 2002-03-20  Jason Merrill  <jason@redhat.com>
1095
1096         PR c++/2136
1097         * init.c (build_delete): Check access for a member op delete here.
1098         * decl2.c (delete_sanity): Not here.
1099
1100 2002-03-19  Jason Merrill  <jason@redhat.com>
1101
1102         PR c++/5118
1103         * class.c (get_vfield_name): Use the constructor_name.
1104
1105 2002-03-20  Neil Booth  <neil@daikokuya.demon.co.uk>
1106
1107         * cp-lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
1108         * cp-tree.h (lang_printable_name): Rename.
1109         * error.c (lang_decl_name): Use new hook.
1110         * lex.c (cxx_init): Remove old hook.
1111         * pt.c (tsubst_decl): Use new hook.
1112         * tree.c (lang_printable_name): Rename.
1113
1114 2002-03-18  Eric Botcazou  <ebotcazou@multimania.com>
1115
1116         PR c++/3882
1117         * pt.c (tsubst_decl): Move __PRETTY_FUNCTION__ handling...
1118         (tsubst_expr) [DECL_STMT]: ...here. And substitute the initializer
1119         only after recording the declaration.
1120
1121 2002-03-18  Jason Merrill  <jason@redhat.com>
1122
1123         PR c++/2039
1124         * init.c (resolve_offset_ref): Hand off to build_component_ref.
1125
1126         PR c++/4222, c++/5995
1127         * call.c (build_over_call): Fix empty class logic.
1128
1129         PR c++/3870
1130         * cp-tree.h (struct saved_scope): Add last_parms field.
1131         * decl.c (maybe_push_to_top_level): Save last_function_parms.
1132         (pop_from_top_level): Restore it.
1133
1134         PR c++/4377
1135         * mangle.c (write_expression): Strip NOP_EXPRs sooner.  Also strip
1136         NON_LVALUE_EXPRs.
1137
1138         PR c++/4003
1139         * pt.c (tsubst_friend_function): Use decl_namespace_context.
1140
1141         PR c++/3948 -- C++ ABI change, followup to 2001-12-18 patch.
1142         * class.c (finish_struct_bits): Also set TREE_ADDRESSABLE for a
1143         type with a nontrivial destructor.
1144
1145 2002-03-17  Jason Merrill  <jason@redhat.com>
1146
1147         PR c++/4460
1148         * class.c (build_base_path): Virtual base layout is fixed in
1149         in-charge [cd]tors.
1150
1151 2002-03-17  Neil Booth  <neil@daikokuya.demon.co.uk>
1152
1153         * cp-lang.c (LANG_HOOKS_PARSE_FILE): Redefine.
1154         * parse.y (yyparse): Remove macro.
1155
1156 2002-03-17  Jason Merrill  <jason@redhat.com>
1157
1158         PR c++/5757
1159         * init.c (build_new_1): Pass the right pointer to op delete.
1160
1161 2002-03-16  Nathan Sidwell  <nathan@codesourcery.com>
1162
1163         PR c++/4361
1164         * cp-tree.h (CLASSTYPE_METHOD_VEC): Document where templated
1165         conversion operators go.
1166         (struct lang_decl_flags): Add template_conv_p and unused
1167         bitfields.
1168         (DECL_TEMPLATE_CONV_FN_P): New macro.
1169         * call.c (build_user_type_conversion_1): Don't check second type
1170         conversion of overload set first.
1171         * class.c (add_method): Make sure templated conversion operators
1172         all end up on slot 2.
1173         * lex.c (do_identifier): A conversion operator token might be
1174         satisfied by a templated conversion operator.
1175         * pt.c (check_explicit_specialization): Use
1176         CLASSTYPE_FIRST_CONVERSION_SLOT.
1177         (template_parm_this_level_p): New function.
1178         (push_template_decl_real): Determine DECL_TEMPLATE_CONV_FN_P.
1179         * search.c (lookup_fnfields_1): Template conversions will be on
1180         the first slot.
1181         * typeck.c (build_component_ref): Preserve the type of an
1182         conversion operator name on the overload type.
1183         (build_x_function_call): Retrieve the conversion operator name.
1184
1185 2002-03-15  Richard Henderson  <rth@redhat.com>
1186
1187         * init.c (build_new_1): Use size_binop instead of cp_build_binary_op.
1188
1189 2002-03-15  Mark Mitchell  <mark@codesourcery.com>
1190
1191         * cp-tree.h (CLEANUP_DECL): Remove.
1192         (CLEANUP_EXPR): Likewise.
1193         * decl.c (destroy_local_var): Simplify.
1194         (maybe_build_cleanup): Tidy.
1195         * dump.c (cp_dump_tree): Remove handling of CLEANUP_STMT.
1196         * semantics.c (cp_expand_stmt): Likewise.
1197         * cp/tree.c (cp_statement_code_p): Likewise.
1198
1199 2002-03-15  Jason Merrill  <jason@redhat.com>
1200
1201         PR c++/5857
1202         * decl.c (duplicate_decls): Use merge_types instead of common_type.
1203         * typeck.c (common_type): Just hand off to
1204         type_after_usual_arithmetic_conversions and
1205         composite_pointer_type.
1206         (merge_types): New fn.
1207         (commonparms): Use it instead of common_type.
1208         (type_after_usual_arithmetic_conversions): Also handle COMPLEX_TYPE.
1209         (composite_pointer_type): Also handle attributes.
1210         * cp-tree.h: Declare merge_types.
1211
1212         * decl.c (make_rtl_for_nonlocal_decl): Also defer COMDAT
1213         variables.
1214         * decl2.c (maybe_make_one_only): Also mark the decl as needed.
1215
1216 2002-03-14  Richard Henderson  <rth@redhat.com>
1217
1218         * decl.c: Include c-pragma.h.
1219         (start_decl, start_function): Invoke maybe_apply_pragma_weak.
1220         * Make-lang.in: Update dependencies.
1221
1222 2002-03-14  Jakub Jelinek  <jakub@redhat.com>
1223
1224         PR c++/5908
1225         * call.c (build_over_call): Set TREE_NO_UNUSED_WARNING too.
1226         * cvt.c (convert_to_void): Preserve TREE_NO_UNUSED_WARNING.
1227
1228 2002-03-12  Richard Sandiford  <rsandifo@redhat.com>
1229
1230         * mangle.c (write_builtin_type): Handle 128-bit integers even if
1231         they are not a standard integer type.
1232
1233 2002-03-12  Richard Sandiford  <rsandifo@redhat.com>
1234
1235         * cp-tree.h (init_init_processing): Remove declaration.
1236         * init.c (BI_header_type, init_init_processing): Remove old ABI stuff.
1237         * decl.c (cxx_init_decl_processing): Don't call init_init_processing.
1238
1239 2002-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1240
1241         * cp-lang.c (tree_code_type, tree_code_length, tree_code_name):
1242         Define.
1243         * decl.c (duplicate_decls): Use TREE_CODE_LENGTH, not
1244         tree_code_length.
1245         * lex.c (cplus_tree_code_type, cplus_tree_code_length,
1246         cplus_tree_code_name): Delete.
1247         (cxx_init): Don't call add_c_tree_codes, instead set
1248         lang_unsafe_for_reeval.  Don't try to copy into the various
1249         tree_code arrays.
1250
1251 2002-03-12  Nathan Sidwell  <nathan@codesourcery.com>
1252
1253         PR c++/5659
1254         * decl.c (xref_tag): Don't set CLASSTYPE_DECLARED_CLASS here.
1255         * decl2.c (handle_class_head): Set CLASSTYPE_DECLARED_CLASS for
1256         definitions.
1257
1258 2002-03-11  Nathan Sidwell  <nathan@codesourcery.com>
1259
1260         Revert 2001-03-26  Nathan Sidwell  <nathan@codesourcery.com>,
1261         DR209 is now not a defect.
1262         * cp-tree.h (skip_type_access_control): Remove.
1263         * decl.c (grokdeclarator): Do type access control for friend
1264         declarations.
1265         * semantics.c (decl_type_access_control): Don't reset
1266         current_type_lookups.
1267         (save_type_access_control): Always save the lookups.
1268         (skip_type_access_control): Remove.
1269         (finish_class_definition): Don't change type_lookups.
1270
1271 2002-03-11  Nathan Sidwell  <nathan@codesourcery.com>
1272
1273         Revert 2000-12-01  Nathan Sidwell  <nathan@codesourcery.com>,
1274         It is incorrect.
1275         * typeck.c (build_static_cast): Compare non-qualified types
1276         with pointer to member conversions.
1277
1278 2002-03-11  Dan Nicolaescu  <dann@ics.uci.edu>
1279             Daniel Berlin  <dan@dberlin.org>
1280
1281         * cp-lang.c (ok_to_generate_alias_set_for_type): New function.
1282         (cxx_get_alias_set): Use it.
1283
1284 2002-03-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1285
1286         * cp-tree.h (stabilize_expr): Prototype.
1287
1288 2002-03-08  Craig Rodrigues  <rodrigc@gcc.gnu.org>
1289
1290         * cp-tree.h (CLEAR_BINFO_MARKED): Make both parts of
1291         conditional return void.
1292
1293 2002-03-08  Neil Booth  <neil@daikokuya.demon.co.uk>
1294
1295         * cp-lang.c (LANG_HOOKS_UNSAVE): Redefine.
1296         * cp-tree.h (cxx_unsave): New.
1297         * tree.c (cp_unsave): Rename cxx_unsave, update prototype.
1298         (init_tree): Update.
1299
1300 2002-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1301
1302         * decl.c (cxx_init_decl_processing): Use ARRAY_SIZE in lieu of
1303         explicit sizeof/sizeof.
1304         * decl2.c (cxx_decode_option): Likewise.
1305         * lex.c (init_reswords, REDUCE_LENGTH, TOKEN_LENGTH): Likewise.
1306
1307 2002-03-02  Nathan Sidwell  <nathan@codesourcery.com>
1308
1309         PR c++/775
1310         * decl.c (lookup_tag): Only reject enum/class mismatch, not
1311         class/union mismatch.
1312         * parse.y (check_class_key): New function.
1313         (structsp): Call it.
1314
1315 2002-03-01  Michael Matz  <matz@suse.de>
1316
1317         * typeck.c (cp_pointer_int_sum): Complete inner type which is
1318         used later by size_in_bytes().
1319
1320 2002-03-01  Phil Edwards  <pme@gcc.gnu.org>
1321
1322         * cp-tree.h:  Require __GNUC__ to be #defined.
1323         (build_init):  Add missing prototype.
1324
1325 2002-03-01  Jason Merrill  <jason@redhat.com>
1326
1327         * except.c: Don't include decl.h or obstack.h.  Do include
1328         tree-inline.h.
1329         (build_throw): Destroy temporaries from the thrown
1330         expression before calling __cxa_throw.  Construct a thrown
1331         temporary directly into the exception object.
1332         (stabilize_throw_expr): New function.
1333         (wrap_cleanups_r): New function.
1334         * tree.c (stabilize_expr): New function.
1335         * init.c (build_init): New function.
1336         * Make-lang.in (cp/except.o): Adjust .h deps.
1337
1338 2002-02-28  Jason Merrill  <jason@redhat.com>
1339
1340         * search.c (lookup_base_r): Don't clear is_non_public just because
1341         we found a friendly scope.
1342
1343         * decl.c (finish_function): Only warn about missing return
1344         statement with -Wreturn-type.
1345
1346 2002-02-28  Neil Booth  <neil@daikokuya.demon.co.uk>
1347
1348         * class.c (build_clone): Update.
1349         * cp-lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine.
1350         * cp-tree.h (cxx_dup_lang_specific_decl): New.
1351         * lex.c (copy_lang_decl): Rename cxx_dup_lang_specific_decl.
1352         (copy_decl): Update.
1353         * method.c (make_thunk): Update.
1354
1355 2002-02-27  Zack Weinberg  <zack@codesourcery.com>
1356
1357         * decl2.c: Delete traditional-mode-related code copied from
1358         the C front end but not used, or used only to permit the
1359         compiler to link.
1360
1361 2002-02-24 Craig Rodrigues  <rodrigc@gcc.gnu.org>
1362
1363         PR c++/4093
1364         * cp-tree.h (SET_BINFO_MARKED): Cast false part of condition
1365         to void.
1366
1367 2002-02-22  Jakub Jelinek  <jakub@redhat.com>
1368
1369         PR other/5746
1370         * semantics.c (finish_switch_cond): Don't call get_unwidened
1371         if error_mark_node.
1372
1373 2002-02-22  Nathan Sidwell  <nathan@codesourcery.com>
1374
1375         PR c++/2645, DR 295
1376         * cp-tree.h (tsubst_flags_t): Add tf_ignore_bad_quals,
1377         tf_keep_type_decl.
1378         (make_typename_type): Use tsubst_flags_t.
1379         * decl.c (make_typename_type): Adjust. Return non-artificial
1380         TYPE_DECLs, if required.
1381         (grokdeclarator): Simplify CVR qualification handling. Allow bad
1382         qualifiers on typedef types.
1383         * decl2.c (handle_class_head): Adjust make_typename_type call.
1384         * parse.y (nested_name_specifier): Likewise.
1385         (typename_sub0): Likewise.
1386         (typename_sub1): Likewise.
1387         * pt.c (convert_template_argument): Adjust make_typename_type
1388         return value.
1389         (tsubst): Adjust cp_build_qualified_type_real calls.
1390         (check_cv_quals_for_unify): Cope with alowing bad qualifications
1391         on template type parms.
1392         (instantiate_decl): Recheck substitutions to give warnings on bad
1393         qualifications.
1394         * tree.c (cp_build_qualified_type_real): Use tf_allow_bad_quals.
1395
1396 2002-02-21  Aldy Hernandez  <aldyh@redhat.com>
1397
1398         * cp/decl.c (duplicate_decls): Merge always_inline attribute.
1399
1400         * cp/tree.c (cp_cannot_inline_tree_fn): Do not inline at -O0
1401         unless DECL_ALWAYS_INLINE.
1402
1403 2002-02-20  Jakub Jelinek  <jakub@redhat.com>
1404
1405         * typeck.c (cp_pointer_int_sum): Renamed from
1406         pointer_int_sum, call pointer_int_sum.
1407
1408 2002-02-20  Jakub Jelinek  <jakub@redhat.com>
1409
1410         * decl.c (duplicate_decls): Return 0 if issued error about
1411         redeclaration.
1412
1413 2002-02-19  Jason Merrill  <jason@redhat.com>
1414
1415         ABI change: Mangle `void (A::*)() const' as
1416         M1AKFvvE, not MK1AFvvE.
1417         * mangle.c (write_function_type): Write cv-quals for member
1418         function type here.
1419         (write_pointer_to_member_type): Not here.
1420
1421 2002-02-18  Jason Merrill  <jason@redhat.com>
1422
1423         * pt.c (do_type_instantiation): Don't pedwarn if in_system_header.
1424         (do_decl_instantiation): Likewise.
1425
1426 2002-02-17  Craig Rodrigues  <rodrigc@gcc.gnu.org>
1427
1428         PR c++/5685
1429         * decl.c (duplicate_decls): Make warning unconditional
1430         if duplicate default argument declarations are present.
1431
1432 2002-02-17  Jakub Jelinek  <jakub@redhat.com>
1433
1434         * typeck.c (build_binary_op) [BIT_XOR_EXPR]: Remove explicit
1435         shortening.
1436
1437 2002-02-15  Nathan Sidwell  <nathan@codesourcery.com>
1438
1439         * decl.c (grokdeclarator): Set typedef_decl for all TYPE_DECLs,
1440         remove incorrect comment. Move #if 0'd code to common path. Use
1441         IMPLICIT_TYPENAME_P. Simplify & reformat ARRAY_TYPE duplication.
1442
1443 2002-02-13  Jason Merrill  <jason@redhat.com>
1444
1445         * decl.c (builtin_function): Set TREE_THIS_VOLATILE on return fns.
1446         (finish_function): Don't warn if current_function_returns_null.
1447
1448         * typeck2.c (digest_init): Do handle values of vector type.
1449
1450         * typeck2.c (digest_init, process_init_constructor): Treat vectors
1451         like arrays.
1452
1453 2002-02-11  Jason Merrill  <jason@redhat.com>
1454
1455         * parse.y (reserved_declspecs): Don't handle attributes.
1456         (reserved_typespecquals): Handle them here.
1457         * Make-lang.in (parse.c): Adjust expected conflicts.
1458
1459 2002-02-08  Jakub Jelinek  <jakub@redhat.com>
1460
1461         * parse.y (primary, primary_no_id): Use compstmt_or_stmtexpr
1462         instead of compstmt.
1463         (compstmt_or_stmtexpr): Renamed from compstmt.
1464         (compstmt): In addition to compstmt_or_stmtexpr clear last_expr_type.
1465
1466 2002-02-07  Nathan Sidwell  <nathan@codesourcery.com>
1467
1468         Rename instantiate_type_flags to tsubst_flags_t & expand use.
1469         * cp-tree.h (instantiate_type_flags): Rename to ...
1470         (tsubst_flags_t): ... here. Rename itf_complain to tf_error,
1471         add tf_warning flag.
1472         (instantiate_type): Adjust prototype.
1473         (tsubst, tsubst_expr, tsubst_copy, lookup_template_class,
1474         do_type_instantiation, cp_build_qualified_type_real): Likewise.
1475         cp_build_qualified_type: Adjust.
1476         * class.c (instantiate_type): Adjust parameter. Rename itf_* to
1477         tf_*.
1478         * call.c (standard_conversion): Rename itf_* to tf_*.
1479         (reference_binding): Likewise.
1480         (convert_like_real): Likewise.
1481         * cvt.c (cp_convert_to_pointer): Likewise.
1482         (convert_to_reference): Likewise.
1483         * decl.c (lookup_namespace_name): Use tf_* flags.
1484         (make_typename_type): Likewise.
1485         (grokdeclarator): Likewise.
1486         * pt.c (convert_nontype_argument): Adjust COMPLAIN usage.
1487         (coerce_template_template_parms, convert_template_argument,
1488         coerce_template_parms, maybe_get_template_decl_from_type_decl,
1489         lookup_template_class, tsubst_friend_function, tsubst_friend_class,
1490         instantiate_class_template, tsubst_template_arg_vector,
1491         tsubst_template_parms, tsubst_aggr_type, tsubst_default_argument,
1492         tsubst_decl, tsubst_arg_types, tsubst_function_type,
1493         tsubst_call_declarator_parms, tsubst, tsubst_copy, tsubst_expr,
1494         instantiate_template, fn_type_unification,
1495         resolve_overloaded_unification, verify_class_unification,
1496         unify, get_bindings_real, do_type_instantiation,
1497         regenerate_decl_from_template, instantiate_decl,
1498         tsubst_initializer_list, tsubst_enum,
1499         get_mostly_instantiated_function_type,
1500         invalid_nontype_parm_type_p): Likewise.
1501         * tree.c (cp_build_qualified_type_real): Likewise.
1502         * typeck.c (build_binary_op): Rename itf_* to tf_*.
1503         (build_ptrmemfunc): Likewise.
1504         (convert_for_assignment): Likewise.
1505
1506 2002-02-07  Nathan Sidwell  <nathan@codesourcery.com>
1507
1508         PR c++/109
1509         * decl.c (grokdeclarator): Allow friend declarations from
1510         dependent types.
1511         * decl2.c (handle_class_head): Don't push into template parm contexts.
1512         * pt.c (push_template_decl_real): Template parm contexts are never
1513         being defined.
1514
1515 2002-02-05  Alexandre Oliva  <aoliva@redhat.com>
1516
1517         * class.c: Include target.h.
1518         (check_bitfield_decl): Disregard EMPTY_FIELD_BOUNDARY,
1519         BITFIELDS_NBYTES_LIMITED and PCC_BITFIELD_TYPE_MATTERS for MS
1520         bit-field layout.
1521         * Make-lang.in: Adjust deps.
1522
1523 2002-02-05  Jason Merrill  <jason@redhat.com>
1524
1525         * error.c (dump_type): Be more helpful about VECTOR_TYPE.
1526
1527 2002-02-04  Jakub Jelinek  <jakub@redhat.com>
1528
1529         * semantics.c (begin_switch_stmt): Clear SWITCH_TYPE.
1530         (finish_switch_cond): Set SWITCH_TYPE.
1531
1532 2002-02-04  Richard Henderson  <rth@redhat.com>
1533
1534         * method.c (use_thunk): Always initialize the block tree.  Reindent.
1535         * semantics.c (expand_body): Emit thunks after function, not before.
1536
1537 2002-02-04  Jason Merrill  <jason@redhat.com>
1538
1539         * decl.c (start_function): Call cplus_decl_attributes immediately
1540         after grokdeclarator.
1541
1542         * decl.c (start_function): Combine DECL_RESULT handling code.
1543
1544 2002-02-03  Jason Merrill  <jason@redhat.com>
1545
1546         * xref.c: Remove.
1547         * Make-lang.in (CXX_OBJS): Remove cp/xref.o
1548         (cp/xref.o): Remove dependencies.
1549         * class.c (finish_struct_1, check_methods): Don't call xref fns.
1550         (finish_struct_1): Likewise.
1551         * friend.c (make_friend_class): Likewise.
1552         * lex.c (cxx_init, cxx_finish, extract_interface_info): Likewise.
1553         * spew.c (read_process_identifier): Likewise.
1554
1555 2002-02-01  Jason Merrill  <jason@redhat.com>
1556
1557         PR c++/4872
1558         * decl.c (finish_function): Warn about a non-void function with
1559         no return statement and no abnormal exit.
1560         * cp-tree.h (struct cp_language_function): Add returns_abnormally.
1561         (current_function_returns_abnormally): New macro.
1562         * call.c (build_call): Set it.
1563
1564         * typeck.c (build_component_ref): Always complain about offsetof
1565         constructs on non-PODs.  Only make it an error for members of
1566         virtual bases.
1567
1568         * error.c (dump_scope): Don't add TFF_DECL_SPECIFIERS.
1569         (dump_function_decl): Always dump parms.
1570
1571         * decl2.c (finish_static_data_member_decl): Complain about a local
1572         class with a static data member.
1573
1574         PR c++/4286
1575         * search.c (lookup_field_1): Don't xref a static data member
1576         just because we looked it up.
1577
1578 2002-01-31  Jason Merrill  <jason@redhat.com>
1579
1580         * Make-lang.in (parse.c): Handle .output file.
1581
1582         PR c++/3395
1583         * decl.c (xref_tag): Remember early attributes in TYPE_ATTRIBUTES,
1584         not TREE_TYPE.
1585         * semantics.c (finish_class_definition): Adjust.
1586
1587         Allow attributes in parms and casts.
1588         * parse.y (named_parm): Don't strip attrs.
1589         (declmods): Remove 'attributes' production.
1590         (nonempty_cv_qualifiers): Accept attributes.
1591         (ATTRIBUTE): Give precedence.
1592         * decl.c (groktypename): Handle attributes.
1593         (grokparms): Likewise.
1594
1595 2002-01-29  Jakub Jelinek  <jakub@redhat.com>
1596
1597         * decl2.c (cxx_decode_option): Pass 0 as last argument to
1598         cpp_handle_option.
1599         * lang-specs.h: Use cpp_unique_options instead of cpp_options
1600         when used together with cc1_options.
1601
1602 2002-01-29  Nathan Sidwell  <nathan@codesourcery.com>
1603
1604         PR c++/5132
1605         * typeck2.c (digest_init): Make sure non-array core type is
1606         instantiated.
1607         * decl2.c (reparse_absdcl_as_casts): Just store the type in the
1608         constructor, rather than build a new one.
1609         (build_expr_from_tree, CONSTRUCTOR case): Be careful with the
1610         PURPOSE of constructor elts.
1611
1612 2002-01-23  Zack Weinberg  <zack@codesourcery.com>
1613
1614         * Make-lang.in (parse.c): Adjust expected number of
1615         shift-reduce conflicts.
1616         (decl.o): Depend on diagnostic.h.
1617         * decl.c: Include diagnostic.h.
1618         (grokdeclarator): Check for null pointer.
1619         (finish_function): Don't abort when
1620         current_binding_level->parm_flag != 1, if errors have
1621         occurred; throw away the statement tree and extra binding
1622         levels, and continue.
1623         * lex.c (note_list_got_semicolon): Check for null pointer.
1624         * method.c (hack_identifier): Just return error_mark_node if
1625         value is error_mark_node.
1626         * parse.y (primary: TYPEID(type_id)): No need to use
1627         TYPE_MAIN_VARIANT here.
1628         (handler_seq): Accept an empty list of catch clauses and
1629         generate a fake handler block to avoid later crashes.
1630         (ansi_raise_identifier): Accept the error token too.
1631         * semantics.c (begin_class_definition,
1632         finish_class_definition): Check for error_mark_node.
1633
1634 2002-01-23  Zack Weinberg  <zack@codesourcery.com>
1635
1636         * typeck2.c (friendly_abort): Delete definition.
1637         * cp-tree.h (friendly_abort): Don't prototype.
1638         (my_friendly_assert): Use fancy_abort.
1639
1640 2002-01-23  Craig Rodrigues  <rodrigc@gcc.gnu.org>
1641
1642         * cp-tree.h (my_friendly_abort): Remove.
1643
1644 2002-01-23  Jakub Jelinek  <jakub@redhat.com>
1645
1646         * spew.c (pending_inlines, pending_inlines_tail,
1647         processing_these_inlines): Make static.
1648         (mark_pending_inlines): Remove static.
1649         (begin_parsing_inclass_inline): If in function, save pi
1650         for GC to cp_function_chain->unparsed_inlines instead.
1651         (process_next_inline): Likewise.
1652         * cp-tree.h (struct cp_language_function): Add unparsed_inlines.
1653         (mark_pending_inlines): Add prototype.
1654         * decl.c (spew_debug): Remove unused extern.
1655         (mark_lang_function): Call mark_pending_inlines.
1656
1657 2002-01-23  Craig Rodrigues  <rodrigc@gcc.gnu.org>
1658
1659         * call.c, class.c, decl.c, decl2.c, error.c, expr.c, friend.c,
1660         init.c, lex.c, mangle.c, method.c, pt.c, repo.c, rtti.c, search.c,
1661         semantics.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c:
1662         Change my_fancy_abort() to abort().
1663
1664 2002-01-23  Jason Merrill  <jason@redhat.com>
1665
1666         PR c++/5453
1667         * class.c (fixed_type_or_null): Fix thinko.
1668
1669         PR c++/3331
1670         * init.c (resolve_offset_ref): Use build_indirect_ref.
1671
1672         * decl2.c (grokclassfn): Don't set DECL_REGISTER on 'this'.
1673
1674 2002-01-22  Jason Merrill  <jason@redhat.com>
1675
1676         * parse.y (function_body): Suppress the block for the outermost
1677         curly braces.
1678         * decl.c (pushdecl): Don't try to skip it.
1679         (begin_function_body): Keep the block we create, not the next one.
1680         * init.c (emit_base_init): Don't mess with keep_next_level.
1681
1682         * class.c (build_base_path): Tweak formatting.
1683
1684 2002-01-19  Nathan Sidwell  <nathan@codesourcery.com>
1685
1686         Fix regression introduced with patch for c++/775
1687         * parse.y (class_head_defn): Check for template specializations
1688         with a different class-key.
1689
1690 2002-01-17  Jason Merrill  <jason@redhat.com>
1691
1692         * decl.c (begin_constructor_body, begin_destructor_body): New fns.
1693         (begin_function_body): Call them and keep_next_level.
1694         * init.c (emit_base_init): Call keep_next_level.
1695         * semantics.c (setup_vtbl_ptr): Lose.
1696         * cp-tree.h (struct cp_language_function): Remove vtbls_set_up_p.
1697         (vtbls_set_up_p): Lose.
1698         * pt.c (tsubst_expr, CTOR_INITIALIZER): Call emit_base_init.
1699         * method.c (do_build_copy_constructor): Likewise.
1700         (synthesize_method): Call finish_mem_initializers.
1701         * parse.y (nodecls): Likewise.
1702
1703         * error.c (dump_type_suffix): Print the exception specs before
1704         recursing.
1705         (dump_function_decl): Here, too.
1706
1707         * cp-tree.h (TMPL_PARMS_DEPTH): Cast to signed HOST_WIDE_INT.
1708
1709 2002-01-10  Ira Ruben   <ira@apple.com>
1710
1711         PR c++/907
1712         * decl.c (start_method): Handle attrlist.
1713
1714 2002-01-10  Jakub Jelinek  <jakub@redhat.com>
1715
1716         * decl2.c (max_tinst_depth): Increase default limit to 500.
1717
1718 2002-01-10  Graham Stott  <grahams@redhat.com>
1719
1720         * spew.c (YYCHAR): Uppercase macro parameter and add
1721         parenthesis.
1722         (YYCODE): Likewise.
1723         (NAME): Uppercase macro parameter.
1724
1725 2002-01-09  Graham Stott  <grahams@redhat.com>
1726
1727         * decl.h (grokdeclarator): Wrap long line.
1728
1729         * semantics.c (FINISH_COND): Uppercase macro paramaters and
1730         add parenthesis.
1731
1732 2002-01-08  Graham Stott  <grahams@redhat.com>
1733
1734         * xref.c (FILE_NAME_ABSOLUTE_P): Add parenthesis.
1735         (PALLOC): Uppercase macro parameter and whitespace.
1736         (SALLOC): Uppercase macro parameter.
1737         (SFREE): Uppercase macros parameter, add parenthese and
1738         whitespace.
1739         (STREQL): Uppercase macro parameter and whitespace.
1740         (STRNEQ): Likewise.
1741         (STRLSS): Likewise.
1742         (STRLEQ): Likewise.
1743         (STRGTR): Likewise.
1744         (STRGEQ): Likewise.
1745
1746         * call.c (convert_like): Add parenthesis and wrap.
1747         (convert_like_with_context): Likewise.
1748         (ICS_RANK): Whitespace.
1749         (NEED_TEMPORARY_P): Remove parenthesis.
1750
1751         * class.c (VTT_TOP_LEVEL_P): Uppercase macro parameter and
1752         whitespace.
1753         (VTT_MARKED_BINFO_P): Likewise.
1754
1755         * decl.c (BINDING_LEVEL): Add parenthesis.
1756         (DEF_OPERATOR): Likewise.
1757
1758         * mangle.c (MANGLE_TRACE): Add parenthesis.
1759         (MANGLE_TRACE_TREE): Likewise.
1760         (write_signed_number): Likewise.
1761         (write_unsigned_number): Likewise.
1762
1763         * pt.c (ccat): Uppercase macro parameter.
1764         (cat): Likewise
1765
1766         * search.c (SET_BINFO_ACCESS): Add parenthesis.
1767
1768 2002-01-07  Jason Merrill  <jason@redhat.com>
1769
1770         * decl2.c (coerce_new_type): Downgrade error for size_t mismatch
1771         to pedwarn.
1772
1773         PR c++/3536
1774         * method.c (make_thunk): If !flag_weak, give the thunk the
1775         function's linkage.
1776         (use_thunk): Here, too.
1777
1778 2002-01-07  Graham Stott  <grahams@redhat.com>
1779
1780         * error.c: Update copyright date.
1781         (print_scope_operator): Add parenthesis.
1782         (print_left_paren): Likewise.
1783         (print_right_paren): Likewise.
1784         (print_left_bracket): Likewise.
1785         (print_right_bracket): Likewise.
1786         (print_template_argument_list_start): Likewise.
1787         (print_template_argument_list_end): Likewise.
1788         (print_non_consecutive_character): Likewise.
1789         (print_tree_identifier): Likewise.
1790         (print_identifier): Likewise.
1791         (NEXT_CODE): Uppercase macro parameter.
1792         (ident_fndecl): Delete unused.
1793         (GLOBAL_THING): Likewise.
1794
1795 2002-01-06  Graham Stott  <grahams@redhat.com>
1796
1797         * cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK): Add parenthesis.
1798         (VAR_FUNCTION_OR_PARM_DECL_CHECK): Likewise.
1799         (VAR_TEMPL_TYPE_OR_FUNCTION_DECL_CHECK) Likewise.
1800         (RECORD_OR_UNION_TYPE_CHECK): Likewise.
1801         (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Likewise.
1802         (C_IS_RESERVED_WORD): Uppercase macro parameter.
1803         (C_RID_YYCODE) Likewise.
1804         (ptrmem_cst): Use rtx.
1805         (LOCAL_BINDING_P): Add whitespace.
1806         (INHERITED_VALUE_BINDING_P): Likewise.
1807         (BINDING_SCOPE): Wrap long line.
1808         (BINDING_HAS_LEVEL_P): Remove parenthesis.
1809         (BINDING_VALUE): Wrap long line.
1810         (BINDING_TYPE): Whitespace.
1811         (IDENTIFIER_GLOBAL_VALUE): Add parenthesis.
1812         (SET_IDENTIFIER_GLOBAL_VALUE): Likewise.
1813         (IDENTIFIER_NAMESPACE_VALUE): Likewise.
1814         (SET_IDENTIFIER_NAMESPACE_VALUE: Likewise.
1815         (same_type_p): Uppercase macro parameters.
1816         (same_type_ignoring_top_level_qualifiers_p): Likewise.
1817         (OVL_FUNCTION): Wrap long line.
1818         (OVL_CHAIN): Whitespace.
1819         (OVL_CURRENT): Add parenthesis and whitespace.
1820         (OVL_NEXT): Whitespace.
1821         (OVL_USED): Likewise.
1822         (IDENTIFIER_TYPE_VALUE): Likewise.
1823         (REAL_IDENTIFIER_TYPE_VALUE): Remove parenthesis.
1824         (SET_IDENTIFIER_TYPE_VALUE): Add parenthesis and whitespace.
1825         (LANG_ID_FIELD): Whitespace.
1826         (SET_LANG_ID(NODE,VALUE,NAME): Likewise.
1827         (IDENTIFIER_LABEL_VALUE): Whitespace and wrap.
1828         (SET_IDENTIFIER_LABEL_VALUE): Whitespace.
1829         (IDENTIFIER_IMPLICIT_DECL): Whitespace and wrap.
1830         (SET_IDENTIFIER_IMPLICIT_DECL); Whitespace.
1831         (IDENTIFIER_ERROR_LOCUS): Whitespace and wrap.
1832         (SET_IDENTIFIER_ERROR_LOCUS); Whitespace.
1833         (IDENTIFIER_VIRTUAL_P): Likewise.
1834         (IDENTIFIER_OPNAME_P): Likewise.
1835         (IDENTIFIER_TYPENAME_P): Remove parenthesis.
1836         (C_TYPE_FIELDS_READONLY): Uppercase macro parameters.
1837         (C_SET_EXP_ORIGINAL_CODE): Likewise.
1838         (TYPE_ASSEMBLER_NAME_STRING): Wrap long line.
1839         (TYPE_ASSEMBLER_NAME_LENGTH): Likewise.
1840         (IS_AGGR_TYPE): Uppercase macro parameter.
1841         (CLASS_TYPE_P): Likewise.
1842         (IS_AGGR_TYPE_CODE): Uppercase macro parameter and parenthesis.
1843         (IS_AGGR_TYPE_2): Whitespace.
1844         (TAGGED_TYPE_P): Uppercase macro parameter.
1845         (TYPE_BUILT_IN): Whitespace.
1846         (TYPE_FOR_JAVA): Likewise.
1847         (FUNCTION_ARG_CHAIN): Remove parenthesis.
1848         (FUNCTION_FIRST_USER_PARMTYPE): Add parenthesis.
1849         (FUNCTION_FIRST_USER_PARAM): Likewise.
1850         (PROMOTES_TO_AGGR_TYPE): Whitespace.
1851         (DERIVED_FROM_P): Add parenthesis and wrap.
1852         (UNIQUELY_DERIVED_FROM_P): Likewise.
1853         (ACCESSIBLY_UNIQUELY_DERIVED_P): Likewise.
1854         (PUBLICLY_UNIQUELY_DERIVED_P): Likewise.
1855         (CLASSTYPE_USE_TEMPLATE): Whitespace.
1856         (CLASSTYPE_INLINE_FRIENDS): Remove parenthesis.
1857         (TYPE_GETS_DELETE): Add parenthesis.
1858         (TYPE_HAS_CONVERSION): Add parenthesis and wrap.
1859         (TYPE_HAS_ASSIGN_REF): Likewise,
1860         (TYPE_HAS_CONST_ASSIGN_REF): Likewise.
1861         (TYPE_HAS_INIT_REF): Likewise.
1862         (TYPE_HAS_CONST_INIT_REF): Likewise.
1863         (TYPE_BEING_DEFINED): Likewise.
1864         (TYPE_LANG_SPECIFIC): Likewise.
1865         (CLASSTYPE_RTTI): Likewise.
1866         (TYPE_OVERLOADS_CALL_EXPR): Likewise.
1867         (TYPE_OVERLOADS_ARRAY_REF): Likewise.
1868         (TYPE_OVERLOADS_ARROW): Likewise.
1869         (TYPE_USES_MULTIPLE_INHERITANCE): Likewise.
1870         (TYPE_USES_VIRTUAL_BASECLASSES): Add parenthesis.
1871         (CLASSTYPE_METHOD_VEC): Likewise.
1872         (CLASSTYPE_MARKED_N): Likewise.
1873         (CLASSTYPE_MARKED): Likewise.
1874         (CLASSTYPE_MARKED2): Likewise.
1875         (CLASSTYPE_MARKED3): Likewise.
1876         (CLASSTYPE_MARKED4): Likewise.
1877         (CLASSTYPE_MARKED5): Likewise.
1878         (CLASSTYPE_MARKED6): Likewise.
1879         (SET_CLASSTYPE_MARKED): Whitespace.
1880         (CLEAR_CLASSTYPE_MARKED): Likewise.
1881         (SET_CLASSTYPE_MARKED2): Likewise.
1882         (CLEAR_CLASSTYPE_MARKED2): Likewise.
1883         (SET_CLASSTYPE_MARKED3): Likewise.
1884         (CLEAR_CLASSTYPE_MARKED3): Likewise.
1885         (SET_CLASSTYPE_MARKED4): Likewise.
1886         (CLEAR_CLASSTYPE_MARKED4): Likewise.
1887         (SET_CLASSTYPE_MARKED5): Likewise.
1888         (CLEAR_CLASSTYPE_MARKED5): Likewise.
1889         (SET_CLASSTYPE_MARKED6): Likewise.
1890         (CLEAR_CLASSTYPE_MARKED6): Likewise.
1891         (CLASSTYPE_TAGS): Likewise.
1892         (CLASSTYPE_VSIZE): Likewise.
1893         (CLASSTYPE_VBASECLASSES): Likewise.
1894         (CANONICAL_BINFO): Add parenthesis.
1895         (CLASSTYPE_SIZE(NODE): Likewise.
1896         (CLASSTYPE_SIZE_UNIT): Likewise.
1897         (CLASSTYPE_ALIGN(NODE): Likewise.
1898         (CLASSTYPE_USER_ALIGN): Likewise.
1899         (TYPE_JAVA_INTERFACE): Likewise.
1900         (CLASSTYPE_PURE_VIRTUALS): Likewise.
1901         (CLASSTYPE_NEEDS_VIRTUAL_REINIT): Whitespace and wrap.
1902         (TYPE_HAS_DEFAULT_CONSTRUCTOR): Likewise.
1903         (CLASSTYPE_HAS_MUTABLE): Likewise.
1904         (CLASSTYPE_FRIEND_CLASSES): Likewise. Likewise.
1905         (CLASSTYPE_DECLARED_CLASS): Whitespace and wrap.
1906         (CLASSTYPE_READONLY_FIELDS_NEED_INIT): Likewise.
1907         (CLASSTYPE_REF_FIELDS_NEED_INIT): Likewise.
1908         (CLASSTYPE_INTERFACE_ONLY): Likewise.
1909         (CLASSTYPE_INTERFACE_KNOWN): Likewise.
1910         (CLASSTYPE_INTERFACE_UNKNOWN): Likewise.
1911         (SET_CLASSTYPE_INTERFACE_UNKNOWN_X): Likewise.
1912         (SET_CLASSTYPE_INTERFACE_UNKNOWN): Likewise.
1913         (SET_CLASSTYPE_INTERFACE_KNOWN): Likewise.
1914         (CLASSTYPE_DEBUG_REQUESTED): Whitespace and wrap.
1915         (BINFO_UNSHARED_MARKED): Whitespace.
1916         (BINFO_MARKED): Whitespace and wrap.
1917         (SET_BINFO_MARKED): Likewise.
1918         (CLEAR_BINFO_MARKED): Likewise.
1919         (BINFO_VTABLE_PATH_MARKED): Likewise.
1920         (SET_BINFO_VTABLE_PATH_MARKED): Likewise.
1921         (CLEAR_BINFO_VTABLE_PATH_MARKED): Likewise.
1922         (BINFO_SUBVTT_INDEX): Remove parenthesis.
1923         (BINFO_VPTR_INDEX): Likewise.
1924         (BINFO_PRIMARY_BASE_OF): Likewise,
1925         (CLASSTYPE_VFIELDS): Whitespace.
1926         (VF_DERIVED_VALUE): Wrap long line.
1927         (NAMESPACE_LEVEL): Whitespace.
1928         (CAN_HAVE_FULL_LANG_DECL_P): Remove parenthesis.
1929         (DEFARG_POINTER): Whitespace.
1930         (DECL_NEEDED_P): Remove parenthesis.
1931         (DECL_LANGUAGE): Whitespace.
1932         (SET_DECL_LANGUAGE): Add parenthesis.
1933         (DECL_CONSTRUCTOR_P): Whitespace and wrap.
1934         (DECL_OVERLOADED_OPERATOR_P): Remove parenthesis.
1935         (DECL_IN_AGGR_P): Whitespace.
1936         (DECL_FRIEND_P): Likewise.
1937         (DECL_BEFRIENDING_CLASSES): Likewise.
1938         (DECL_STATIC_FUNCTION_P): Whitespace and wrap.
1939         (DECL_NONCONVERTING_P): Whitespace.
1940         (DECL_PURE_VIRTUAL_P): Likewise.
1941         (DECL_NEEDS_FINAL_OVERRIDER_P): Likewise.
1942         (DECL_PENDING_INLINE_INFO): Whitespace.
1943         (DECL_SORTED_FIELDS): Likewise.
1944         (DECL_DEFERRED_FN): Likewise.
1945         (DECL_TEMPLATE_INFO): Likewise.
1946         (CLASSTYPE_TEMPLATE_INFO): Whitespace and wrap.
1947         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO); Likewise.
1948         (SET_TYPE_TEMPLATE_INFO): Add parenthesis.
1949         (TMPL_ARGS_LEVEL): Likewise.
1950         (SET_TMPL_ARGS_LEVEL): Likewise.
1951         (INNERMOST_TEMPLATE_PARMS): Whitespace.
1952         (C_TYPEDEF_EXPLICITLY_SIGNED): Uppercase macro parameter.
1953         (INTEGRAL_CODE_P(CODE): Add parenthesis.
1954         (CP_INTEGRAL_TYPE_P): Remove parenthesis.
1955         (TYPE_HAS_CONSTRUCTOR): Whitespace.
1956         (TREE_HAS_CONSTRUCTOR): Likewise.
1957         (TYPE_HAS_DESTRUCTOR): Likewise.
1958         (TYPE_HAS_REAL_ASSIGN_REF): Likewise.
1959         (TYPE_HAS_COMPLEX_ASSIGN_REF): Likewise.
1960         (TYPE_HAS_ABSTRACT_ASSIGN_REF): Likewise.
1961         (TYPE_HAS_COMPLEX_INIT_REF): Likewise.
1962         (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): Likewise.
1963         (TYPE_PTRMEMFUNC_P): Likewise.
1964         (TYPE_PTRMEMFUNC_FLAG): Likewise.
1965         (TYPE_GET_PTRMEMFUNC_TYPE): Likewise.
1966         (TYPE_SET_PTRMEMFUNC_TYPE): Likewise.
1967         (TYPE_PTRMEM_CLASS_TYPE): Remove parenthesis.
1968         (TYPE_PTRMEM_POINTED_TO_TYPE): Likewise.
1969         (DECL_ACCESS): Whitespace.
1970         (DECL_GLOBAL_CTOR_P): Remove parenthesis.
1971         (DECL_GLOBAL_DTOR_P): Likewise.
1972         (GLOBAL_INIT_PRIORITY): Likewise.
1973         (DECL_TEMPLATE_PARMS): Likewise.
1974         (DECL_TEMPLATE_RESULT): Likewise.
1975         (DECL_TEMPLATE_INSTANTIATIONS): Likewise.
1976         (DECL_TEMPLATE_SPECIALIZATIONS): Likewise.
1977         (DECL_IMPLICIT_TYPEDEF_P): Remove parenthesis.
1978         (SET_DECL_IMPLICIT_TYPEDEF_P): Likewise.
1979         (PRIMARY_TEMPLATE_P): Add parenthesis.
1980         (DECL_USE_TEMPLATE): Whitespace.
1981         (CLASSTYPE_IMPLICIT_INSTANTIATION): Likewise.
1982         (SET_CLASSTYPE_IMPLICIT_INSTANTIATION): Likewise.
1983         (CLASSTYPE_EXPLICIT_INSTANTIATION): Likewise.
1984         (SET_CLASSTYPE_EXPLICIT_INSTANTIATION): Likewise.
1985         (CALL_DECLARATOR_PARMS): Remove parenthesis.
1986         (CALL_DECLARATOR_QUALS): Likewise.
1987         (CALL_DECLARATOR_EXCEPTION_SPEC): Likewise.
1988         (TEMP_NAME_P): Wrap.
1989         (VFIELD_NAME_P): Likewise.
1990         (B_SET): Uppercase macro parameters and add parenthesis.
1991         (B_CLR): Likewise.
1992         (B_TST): Likewise.
1993         (LOOKUP_NAMESPACES_ONLY): Uppercase macro parameters.
1994         (LOOKUP_TYPES_ONLY): Uppercase macro parameters.
1995         (LOOKUP_QUALIFIERS_ONLY): Uppercase macro parameters.
1996         (same_or_base_type_p): Likewise.
1997         (cp_deprecated): Likewise.
1998
1999 2002-01-05  Richard Henderson  <rth@redhat.com>
2000
2001         * semantics.c (expand_body): Revert last change.
2002
2003 2002-01-04  Jason Merrill  <jason@redhat.com>
2004
2005         PR c++/4122
2006         * class.c (update_vtable_entry_for_fn): Set delta to zero for a
2007         lost primary.
2008
2009         * class.c (build_vtbl_initializer): Check for a lost primary
2010         before calculating the vtable entry to throw away.
2011
2012 2002-01-02  Jason Merrill  <jason@redhat.com>
2013
2014         * semantics.c (expand_body): Call outlining_inline_function when
2015         emitting an inline function out of line.
2016
2017 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
2018
2019         PR c++/5116, c++/764 reversion
2020         * call.c (build_new_op): Revert the instantiations. They are
2021         incorrect.
2022
2023 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
2024
2025         PR c++/5089
2026         * decl2.c (reparse_absdcl_as_casts): Don't warn about casts to void.
2027
2028 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
2029
2030         PR c++/3716
2031         * pt.c (tsubst_aggr_type): Move pmf handling into tsubst.
2032         (tsubst, case POINTER_TYPE): Handle pmfs here.
2033         (tsubst, case OFFSET_TYPE): Check it is not an offset to
2034         reference. If it is offset to FUNCTION_TYPE, create a METHOD_TYPE.
2035
2036 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
2037
2038         PR c++/35
2039         * cp-tree.h (DECL_LANG_FLAG_0): Used for PARM_DECL too.
2040         (DECL_TEMPLATE_PARM_P): A PARM_DECL might be one too.
2041         * pt.c (process_template_parm): SET_DECL_TEMPLATE_PARM_P on the
2042         PARM_DECL.
2043         (tsubst_template_parms): Break up loop statements.
2044         (tsubst_decl, case PARM_DECL): Copy DECL_TEMPLATE_PARM_P. Template
2045         parm PARM_DECLs don't get promoted.
2046
2047 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
2048
2049         PR c++/5123
2050         * typeck.c (build_component_ref): Cope with a TEMPLATE_ID_EXPR.
2051         (build_x_function_call): Cope with a COMPONENT_REF containing a
2052         TEMPLATE_ID_EXPR.
2053
2054 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
2055
2056         PR c++/5213
2057         * pt.c (convert_template_argument): Be more careful determining
2058         when RECORD_TYPE templates are or are not templates.
2059
2060 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
2061
2062         PR c++/775
2063         * cp-tree.h (handle_class_head): Adjust prototype.
2064         * decl2.c (handle_class_head): Add DEFN_P and NEW_TYPE_P
2065         parameters. Use for all class heads.
2066         * parse.y (named_class_head_sans_basetype, named_class_head,
2067         named_complex_class_head_sans_basetype,
2068         named_class_head_sans_basetype_defn,
2069         unnamed_class_head): Remove.
2070         (class_head, class_head_apparent_template): Recognize class heads
2071         (class_head_decl, class_head_defn): New reductions. Process class
2072         heads.
2073         (structsp): Adjust class definition and class declaration
2074         reductions.
2075         (maybe_base_class_list): Give diagnostic on empty list.
2076
2077 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
2078
2079         PR c++/4379
2080         * typeck.c (build_x_unary_op): Don't destroy the OFFSET_REF on a
2081         single non-static member.
2082         (unary_complex_lvalue): If it cannot be a pointer to member, don't
2083         make it so. Check it is not pointer to reference.
2084
2085 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
2086
2087         PR c++/5132
2088         * decl2.c (reparse_absdcl_as_casts): Don't digest_init if we
2089         are processing a template decl.
2090
2091 2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>
2092
2093         PR c++/5116, c++/764
2094         * call.c (build_new_op): Make sure template class operands are
2095         instantiated. Simplify arglist construction.
2096
2097 2001-12-29  Nathan Sidwell  <nathan@codesourcery.com>
2098
2099         * call.c (build_user_type_conversion_1): Use my_friendly_assert
2100         rather than if ... abort.
2101         * cvt.c (convert_to_reference): Likewise.
2102         * semantics.c (setup_vtbl_ptr): Likewise.
2103         * pt.c (lookup_template_class): Comment typo.
2104
2105 2001-12-29  Nathan Sidwell  <nathan@codesourcery.com>
2106
2107         PR c++/5125
2108         * pt.c (push_template_decl_real): Make sure DECL has
2109         DECL_LANG_SPECIFIC.
2110
2111 2001-12-29  Nathan Sidwell  <nathan@codesourcery.com>
2112
2113         PR c++/335
2114         * init.c (resolve_offset_ref): Copy cv qualifiers of this pointer
2115         for non-reference fields.
2116         * typeck.c (require_complete_type): Use resolve_offset_ref).
2117
2118 2001-12-26  Nathan Sidwell  <nathan@codesourcery.com>
2119
2120         PR c++/196
2121         * parse.y (bad_parm): Better diagnostic when given a SCOPE_REF.
2122
2123 2001-12-24  Nathan Sidwell  <nathan@codesourcery.com>
2124
2125         PR c++/160
2126         * typeck.c (build_modify_expr): Remove old unreachable code & tidy
2127         up. Don't stabilize_references when initializing a reference.
2128
2129 2001-12-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2130
2131         * decl2.c (lang_f_options): Const-ify.
2132
2133 2001-12-20  Joseph S. Myers  <jsm28@cam.ac.uk>
2134
2135         * config-lang.in (diff_excludes): Remove.
2136
2137 2001-12-19  Nathan Sidwell  <nathan@codesourcery.com>
2138
2139         PR c++/90
2140         * typeck.c (build_function_call_real): Use original function
2141         expression for errors.
2142
2143 2001-12-18  Jason Merrill  <jason@redhat.com>
2144
2145         PR c++/3242
2146         * class.c (add_method): Do compare 'this' quals when trying to match a
2147         used function.  Don't defer to another used function.
2148
2149 2001-12-18  Nathan Sidwell  <nathan@codesourcery.com>
2150
2151         * pt.c (instantiate_clone): Remove, fold into ...
2152         (instantiate_template): ... here. Simplify by removing mutual
2153         recursion.
2154         * typeck2.c (build_m_component_ref): Don't cv qualify the function
2155         pointed to by a pointer to function.
2156         * class.c (delete_duplicate_fields_1): Typo.
2157
2158 2001-12-18  Jason Merrill  <jason@redhat.com>
2159
2160         C++ ABI change: destroy value arguments in caller.
2161         * semantics.c (genrtl_start_function, genrtl_finish_function): Don't
2162         create an extra binding level for the parameters.
2163         * decl.c (store_parm_decls): Don't do parameter cleanups.
2164
2165 2001-12-18  Nathan Sidwell  <nathan@codesourcery.com>
2166
2167         * call.c (build_new_method_call): Use '%#V'.
2168         * error.c (cv_to_string): Use V parameter to determine padding.
2169
2170 2001-12-18  Joseph S. Myers  <jsm28@cam.ac.uk>
2171
2172         * call.c, decl2.c, init.c: Use "built-in" and "bit-field"
2173         spellings in messages.
2174
2175 2001-12-17  Zack Weinberg  <zack@codesourcery.com>
2176
2177         * cp-tree.h: Delete #defines for cp_error, cp_warning,
2178         cp_pedwarn, and cp_compiler_error.
2179         * call.c, class.c, cp-tree.h, cvt.c, decl.c, decl2.c, error.c,
2180         except.c, friend.c, init.c, lex.c, method.c, parse.y, pt.c,
2181         rtti.c, search.c, semantics.c, spew.c, tree.c, typeck.c,
2182         typeck2.c: Change calls to the above macros to use their
2183         language-independent equivalents: error, warning, pedwarn, and
2184         internal_error respectively.
2185
2186 2001-12-16  Neil Booth  <neil@daikokuya.demon.co.uk>
2187
2188         * decl2.c (finish_file): Remove back_end_hook.
2189
2190 2001-12-16  Joseph S. Myers  <jsm28@cam.ac.uk>
2191
2192         * ChangeLog.1, ChangeLog.2, ChangeLog, NEWS, call.c, class.c,
2193         cp-tree.h, decl.c, decl2.c, except.c, operators.def, optimize.c,
2194         pt.c, rtti.c, semantics.c, typeck.c: Fix spelling errors.
2195
2196 2001-12-15  Joseph S. Myers  <jsm28@cam.ac.uk>
2197
2198         * lang-options.h: Use American spelling in messages.
2199
2200 2001-12-13  Jason Merrill  <jason@redhat.com>
2201
2202         * Make-lang.in (parse.h): Separate rule, just depend on parse.c.
2203
2204         Use cleanups to run base and member destructors.
2205         * init.c (push_base_cleanups): New function, split out from...
2206         (build_delete): ...here.  Lose !TYPE_HAS_DESTRUCTOR code.
2207         * decl.c (finish_destructor_body): Move vbase destruction code to
2208         push_base_cleanups.
2209         (begin_function_body, finish_function_body): New fns.
2210         (finish_function): Move [cd]tor handling and call_poplevel to
2211         finish_function_body.
2212         (pushdecl): Skip the new level.
2213         * semantics.c (genrtl_try_block): Don't call end_protect_partials.
2214         (setup_vtbl_ptr): Call push_base_cleanups.
2215         * method.c (synthesize_method): Call {begin,end}_function_body.
2216         * pt.c (tsubst_expr): Handle COMPOUND_STMT_BODY_BLOCK.
2217         * cp-tree.h: Declare new fns.
2218         * parse.y (function_body, .begin_function_body): New nonterminals.
2219         (fndef, pending_inline, function_try_block): Use function_body.
2220         (ctor_initializer_opt, function_try_block): No longer has a value.
2221         (base_init): Remove .set_base_init token.
2222         (.set_base_init, compstmt_or_error): Remove.
2223         * Make-lang.in (parse.c): Expect two fewer s/r conflicts.
2224
2225         * optimize.c (maybe_clone_body): Fix parameter updating.
2226
2227 2001-12-12  Jason Merrill  <jason@redhat.com>
2228
2229         * decl.c (store_parm_decls): Remove parms_have_cleanups cruft.
2230         * semantics.c (genrtl_start_function): Don't pass
2231         parms_have_cleanups or push an extra binding level.
2232         (genrtl_finish_function): Lose cleanup_label cruft.
2233
2234         * cp-tree.h (struct cp_language_function): Remove x_ctor_label.
2235         (ctor_label): Remove.
2236         * semantics.c (finish_return_stmt): Lose ctor_label support.
2237         * decl.c (finish_constructor_body, mark_lang_function): Likewise.
2238         * typeck.c (check_return_expr): Check DECL_DESTRUCTOR_P, not
2239         dtor_label.
2240
2241         * call.c (build_new_method_call): Let resolves_to_fixed_type_p
2242         check for [cd]tors.
2243         * class.c (fixed_type_or_null, case INDIRECT_REF): Fix.
2244
2245         * decl.c (finish_function): Check VMS_TARGET, not VMS.
2246
2247         * decl.c (start_cleanup_fn): Remove redundant pushlevel.
2248         (end_cleanup_fn): And poplevel.
2249
2250         * semantics.c (setup_vtbl_ptr): Always build a CTOR_INITIALIZER
2251         if we're in a template.
2252
2253 2001-12-12  Jakub Jelinek  <jakub@redhat.com>
2254
2255         * cp-tree.h (DESTRUCTOR_DECL_PREFIX, DESTRUCTOR_NAME_P,
2256         ANON_PARMNAME_FORMAT, ANON_PARMNAME_P, DESTRUCTOR_NAME_FORMAT,
2257         THIS_NAME_P): Delete.
2258         * spew.c (read_process_identifier): Remove DESTRUCTOR_NAME_P,
2259         THIS_NAME_P and ANON_PARMNAME_P tests from warning about clash
2260         with internal naming scheme.
2261         * error.c (dump_decl): Remove DESTRUCTOR_NAME_P use.
2262
2263 2001-12-12  Nathan Sidwell  <nathan@codesourcery.com>
2264
2265         * decl.c (grokdeclarator): Deprecated implicit typename use.
2266
2267 2001-12-11  Nathan Sidwell  <nathan@codesourcery.com>
2268
2269         PR g++/51
2270         * parse.y (frob_specs): Indicate it is a language linkage which
2271         contained the extern.
2272         * decl.c (grokdeclarator): Allow extern language linkage with
2273         other specifiers.
2274
2275 2001-12-10  Nathan Sidwell  <nathan@codesourcery.com>
2276
2277         PR g++/72
2278         * decl.c (add_binding): Don't reject duplicate typedefs involving
2279         template parameters.
2280
2281 2001-12-10  Neil Booth  <neil@daikokuya.demon.co.uk>
2282
2283         * parse.y, semantics.c: Similarly.
2284
2285 2001-12-09  Nathan Sidwell  <nathan@codesourcery.com>
2286
2287         PR g++/87
2288         * cp-tree.h (DECL_COPY_CONSTRUCTOR_P): Use copy_fn_p.
2289         (copy_args_p): Rename to ...
2290         (copy_fn_p): ... here.
2291         (grok_special_member_properties): New function.
2292         (grok_op_properties): Lose VIRTUALP parameter.
2293         (copy_assignment_arg_p): Remove.
2294         * call.c (build_over_call): Use copy_fn_p.
2295         * decl.c (grokfndecl): Reformat. Adjust call to
2296         grok_op_properties.
2297         (copy_args_p): Rename to ...
2298         (copy_fn_p): ... here. Reject template functions. Check for pass
2299         by value.
2300         (grok_special_member_properties): Remember special functions.
2301         (grok_ctor_properties): Don't remember them here, just check.
2302         (grok_op_properties): Likewise.
2303         (start_method): Call grok_special_member_properties.
2304         * decl2.c (grokfield): Likewise.
2305         (copy_assignment_arg_p): Remove.
2306         (grok_function_init): Don't remember abstract assignment here.
2307         * pt.c (instantiate_class_template): Call
2308         grok_special_member_properties.
2309         (tsubst_decl): Adjust grok_op_properties call.
2310
2311 2001-12-08  Aldy Hernandez  <aldyh@redhat.com>
2312
2313         * lex.c (rid_to_yy): Add RID_CHOOSE_EXPR and
2314         RID_TYPES_COMPATIBLE_P.
2315
2316 2001-12-08  John David Anglin  <dave@hiauly1.hia.nrc.ca>
2317
2318         * semantics.c (simplify_aggr_init_exprs_r): Add DIRECT_BIND flag in
2319         call to build_aggr_init.
2320         * cp-tree.h (DIRECT_BIND): Document new use of DIRECT_BIND.
2321
2322 2001-12-08  Neil Booth  <neil@daikokuya.demon.co.uk>
2323
2324         * parse.y: Replace uses of the string non-terminal with STRING.
2325         Don't perform string concatentaion here.
2326         (string): Remove non-terminal.
2327         * semantics.c (finish_asm_stmt): Don't concatenate strings here.
2328
2329 2001-12-05  Jason Merrill  <jason@redhat.com>
2330
2331         * cp-lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING): Define.
2332         (LANG_HOOKS_TREE_INLINING_END_INLINING): Define.
2333         * tree.c (cp_start_inlining, cp_end_inlining): New fns.
2334         * pt.c (push_tinst_level): No longer static.
2335         * cp-tree.h: Declare them.
2336
2337         * init.c (resolve_offset_ref): Don't check access for the base
2338         conversion to access a FIELD_DECL.
2339
2340         * cp-tree.h (TYPE_REFFN_P): New macro.
2341         * decl.c (bad_specifiers): Check it, too.
2342
2343         * rtti.c (create_pseudo_type_info): Set CLASSTYPE_INTERFACE_ONLY
2344         on the __*_type_info type if we haven't seen a definition.
2345
2346 2001-12-05  Neil Booth  <neil@daikokuya.demon.co.uk>
2347
2348         * decl.c: Include c-common.h.
2349         (shadow_warning): Move to c-common.c.
2350
2351 Wed Dec  5 17:00:49 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2352
2353         * decl.c (duplicate_decls): Don't copy DECL_NO_CHECK_MEMORY_USAGE.
2354
2355 2001-12-04  Nathan Sidwell  <nathan@codesourcery.com>
2356
2357         * pt.c (end_template_parm_list): Clear TREE_CHAIN of each parm.
2358
2359 2001-12-04  Nathan Sidwell  <nathan@codesourcery.com>
2360
2361         PR g++/164
2362         * init.c (sort_base_init): Allow binfos to be directly specified.
2363         * method.c (do_build_copy_constructor): Explicitly convert to the
2364         base instance.
2365         (do_build_assign_ref): Likewise.
2366
2367 2001-12-03  Hans-Peter Nilsson  <hp@bitrange.com>
2368
2369         * decl.c (xref_basetypes): Don't use C99 construct in tag_code
2370         declaration and initialization.
2371
2372 2001-12-03  Neil Booth  <neil@daikokuya.demon.co.uk>
2373
2374         * typeck2.c: Remove leading capital from diagnostic messages, as
2375         per GNU coding standards.
2376
2377 2001-12-03  Mumit Khan  <khan@nanotech.wisc.edu>
2378
2379         PR c++/3394
2380         * decl.c (xref_basetypes): Handle attributes between
2381         'class' and name.
2382
2383 2001-12-03  Nathan Sidwell  <nathan@codesourcery.com>
2384
2385         PR g++/3381
2386         * parse.y (named_complex_class_head_sans_basetype): Add new
2387         reduction.
2388         * Make-lang.in (parse.c): Adjust expected conflict count.
2389
2390 2001-12-03  Jason Merrill  <jason@redhat.com>
2391
2392         * class.c (finish_vtbls): Fill in BINFO_VPTR_FIELD in the
2393         immediate binfos for our virtual bases.
2394
2395 2001-12-02  Neil Booth  <neil@daikokuya.demon.co.uk>
2396
2397         * call.c (build_java_interface_fn_ref): Similarly.
2398         * except.c (is_admissible_throw_operand): Similarly.
2399         * init.c (build_java_class_ref): Similarly.
2400         * xref.c (open_xref_file): Similarly.
2401
2402 2001-12-01  Neil Booth  <neil@daikokuya.demon.co.uk>
2403
2404         * class.c (finish_struct): Remove trailing periods from messages.
2405         * decl.c (check_tag_decl): Similarly.
2406         * lex.c (cxx_set_yydebug): Similarly.
2407         * typeck2.c (friendly_abort): Similarly.
2408
2409 2001-11-29  Mark Mitchell  <mark@codesourcery.com>
2410
2411         PR c++/3048
2412         * cp-tree.h (ovl_member): Remove.
2413         * decl2.c (merge_functions): Handle extern "C" functions
2414         specially.
2415         * tree.c (ovl_member): Remove.
2416
2417 2001-11-29  Mark Mitchell  <mark@codesourcery.com>
2418
2419         PR c++/4842
2420         * class.c (get_basefndecls): Take an IDENTIFIER_NODE, not a
2421         FUNCTION_DECL, as input.
2422         (mark_overriders): Remove.
2423         (warn_hidden): Rework for the new ABI.
2424
2425 2001-11-29  Mark Mitchell  <mark@codesourcery.com>
2426
2427         PR c++/3471
2428         * call.c (convert_like_real): Do not build additional temporaries
2429         for rvalues of class type.
2430
2431 2001-11-28  Nathan Sidwell  <nathan@codesourcery.com>
2432
2433         * cp-tree.h (UNIQUELY_DERIVED_FROM_P): Use lookup base.
2434         (ACCESSIBLY_UNIQUELY_DERIVED_FROM_P): Likewise.
2435         (PUBLICLY_UNIQUELY_DERIVED_FROM_P: Likewise.
2436         (DERIVED_FROM_P): Likewise.
2437         (enum base_access): Renumber, add ba_quiet bit mask.
2438         (get_binfo): Remove.
2439         (get_base_distance): Remove.
2440         (binfo_value): Remove.
2441         (ACCESSIBLY_DERIVED_FROM_P): Remove.
2442         * call.c (standard_conversion): Use lookup_base.
2443         * class.c (strictly_overrides): Likewise.
2444         (layout_virtual_bases): Likewise.
2445         (warn_about_ambiguous_direct_bases): Likewise.
2446         (is_base_of_enclosing_class): Likewise.
2447         (add_vcall_offset_vtbl_entries_1): Likewise.
2448         * cvt.c (build_up_reference): Adjust comment.
2449         * init.c (build_member_call): Reformat.
2450         * search.c (get_binfo): Remove.
2451         (get_base_distance_recursive): Remove.
2452         (get_base_distance): Remove.
2453         (lookup_base_r): Tweak.
2454         (lookup_base): Add ba_quiet control. Complete the types here.
2455         (covariant_return_p): Use lookup_base.
2456         * tree.c (binfo_value): Remove.
2457         (maybe_dummy_object): Use lookup_base.
2458         * typeck.c (build_static_cast): Use lookup_base.
2459         (get_delta_difference): Likewise.
2460         * typeck2.c (binfo_or_else): Use lookup_base.
2461         (build_scoped_ref): Add back error_mark_check.
2462         (build_m_component_ref): Use lookup_base.
2463
2464 2001-11-29  Joseph S. Myers  <jsm28@cam.ac.uk>
2465
2466         * Make-lang.in (c++.generated-manpages): New dummy target.
2467
2468 Tue Nov 27 09:03:47 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2469
2470         * Make-lang.in (cp-lang.o): Depends on c-common.h.
2471         * cp-lang.c (c-common.h): Include.
2472         (LANG_HOOKS_EXPAND_CONSTANT, LANG_HOOKS_SAFE_FROM_P): New hooks.
2473         * decl.c (cxx_init_decl_processing): Don't set lang_safe_from_p.
2474         * expr.c (init_cplus_expand): Don't set lang_expand_constant.
2475
2476 2001-11-26  Neil Booth  <neil@daikokuya.demon.co.uk>
2477
2478         * decl2.c (c_language): Move to c-common.c.
2479         * lex.c (cxx_post_options, cxx_init_options): Use c-common.c
2480         functions.
2481         (cxx_init): Update.
2482
2483 2001-11-26  Jason Merrill  <jason@redhat.com>
2484
2485         * call.c (joust): Remove COND_EXPR hack.
2486
2487 2001-11-25  Aldy Hernandez  <aldyh@redhat.com>
2488
2489         * search.c (lookup_base_r): Declare bk in variable declaration
2490         space.
2491
2492 2001-11-25  Nathan Sidwell  <nathan@codesourcery.com>
2493
2494         PR g++/3145
2495         * class.c (build_vbase_pointer): Remove.
2496         (build_vbase_path): Remove.
2497         (build_base_path): New function.
2498         * cp-tree.h (base_access, base_kind): New enumerations.
2499         (build_base_path): Declare.
2500         (convert_pointer_to_real): Remove.
2501         (convert_pointer_to): Remove.
2502         (lookup_base): Declare.
2503         (convert_pointer_to_vbase): Remove.
2504         * call.c (build_scoped_method_call): Use lookup_base &
2505         build_base_path instead of convert_pointer_to_real,
2506         get_base_distance & get_binfo.
2507         (build_over_call): Likewise.
2508         * cvt.c (cp_convert_to_pointer): Likewise.
2509         (convert_to_pointer_force): Likewise.
2510         (build_up_reference): Likewise.
2511         (convert_pointer_to_real): Remove.
2512         (convert_pointer_to): Remove.
2513         * init.c (dfs_initialize_vtbl_ptrs): Use build_base_path
2514         instead of convert_pointer_to_vbase & build_vbase_path.
2515         (emit_base_init): Use build_base_path instead of
2516         convert_pointer_to_real.
2517         (expand_virtual_init): Lose unrequired conversions.
2518         (resolve_offset_ref): Use lookup_base and build_base_path
2519         instead of convert_pointer_to.
2520         * rtti.c (build_dynamic_cast_1): Use lookup_base &
2521         build_base_path instead of get_base_distance & build_vbase_path.
2522         * search.c (get_vbase_1): Remove.
2523         (get_vbase): Remove.
2524         (convert_pointer_to_vbase): Remove.
2525         (lookup_base_r): New function.
2526         (lookup_base): New function.
2527         * typeck.c (require_complete_type): Use lookup_base &
2528         build_base_path instead of convert_pointer_to.
2529         (build_component_ref): Likewise.
2530         (build_x_function_call): Likewise.
2531         (get_member_function_from_ptrfunc): Likewise.
2532         (build_component_addr): Likewise.
2533         * typeck2.c (build_scoped_ref): Likewise.
2534
2535 2001-11-22  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2536
2537         * cp-tree.h (CP_TYPE_QUALS): Removed.
2538         * decl.c (cxx_init_decl_processing): Don't set lang_dump_tree.
2539         * cp-lang.c: Set LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN and
2540         LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN.
2541         * dump.c (cp_dump_tree): Use void* dump_info argument to match
2542         lang-hooks prototype.
2543         * call.c, cp-tree.h, cvt.c, decl.c, init.c, mangle.c, method.c, pt.c,
2544         rtti.c, semantics.c, tree.c, typeck.c, typeck2.c: All references to
2545         CP_TYPE_QUALS changed to cp_type_quals.
2546         * Make-lang.in: References to c-dump.h changed to tree-dump.h.
2547         (CXX_C_OBJS): Remove c-dump.o.
2548
2549 2001-11-21  Mark Mitchell  <mark@codesourcery.com>
2550
2551         PR c++/3637
2552         * pt.c (lookup_template_class): Ensure that all specializations
2553         are registered on the list corresponding to the most general
2554         template.
2555
2556 2001-11-20  Mark Mitchell  <mark@codesourcery.com>
2557
2558         * call.c (non_reference): Add documentation.
2559         (convert_class_to_reference): Do not strip reference types
2560         from conversion operators.
2561         (maybe_handle_ref_bind): Simplify.
2562         (compare_ics): Correct handling of references.
2563
2564 2001-11-19  John Wilkinson <johnw@research.att.com>
2565
2566         * dump.c (dump_op): New function.
2567         (cp_dump_tree): Dump CLASSTYPE_TEMPLATE_SPECIALIZATION.  Use
2568         dump_op.  Dump DECL_MUTABLE, access and staticness for VAR_DECLs.
2569         DECL_PURE_VIRTUAL_P, DECL_VIRTUAL_P,
2570
2571 2001-11-19  Mark Mitchell  <mark@codesourcery.com>
2572
2573         PR4629
2574         * semantics.c (finish_sizeof): Make sure that expression created
2575         while processing a template do not have a type.
2576         (finish_alignof): Likewise.
2577         * typeck.c (c_sizeof): Likewise.
2578         (expr_sizeof): Likewise.
2579
2580 2001-11-18  Neil Booth  <neil@daikokuya.demon.co.uk>
2581
2582         * lex.c (cxx_finish): Call c_common_finish.
2583         (finish_parse): Remove.
2584
2585 2001-11-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2586
2587         * decl.c (create_array_type_for_decl): Check if NAME is NULL_TREE
2588         when displaying error message about missing array bounds.
2589
2590 2001-11-17  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2591
2592         * mangle.c (write_expression): Handle CAST_EXPR, STATIC_CAST_EXPR,
2593         CONST_CAST_EXPR.
2594         * operators.def: Add CAST_EXPR, STATIC_CAST_EXPR, CONST_CAST_EXPR.
2595
2596 2001-11-16  Neil Booth  <neil@daikokuya.demon.co.uk>
2597
2598         * cp-tree.h (print_class_statistics): Restore.
2599
2600 2001-11-15  Jason Merrill  <jason@redhat.com>
2601
2602         * method.c (use_thunk): Don't emit debugging information for thunks.
2603
2604         * parse.y: Add ... IDENTIFIER SCOPE and ... PTYPENAME SCOPE expansions.
2605         * decl.c (make_typename_type): Handle getting a class template.
2606         * search.c (lookup_field_r): A class template is good enough for
2607         want_type.
2608
2609         * call.c (convert_like_real): Only use cp_convert for the bad part.
2610         (standard_conversion): Also allow bad int->enum.
2611         * typeck.c (ptr_reasonably_similar): Also allow functions to
2612         interconvert.  Pointers to same-size integers are reasonably
2613         similar.
2614
2615         * cvt.c (convert_to_void): If we build a new COND_EXPR, always
2616         give it void type.
2617
2618 2001-11-15  Nathan Sidwell  <nathan@codesourcery.com>
2619
2620         PR g++/3154
2621         * init.c (sort_base_init): Remove unreachable code.
2622         (expand_member_init): Adjust comment to reflect reality. Simplify
2623         and remove unreachable code.
2624
2625 2001-11-15  Neil Booth  <neil@daikokuya.demon.co.uk>
2626
2627         * cp-tree.h (init_reswords, cxx_init_decl_processing): New.
2628         (cxx_init): Update prototype.
2629         * decl.c (init_decl_processing): Rename.  Move null node init
2630         to its creation time.
2631         * lex.c (cxx_init_options): Update.
2632         (cxx_init): Combine with old init_parse; also call
2633         cxx_init_decl_processing.
2634
2635 2001-11-14  Richard Sandiford  <rsandifo@redhat.com>
2636
2637         * decl.c (check_initializer): Try to complete the type of an
2638         array element before checking whether it's complete.  Don't
2639         complain about arrays with complete element types but an
2640         unknown size.
2641         (cp_finish_decl): Build the hierarchical constructor before
2642         calling maybe_deduce_size_from_array_init.
2643
2644 2001-11-14  Joseph S. Myers  <jsm28@cam.ac.uk>
2645
2646         * Make-lang.in: Change all uses of $(manext) to $(man1ext).
2647
2648 2001-11-13  Nathan Sidwell  <nathan@codesourcery.com>
2649
2650         PR g++/4206
2651         * parse.y (already_scoped_stmt): Remove.
2652         (simple_stmt, WHILE & FOR): Use implicitly_scoped_stmt.
2653
2654 2001-11-12  H.J. Lu <hjl@gnu.org>
2655
2656         * cvt.c (ocp_convert): Don't warn the address of a weak
2657         function is always `true'.
2658
2659 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
2660
2661         * cp-lang.c (LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE,
2662         LANG_HOOKS_PRINT_STATISTICS, LANG_HOOKS_PRINT_XNODE,
2663         LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_SET_YYDEBUG): Override.
2664         * cp-tree.h (print_class_statistics): Remove.
2665         (cxx_print_statistics, cxx_print_xnode, cxx_print_decl, cxx_print_type,
2666         cxx_print_identifier, cxx_set_yydebug): New.
2667         * lex.c (set_yydebug): Rename c_set_yydebug.
2668         * ptree.c (print_lang_decl, print_lang_type, print_lang_identifier,
2669         lang_print_xnode): Rename.
2670         * tree.c (print_lang_statistics): Rename.
2671
2672 2001-11-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2673
2674         * class.c (dump_array): Fix format specifier warning.
2675
2676 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
2677
2678         * cp-lang.c (LANG_HOOKS_NAME): Override.
2679         (struct lang_hooks): Constify.
2680         * lex.c (cxx_init_options): Update.
2681         (lang_identify): Remove.
2682         * parse.y (language_string): Remove.
2683
2684 2001-11-08  Andreas Franck  <afranck@gmx.de>
2685
2686         * Make-lang.in (CXX_INSTALL_NAME, GXX_CROSS_NAME,
2687         DEMANGLER_CROSS_NAME): Handle program_transform_name the way
2688         suggested by autoconf.
2689         (GXX_TARGET_INSTALL_NAME, CXX_TARGET_INSTALL_NAME): Define.
2690         (c++.install-common): Use the transformed target alias names.
2691
2692 2001-11-06  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
2693
2694         * Make-lang.in: Update.
2695         * cp-lang.c: Include langhooks-def.h.
2696
2697 2001-11-04  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2698
2699         * pt.c (tsubst_copy): Call tsubst for TYPEOF_EXPR.
2700
2701 2001-11-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2702
2703         * lex.c (copy_lang_type): Add static prototype.
2704
2705 2001-11-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2706
2707         * pt.c (unify): Handle SCOPE_REF.
2708
2709 2001-11-01  Jakub Jelinek  <jakub@redhat.com>
2710
2711         * tree.c (cp_copy_res_decl_for_inlining): Adjust
2712         DECL_ABSTRACT_ORIGIN for the return variable.
2713
2714 2001-10-31  Zack Weinberg  <zack@codesourcery.com>
2715
2716         *  Make-lang.in: Replace $(INTL_TARGETS) with po-generated.
2717
2718 2001-10-28  Joseph S. Myers  <jsm28@cam.ac.uk>
2719
2720         * ChangeLog.1, ChangeLog.2, ChangeLog, class.c, decl2.c, search.c,
2721         semantics.c, spew.c: Fix spelling errors.
2722
2723 2001-10-27  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2724
2725         * decl2.c (validate_nonmember_using_decl): Handle NAMESPACE_DECL.
2726
2727 2001-10-25  Zack Weinberg  <zack@codesourcery.com>
2728
2729         * cp-lang.c: Redefine LANG_HOOKS_CLEAR_BINDING_STACK to
2730         pop_everything.
2731
2732 Tue Oct 23 14:00:20 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2733
2734         * cp-lang.c (cxx_get_alias_set): New function.
2735         Point LANG_HOOKS_GET_ALIAS_SET to it.
2736
2737 2001-10-23  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2738
2739         * cp-tree.def (UNBOUND_CLASS_TEMPLATE): New tree node.
2740         * cp-tree.h (make_unbound_class_template): Prototype new function.
2741         * decl.c (make_unbound_class_template): New function.
2742         * decl2.c (arg_assoc_template_arg): Handle UNBOUND_CLASS_TEMPLATE.
2743         * error.c (dump_type): Likewise.
2744         * mangle.c (write_type): Likewise.
2745         * parse.y (template_parm): Likewise.
2746         (template_argument): Use make_unbound_class_template.
2747         * pt.c (convert_template_argument): Handle UNBOUND_CLASS_TEMPLATE.
2748         (tsubst): Likewise.
2749         (tsubst_copy): Likewise.
2750         (unify): Likewise.
2751         * tree.c (walk_tree): Likewise.
2752         * typeck.c (comptypes): Likewise.
2753
2754 2001-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2755
2756         * xref.c (GNU_xref_member): Use safe-ctype macros and/or fold
2757         extra calls into fewer ones.
2758
2759 2001-10-18  Alexandre Oliva  <aoliva@redhat.com>
2760
2761         * decl.c (duplicate_decls): Propagate DECL_UNINLINABLE.
2762         Warn when merging inline with attribute noinline.
2763         (start_decl, start_function): Warn if inline and attribute
2764         noinline appear in the same declaration.
2765
2766 2001-10-16  H.J. Lu <hjl@gnu.org>
2767
2768         * cp-tree.h (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Defined
2769         for tree checking disabled.
2770
2771 2001-10-16  Hans-Peter Nilsson  <hp@axis.com>
2772
2773         * cp-tree.h (VFIELD_NAME_FORMAT) [NO_DOLLAR_IN_LABEL &&
2774         NO_DOT_IN_LABEL]: Adjust to match VFIELD_NAME.
2775
2776 2001-10-15  Richard Sandiford  <rsandifo@redhat.com>
2777
2778         * pt.c (UNIFY_ALLOW_MAX_CORRECTION): Define.
2779         (unify): Only handle MINUS_EXPR specially if the above flag is set
2780         and the subtracted constant is 1.  Clear the flag on recursive calls.
2781         Set it when unifying the maximum value in an INTEGER_TYPE's range.
2782
2783 2001-10-15  Richard Sandiford  <rsandifo@redhat.com>
2784
2785         * decl.c (bad_specifiers): Don't allow exception specifications
2786         on any typedefs.
2787
2788 2001-10-14  Neil Booth  <neil@daikokuya.demon.co.uk>
2789
2790         * cp/lex.c (init_cp_pragma): Similarly.
2791
2792 2001-10-13  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2793
2794         * pt.c (lookup_template_class): Build complete template arguments
2795         for BOUND_TEMPLATE_TEMPLATE_PARM.
2796
2797 2001-10-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2798
2799         * cp-tree.h (TYPE_BINFO): Update comment.
2800         (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): New macro.
2801         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Use template_info.
2802         (TYPENAME_TYPE_FULLNAME): Use TYPE_FIELDS.
2803         (copy_type): Prototype new function.
2804         * lex.c (copy_lang_decl): Gather tree node statistics.
2805         (copy_lang_type): New function.
2806         (copy_type): Likewise.
2807         (cp_make_lang_type): Create lang_type for
2808         BOUND_TEMPLATE_TEMPLATE_PARM.  Set TYPE_BINFO for TYPENAME_TYPE
2809         and BOUND_TEMPLATE_TEMPLATE_PARM.
2810         * pt.c (tsubst): Use copy_type instead of copy_node.
2811         * search.c (lookup_field_1): Ignore TYPENAME_TYPE.
2812
2813 2001-10-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2814
2815         * pt.c (determine_specialization): Ignore functions without
2816         DECL_TEMPLATE_INFO.
2817
2818 2001-10-12  Nathan Sidwell  <nathan@codesourcery.com>
2819
2820         PR g++/4476
2821         * typeck2.c (abstract_virtuals_error): Ignore incomplete classes.
2822
2823 2001-10-11  Jason Merrill  <jason_merrill@redhat.com>
2824
2825         * typeck2.c (store_init_value): Don't re-digest a bracketed
2826         initializer.
2827
2828         * class.c (finish_struct_anon): Use TYPE_ANONYMOUS_P instead of
2829         ANON_AGGR_TYPE_P.
2830
2831 2001-10-11  Richard Henderson  <rth@redhat.com>
2832
2833         * class.c (build_vtable_entry_ref): Create a VTABLE_REF instead
2834         of an asm statement.
2835         (build_vtbl_ref_1): Split out from build_vtbl_ref.
2836         (build_vfn_ref): Use it to handle vtable descriptors before
2837         calling build_vtable_entry_ref.
2838         * decl2.c (output_vtable_inherit): Use assemble_vtable_inherit.
2839
2840 2001-10-10  Richard Henderson  <rth@redhat.com>
2841
2842         * parse.y (asm_operand): Allow named operands.
2843         * semantics.c (finish_asm_stmt): Tweek for changed location
2844         of the operand constrant.
2845
2846 2001-10-09  Jason Merrill  <jason_merrill@redhat.com>
2847
2848         * call.c (standard_conversion): Add bad conversion between
2849         integers and pointers.
2850         (convert_like_real): Don't use convert_for_initialization for bad
2851         conversions; complain here and use cp_convert.
2852         (build_over_call): Don't handle bad conversions specially.
2853         (perform_implicit_conversion): Allow bad conversions.
2854         (can_convert_arg_bad): New fn.
2855         * cp-tree.h: Declare it.
2856         * typeck.c (convert_for_assignment): Use it.
2857         (ptr_reasonably_similar): Any target type is similar to void.
2858
2859 2001-10-08  Alexandre Oliva  <aoliva@redhat.com>
2860
2861         * Make-lang.in (CXX_OBJS): Added cp-lang.o.
2862         (cp/cp-lang.o): New rule.
2863         * cp-tree.h: Declare hooks.
2864         * tree.c: Make hooks non-static.
2865         (init_tree): Don't initialize hooks here.
2866         * lex.c: Likewise.  Move definition of lang_hooks to...
2867         * cp-lang.c: ... new file.
2868
2869 2001-10-08  Richard Henderson  <rth@redhat.com>
2870
2871         * cp-tree.h (struct lang_decl_flags): Remove declared_inline.
2872         (DECL_DECLARED_INLINE_P): Use the bit in struct c_lang_decl.
2873
2874 2001-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2875
2876         * class.c (build_vtable_entry_ref): Const-ify.
2877         * decl.c (predefined_identifier,
2878         initialize_predefined_identifiers): Likewise.
2879         * init.c (build_new_1): Likewise.
2880         * lex.c (cplus_tree_code_type, cplus_tree_code_length, resword):
2881         Likewise.
2882
2883 2001-10-05  Alexandre Oliva  <aoliva@redhat.com>
2884
2885         * optimize.c (struct inline_data): Moved to ../tree-inline.c.
2886         (INSNS_PER_STMT): Likewise.
2887         (remap_decl, remap_block, copy_scopy_stmt, copy_body_r): Likewise.
2888         (copy_body, initialize_inlined_parameters): Likewise.
2889         (declare_return_variable, inlinable_function_p): Likewise.
2890         (expand_call_inline, expand_calls_inline): Likewise.
2891         (optimize_inline_calls, clone_body): Likewise.
2892         * tree.c (walk_tree): Moved to ../tree-inline.c.
2893         (walk_tree_without_duplicates): Likewise.
2894         (copy_tree_r, remap_save_expr): Likewise.
2895
2896 2001-10-04  Alexandre Oliva  <aoliva@redhat.com>
2897
2898         * Make-lang.in (cp/decl.o, cp/tree.o): Depend on tree-inline.h.
2899         (cp/pt.o, cp/semantics.o, cp/optimize.o): Likewise.
2900         * cp-tree.h (lang_decl): Moved inlined_fns to tree_decl.
2901         (TREE_READONLY_DECL_P, DECL_INLINED_FNS): Moved to ../tree.h.
2902         (flag_inline_trees): Moved declaration to ../tree-inline.h.
2903         (walk_tree): Moved declaration to ../tree-inline.h.
2904         (walk_tree_without_duplicates, copy_tree_r): Likewise.
2905         (remap_save_expr): Likewise.
2906         * decl.c: Include tree-inline.h.
2907         (lang_mark_tree): Don't mark inlined_fns.
2908         * decl2.c (flag_inline_trees): Moved defn to ../tree-inline.c.
2909         * optimize.c: Include tree-inline.h.
2910         (optimize_inline_calls): Move declaration to ../tree.h, as
2911         non-static.
2912         (remap_decl): Use language-independent constructs and hooks.
2913         (remap_block, copy_body_r, declare_return_variable): Likewise.
2914         (inlinable_function_p): Likewise.  Don't test for
2915         DECL_LANG_SPECIFIC before DECL_INLINED_FNS as inlined_fns is
2916         no longer language-specific.
2917         (optimize_inline_calls): Likewise.  Make it non-static.  Moved
2918         call of dump_function to...
2919         (optimize_function): Here...
2920         (clone_body): New function, extracted from...
2921         (maybe_clone_body): ... here.  Build decl_map locally and pass
2922         it on to clone_body.
2923         * pt.c, semantics.c: Include tree-inline.h.
2924         * tree.c: Likewise.
2925         (cp_walk_subtrees): New language-specific hook for tree inlining.
2926         (cp_cannot_inline_tree_fn, cp_add_pending_fn_decls,
2927         cp_is_overload_p, cp_auto_var_in_fn_p,
2928         cp_copy_res_decl_for_inlining): Likewise.
2929         (walk_tree): Move language-specific constructs into...
2930         (cp_walk_subtrees): this new function.
2931         (copy_tree_r): Use language-independent constructs and hooks.
2932         (init_tree): Initialize tree inlining hooks.
2933         (remap_save_expr): Adjust prototype so that the declaration
2934         does not require the definition of splay_tree.
2935
2936 2001-10-03  John David Anglin  <dave@hiauly1.hia.nrc.ca>
2937
2938         * rtti.c (get_tinfo_decl): Call typeinfo_in_lib_p with the type used
2939         to build the declaration instead of the declaration itself.
2940
2941 2001-10-02  Jason Merrill  <jason_merrill@redhat.com>
2942
2943         * decl2.c (cxx_decode_option): Add 'else'.
2944
2945         * spew.c (end_input): No longer static.
2946         * cp-tree.h: Declare it.
2947         * parse.y (datadef): Add "error END_OF_SAVED_INPUT" expansion.
2948
2949 2001-10-02  Joseph S. Myers  <jsm28@cam.ac.uk>
2950
2951         * call.c (build_over_call), typeck.c (build_function_call_real):
2952         Pass type attributes to check_function_format rather than name or
2953         assembler name.  Don't require there to be a name or assembler
2954         name to check formats.
2955
2956 2001-10-02  Joseph S. Myers  <jsm28@cam.ac.uk>
2957
2958         * decl.c (init_decl_processing): Don't call
2959         init_function_format_info.  Initialize lang_attribute_table
2960         earlier.
2961         (builtin_function): Call decl_attributes.
2962         (insert_default_attributes): New.
2963
2964 2001-10-01  Jason Merrill  <jason_merrill@redhat.com>
2965
2966         * decl.c (grokdeclarator): Copy array typedef handling from C
2967         frontend.
2968
2969         * decl.c (grokdeclarator): Copy too-large array handling from C
2970         frontend.
2971
2972 2001-09-29  Alexandre Oliva  <aoliva@redhat.com>
2973
2974         * config-lang.in (target_libs): Added target-gperf, so that we
2975         don't try to build it if C++ is disabled.
2976
2977 2001-09-23  Zack Weinberg  <zack@codesourcery.com>
2978
2979         * Make-lang.in (CXX_OBJS): Take out cp/errfn.o.
2980         (cp/errfn.o): Delete rule.
2981         (cp/error.o): Depend on flags.h.
2982         * errfn.c: Delete file.
2983         * cp-tree.h: Declare warn_deprecated.  Remove definitions of
2984         TFF_NAMESPACE_SCOPE, TFF_CLASS_SCOPE, TFF_CHASE_NAMESPACE_ALIAS,
2985         and TFF_TEMPLATE_DEFAULT_ARGUMENTS. #define cp_error, cp_warning,
2986         cp_pedwarn, and cp_compiler_error to error, warning, pedwarn, and
2987         internal_error respectively.  Make cp_deprecated into a macro.
2988         Don't define cp_printer typedef or declare cp_printers.
2989         * error.c: Include flags.h.
2990         Delete: struct tree_formatting_info, print_function_argument_list,
2991         print_declaration, print_expression, print_function_declaration,
2992         print_function_parameter, print_type_id, print_cv_qualifier_seq,
2993         print_type_specifier_seq, print_simple_type_specifier,
2994         print_elaborated_type_specifier, print_rest_of_abstract_declarator,
2995         print_parameter_declaration_clause, print_exception_specification,
2996         print_nested_name_specifier, and definition of cp_printers.
2997         (locate_error): New function.
2998         (cp_error_at, cp_warning_at, cp_pedwarn_at): Moved here and
2999         rewritten in terms of locate_error and diagnostic.c.
3000         (cp_tree_printer): Rename cp_printer; wire up to *_to_string
3001         instead of deleted print_* routines.  Handle %C, %L, %O, %Q also.
3002         (init_error): Adjust to match.
3003
3004 Sat Sep 22 09:15:31 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3005
3006         * Make-lang.in (CXX_C_OBJS): Add attribs.o.
3007
3008 2001-09-21  Richard Henderson  <rth@redhat.com>
3009
3010         * class.c (set_vindex): Mind TARGET_VTABLE_USES_DESCRIPTORS.
3011         (build_vtbl_initializer): Likewise.
3012         (build_vfn_ref): New.
3013         * cp-tree.h: Declare it.
3014         * call.c (build_over_call): Use it.
3015         * decl2.c (mark_vtable_entries): Mark FDESC_EXPR.
3016         * typeck.c (get_member_function_from_ptrfunc): Mind descriptors.
3017
3018 Fri Sep 21 08:16:19 2001  J"orn Rennecke <amylaar@redhat.com>
3019
3020         * decl.c (grokdeclarator): Use C syntax for attr_flags declaration.
3021
3022 2001-09-21  Joseph S. Myers  <jsm28@cam.ac.uk>
3023
3024         Table-driven attributes.
3025         * decl.c: Rename DECL_MACHINE_ATTRIBUTES to DECL_ATTRIBUTES.
3026         * decl2.c (cplus_decl_attributes): Only take one attributes
3027         parameter.
3028         * cp-tree.c (cplus_decl_attributes): Update prototype.
3029         * class.c (finish_struct), decl.c (start_decl, start_function),
3030         decl2.c (grokfield), friend.c (do_friend), parse.y
3031         (parse_bitfield): Update calls to cplus_decl_attributes.
3032         * decl.c (grokdeclarator): Take a pointer to a single ordinary
3033         attribute list.
3034         * decl.h (grokdeclarator): Update prototype.
3035         * decl2.c (grokfield): Take a single ordinary attribute list.
3036         * friend.c (do_friend): Likewise.
3037         * decl.c (shadow_tag, groktypename, start_decl,
3038         start_handler_parms, grokdeclarator, grokparms, start_function,
3039         start_method), decl2.c (grokfield, grokbitfield, grokoptypename),
3040         parse.y (parse_field, parse_bitfield, component_decl_1), pt.c
3041         (process_template_parm, do_decl_instantiation): Pass single
3042         ordinary attribute lists around.
3043         * decl.c (grokdeclarator): Correct handling of nested attributes.
3044         Revert the patch
3045         1998-10-18  Jason Merrill  <jason@yorick.cygnus.com>
3046                 * decl.c (grokdeclarator): Embedded attrs bind to the right,
3047                 not the left.
3048         .
3049         * cp-tree.h (cp_valid_lang_attribute): Remove declaration
3050         (cp_attribute_table): Declare.
3051         * decl.c (valid_lang_attribute): Don't define.
3052         (lang_attribute_table): Define.
3053         (init_decl_processing): Initialize lang_attribute_table instead of
3054         valid_lang_attribute.
3055         * tree.c (cp_valid_lang_attribute): Remove.
3056         (handle_java_interface_attribute, handle_com_interface_attribute,
3057         handle_init_priority_attribute): New functions.
3058         (cp_attribute_table): New array.
3059         * decl2.c (import_export_class): Don't use
3060         targetm.valid_type_attribute.
3061
3062 2001-09-15  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
3063
3064         * Make-lang.in (cp/error.o): Depend on real.h
3065         * error.c: #include "real.h"
3066
3067 2001-09-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3068
3069         * mangle.c (mangle_conv_op_name_for_type): Use concat in lieu of
3070         xmalloc/strcpy/strcat.
3071
3072 2001-09-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3073
3074         * decl.c (warn_extern_redeclared_static, cp_make_fname_decl):
3075         Const-ification.
3076         * pt.c (tsubst_decl): Likewise.
3077
3078 2001-09-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3079
3080         * decl2.c (lang_f_options): Const-ification.
3081         * lex.c (cplus_tree_code_name): Likewise.
3082         * spew.c (yyerror): Likewise.
3083
3084 2001-09-06  Nathan Sidwell  <nathan@codesourcery.com>
3085
3086         PR c++/3986
3087         * class.c (force_canonical_binfo_r): Check & move an indirect
3088         primary base first.
3089         (force_canonical_binfo): Check that it's not already
3090         canonical.
3091         (mark_primary_virtual_base): Remove BINFO parameter.
3092         (mark_primary_bases): Adjust, set BINFO_LOST_PRIMARY_P here.
3093
3094 2001-09-06  Nathan Sidwell  <nathan@codesourcery.com>
3095
3096         Remove TYPE_NONCOPIED_PARTS.
3097         * cp-tree.h (CLASSTYPE_INLINE_FRIENDS): Map onto
3098         CLASSTYPE_PURE_VIRTUALS.
3099         (TYPE_RAISES_EXCEPTIONS): Map onto TYPE_BINFO.
3100         * class.c (duplicate_tag_error): Remove TYPE_NONCOPIED_PARTS.
3101         (layout_class_type): Don't call fixup_inline_methods here ...
3102         (finish_struct_1): ... call it here.
3103
3104 2001-09-04  Mark Mitchell  <mark@codesourcery.com>
3105
3106         * decl.c (duplicate_decls): Remove code deadling with
3107         DECL_SAVED_INSNS.
3108         * decl2.c (finish_file): Likewise.
3109         * pt.c (instantiate_decl): Likewise.
3110         * semantics.c (expand_body): Don't defer local functions if
3111         they wouldn't be deferred for some other reason.  Don't
3112         generate RTL for functions that will not be emitted.
3113         (genrtl_start_function): Remove code deadling with
3114         DECL_SAVED_INSNS.
3115         (genrtl_finish_function): Likewise.
3116
3117 2001-09-04  Nathan Sidwell  <nathan@codesourcery.com>
3118
3119         PR c++/4203
3120         * call.c (build_over_call): Do not optimize any empty base
3121         construction.
3122
3123 2001-08-31  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
3124
3125         * error.c (dump_template_decl): Output template parameters
3126         together with their specifiers.
3127         Output `class' prefix for template template parameter.
3128         (dump_decl): Fix formatting.
3129
3130 2001-08-30  Kurt Garloff  <garloff@suse.de>
3131
3132         * optimize.c (inlinable_function_p): Allow only smaller single
3133         functions. Halve inline limit after reaching recursive limit.
3134
3135 2001-08-30  Joern Rennecke <amylaar@redhat.com>
3136             Jason Merrill  <jason_merrill@redhat.com>
3137
3138         * class.c (build_vtable_entry_ref): Subtract in char*, not
3139         ptrdiff_t.
3140
3141 2001-08-23  Jason Merrill  <jason_merrill@redhat.com>
3142
3143         * tree.c (cp_build_qualified_type_real): Use get_qualified_type.
3144         (build_cplus_array_type): Use cp_build_qualified_type, not
3145         TYPE_MAIN_VARIANT, to get an unqualified version.
3146
3147         * decl2.c (grok_alignof): Lose.
3148         (build_expr_from_tree): Use expr_sizeof and c_alignof_expr.
3149         * typeck.c (c_alignof): Lose.
3150         * semantics.c (finish_sizeof, finish_alignof): New.
3151         * parse.y: Use them.
3152         * cp-tree.h: Declare them.
3153
3154 2001-08-22  Jason Merrill  <jason_merrill@redhat.com>
3155
3156         * pt.c (tsubst_expr): Hand off to the TREE_CHAIN of a statement.
3157         Don't loop in COMPOUND_STMT, FOR_STMT or TRY_BLOCK.
3158         * tree.c (cp_statement_code_p): A TAG_DEFN is a statement.
3159
3160 2001-08-19  Jakub Jelinek  <jakub@redhat.com>
3161
3162         * typeck2.c (add_exception_specifier): Only require complete type if
3163         not in processing template declaration.
3164
3165 2001-08-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3166
3167         * decl.c: Cast argument to size_t, not HOST_WIDE_INT, in calls to
3168         GNU_xref_start_scope and GNU_xref_end_scope.
3169
3170         * tree.c (TYPE_HASH): Moved to ../tree.h.
3171
3172 2001-08-16  Mark Mitchell  <mark@codesourcery.com>
3173
3174         * cvt.c (convert_to_void): Preserve TREE_SIDE_EFFECTS
3175         on COMPOUND_EXPRs.
3176
3177 2001-08-14  Richard Henderson  <rth@redhat.com>
3178
3179         * class.c, cp-tree.h (build_vfn_ref): Remove.
3180         * call.c, rtti.c: Replace all refernces with build_vtbl_ref.
3181
3182 2001-08-13  Mark Mitchell  <mark@codesourcery.com>
3183
3184         * call.c (build_over_call): Mark COMPOUND_EXPRs generated for
3185         empty class assignment as having side-effects to avoid
3186         spurious warnings.
3187
3188 2001-08-13  Zack Weinberg  <zackw@panix.com>
3189
3190         * Make-lang.in (cp/except.o): Add libfuncs.h to dependencies.
3191         * except.c: Include libfuncs.h.
3192
3193 2001-08-11  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
3194
3195         * decl.c (grokdeclarator): Clarify diagnostic message.
3196
3197 2001-08-13  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
3198
3199         * decl2.c (do_nonmember_using_decl): Replace using directive
3200         with using declaration in the error message.
3201
3202 2001-08-11  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
3203
3204         * pt.c (maybe_fold_nontype_arg): Use TREE_TYPE of ARG as the
3205         criterion to avoid rebuilding expression tree instead of
3206         processing_template_decl.
3207
3208 2001-08-07  Jason Merrill  <jason_merrill@redhat.com>
3209
3210         Support named return value optimization for inlines, too.
3211         * decl.c (finish_function): Nullify returns here.
3212         * semantics.c (genrtl_start_function): Not here.
3213         (cp_expand_stmt): Don't mess with CLEANUP_STMTs.
3214         (nullify_returns_r): No longer static.  Just clear RETURN_EXPR.
3215         Also nullify the CLEANUP_STMT for the nrv.
3216         * cp-tree.h: Declare it.
3217         * optimize.c (declare_return_variable): Replace the nrv with the
3218         return variable.
3219         * typeck.c (check_return_expr): Be more flexible on alignment check.
3220         Ignore cv-quals when checking for a matching type.
3221
3222 2001-08-09  Richard Henderson  <rth@redhat.com>
3223
3224         * decl2.c (finish_objects): Use target hooks instead of
3225         assemble_constructor and assemble_destructor.
3226
3227 2001-08-08  John David Anglin  <dave@hiauly1.hia.nrc.ca>
3228
3229         * g++spec.c (lang_specific_driver): Quote argument after `-Xlinker'.
3230
3231 2001-08-07  Nathan Sidwell  <nathan@codesourcery.com>
3232
3233         PR c++/3820
3234         Stop using TYPE_NONCOPIED_PARTS.
3235         * call.c (build_over_call): Be careful when copy constructing
3236         or assigning to an empty class.
3237         * class.c (check_bases_and_members): It has a
3238         COMPLEX_ASSIGN_REF if it has a vptr.
3239         (layout_class_type): Don't add empty class padding to
3240         TYPE_NONCOPIED_PARTS.
3241         (finish_struct_1): Don't add the VFIELD either.
3242         * cp-tree.h (TYPE_HAS_TRIVIAL_INIT_REF): Mention _copy_
3243         initialization.
3244
3245 2001-08-07  Jason Merrill  <jason_merrill@redhat.com>
3246
3247         * tree.c (walk_tree): Walk siblings even if !walk_subtrees.
3248
3249 2001-08-06  Richard Henderson  <rth@redhat.com>
3250
3251         * decl2.c (finish_objects): Pass a symbol_ref and priority to
3252         assemble_{constructor,destructor}.  Remove priority handling.
3253
3254 2001-08-05  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
3255
3256         Don't allow template-id in using-declaration.
3257         * decl2.c (validate_nonmember_using_decl): Handle template-ids.
3258         (do_class_using_decl): Likewise.
3259
3260 2001-08-04  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
3261
3262         * cp/spew.c (read_token): No need to pop buffers.
3263
3264 2001-08-02  Stan Shebs  <shebs@apple.com>
3265
3266         * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY): Remove, no longer used.
3267         (fnaddr_from_vtable_entry): Remove decl.
3268         * method.c (use_thunk): Update comment.
3269
3270 2001-08-01  Andrew Cagney  <ac131313@redhat.com>
3271
3272         * repo.c (get_base_filename): Change return value to const char
3273         pointer.
3274
3275 2001-08-02  Nathan Sidwell  <nathan@codesourcery.com>
3276
3277         Kill -fhonor-std.
3278         * NEWS: Document.
3279         * cp-tree.h (flag_honor_std): Remove.
3280         (CPTI_FAKE_STD): Remove.
3281         (std_node): Remove comment about it being NULL.
3282         (fake_std_node): Remove.
3283         * decl.c (in_fake_std): Remove.
3284         (walk_namespaces_r): Remove fake_std_node check.
3285         (push_namespace): Remove in_fake_std code.
3286         (pop_namespace): Likewise.
3287         (lookup_name_real): Remove fake_std_node check.
3288         (init_decl_processing): Always create std_node. Always add
3289         std:: things there.
3290         (builtin_function): Always put non '_' fns in std.
3291         * decl2.c (flag_honor_std): Remove.
3292         (lang_f_options): Remove honor-std.
3293         (unsupported_options): Add honor-std.
3294         (set_decl_namespace): Remove fake_std_node check.
3295         (validate_nonmember_using_decl): Likewise.
3296         (do_using_directive): Likewise.
3297         (handle_class_head): Likewise.
3298         * dump.c (cp_dump_tree): Likewise.
3299         * except.c (init_exception_processing): Adjust.
3300         * init.c (build_member_call): Remove fake_std_node check.
3301         (build_offset_ref): Likewise.
3302         * lang-options.h: Remove -fhonor-std, -fno-honor-std.
3303         * rtti.c (init_rtti_processing): Adjust.
3304
3305 2001-07-31  Alexandre Petit-Bianco  <apbianco@redhat.com>
3306
3307         * tree.c (cp_tree_equal): WITH_CLEANUP_EXPR node to use its second
3308         operand while calling cp_tree_equal.
3309
3310 2001-07-31  Nathan Sidwell  <nathan@codesourcery.com>
3311
3312         The 3.0 ABI no longer has vbase pointer fields.
3313         * cp-tree.h (VBASE_NAME, VBASE_NAME_FORMAT, VBASE_NAME_P,
3314         FORMAT_VBASE_NAME): Remove.
3315         * method.c (do_build_copy_constructor): Adjust.
3316         (do_build_assign_ref): Adjust.
3317         * search.c (lookup_field_r): Adjust.
3318         * typeck.c (build_component_ref): Adjust.
3319
3320         The 3.0 ABI always has a vtable pointer at the start of every
3321         polymorphic class.
3322         * rtti.c (build_headof_sub): Remove.
3323         (build_headof): Adjust.
3324         (get_tinfo_decl_dynamic): No need to check flag_rtti
3325         here. Adjust.
3326         (create_real_tinfo_var): Explain why we need a hidden name.
3327
3328 2001-07-31  Nathan Sidwell  <nathan@codesourcery.com>
3329
3330         PR c++/3631
3331         * class.c (update_vtable_entry_for_fn): The fixed adjustment
3332         of a virtual thunk should be from declaring base.
3333
3334 2001-07-31  Nathan Sidwell  <nathan@codesourcery.com>
3335
3336         * class.c (dfs_ctor_vtable_bases_queue_p): Always walk into
3337         the shared virtual base, so preserving inheritance graph order.
3338
3339 2001-07-30  Andreas Jaeger  <aj@suse.de>
3340
3341         * decl2.c: Remove unused var global_temp_name_counter.
3342
3343 2001-07-28  Richard Henderson  <rth@redhat.com>
3344
3345         * method.c (pending_inlines): Remove.
3346
3347 2001-07-27  Nathan Sidwell  <nathan@codesourcery.com>
3348
3349         * class.c (mark_primary_virtual_base): Don't adjust base
3350         offsets here.
3351         (dfs_unshared_virtual_bases): Adjust them here.
3352         (mark_primary_bases): Explain why we adjust at the end.
3353
3354 2001-07-27  Nathan Sidwell  <nathan@codesourcery.com>
3355
3356         * class.c (finish_struct_1): When copying the primary base's
3357         VFIELD, make sure we find it is at offset zero.
3358
3359 2001-07-26  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
3360
3361         * pt.c (tsubst_template_parms): Call maybe_fold_nontype_arg and
3362         tsubst_expr for default template arguments.
3363
3364 2001-07-26  Nathan Sidwell  <nathan@codesourcery.com>
3365
3366         PR c++/3621
3367         * spew.c (yylex): Only copy the token's lineno, if it is
3368         non-zero.
3369
3370 2001-07-26  Nathan Sidwell  <nathan@codesourcery.com>
3371
3372         PR c++/3624
3373         * call.c (resolve_args): Simplify, call
3374         convert_from_reference.
3375         (build_new_op): Resolve and convert from reference ARG1
3376         earlier. Adjust ARG2 & ARG3 resolve and conversion.
3377
3378 2001-07-26  Nathan Sidwell  <nathan@codesourcery.com>
3379
3380         * decl.c (last_function_parm_tags): Remove.
3381         (current_function_parm_tags): Remove.
3382         (init_decl_processing): Adjust.
3383         (start_function): Adjust.
3384         (store_parm_decls): Adjust.
3385
3386         PR c++/3152
3387         * decl.c (grokdeclarator): Detect when a function typedef is
3388         declaring a function, and create last_function_parms correctly.
3389
3390 2001-07-25  Jason Merrill  <jason_merrill@redhat.com>
3391
3392         * call.c (joust): Only prefer a non-builtin candidate to a builtin
3393         one if they have the same signature.
3394
3395         * cvt.c (build_up_reference): Take DECL parm.  Check TREE_STATIC on
3396         it rather than toplevel_bindings_p.  Give it a mangled name if static.
3397         (convert_to_reference): Adjust.
3398         * decl2.c (get_temp_name): Lose.
3399         * mangle.c (mangle_ref_init_variable): New fn.
3400         (mangle_guard_variable): Strip the ref-init header.
3401         * cp-tree.h: Adjust.
3402         * decl.c (cp_finish_decl): Add the DECL_STMT after processing the
3403         initializer.
3404         (grok_reference_init): Always use DECL_INITIAL.
3405
3406 2001-07-25  Nathan Sidwell  <nathan@codesourcery.com>
3407
3408         PR c++/3416
3409         * call.c (build_conditional_expr): Recheck args after
3410         conversions.
3411         * cp-tree.h (build_conditional_expr): Move to correct file.
3412         * typeck.c (decay_conversion): Diagnose any unknown types
3413         reaching here.
3414         (build_binary_op): Don't do initial decay or default
3415         conversions on overloaded functions.
3416         (build_static_cast): Don't do a decay conversion here.
3417
3418 2001-07-25  Nathan Sidwell  <nathan@codesourcery.com>
3419
3420         PR c++/3543
3421         * typeck.c (condition_conversion): Resolve an OFFSET_REF.
3422         * expr.c (cplus_expand_expr): An OFFSET_REF should never get here.
3423
3424 2001-07-25  Nathan Sidwell  <nathan@codesourcery.com>
3425
3426         * class.c (build_vtbl_or_vbase_field): Remove, move into ...
3427         (create_vtbl_ptr): ... here.
3428
3429 2001-07-25  Nathan Sidwell  <nathan@codesourcery.com>
3430
3431         * class.c (build_vbase_offset_vbtl_entries): Look for
3432         non-primary base of which we are a sub vtable.
3433
3434 2001-07-24  Phil Edwards  <pme@sources.redhat.com>
3435
3436         * semantics.c (finish_this_expr):  Remove unused code.
3437
3438 2001-07-24  Nathan Sidwell  <nathan@codesourcery.com>
3439
3440         Simplify rtti, now we've only one ABI.
3441         * cp-tree.h (cp_tree_index): Remove CPTI_TINFO_DECL_ID,
3442         CPTI_TINFO_VAR_ID.
3443         (tinfo_decl_id, tinfo_var_id): Remove.
3444         (get_typeid_1): Remove.
3445         * rtti.c
3446         (init_rtti_processing): Remove tinfo_decl_id & tinfo_var_id.
3447         (typeid_ok_p): New function.
3448         (build_type_id): Call typeid_ok_p. Don't call tinfo_from_decl.
3449         (get_tinfo_decl): Remove old abi documentation.
3450         (tinfo_from_decl): Remove.
3451         (get_type_id): Call typeid_ok_p. Absorb get_typeid_1.
3452         (get_typeid_1): Remove.
3453         (get_base_offset): Remove.
3454         (synthesize_tinfo_var): Absorb get_base_offset.
3455         (create_real_tinfo_var): Don't use tinfo_decl_id.
3456
3457 2001-07-23  Graham Stott  <grahams@redhat.com>
3458
3459         * cp/class.c (type_requires_array_cookie): Fix use of uninitialised
3460         variable has_two_argument_delete_p.
3461
3462 2001-07-21  Nathan Sidwell  <nathan@codesourcery.com>
3463
3464         Remove flag_vtable_thunk. It is always on for the 3.0 ABI.
3465         * cp-tree.h (CPTI_DELTA2_IDENTIFIER): Remove.
3466         (CPTI_INDEX_IDENTIFIER): Remove.
3467         (CPT_PFN_OR_DELTA2_IDENTIFIER): Remove.
3468         (delta2_identifier): Remove.
3469         (index_identifier): Remove.
3470         (pfn_or_delta2_identifier): Remove.
3471         (flag_vtable_thunks): Remove.
3472         (VTABLE_DELTA2_NAME): Remove.
3473         (VTABLE_INDEX_NAME): Remove.
3474         (FNADDR_FROM_VTABLE_ENTRY): Adjust.
3475         (vfunc_ptr_type_node): Adjust.
3476         (VTABLE_NAME_PREFIX): Adjust.
3477         (build_vfn_ref): Lose first parameter.
3478         (fixup_all_virtual_upcast_offsets): Remove.
3479         * decl.c (initialize_predefined_identifiers): Remove
3480         delta2_identifier, index_identifier, pfn_or_delta2_identifier.
3481         (init_decl_processing): Remove no-vtable-thunk code.
3482         * decl2.c (flag_vtable_thunks): Remove.
3483         (mark_vtable_entries): Remove no-vtable-thunk code.
3484         * error.c (dump_decl): Remove no-vtable-thunk code.
3485         (dump_expr): Adjust ptr to member function code.
3486         * init.c (initialize_vtable_ptrs): Remove no-vtable-thunk
3487         code.
3488         * rtti.c (build_headof): Remove no-vtable-thunk code.
3489         (get_tinfo_decl_dynamic): Adjust build_vfn_ref call.
3490         * search.c (get_base_distance): Remove expand_upcast_fixups case.
3491         (virtual_context) Remove.
3492         (expand_upcast_fixups): Remove.
3493         (fixup_virtual_upcast_offsets): Remove.
3494         (fixup_all_virtual_upcast_offsets): Remove.
3495         * typeck.c (get_member_function_from_ptrfunc): Remove
3496         no-vtable-thunk code.
3497         * call.c (build_over_call): Adjust call to build_vfn_ref.
3498         * class.c (build_vfn_ref): Lose first parameter. Remove
3499         no-vtable-thunk code.
3500         (build_rtti_vtbl_entries): Remove no-vtable-thunk code.
3501         (build_vtable_entry): Remove no-vtable-thunk code.
3502
3503 2001-07-20  Nathan Sidwell  <nathan@codesourcery.com>
3504
3505         Remove old-abi remnants. Remove comments about old abi
3506         behaviour. Remove references to 'new-abi' in comments.
3507         * cp-tree.h: Adjust comments.
3508         (vbase_offsets_in_vtable_p): Delete.
3509         (vcall_offsets_in_vtable_p): Delete.
3510         (vptrs_present_everywhere_p): Delete.
3511         (all_overridden_vfuns_in_vtables_p): Delete.
3512         (merge_primary_and_secondary_vtables_p): Delete.
3513         (TYPE_CONTAINS_VPTR_P): Adjust.
3514         (VTT_NAME_PREFIX): Remove.
3515         (CTOR_VTBL_NAME_PREFIX): Remove.
3516         (init_vbase_pointers): Remove.
3517         * class.c: Adjust coments.
3518         (build_vbase_pointer_fields): Delete.
3519         (build_vbase_pointer): Remove old-abi code.
3520         (build_secondary_vtable): Likewise.
3521         (modify_all_vtables): Likewise.
3522         (create_vtable_ptr): Likewise.
3523         (layout_class_type): Likewise.
3524         (finish_struct_1): Likewise.
3525         (finish_vtbls): Likewise.
3526         (dfs_finish_vtbls): Delete.
3527         (build_vbase_offset_vtbl_entries): Remove old-abi code.
3528         * cvt.c: Adjust comments.
3529         * decl.c: Adjust comments.
3530         * decl2.c: Adjust comments.
3531         * init.c: Adjust comments.
3532         (construct_virtual_bases): Remove old-abi code.
3533         * lang-specs.h: Remove -fno-new-abi.
3534         * mangle.c: Adjust comments.
3535         * rtti.c: Adjust comments.
3536         (get_base_offset): Remove old-abi-code.
3537         * search.c: Adjust comments.
3538         (dfs_init_vbase_pointers): Remove.
3539         (dfs_vtable_path_unmark): Remove.
3540         (init_vbase_pointers): Remove.
3541         * semantics.c: Adjust comments.
3542         (emit_associated_thunks): Remove old-abi code.
3543         * typeck.c: Adjust comments.
3544
3545 2001-07-20  Daniel Berlin  <dan@cgsoftware.com>
3546
3547         * Make-lang.in (cp/optimize.o): Depend on $(PARAMS_H), not
3548         params.h.
3549
3550 2001-07-19  Mark Mitchell  <mark@codesourcery.com>
3551
3552         * class.c (finish_struct_anon): Forbid nested classes.
3553
3554 2001-07-19  Neil Booth  <neil@daikokuya.demon.co.uk>
3555
3556         * decl2.c: Don't include dwarfout.h and dwarf2out.h.
3557         * optimize.c: Include debug.h.
3558         (maybe_clone_body): Use debug hook.
3559         * semantics.c: Include debug.h.
3560         (expand_body): Use debug hook.
3561
3562 2001-07-19  Neil Booth  <neil@daikokuya.demon.co.uk>
3563
3564         * spew.c (read_token, yyerror): Remove CPP_INT, CPP_FLOAT cases.
3565
3566 2001-07-18  Mark Mitchell  <mark@codesourcery.com>
3567
3568         * class.c (type_requires_array_cookie): New function.
3569         (check_methods): Don't try to figure out whether the type needs a
3570         cookie here.
3571         (check_bases_and_members): Set TYPE_VEC_NEW_USES_COOKIE here.
3572         * cp-tree.h (TYPE_VEC_DELETE_TAKES_SIZE): Remove.
3573         (TYPE_VEC_NEW_USES_COOKIE): Reimplement.
3574         * pt.c (instantiate_class_template): Don't set
3575         TYPE_VEC_DELETE_TAKES_SIZE.
3576         * NEWS: Document ABI changes from GCC 3.0.
3577
3578 2001-07-18  Xavier Delacour <xavier@fmaudio.net>,
3579             Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
3580
3581         * NEWS (Changes in GCC 3.0): Fix typo.
3582
3583 2001-07-13  Joseph S. Myers  <jsm28@cam.ac.uk>
3584
3585         * decl2.c (cplus_decl_attributes): Take a pointer to the node to
3586         which attributes are to be attached, and a flags argument.  Update
3587         call to decl_attributes.
3588         (grokfield): Update call to decl_attributes.
3589         * class.c (finish_struct): Update call to cplus_decl_attributes.
3590         * cp-tree.h (cplus_decl_attributes): Update prototype.
3591         * decl.c (start_decl, grokdeclarator, start_function): Update
3592         calls to decl_attributes and cplus_decl_attributes.
3593         * friend.c (do_friend): Update call to cplus_decl_attributes.
3594         * parse.y (parse_bitfield): Update call to cplus_decl_attributes.
3595
3596 2001-07-12  Mark Mitchell  <mark@codesourcery.com>
3597
3598         * decl.c (make_rtl_for_nonlocal_decl): Set DECL_C_HARD_REGISTER
3599         for `register' variables with an asm-specification.
3600
3601 2001-07-11  Mark Mitchell  <mark@codesourcery.com>
3602
3603         * semantics.c (finish_asm_stmt): Mark the output operands
3604         to an asm addressable, if necessary.
3605
3606 2001-07-11  Ben Elliston  <bje@redhat.com>
3607
3608         * Revert this change -- there is a subtle bug.
3609
3610         PR c++/80
3611         * decl.c (finish_enum): New "attributes" argument; pass it to
3612         cplus_decl_attributes.  Use a narrower type if the enum is packed.
3613         * cp-tree.h (finish_enum): Adjust prototype.
3614         * parse.y (enum_head): New non-terminal.
3615         (structsp): Use it. Enums now may be preceded or followed by
3616         optional attributes -- pass their chained tree to finish_enum().
3617         * pt.c (tsubst_enum): Pass NULL_TREE for the new argument.
3618
3619 2001-07-10  Mark Mitchell  <mark@codesourcery.com>
3620
3621         * pt.c (tsubst_decl): Set DECL_CONTEXT for namespace-scope
3622         variables.
3623
3624 2001-07-10  Jason Merrill  <jason_merrill@redhat.com>
3625
3626         * semantics.c (cp_expand_stmt): Fix for null
3627         current_function_return_value.
3628
3629 2001-07-10  Jan van Male  <jan.vanmale@fenk.wau.nl>
3630
3631         * call.c (build_op_delete_call): Initialize fn.
3632         (convert_like_real): Delete conditional.
3633         (joust): Initialize *w and *l.
3634         * class.c: Add prototype for binfo_ctor_vtable.
3635         (get_primary_binfo): Initialize result.
3636         * init.c (build_java_class_ref): Initialize name.
3637
3638 2001-07-09  Erik Rozendaal  <dlr@acm.org>
3639
3640         * typeck.c (unary_complex_lvalue): Do not duplicate the
3641         argument to modify, pre-, or post-increment when used as an
3642         lvalue and when the argument has side-effects.
3643
3644 2001-07-08  Joseph S. Myers  <jsm28@cam.ac.uk>
3645
3646         * decl.c (start_decl): Don't call SET_DEFAULT_DECL_ATTRIBUTES.
3647         (start_function): Don't call SET_DEFAULT_DECL_ATTRIBUTES.  Call
3648         cplus_decl_attributes even if attrs is NULL.
3649         * friend.c (do_friend): Don't call SET_DEFAULT_DECL_ATTRIBUTES.
3650
3651 2001-07-08  Joseph S. Myers  <jsm28@cam.ac.uk>
3652
3653         * decl.c (grokdeclarator), decl2.c (cplus_decl_attributes): Update
3654         calls to decl_attributes.
3655
3656 2001-07-06  Ira Ruben   <ira@apple.com>
3657
3658         * cp-tree.def (TEMPLATE_DECL): Update comment. DECL_RESULT should
3659         be DECL_TEMPLATE_RESULT.
3660
3661 2001-07-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
3662
3663         * cp-tree.h (copy_template_template_parm): Rename to ...
3664         (bind_template_template_parm): ... here.
3665         * tree.c (copy_template_template_parm): Rename to ...
3666         (bind_template_template_parm): ... here.  Remove the case when
3667         NEWARGS is NULL_TREE.
3668         (copy_tree_r): Don't copy TEMPLATE_TEMPLATE_PARM and
3669         BOUND_TEMPLATE_TEMPLATE_PARM.
3670         * pt.c (lookup_template_class): Adjust.
3671
3672 2001-07-05  Jason Merrill  <jason_merrill@redhat.com>
3673
3674         * cvt.c (convert_lvalue): New fn.
3675         * cp-tree.h: Declare it.
3676         * method.c (do_build_assign_ref): Use it.
3677         (do_build_copy_constructor): Convert parm to base types
3678         before calling base constructors.
3679
3680         * typeck.c (check_return_expr): Check DECL_ALIGN instead of
3681         DECL_USER_ALIGN.  Check flag_elide_constructors instead of
3682         optimize.
3683         * semantics.c (cp_expand_stmt): Don't destroy the named return value.
3684
3685 2001-07-02  Nathan Sidwell  <nathan@codesourcery.com>
3686
3687         * optimize.c (optimize_inline_calls): New function, broken out
3688         of ...
3689         (optimize_function): ... here. Call it. Don't inline if it is
3690         a thunk.
3691         (dump_function): Print name of dump flag causing this dump.
3692         * semantics.c (expand_body): Move thunk inline check to
3693         optimize_function.
3694
3695 2001-06-29  Joseph S. Myers  <jsm28@cam.ac.uk>
3696
3697         * typeck.c (COMP_TYPE_ATTRIBUTES): Don't define.
3698         (comptypes): Use target.comp_type_attributes.
3699
3700 2001-06-29  Nathan Sidwell  <nathan@codesourcery.com>
3701
3702         * cp-tree.h (flag_dump_class_layout): Remove unneeded declaration.
3703
3704 2001-06-28  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
3705
3706         * error.c (lang_print_error_function): Add a `diagnostic_context *'
3707         parameter. Tweak.
3708
3709 2001-06-27  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
3710
3711         * decl2.c (import_export_class): Update.
3712
3713 2001-06-26  Gabriel Dos Reis  <gdr@codesourcery.com>
3714
3715         * error.c (init_error): Adjust settings.
3716
3717 2001-06-26  Gabriel Dos Reis  <gdr@codesourcery.com>
3718
3719         * error.c (init_error): Adjust settings.
3720
3721 2001-06-19  Richard Sandiford  <rsandifo@redhat.com>
3722
3723         * except.c (initialize_handler_parm): Expect __cxa_begin_catch to
3724         return pointers to data members by reference rather than by value.
3725
3726 2001-06-18  Jason Merrill  <jason_merrill@redhat.com>
3727
3728         Implement the Named Return Value optimization.
3729         * cp-tree.h (struct cp_language_function): Add x_return_value.
3730         (current_function_return_value): Now a macro.
3731         * decl.c: Don't define it.
3732         (define_label, finish_case_label): Don't clear it.
3733         (init_decl_processing): Don't register it with GC.
3734         * semantics.c (genrtl_finish_function): Don't check it for
3735         no_return_label.  Copy the RTL from the return value to
3736         current_function_return_value and walk, calling...
3737         (nullify_returns_r): ...this new fn.
3738         * typeck.c (check_return_expr): Set current_function_return_value.
3739
3740 2001-06-15  Jason Merrill  <jason_merrill@redhat.com>
3741
3742         * class.c (dfs_accumulate_vtbl_inits): Just point to the base we're
3743         sharing a ctor vtable with.  Merge code for cases 1 and 2.
3744         (binfo_ctor_vtable): New fn.
3745         (build_vtt_inits, dfs_build_secondary_vptr_vtt_inits): Use it.
3746
3747 2001-06-14  Jason Merrill  <jason_merrill@redhat.com>
3748
3749         * class.c (dfs_find_final_overrider): Fix logic.
3750
3751         * class.c (update_vtable_entry_for_fn): Uncomment optimization to use
3752         virtual thunk instead of non-virtual.
3753         (get_matching_virtual): Uncomment.
3754
3755         * pt.c (unify): Don't recurse between the POINTER_TYPE and the
3756         OFFSET_TYPE.  If we're adding cv-quals, the extra ones would be on
3757         PARM, not ARG.
3758
3759 2001-06-14  Nathan Sidwell  <nathan@codesourcery.com>
3760
3761         * class.c (dfs_accumulate_vtbl_inits): For case 2 & 3, make sure
3762         we've not emerged from the hierarchy of RTTI_BINFO on reaching
3763         a non-virtual base.
3764
3765 2001-06-13  Mark Mitchell  <mark@codesourcery.com>
3766
3767         * NEWS: Update release number.
3768
3769 2001-06-12  Nathan Sidwell  <nathan@codesourcery.com>
3770
3771         PR c++/3130, c++/3131, c++/3132
3772         * cp-tree.h (BINFO_UNSHARED_MARKED): New #define.
3773         * class.c (force_canonical_binfo_r): Move
3774         BINFO_UNSHARED_MARKED, BINFO_LOST_PRIMARY_P. Don't move
3775         virtual bases unless they're primary and what they're primary
3776         too has been moved.
3777         (dfs_unshared_virtual_bases): Use BINFO_UNSHARED_MARKED. Cope
3778         with morally virtual bases. Duplicate BINFO_LOST_PRIMARY_P and
3779         BINFO_PRIMARY_BASE_OF. Clear BINFO_VTABLE for all but the most
3780         derived binfo.
3781         (mark_primary_bases): Use BINFO_UNSHARED_MARKED.
3782         (layout_nonempty_base_or_field): Add most derived type
3783         parameter. Adjust.
3784         (layout_empty_base): Likewise.
3785         (build_base_field): Likewise.
3786         (build_base_fields): Likewise.
3787         (propagate_binfo_offsets): Add most derived type
3788         parameter. Skip non canonical virtual bases too.
3789         (dfs_set_offset_for_unshared_vbases): Don't skip primary
3790         bases. Do skip canonical bases.
3791         (layout_virtual_bases): Adjust.
3792         (layout_class_type): Adjust.
3793         (dfs_get_primary_binfo): Build list of virtual primary base
3794         candidates.
3795         (get_primary_binfo): Check that the shared virtual primary
3796         base candidate was found first.
3797         (accumulate_vtbl_inits): Don't do anything for non-vptr
3798         containing binfos. For case 1 primary virtual bases, keep
3799         checking that we've not emerged from the hierarchy of RTTI_BINFO.
3800
3801 2001-06-12  Nathan Sidwell  <nathan@codesourcery.com>
3802
3803         PR c++/3089
3804         * class.c (dfs_accumulate_vtbl_inits): Always walk down the
3805         hierarchy looking for primary bases for a ctor
3806         vtable. Recursively call oneself, if we meet our primary via
3807         this route and haven't met it yet via inheritance graph order.
3808
3809 2001-06-11  Mark Mitchell  <mark@codesourcery.com>
3810
3811         * lang-options.h: Emit documentation for -fno-honor-std, not
3812         -fhonor-std.
3813
3814 2001-06-10  Alexandre Oliva  <aoliva@redhat.com>
3815
3816         * typeck.c (get_member_function_from_ptrfunc) [vbit_in_delta]:
3817         Don't clobber delta.
3818         (expand_ptrmemfunc_cst) [ptrmemfunc_vbit_in_delta]: Adjust pfn.
3819
3820 2001-06-10  Mark Mitchell <mark@codesourcery.com>
3821             Gabriel Dos Reis  <gdr@codesourcery.com>
3822
3823         * Make-lang.in (cp/call.o): Depend on diagnostic.h
3824         (cp/typeck.o): Depend on diagnostic.h
3825         (cp/typeck2.o): Depend on diagnostic.h
3826         (cp/repo.o): Depend on dignostic.h
3827         * typeck.c: #include diagnostic.h
3828         (convert_for_initialization): Remove extern declaration for
3829         warningcount and errorcount.
3830
3831         * call.c: #include diagnostic.h
3832         (convert_like_real): Remove extern declaration for warnincount and
3833         errorcount.
3834
3835         * repo.c: #include diagnostic.h
3836         * typeck2.c: #include diagnostic.h
3837
3838 2001-06-08  Nathan Sidwell  <nathan@codesourcery.com>
3839
3840         * decl.c (duplicate_decls): Fix DECL_TEMPLATE_RESULT thinko
3841         in previous change.
3842
3843 2001-06-08  Nathan Sidwell  <nathan@codesourcery.com>
3844
3845         PR c++/2929
3846         * friend.c (do_friend): Use push_decl_namespace for classes at
3847         namespace scope.
3848
3849 2001-06-08  Nathan Sidwell  <nathan@codesourcery.com>
3850             Jason Merrill <jason_merrill@redhat.com>
3851
3852         PR c++/3061
3853         * class.c (build_secondary_vtable): Use assert, rather than an error
3854         message.
3855         (dfs_fixup_binfo_vtbls): BINFO_VTABLE might be NULL.
3856         (dfs_accumulate_vtbl_inits): A lost primary virtual base may
3857         be between ORIG_BINFO and RTTI_BINFO, but neither of them.
3858         Don't set BINFO_VTABLE for a primary virtual base.
3859
3860 2001-06-07  Mark Mitchell  <mark@codesourcery.com>
3861
3862         * decl.c (duplicate_decls): Update source position information
3863         when a template function is defined.
3864
3865 2001-06-07  Phil Edwards  <pme@sources.redhat.com>
3866
3867         * lang-specs.h:  Move -D_GNU_SOURCE to config/linux.h.
3868
3869 2001-06-07  Nathan Sidwell  <nathan@codesourcery.com>
3870
3871         PR c++/2914
3872         * decl.c (pushtag): Don't push into a complete type's scope.
3873
3874 2001-06-06  Jason Merrill  <jason_merrill@redhat.com>
3875
3876         * cp-tree.h (THUNK_GENERATE_WITH_VTABLE_P): Lose.
3877         (struct lang_decl_flags): Lose generate_with_vtable_p.
3878         (BV_GENERATE_THUNK_WITH_VTABLE_P): Lose.
3879         * class.c (copy_virtuals): Adjust.
3880         * decl2.c (mark_vtable_entries): Adjust.
3881         * method.c (make_thunk, build_vtable_entry): Adjust.
3882         * class.c (update_vtable_entry_for_fn): Only look as far as the
3883         first defining class.
3884         (build_vtbl_initializer): Put nothing in the slot for a function only
3885         defined in a lost primary virtual base.
3886         (add_vcall_offset_vtbl_entries_1): Use the same code for
3887         the lost primary case and the normal case.
3888         (dfs_unshared_virtual_bases): Don't lose a non-virtual primary base.
3889         (get_vfield_offset, get_derived_offset): Lose.
3890         (dfs_find_final_overrider): Use look_for_overrides_here.
3891         (get_matching_virtual): New fn.
3892         * semantics.c (emit_associated_thunks): Check BV_USE_VCALL_INDEX_P,
3893         not BV_VCALL_INDEX.
3894         * search.c (look_for_overrides_here): Split out from...
3895         (look_for_overrides_r): Here.
3896
3897         * class.c (find_final_overrider): Return error_mark_node on error.
3898
3899         * decl2.c (key_method): #if 0 accidental change.
3900
3901 2001-06-06  John David Anglin  <dave@hiauly1.hia.nrc.ca>
3902
3903         * call.c (convert_default_arg): Use INTEGRAL_TYPE_P.
3904         (build_over_call): Likewise.
3905         * decl.c (grokparms): Likewise.
3906         * pt.c (tsubst_decl): Likewise.
3907         * typeck.c (convert_arguments): Likewise.
3908
3909 2001-06-05  Mark Mitchell  <mark@codesourcery.com>
3910
3911         * semantics.c (begin_class_definition): Robustify.
3912
3913         * pt.c (instantiate_decl): Tell the repository code about the
3914         clones, not the cloned functions.
3915         * repo.c (repo_template_used): Explicitly instantiate the cloned
3916         function, not the clones.
3917
3918 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
3919
3920         * call.c (build_user_type_conversion_1): Set ICS_USER_FLAG and
3921         ICS_BAD_FLAG on created conversion.
3922         (compare_ics): Break out rank.
3923
3924 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
3925
3926         * decl.c (xref_tag): Remove extraneous %s on dependent name
3927         lookup warning.
3928
3929 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
3930
3931         * class.c (layout_vtable_decl): Fix off by one error on
3932         build_index_type.
3933         (build_vtt): Likewise.
3934         (build_ctor_vtbl_group): Likewise.
3935
3936 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
3937
3938         * class.c (maybe_indent_hierarchy): New function.
3939         (dump_class_hierarchy_r): Add flags. Dump extra binfo
3940         information, if enabled. Use maybe_indent_hierarchy. Adjust
3941         output format.
3942         (dump_class_hierarchy): Adjust prototype. Adjust output format.
3943         (dump_array, dump_vtable, dump_vtt): New functions.
3944         (finish_struct_1): Adjust hierarchy dumping.
3945         (initialize_vtable): Call dump_vtable.
3946         (build_vtt): Call dump_vtt.
3947         (build_ctor_vtbl_group): Call dump_vtable.
3948         * decl2.c (flag_dump_class_layout): Remove.
3949         (cxx_decode_option): Remove dump translation unit
3950         and dump class hierarchy check. Call dump_switch_p.
3951         (finish_file): Adjust dumping.
3952         (dump.c): Only dump base classes if not TDF_SLIM.
3953         Only dump namespace members if not TDF_SLIM.
3954         * optimize.c (dump_function): New function.
3955         (optimize_function): Call dump_function.
3956         * semantics.c (expand_body): Use dump_enabled_p.
3957
3958 2001-06-01  Nathan Sidwell  <nathan@codesourcery.com>
3959
3960         PR g++/2936
3961         Part missed from first commit
3962         * decl2.c (finish_anon_union): Copy context.
3963
3964 2001-05-30  Nathan Sidwell  <nathan@codesourcery.com>
3965
3966         PR g++/2936
3967         * optimize.c (remap_decl): Remap anonymous aggregate members too.
3968
3969 2001-05-26  Nathan Sidwell  <nathan@codesourcery.com>
3970
3971         PR g++/2823
3972         * semantics.c (expand_body): Don't optimize thunks.
3973
3974 2001-05-25  Sam TH  <sam@uchicago.edu>
3975
3976         * cp-tree.h lex.h: Fix header include guards.
3977
3978 2001-05-25  Mark Mitchell <mark@codesourcery.com>
3979
3980         * decl.c (init_decl_processing): Tweak.
3981
3982 2001-05-24  Mark Mitchell  <mark@codesourcery.com>
3983
3984         * decl.c (duplicate_decls): Tidy.
3985         (init_decl_processing): Always set flag_no_builtin.
3986
3987 2001-05-24  Nathan Sidwell  <nathan@codesourcery.com>
3988
3989         PR c++/2184
3990         * decl2.c (do_local_using_decl): Push the decls, even in a
3991         template.
3992
3993 2001-05-22  Mark Mitchell  <mark@codesourcery.com>
3994
3995         * optimize.c (initialize_inlined_parameters): Don't set
3996         TREE_READONLY for a VAR_DECL taking the place of an inlined
3997         PARM_DECL.
3998
3999 2001-05-22  Jason Merrill  <jason_merrill@redhat.com>
4000
4001         * class.c, cp-tree.h, rtti.c: Remove com_interface attribute support.
4002         * tree.c (cp_valid_lang_attribute): Warn about use of com_interface
4003         attribute.
4004
4005 2001-05-22  Joseph S. Myers  <jsm28@cam.ac.uk>
4006
4007         * parse.y: Refer to compound literals as such, not as
4008         constructor-expressions.
4009
4010 2001-05-21  Mark Mitchell  <mark@codesourcery.com>
4011
4012         * call.c (build_op_delete_call): Ignore exception-specifications
4013         when looking for matching delete operators.
4014         * init.c (build_new_1): Compute whether or not the allocation
4015         function used is a placement allocation function or not, and
4016         communicate this information to build_op_delete_call.
4017
4018 2001-05-21  Jason Merrill  <jason_merrill@redhat.com>
4019
4020         * class.c (build_vtable_entry_ref): Lose vtbl parm.  Fix for new abi.
4021         (build_vtbl_ref): Adjust.
4022         (dfs_accumulate_vtbl_inits): Set TREE_CONSTANT on the vtable address.
4023         * decl2.c (lang_f_options): Remove huge-objects, vtable-thunks.
4024         Re-add vtable-gc.
4025         (unsupported_options): Correspondingly.
4026
4027         * decl2.c (maybe_make_one_only): Check flag_weak, not
4028         supports_one_only().
4029
4030         * cp-tree.def (START_CATCH_STMT): Lose.
4031         * dump.c (cp_dump_tree): Don't dump it.  Do dump HANDLER_PARMS.
4032         * tree.c (cp_statement_code_p): Don't case it.
4033         * semantics.c (cp_expand_stmt): Likewise.
4034         * cp-tree.h (START_CATCH_TYPE): Lose.
4035         (HANDLER_TYPE): New.
4036         * except.c (expand_start_catch_block): Don't start any blocks.
4037         Return the type.
4038         (expand_end_catch_block): Don't end any blocks.
4039         * parse.y (handler): Don't pass anything from finish_handler_parms
4040         to finish_handler.
4041         * pt.c (tsubst_expr): Likewise.
4042         * semantics.c (begin_handler): Call note_level_for_catch here.
4043         (finish_handler_parms): Don't return anything.
4044         (genrtl_catch_block, begin_catch_block): Lose.
4045         (genrtl_handler): Call expand_start_catch here.
4046
4047 2001-05-18  Jason Merrill  <jason_merrill@redhat.com>
4048
4049         * class.c (build_vtable): Set DECL_ASSEMBLER_NAME for vtables here.
4050         (get_vtable_decl, build_vtt): Not here.
4051
4052 2001-05-20  Nathan Sidwell  <nathan@codesourcery.com>
4053
4054         PR c++/2781
4055         * optimize.c (update_cloned_parm): Copy addressability and other
4056         flags.
4057
4058 2001-05-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
4059
4060         * pt.c (determine_specialization): Ignore artificial functions.
4061
4062 2001-05-20  Neil Booth  <neil@daikokuya.demon.co.uk>
4063
4064         * cp-tree.h (struct lang_identifier, C_RID_YYCODE): Update.
4065         (C_RID_CODE): Remove.
4066         * lex.c (cxx_init_options): Call set_identifier_size.  Update.
4067         (init_parse): Don't do it here.
4068
4069 2001-05-18  Diego Novillo  <dnovillo@redhat.com>
4070
4071         * decl2.c (finish_objects): Use the original SYMBOL_REF from the
4072         function declaration to avoid stripping the symbol's attributes.
4073
4074 2001-05-18  Nathan Sidwell  <nathan@codesourcery.com>
4075
4076         * decl.c (pushdecl): Adjust error string.
4077         (xref_tag): Adjust friend class injection warning. Remove the
4078         inherited name from the class shadowed scope.
4079
4080 2001-05-17  Mark Mitchell  <mark@codesourcery.com>
4081
4082         * except.c (cp_protect_cleanup_actions): New function.
4083         (init_exception_processing): Don't set protect_cleanup_actions
4084         here.  Do set lang_protect_cleanup_actions.
4085
4086 2001-05-16  Nathan Sidwell  <nathan@codesourcery.com>
4087
4088         * spew.c (read_token): Call yyerror on all unexpected tokens.
4089
4090 2001-05-16  Nathan Sidwell  <nathan@codesourcery.com>
4091
4092         * init.c (member_init_ok_or_else): Take a tree rather than
4093         string for name.
4094         (expand_member_init): Adjust.
4095
4096 2001-05-14  Nick Clifton  <nickc@cambridge.redhat.com>
4097
4098         * decl.c (duplicate_decls): Suppress warning about duplicate
4099         decls if the first decl is a friend.
4100
4101 2001-05-12  Zack Weinberg  <zackw@stanford.edu>
4102
4103         * except.c (choose_personality_routine): Export.  Add
4104         explanatory comment.  Take an enum languages, not a boolean.
4105         (initialize_handler_parm): Adjust to match.
4106         * cp-tree.h: Prototype choose_personality_routine.
4107         * lex.c (handle_pragma_java_exceptions): New function.
4108         (init_cp_pragma): Register #pragma GCC java_exceptions.
4109
4110 2001-05-12  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
4111
4112         * method.c (build_mangled_C99_name): Remove unused prototype.
4113
4114 2001-05-12  Alexandre Oliva  <aoliva@redhat.com>
4115
4116         * cp-tree.h (ptrmemfunc_vbit_where_t): Declare type.
4117         * typeck.c (get_member_function_from_ptrfunc,
4118         build_ptrmemfunc, expand_ptrmemfunc_cst): Take
4119         TARGET_PTRMEMFUNC_VBIT_LOCATION into account.
4120
4121         Reverted Geoff Keating's 2001-05-03's patch.
4122
4123 2001-05-11  Ira Ruben   <ira@apple.com>
4124
4125         * cp/cp-tree.h (C_EXP_ORIGINAL_CODE): Delete; declared in c-common.h.
4126
4127 2001-05-11  Neil Booth  <neil@daikokuya.demon.co.uk>
4128
4129         * cp-tree.h (finish_label_expr, lookup_label): Delete.
4130         * parse.y: Update for '&&'; don't issue warning here.
4131         * semantics.c (finish_label_expr): Delete.
4132
4133 2001-05-07  Mark Mitchell  <mark@codesourcery.com>
4134
4135         * splay-tree.h (splay_tree_max): New function.
4136         (splay_tree_min): Likewise.
4137
4138 2001-05-03  Geoffrey Keating  <geoffk@redhat.com>
4139
4140         * cp-tree.h (enum cp_tree_index): Add CPTI_PFN_VFLAG_IDENTIFIER.
4141         (pfn_vflag_identifier): Define.
4142         Update comment about layout of pointer functions.
4143         (build_ptrmemfunc1): Update prototype.
4144         (expand_ptrmemfunc_cst): Update prototype.
4145         * decl.c (initialize_predefined_identifiers): Initialize
4146         pfn_vflag_identifier.
4147         (build_ptrmemfunc_type): When FUNCTION_BOUNDARY < 16, add
4148         an extra field to the type.
4149         * expr.c (cplus_expand_constant): Pass 'flag' between
4150         expand_ptrmemfunc_cst and build_ptrmemfunc1.
4151         * typeck.c (get_member_function_from_ptrfunc): When
4152         FUNCTION_BOUNDARY < 16, look at additional field to determine
4153         if a pointer-to-member is a real pointer or a vtable offset.
4154         (build_ptrmemfunc1): Add new parameter to contain extra field.
4155         (build_ptrmemfunc): Pass the extra field around.
4156         (expand_ptrmemfunc_cst): Add new parameter to return extra field.
4157         (pfn_from_ptrmemfunc): Ignore the extra field.
4158
4159 2001-05-03  Mark Mitchell  <mark@codesourcery.com>
4160
4161         * cp-tree.h (flag_inline_trees): Update documentation.
4162         * decl.c (init_decl_processing): Adjust handling of
4163         flag_inline_functions and flag_inline_trees to support -O3.
4164         (grokfndecl): Set DECL_INLINE on all functions if that's what
4165         the user requested.
4166         (save_function_data): Clear DECL_INLINE in
4167         current_function_cannot_inline is non-NULL.
4168         * decl2.c (flag_inline_trees): Update documentation.
4169
4170 2001-05-03  Nathan Sidwell  <nathan@codesourcery.com>
4171
4172         * dump.c (cp_dump_tree, USING_STMT case): New case.
4173         * tree.c (cp_statement_code_p): Add USING_STMT.
4174         * decl2.c (do_using_directive): Add the using directive statement.
4175
4176         * tree.c (walk_tree): Reformat an if block.
4177
4178 2001-05-02  Mark Mitchell  <mark@codesourcery.com>
4179
4180         * decl.c (compute_array_index_type): Don't try to do anything with
4181         the indices when processing a template.
4182
4183 2001-05-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4184
4185         * call.c: NULL_PTR -> NULL.
4186         * class.c: Likewise.
4187         * cvt.c: Likewise.
4188         * decl.c: Likewise.
4189         * decl2.c: Likewise.
4190         * except.c: Likewise.
4191         * init.c: Likewise.
4192         * rtti.c: Likewise.
4193         * search.c: Likewise.
4194         * tree.c: Likewise.
4195         * typeck.c: Likewise.
4196         * typeck2.c: Likewise.
4197
4198 2001-05-02  Mark Mitchell  <mark@codesourcery.com>
4199
4200         * decl2.c (do_using_directive): Revert previous patch.
4201
4202 2001-05-01  Nathan Sidwell  <nathan@codesourcery.com>
4203
4204         * cp-tree.def (USING_STMT): New statement node.
4205         * cp-tree.h (USING_STMT_NAMESPACE): New macro.
4206         * decl2.c (do_using_directive): Add USING_STMT to statement
4207         tree. Don't emit errors when processing template decl.
4208         * pt.c (tsubst_expr, USING_STMT case): New case.
4209         * semantics.c (cp_expand_stmt, USING_STMT case): New case.
4210
4211 2001-05-01  Nathan Sidwell  <nathan@codesourcery.com>
4212
4213         * call.c (build_new_op): Convert args from reference here.
4214         (build_conditional_expr): Don't convert here.
4215
4216 2001-05-01  Nathan Sidwell  <nathan@codesourcery.com>
4217
4218         * spew.c (last_token_id): New static variable.
4219         (read_token): Set it here.
4220         (yyerror): Use it here.
4221
4222 2001-04-30  Richard Henderson  <rth@redhat.com>
4223
4224         * cvt.c: Downcase C_PROMOTING_INTEGER_TYPE_P invocations.
4225         * decl.c: Likewise.
4226
4227 2001-04-30  Mark Mitchell  <mark@codesourcery.com>
4228
4229         * gxxint.texi: Remove.
4230         * Make-lang.in: Remove all traces of gxxint.texi.
4231
4232 Mon Apr 30 16:14:10 2001  Mark P Mitchell  <mark@codesourcery.com>
4233
4234         * decl2.c (start_static_initialization_or_destruction): Correct
4235         logic to handle the -fno-use-cxa-atexit case.
4236
4237 2001-04-30  Mark Mitchell  <mark@codesourcery.com>
4238
4239         * optimize.c (update_cloned_parm): New function.
4240         (maybe_clone_body): Use it.  Update the `this' parameter too.
4241
4242 2001-04-29  Joseph S. Myers  <jsm28@cam.ac.uk>
4243
4244         * decl2.c (unsupported_options): Add new-abi.
4245         * lang-options.h: Remove no longer supported options.
4246
4247 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
4248
4249         * except.c (can_convert_eh): Don't check template parms,
4250         typename types etc.
4251
4252 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
4253
4254         * optimize.c (maybe_clone_body): Copy parameter names and locations.
4255
4256 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
4257
4258         * cp-tree.h (adjust_clone_args): Prototype new function.
4259         * class.c (adjust_clone_args): New function.
4260         * decl.c (start_function): Call it for in charge ctors.
4261
4262 2001-04-26  Mark Mitchell  <mark@codesourcery.com>
4263
4264         * method.c (use_thunk): Make sure that thunks really are emitted
4265         when requested.
4266
4267 2001-04-26  Nathan Sidwell <nathan@codesourcery.com>
4268
4269         * mangle.c (write_chars): New macro.
4270         (hwint_to_ascii): New function
4271         (write_number): Use it.
4272         (write_integer_cst): Deal with really big numbers.
4273
4274 2001-04-25  Mark Mitchell  <mark@codesourcery.com>
4275
4276         * optimize.c (maybe_clone_body): Copy TREE_PUBLIC before emitting
4277         the clone.
4278
4279 2001-04-25  Nathan Sidwell  <nathan@codesourcery.com>
4280
4281         * decl.c (grokdeclarator): Set context of namespace scope
4282         TYPE_DECLS.
4283
4284 2001-04-24  Zack Weinberg  <zackw@stanford.edu>
4285
4286         * cp/optimize.c: Include hashtab.h.
4287         (struct inline_data): Add tree_pruner.
4288         (expand_call_inline, expand_calls_inline): Use it when calling
4289         walk_tree.
4290         (optimize_function): Initialize and free tree_pruner.
4291
4292 2001-04-24  Nathan Sidwell <nathan@codesourcery.com>
4293
4294         Lazy __FUNCTION__ generation.
4295         * cp-tree.def (FUNCTION_NAME): Remove.
4296         * cp-tree.h (function_name_declared_p): Remove.
4297         (cp_fname_init): Prototype.
4298         * decl.c (init_decl_processing): Don't generate __FUNCTION__ et al ids,
4299         don't call declare_function_name. Call start_fname_decls.
4300         (cp_make_fname_decl): Adjust parameters. Generate the name. Don't
4301         clobber the line number.
4302         (cp_fname_init): New function.
4303         (start_function): Call start_fname_decls.
4304         (finish_function): Call finish_fname_decls.
4305         * lex.c (reswords): Add slots for __FUNCTION__ et al.
4306         (rid_to_yy): Add mappings for __FUNCTION__ et al.
4307         * optimize.c (maybe_clone_body): Remove function_name_declared_p.
4308         * parse.y (VAR_FUNC_NAME): New token.
4309         (primary): Add VAR_FUNC_NAME.
4310         * pt.c (tsubst_decl): Adjust a DECL_PRETTY_FUNCTION_P's
4311         generation.
4312         (tsubst, FUNCTION_NAME case): Remove.
4313         (tsubst_copy, FUNCTION_NAME case): Remove.
4314         (tsubst_expr, DECL_STMT case): Be careful with a
4315         DECL_PRETTY_FUNCTION_P.
4316         (instantiate_decl): Remove function_name_declared_p.
4317         * semantics.c (begin_compound_statement): Don't call
4318         declare_function_name here.
4319         (setup_vtbl_ptr). Don't save & restore function_name_declared_p.
4320         (finish_translation_unit): Call finish_fname_decls.
4321         (expand_body): Remove function_name_declared_p.
4322         * typeck2.c (digest_init): Allow any ERROR_MARK.
4323
4324 2001-04-24  Nathan Sidwell  <nathan@codesourcery.com>
4325
4326         * pt.c (tsubst_decl): Use VOID_TYPE_P.
4327         * semantics.c: Fix some typos.
4328
4329 2001-04-23  Phil Edwards  <pme@sources.redhat.com>
4330
4331         * cp/decl2.c (flag_honor_std):  Always initialize to 1.
4332
4333 2001-04-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4334
4335         * xref.c (GNU_xref_file): Use concat in lieu of xmalloc/sprintf.
4336
4337 2001-04-23  Jason Merrill  <jason_merrill@redhat.com>
4338
4339         * except.c (build_throw): Wrap the initialization of the exception
4340         object in a MUST_NOT_THROW_EXPR.
4341         (do_free_exception): #if 0.
4342
4343 2001-04-20  Mark Mitchell  <mark@codesourcery.com>
4344
4345         * cp-tree.h (finish_enum): Change prototype.
4346         * decl.c (finish_enum): Reorganize.
4347         * parse.y (structsp): Adjust calls to finish_enum.
4348
4349 2001-04-20  Nathan Sidwell  <nathan@codesourcery.com>
4350
4351         * tree.c (cp_tree_equal): Adjust final switch formatting. Add
4352         't' case.
4353
4354 2001-04-20  Nathan Sidwell  <nathan@codesourcery.com>
4355
4356         * class.c (dfs_unshared_virtual_bases): Add ATTRIBUTE_UNUSED.
4357         (layout_empty_base): Return at end flag.
4358         (build_base_field): Likewise.
4359         (build_base_fields): Likewise.
4360         (layout_virtual_bases): Don't add 1 to eoc value.
4361         (end_of_class): Use full size for empty bases.
4362         (layout_class_type): Clear CLASSNEARLY_EMPTY_P if we appended
4363         empty bases. Don't add 1 to eoc value. Only add trailing padding
4364         if we're an empty class with no empty bases.
4365         (dump_class_hierarchy): Dump size and alignment.
4366
4367 2001-04-20  Jakub Jelinek  <jakub@redhat.com>
4368
4369         * call.c (maybe_handle_ref_bind): Copy ICS_USER_FLAG and
4370         ICS_BAD_FLAG.
4371
4372 2001-04-20  Jakub Jelinek  <jakub@redhat.com>
4373
4374         * search.c (lookup_field_r): If looking for type and non-TYPE_DECL
4375         is found, look first if name does not match the structure name.
4376
4377 2001-04-19  Mark Mitchell  <mark@codesourcery.com>
4378
4379         * cp-tree.h (DECL_LANGUAGE): Don't assume DECL_LANG_SPECIFIC is
4380         set.
4381         (SET_DECL_LANGUAGE): New macro.
4382         * decl.c (duplicate_decls): Use SET_DECL_LANGUAGE.
4383         (pushdecl): Likewise.
4384         (build_library_fn_1): Likewise.
4385         (build_cp_library_fn): Likewise.
4386         (grokfndecl): Likewise.
4387         (grokvardecl): Mark `extern "C"' variables as having C linkage.
4388         * decl2.c (grokclassfn): Use SET_DECL_LANGUAGE.
4389         * lex.c (retrofit_lang_decl): Likewise.
4390         * mangle.c (mangle_decl_string): Don't mangle the names of
4391         variables declared with C language linkage.
4392         * semantics.c (finish_member_declaration): Use SET_DECL_LANGUAGE.
4393
4394 2001-04-18  John David Anglin  <dave@hiauly1.hia.nrc.ca>
4395
4396         * semantics.c (simplify_aggr_init_exprs_r): Don't restore
4397         flag_access_control from uninitialized storage.
4398
4399 2001-04-15  Mark Mitchell  <mark@codesourcery.com>
4400
4401         * cp-tree.h (TYPE_PTRMEM_CLASS_TYPE): Improve documentation.
4402         * mangle.c (write_pointer_to_member_type): Fix mangling of
4403         pointers to cv-qualified member function types.
4404
4405         * init.c (build_delete): Create a SAVE_EXPR for the address if
4406         we're going to use it more than once.
4407
4408 2001-04-13  Mark Mitchell  <mark@codesourcery.com>
4409
4410         * cp-tree.h (DELTA2_FROM_PTRMEMFUNC): Remove.
4411         (expand_ptremfunc_cst): Change prototype.
4412         (delta2_from_ptrmemfunc): Remove.
4413         * expr.c (cplus_expand_constant): Adjust call to
4414         expand_ptrmemfunc_cst.
4415         * typeck.c (build_ptrmemfunc1): Simplify.
4416         (build_ptrmemfunc): Make sure that casting a PTRMEM_CST still
4417         results in a constant.
4418         (expand_ptrmemfunc_cst): Remove idx and delta2 parameters.
4419         (delta2_from_ptrmemfunc): Remove.
4420         (pfn_from_ptrmemfunc): Adjust call to expand_ptrmemfunc_cst.
4421
4422 2001-04-12  Jason Merrill  <jason_merrill@redhat.com>
4423
4424         * cp-tree.h (decl_namespace_list): New macro.
4425         (struct saved_scope): Add decl_ns_list.
4426         * decl.c (mark_saved_scope): Mark it.
4427         * decl2.c: Lose static decl_namespace_list.
4428         (init_decl2): Don't save it.
4429
4430 2001-04-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4431
4432         * cp-tree.h (warn_return_type, yylex): Delete redundant
4433         declarations.
4434
4435         * decl.c (current_class_depth, global_namespace): Likewise.
4436
4437         * decl2.c (current_class_depth, flag_gnu_xref): Likewise
4438
4439         * repo.c (flag_use_repository): Likewise.
4440
4441 2001-04-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4442
4443         * cp-tree.h (pedantic, convert, global_bindings_p, insert_block,
4444         set_block, pushdecl, getdecls, gettags, init_decl_processing,
4445         maybe_build_cleanup, copy_lang_decl, prep_stmt, lvalue_p,
4446         lvalue_or_else, print_lang_statistics, comp_target_types,
4447         unsigned_type, signed_type, signed_or_unsigned_type,
4448         build_function_call, mark_addressable, incomplete_type_error):
4449         Delete redundant declarations.
4450
4451 2001-04-11  Jason Merrill  <jason_merrill@redhat.com>
4452
4453         * cp-tree.h (TYPE_LINKAGE_IDENTIFIER): New macro.
4454         (TYPE_ANONYMOUS_P): New macro.
4455         (TAGGED_TYPE_P): New macro.
4456         * decl.c (check_tag_decl): Use TYPE_ANONYMOUS_P.
4457         (grokfndecl, grokvardecl, grokdeclarator): Likewise.
4458         * tree.c (no_linkage_helper): Likewise.
4459         * semantics.c (begin_class_definition): Likewise.
4460         * pt.c (convert_template_argument): Likewise.
4461         * lex.c (check_for_missing_semicolon): Likewise.
4462
4463 2001-04-12  Nathan Sidwell  <nathan@codesourcery.com>
4464
4465         * class.c (dfs_unshared_virtual_bases): New function.
4466         (mark_primary_bases): Call it.
4467         (check_bases): Ignore virtual bases when determining
4468         nearly-emptiness.
4469
4470 2001-04-12  Nathan Sidwell  <nathan@codesourcery.com>
4471
4472         * method.c (make_thunk): Clear DECL_CLONED_FUNCTION.
4473
4474 2001-04-11  Mark Mitchell  <mark@codesourcery.com>
4475
4476         * optimize.c (maybe_clone_body): Copy DECL_NUM_STMTS from the
4477         cloned function to the clone.
4478
4479 2001-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4480
4481         * Make-lang.in (cp/semantics.o): Depend on $(EXPR_H).
4482
4483         * semantics.c: Include expr.h.
4484
4485 2001-04-11  Nathan Sidwell  <nathan@codesourcery.com>
4486
4487         * method.c (implicitly_declare_fn): Commonize code for copy ctor
4488         and assignment op. Set TREE_USED for parameter.
4489
4490 2001-04-10  Mark Mitchell  <mark@codesourcery.com>
4491
4492         * class.c (find_final_overrider_data): Add `candidates'.
4493         (dfs_find_final_overrider): Don't issue error messages
4494         prematurely.
4495         (find_final_overrider): Issue error messages here.
4496         (build_base_field): Don't warn about amgibuous direct bases here.
4497         (warn_about_ambiguous_direct_bases): New function.
4498         (layout_class_type): Use it.
4499
4500 2001-04-10  Richard Henderson  <rth@redhat.com>
4501
4502         * typeck.c (build_array_ref): Push the array reference inside
4503         COMPOUND_EXPR and COND_EXPR.
4504
4505 2001-04-05  Mark Mitchell  <mark@codesourcery.com>
4506
4507         * cp-tree.h (DECL_THIS_INLINE): Rename to DECL_DECLARED_INLINE_P.
4508         * decl.c (duplicate_decls): Adjust accordingly.
4509         (maybe_commonize_var): Likewise.
4510         (grokfndecl): Likewise.
4511         (start_function): Likewise.
4512         (start_method): Likewise.
4513         * decl2.c (key_method): Likewise.
4514         (import_export_decl): Likewise.
4515         * method.c (implicitly_declare_fn): Likewise.
4516         * optimize.c (maybe_clone_body): Likewise.
4517
4518 2001-04-05  Benjamin Kosnik  <bkoz@redhat.com>
4519
4520         * lang-specs.h: Add __DEPRECATED.
4521
4522 Thu Apr  5 16:54:29 2001  J"orn Rennecke <amylaar@redhat.com>
4523
4524         * search.c (get_dynamic_cast_base_type): When building a new
4525         constant, set its type to ssizetype.
4526
4527 2001-04-04  Jakub Jelinek  <jakub@redhat.com>
4528
4529         * optimize.c (expand_call_inline): Only add newly inlined statements
4530         into inlined_stmts.
4531
4532 2001-04-03  Mark Mitchell  <mark@codesourcery.com>
4533
4534         * cp-tree.h (OPERATOR_ASSIGN_FORMAT): Remove.
4535         (OPERATOR_FORMAT): Likewise.
4536         (OPERATOR_TYPENAME_FORMAT): Likewise.
4537         * operators.def: Remove old name-mangling information.
4538         * decl.c (grok_op_properties): Adjust accordingly.
4539         * lex.c (init_operators): Likewise.
4540         * rtti.c (get_tinfo_decl): Issue error messages about types that
4541         have variable size.
4542
4543 2001-04-03  Mark Mitchell  <mark@codesourcery.com>
4544
4545         * decl2.c (import_export_decl): Don't call import_export_class
4546         when processing an inline member function.
4547         * semantics.c (expand_body): Call import_export_decl before
4548         emitting inline functions.
4549
4550 2001-03-28  Richard Henderson  <rth@redhat.com>
4551
4552         IA-64 ABI Exception Handling:
4553         * cp-tree.def (EH_SPEC_BLOCK): New.
4554         (MUST_NOT_THROW_EXPR): New.
4555         * cp-tree.h: Update changed function declarations.
4556         (CPTI_PUSH_EXCEPTION_IDENTIFIER): Remove.
4557         (CPTI_CALL_UNEXPECTED): New.
4558         (struct cp_language_function): Rename x_eh_spec_try_block
4559         to x_eh_spec_block.
4560         (EH_SPEC_STMTS, EH_SPEC_RAISES): New.
4561         * decl.c (current_binding_level): If no current function
4562         bindings, revert to scope_chain.
4563         (initialize_predefined_identifiers): Remove __cp_push_exception.
4564         (store_parm_decls): Use begin_eh_spec_block.
4565         (finish_function): Use finish_eh_spec_block.
4566         (mark_lang_function): Update for name changes.
4567         * decl2.c (finish_file): No mark_all_runtime_matches.
4568         * dump.c (cp_dump_tree): Handle new tree codes.
4569         * error.c (dump_expr) [BIND_EXPR]: Fix typo.
4570         * except.c (catch_language_init, catch_language): Remove.
4571         (init_exception_processing): Don't set language code.
4572         Initialize call_unexpected_node, protect_cleanup_actions,
4573         eh_personality_libfunc, lang_eh_runtime_type.
4574         (call_eh_info, push_eh_info, get_eh_info, get_eh_value): Remove.
4575         (get_eh_type, get_eh_caught, get_eh_handlers): Remove.
4576         (prepare_eh_type): Split out type canonicalizations ...
4577         (build_eh_type_type): ... from here.
4578         (build_eh_type_type_ref): Remove.
4579         (mark_all_runtime_matches): Remove.
4580         (build_exc_ptr): New.
4581         (do_begin_catch, do_end_catch): New.
4582         (do_pop_exception): Remove.
4583         (build_terminate_handler): Remove.
4584         (choose_personality_routine): Split out language choice from ...
4585         (initialize_handler_parm): ... here.
4586         Use MUST_NOT_THROW_EXPR.
4587         (expand_start_catch_block): Use do_begin_catch.  Simplify Java
4588         exception object handling.
4589         (expand_start_eh_spec, expand_end_eh_spec): Remove.
4590         (expand_exception_blocks, alloc_eh_object): Remove.
4591         (begin_eh_spec_block, finish_eh_spec_block): New.
4592         (do_allocate_exception, do_free_exception): New.
4593         (expand_throw): Merge into ...
4594         (build_throw): ... here.  Update for abi.
4595         * expr.c (cplus_expand_expr): No expand_internal_throw.
4596         Handle MUST_NOT_THROW_EXPR.
4597         * pt.c (tsubst_expr): Handle EH_SPEC_BLOCK.
4598         * semantics.c (*) Update for except.h name changes.
4599         (genrtl_try_block): No protect_with_terminate.
4600         (genrtl_eh_spec_block): New.
4601         (genrtl_handler): Don't emit the goto here.
4602         (cp_expand_stmt): Handle EH_SPEC_BLOCK.
4603         (genrtl_finish_function): Don't expand_exception_blocks.
4604         * tree.c (cp_statement_code_p): Handle EH_SPEC_BLOCK.
4605
4606 2001-03-28  Richard Henderson  <rth@redhat.com>
4607
4608         * decl.c (struct named_label_list): Rename eh_region to
4609         in_try_scope, add in_catch_scope.
4610         (struct binding_level): Rename eh_region to is_try_scope,
4611         add is_catch_scope.
4612         (note_level_for_try): Rename from note_level_for_eh.
4613         (note_level_for_catch): New.
4614         (poplevel): Copy both is_try_scope and is_catch_scope to
4615         the named_label_list struct.
4616         (check_previous_goto_1): Don't check for catch block via
4617         DECL_ARTIFICIAL; use in_try_scope instead.
4618         (check_goto): Likewise.
4619         * cp-tree.h (note_level_for_try, note_level_for_catch): Declare.
4620         * except.c (expand_start_catch_block): Call note_level_for_catch.
4621         * semantics.c (begin_compound_stmt): Update for note_level_for_try.
4622
4623 2001-03-27  Richard Henderson  <rth@redhat.com>
4624
4625         * except.c: Use USING_SJLJ_EXCEPTIONS instead of
4626         exceptions_via_longjmp.
4627
4628 2001-03-27  Phil Edwards  <pme@sources.redhat.com>
4629
4630         * pt.c (check_default_tmpl_args):  Make error messages clearer.
4631
4632 2001-03-26  Phil Edwards  <pme@sources.redhat.com>
4633
4634         * error.c:  Also undefine 'A' macro used for cp_printers definition.
4635
4636 2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4637
4638         * Make-lang.in: Depend on $(SYSTEM_H), not system.h.
4639
4640 2001-03-26  Mike Yang <yang@research.att.com>
4641             Mark Mitchell  <mark@codesourcery.com>
4642
4643         * dump.c (dump_access): New function.
4644         (cp_dump_tree): Use it.  Dump basetype information for class
4645         types.
4646
4647 2001-03-26  Mark Mitchell  <mark@codesourcery.com>
4648
4649         * Makefile.in (optimize.o): Depend on params.h.
4650         (duplicate_decls): Copy DECL_NUM_STMTS, not DECL_FRAME_SIZE.
4651         (init_decl_processing): Set flag_no_inline when doing
4652         inlining-on-trees.
4653         * optimize.c: Include params.h.
4654         (struct inline_data): Improve documentation of FNS.  Add
4655         FIRST_INLINED_FN, INLINED_STMTS, and CLONING_P.
4656         (INSNS_PER_STMT): New macro.
4657         (remap_block): Use CLONING_P.
4658         (inlinable_function_p): Don't inline big functions.
4659         (expand_call_inline): Keep track of how much inlining we've done.
4660         (optimize_function): Set FIRST_INLINED_FN.
4661         (maybe_clone_body): Set CLONING_P.
4662         * semantics.c (simplify_aggr_init_exprs_r): Fix typing problems in
4663         tree nodes.
4664         (genrtl_finish_function): Clear DECL_DEFER_OUTPUT before calling
4665         rest_of_compilation.  Clear DECL_RTL for local variables
4666         afterwards.
4667         (clear_decl_rtl): New function.
4668
4669 2001-03-26  Nathan Sidwell  <nathan@codesourcery.com>
4670
4671         Implement DR 209
4672         * cp-tree.h (skip_type_access_control,
4673         reset_type_access_control): Prototype.
4674         * decl.c (grokdeclarator): Access of friends is not checked.
4675         * parse.y (component_decl_list): Reset type access control.
4676         * semantics.c (decl_type_access_control): Clear
4677         current_type_lookups.
4678         (save_type_access_control): Don't save if not deferring.
4679         (skip_type_access_control, reset_type_access_control): New
4680         functions.
4681         (begin_class_definition): Do type access control for basetypes.
4682         Start deferred access control.
4683         (finish_class_definition): Resume immediate access control if
4684         this is a local class.
4685
4686 2001-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4687
4688         * class.c (add_method): Use memcpy/memmove, not bcopy.
4689
4690         * decl.c (duplicate_decls): Likewise.
4691
4692 2001-03-23  Jakub Jelinek  <jakub@redhat.com>
4693
4694         * mangle.c (write_discriminator): Use `_0' for discriminator 1,
4695         not `_'.
4696
4697 2001-03-23  Jakub Jelinek  <jakub@redhat.com>
4698
4699         * decl.c (local_names): Define.
4700         (push_local_name): New.
4701         (grok_reference_init): Return init if initializing static reference
4702         variable with non-constant instead of emitting it.
4703         Move expand_static_init call to cp_finish_decl.
4704         (layout_var_decl): Call push_local_name.
4705         (maybe_commonize_var): Allow inlining functions even if they have
4706         static local variables, use comdat_linkage for them if flag_weak.
4707         (check_initializer): Call obscure_complex_init if
4708         grok_reference_init returned non-zero.
4709         (save_function_data): Clear x_local_names.
4710         (pop_cp_function_context): Free x_local_names.
4711         (mark_inlined_fns): Remove.
4712         (mark_lang_function): Mark x_local_names.
4713         (lang_mark_tree): Don't mark DECL_ACCESS for DECL_DISCRIMINATOR_P.
4714         Mark inlined_fns as tree, remove call to mark_inlined_fns.
4715         * class.c (alter_access): Ensure DECL_ACCESS is never set if
4716         DECL_DISCRIMINATOR_P.
4717         * cp-tree.h (cp_language_function): Add x_local_names.
4718         (lang_decl_flags): Add discriminator into u2.
4719         (lang_decl_inlined_fns): Remove.
4720         (lang_decl): inlined_fns is now a TREE_VEC.
4721         (DECL_DISCRIMINATOR_P, DECL_DISCRIMINATOR): Define.
4722         * optimize.c (inlinable_function_p): DECL_INLINED_FNS is now a
4723         TREE_VEC, not a custom structure.
4724         (optimize_function): Likewise.
4725         * mangle.c (discriminator_for_local_entity): Discriminate among
4726         VAR_DECL local entities.
4727         * search.c (dfs_access_in_type): If DECL_DISCRIMINATOR_P, DECL_ACCESS
4728         is not valid.
4729
4730 2001-03-22  Bryce McKinlay  <bryce@albatross.co.nz>
4731
4732         Add support for Java interface method calls.
4733         * cp-tree.h (struct lang_type): Add java_interface flag.
4734         (TYPE_JAVA_INTERFACE): New macro.
4735         * tree.c (cp_valid_lang_attribute): Handle "java_interface" attribute
4736         by setting TYPE_JAVA_INTERFACE.
4737         * call.c (java_iface_lookup_fn): New static.
4738         (build_over_call): If calling a method declared in a
4739         TYPE_JAVA_INTERFACE, call build_java_interface_fn_ref to generate the
4740         expression which resolves the function address.
4741         (build_java_interface_fn_ref): New function.
4742
4743 2001-03-22  Richard Henderson  <rth@redhat.com>
4744
4745         * Make-lang.in (cp/except.o): Don't depend on insn-flags.h.
4746         * except.c: Don't include it.
4747
4748 2001-03-22  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
4749             based on an idea from Joe Buck <jbuck@synopsys.com>
4750
4751         * parse.y (bad_decl, template_arg_list_ignore, arg_list_ignore):
4752         New nonterminals.
4753         (data_def, component_decl): Add reductions to bad_decl.
4754
4755 2001-03-22  Jakub Jelinek  <jakub@redhat.com>
4756
4757         * method.c (do_build_assign_ref): Don't use build_modify_expr for
4758         anonymous aggregates, since they don't have assignment operator
4759         method.
4760         * decl.c (fixup_anonymous_aggr): Disallow ctors, dtors and copy
4761         assignment operators for anonymous structure fields.
4762
4763 2001-03-21  Jason Merrill  <jason@redhat.com>
4764
4765         * pt.c (instantiate_decl): Abort if we see a member constant
4766         instantiation that doesn't already have its initializer.
4767         Downgrade explicit instantiation without definition to pedwarn.
4768
4769         * cp-tree.h (DECL_TINFO_FN_P, SET_DECL_TINFO_FN_P): Remove.
4770         * class.c (build_vtable_entry): Don't check DECL_TINFO_FN_P.
4771         (import_export_decl): Check tinfo_decl_p, not DECL_TINFO_FN_P.
4772
4773         * cp-tree.h (CLASSTYPE_VTABLE_NEEDS_WRITING): Remove.
4774         (pending_vtables): Remove.
4775         * decl2.c (pending_vtables): Remove.
4776         (import_export_vtable): Use CLASSTYPE_INTERFACE_ONLY, not
4777         CLASSTYPE_VTABLE_NEEDS_WRITING.
4778         (import_export_class): Likewise.
4779         (init_decl2): Don't mark pending_vtables.
4780         * lex.c (handle_pragma_vtable): Just sorry.
4781         * pt.c (instantiate_class_template): Don't mess with
4782         CLASSTYPE_VTABLE_NEEDS_WRITING.
4783         (mark_class_instantiated): Likewise.
4784         * ptree.c (print_lang_type): Don't print it.
4785         * semantics.c (begin_class_definition): Don't set it.
4786
4787         * pt.c (template_tail): Replace with last_pending_template.
4788         (maybe_templates, maybe_template_tail): Remove.
4789         (add_pending_template): Adjust.
4790         (instantiate_pending_templates): Adjust.
4791
4792         * cp-tree.h (struct saved_scope): Remove lang_stack field.
4793         (current_lang_stack): Remove.
4794         * decl.c (maybe_push_to_top_level): Don't initialize it.
4795         (duplicate_decls): Use current_lang_depth.
4796         (xref_basetypes): Likewise.
4797         * class.c (current_lang_depth): New fn.
4798         (push_lang_context): Use more varray functionality.
4799         (pop_lang_context): Likewise.
4800
4801         * error.c (GLOBAL_THING): Always use '__'.
4802
4803 2001-03-21  Mark Mitchell  <mark@codesourcery.com>
4804
4805         * class.c (build_clone): Clear DECL_ASSEMBLER_NAME.
4806
4807         * mangle.c (mangle_decl_string): Mangle the names of overloaded
4808         operators, even when they have `extern "C"' linkage.
4809
4810 2001-03-19  Mark Mitchell  <mark@codesourcery.com>
4811
4812         * class.c (get_vtable_decl): Use SET_DECL_ASSEMBLER_NAME,
4813         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
4814         where it's not necessary.
4815         (add_method): Remove optimization involving comparison of
4816         DECL_ASSEMBLER_NAME.
4817         (build_vtbl_or_vbase_field): Use SET_DECL_ASSEMBLER_NAME,
4818         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
4819         where it's not necessary.
4820         (check_methods): Likewise.
4821         (build_clone): Likewise.
4822         (built_vtt): Likewise.
4823         * cp-tree.h (DECL_NEEDED_P): Likewise.
4824         * decl.c (pushtag): Likewise.
4825         (duplicate_decls): Likewise.
4826         (pushdecl): Likewise.
4827         (builtin_function): Likewise.
4828         (build_library_fn_1): Set DECL_LANGUAGE for library functions.
4829         (build_cp_library_fn): Likewise.
4830         (maybe_commonize_var): Use SET_DECL_ASSEMBLER_NAME,
4831         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
4832         where it's not necessary.
4833         (make_rtl_for_nonlocal_decl): Likewise.
4834         (cp_finish_decl): Likewise.
4835         (grokfndecl): Likewise.
4836         (grokvardecl): Likewise.
4837         (grokdeclarator): Likewise.
4838         (start_function): Likewise.
4839         (cp_missing_return_ok_p): Likewise.
4840         * decl2.c (grokclassfn): Likewise.
4841         (check_classfn): Likewise.
4842         (finish_static_data_member_decl): Likewise.
4843         (grokfield): Likewise.
4844         * error.c (GLOBAL_IORD_P): Remove.
4845         (dump_global_iord): Improve output.
4846         (dump_decl): Avoid using DECL_ASSEMBLER_NAME.
4847         * except.c (nothrow_libfn_p): Summarily reject any function not in
4848         namespace-scope.
4849         * init.c (build_java_class_ref): Don't explicitly set
4850         DECL_ASSEMBLER_NAME after calling mangle_decl.
4851         * mangle.c (mangle_decl_string): Handle extern "C" functions.
4852         (mangle_decl): Set the DECL_ASSEMBLER_NAME for the decl.
4853         * method.c (set_mangled_name_for_decl): Don't explicitly set
4854         DECL_ASSEMBLER_NAME after calling mangle_decl.
4855         (make_thunk): Explicitly set the DECL_ASSEMBLER_NAME and
4856         IDENTIFIER_GLOBAL_VALUE for the thunk.
4857         * pt.c (set_mangled_name_for_template_decl): Remove.
4858         (check_explicit_specialization): Don't use it.
4859         (looup_template_class): Don't set DECL_ASSEMBLER_NAME.
4860         (tsubst_friend_function): Likewise.
4861         (tsubst_decl): Likewise.
4862         (regenerate_decl_from_template): Use COPY_DECL_ASSEMBLER_NAME.
4863         * rtti.c (get_tinfo_decl): Use SET_DECL_ASSEMBLER_NAME,
4864         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
4865         where it's not necessary.
4866         (tinfo_base_init): Likewise.
4867         (create_real_tinfo_var): Likewise.
4868         * search.c (looup_field_1): Likewise.
4869         * semantics.c (finish_named_return_value): Likewise.
4870         * tree.c (init_tree): Set lang_set_decl_assembler_name.
4871
4872 2001-03-15  Gabriel Dos Reis  <gdr@codesourcery.com>
4873
4874         Correct semantics restrictions checking in throw-expression.
4875         * except.c (is_admissible_throw_operand): New function.
4876         (build_throw): Use it.
4877
4878 2001-03-14  Mark Mitchell  <mark@codesourcery.com>
4879
4880         * decl.c (cp_make_fnname_decl): Set DECL_IGNORED_P on __FUNCTION__
4881         and its ilk.
4882
4883 2001-03-14  Mark Mitchell  <mark@codesourcery.com>
4884
4885         * class.c (build_clone): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
4886         * cp-tree.h (DECL_IN_MEMORY_P): Likewise.
4887         * decl.c (duplicate_decls): Likewise.
4888         (builtin_function): Likewise.
4889         (build_library_fn): Likewise.
4890         (build_cp_library_fn): Likewise.
4891         (check_initializer): Likewise.
4892         (cp_finish_decl): Likewise.
4893         * decl2.c (grokfield): Likewise.
4894         (grok_function_init): Remove #if 0'd code.
4895         (finish_anon_union): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
4896         * friend.c (do_friend): Likewise.
4897         * init.c (get_temp_regvar): Likewise.
4898         * method.c (make_thunk): Likewise.
4899         * pt.c (tsubst_friend_function): Likewise.
4900         (tsubst_decl): Likewise.
4901         (regenerate_decl_from_template): Likewise.
4902         * semantics.c (genrtl_named_return_value): Likewise.
4903         (expand_body): Likewise.
4904         (genrtl_finish_function): Likewise.
4905         * tree.c (cp_tree_equal): Likewise.
4906
4907 2001-03-12  Nathan Sidwell  <nathan@codesourcery.com>
4908
4909         * call.c (convert_like_real): Add extra semantics to INNER
4910         parameter. Don't convert to temporary if a user conversion
4911         gives us an lvalue that we're about to bind to a reference.
4912         Set INNER to indicate pending reference binding on recursive
4913         calls.
4914
4915 2001-03-10  Neil Booth  <neil@daikokuya.demon.co.uk>
4916
4917         * cp/lex.c: Delete duplicate pending_lang_change.
4918
4919 2001-03-10  Neil Booth  <neil@daikokuya.demon.co.uk>
4920
4921         * cp/lex.c (handle_pragma_interface, handle_pragma_implementation):
4922         Similarly.
4923         * cp/repo.c (get_base_filename, open_repo_file): Similarly.
4924         * cp/cp-tree.h: Remove file_name_nondirectory prototype.
4925
4926 2001-03-09  Zack Weinberg  <zackw@stanford.edu>
4927
4928         * Make-lang.in: Add dependencies on $(TM_P_H) as appropriate.
4929
4930 2001-03-08  Stan Shebs  <shebs@apple.com>
4931
4932         * cp-tree.h (set_identifier_local_value): Remove unused decl.
4933
4934 2001-03-06  Zack Weinberg  <zackw@stanford.edu>
4935
4936         * spew.c: Remove references to CPP_OSTRING.
4937
4938 2001-03-06  Andrew Haley  <aph@redhat.com>
4939
4940         * typeck.c (convert_arguments): Check that we have an fndecl.
4941
4942 2001-03-05  Andrew Haley  <aph@redhat.com>
4943
4944         * typeck.c (convert_arguments): Don't do ellipsis conversion for
4945         __built_in_constant_p.
4946
4947 2001-03-02  Nathan Sidwell  <nathan@codesourcery.com>
4948
4949         * typeck.c (build_static_cast): Allow enum to enum conversions
4950         as per DR 128.
4951
4952 2001-03-02  Nathan Sidwell  <nathan@codesourcery.com>
4953
4954         * class.c (check_field_decls): Pointers to member do not a
4955         non-pod struct make, as per DR 148.
4956
4957 2001-03-02  Nathan Sidwell  <nathan@codesourcery.com>
4958
4959         * call.c (joust): cp_pedwarn when using gnu extension concerning
4960         worst conversion sequences.
4961
4962 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
4963
4964         * decl.c: Replace all uses of 'boolean' with 'bool'.
4965
4966 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
4967
4968         * lang-specs.h: Add zero initializer for cpp_spec field to
4969         all array elements that need one.  Don't put an #ifdef inside
4970         the initializer list; set a default for CPLUSPLUS_CPP_SPEC and
4971         use it.
4972
4973 2001-03-01  Nathan Sidwell  <nathan@codesourcery.com>
4974
4975         Implement using decls inside template functions.
4976         * decl2.c (validate_nonmember_using_decl): Don't special case
4977         fake_std_node in the global namespace. Don't reject early when
4978         processing a template.
4979         (do_local_using_decl): Add to statement tree. Don't do further
4980         processing when building a template.
4981         * pt.c (tsubst_expr, DECL_STMT case): Deal with USING_DECLs.
4982
4983 2001-03-01  Nathan Sidwell  <nathan@codesourcery.com>
4984
4985         * decl2.c (do_nonmember_using_decl): Don't complain if we find
4986         same function. Do complain about ambiguating extern "C"
4987         declarations.
4988
4989 2001-02-28  Nathan Sidwell  <nathan@codesourcery.com>
4990
4991         Remove floating point and complex type template constant parms.
4992         * pt.c (convert_nontype_argument): Remove REAL_TYPE and
4993         COMPLEX_TYPE extensions.
4994         (invalid_nontype_parm_type_p): Likewise.
4995
4996 2001-02-27  Jeffrey Oldham  <oldham@codesourcery.com>
4997
4998         * except.c (call_eh_info): Revert "match_function"'s type.
4999
5000 2001-02-27  Nathan Sidwell  <nathan@codesourcery.com>
5001
5002         Fix ctor vtable vcall offsets.
5003         * class.c (struct vtbl_init_data_s): Add rtti_binfo member.
5004         (build_rtt_vtbl_entries): Lose RTTI_BINFO parameter.
5005         (get_matching_base): Remove.
5006         (get_original_base): New function.
5007         (build_vtbl_initializer): Initialize vid.rtti_binfo.
5008         Use a virtual thunk for a ctor vtable with an index
5009         (add_vcall_offset_vtbl_entries_1): Check if binfo has lost a
5010         primary base within a constructor vtable. Only set
5011         BV_VCALL_INDEX when not a constructor vtable. Adjust vcall offset
5012         when primary base has been lost.
5013         * cp-tree.h (BINFO_VIRTUALS): Remove ambiguity from comment.
5014
5015 2001-02-26  Jeffrey Oldham  <oldham@codesourcery.com>
5016
5017         * call.c (joust): Ensure more_specialized()'s argument length
5018         parameter has correct value for constructors.
5019
5020 2001-02-26  Nathan Sidwell  <nathan@codesourcery.com>
5021
5022         * except.c (call_eh_info): Cleanup generation of cp_eh_info struct.
5023
5024         * decl.c (mark_inlined_fns): Prototype.
5025
5026 2001-02-22  Mark Mitchell  <mark@codesourcery.com>
5027
5028         * spew.c (yylex): Correct handling of friends.
5029
5030 2001-02-22  Mark Mitchell  <mark@codesourcery.com>
5031
5032         * mangle.c (write_encoding): Pass write_function_type the
5033         FUNCTION_DECL for the function being encoded.
5034         (write_function_type): Pass it along to write_bare_function_type.
5035         (write_bare_function_type): Pass it along to write_method_parms.
5036         (write_method_parms): Don't mangle the compiler-generated
5037         parameters to a constructor or destructor.
5038
5039 2001-02-22  Andreas Jaeger  <aj@suse.de>
5040
5041         * optimize.c: Include toplev.h for
5042         note_deferral_of_defined_inline_function prototype.
5043
5044 2001-02-22  Jakub Jelinek  <jakub@redhat.com>
5045
5046         * cp-tree.h (struct lang_decl_inlined_fns): New.
5047         (struct lang_decls): Add inlined_fns.
5048         (DECL_INLINED_FNS): New macro.
5049         * optimize.c (struct inline_data): Add inlined_fns.
5050         (declare_return_variable): Use VARRAY_ACTIVE_SIZE macro.
5051         (inlinable_function_p): Likewise, fix typo in comment,
5052         function is not inlinable if it already inlined function currently
5053         being optimized.
5054         (expand_call_inline): Add fn to inlined_fns if necessary.
5055         (optimize_function): Initialize inlined_fns.
5056         Save inlined_fns into DECL_INLINED_FNS after expanding inlines.
5057         * decl.c (mark_inlined_fns): New function.
5058         (lang_mark_tree): Call it.
5059
5060 2001-02-21  Jason Merrill  <jason@redhat.com>
5061
5062         * cp-tree.h (struct lang_decl_flags): Remove uninlinable flag.
5063         (DECL_UNINLINABLE): Move to middle-end.
5064
5065         * class.c (clone_function_decl): Set DECL_ABSTRACT on original fn.
5066         * decl.c (duplicate_decls): Preserve DECL_ABSTRACT.
5067         * class.c (build_clone): Set DECL_ABSTRACT_ORIGIN for the clone.
5068         * optimize.c (maybe_clone_body): Set DECL_ABSTRACT_ORIGIN for the
5069         parms and outer BLOCK.  note_deferral_of_defined_inline_function.
5070
5071         * method.c (implicitly_declare_fn): Don't set DECL_ARTIFICIAL on
5072         second parm of op=.
5073
5074 2001-02-19  Mark Mitchell  <mark@codesourcery.com>
5075
5076         * decl2.c (set_decl_namespace): Allow explicit instantiations in
5077         any namespace.
5078
5079 2001-02-18  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5080
5081         * optimize.c (expand_call_inline): Don't walk subtrees of type
5082         nodes.
5083
5084 2001-02-18  Mark Mitchell  <mark@codesourcery.com>
5085
5086         * class.c (add_vcall_offset_vtbl_entries_1): Only add one entry
5087         for a destructor.
5088
5089 2001-02-18  Jason Merrill  <jason@redhat.com>
5090
5091         Do put the VTT parameter in DECL_ARGUMENTS.
5092         * cp-tree.h (struct cp_language_function): Add x_vtt_parm.
5093         (current_vtt_parm): New macro.
5094         (struct lang_decl_flags): Add has_vtt_parm_p, remove vtt_parm.
5095         (DECL_HAS_VTT_PARM_P): New macro.
5096         (DECL_VTT_PARM): Remove.
5097         (FUNCTION_FIRST_USER_PARMTYPE, FUNCTION_FIRST_USER_PARM): New macros.
5098         * decl.c (duplicate_decls): Only copy the operator code if
5099         appropriate.
5100         (start_function): Set current_vtt_parm.
5101         (lang_mark_tree): Don't mark vtt_parm.
5102         * decl2.c (maybe_retrofit_in_chrg): Do add the VTT parm to
5103         DECL_ARGUMENTS.  Set DECL_HAS_VTT_PARM_P.
5104         * class.c (build_clone): Maybe remove the VTT parm.
5105         * optimize.c (maybe_clone_body): Set up the VTT parm.
5106         * pt.c (copy_default_args_to_explicit_spec): Preserve the VTT parm.
5107         * call.c (build_over_call): Just allow the VTT arg.
5108         * method.c (make_thunk): Don't set DECL_VTT_PARM.
5109         (do_build_copy_constructor): Use FUNCTION_FIRST_USER_PARM.
5110         (synthesize_method): Use FUNCTION_FIRST_USER_PARMTYPE.
5111         * decl.c (grokdeclarator, copy_args_p, grok_ctor_properties): Likewise.
5112         * error.c (dump_function_decl): Likewise.
5113         * call.c (build_user_type_conversion_1, convert_like_real): Abort
5114         if we try to call a constructor with in-charge or VTT parms.
5115         * method.c (skip_artificial_parms_for): New fn.
5116         * call.c (add_function_candidate, build_over_call): Call it.
5117         * call.c (build_new_method_call): Use current_vtt_parm.
5118         * init.c (expand_virtual_init): Likewise.
5119         * class.c (same_signature_p): No longer static.
5120         * cp-tree.h: Declare it.
5121         * search.c (look_for_overrides_r): Use it.
5122
5123 2001-02-17  Mark Mitchell  <mark@codesourcery.com>
5124
5125         * cp-tree.h (new_abi_rtti_p): Remove.
5126         (name_mangling_version): Likewise.
5127         (flag_do_squangling): Likewise.
5128         * class.c (build_rtti_vtbl_entries): Remove old ABI support.
5129         * decl.c (grokfndecl): Likewise.
5130         * decl2.c (name_mangling_version): Remove.
5131         (flag_do_squangling): Likewise.
5132         (lang_f_options): Remove `squangle'.
5133         (unsupported_options): Add `squangle'.
5134         (cxx_decode_option): Issue a warning about uses of
5135         -fname-mangling-version.
5136         (finish_file): Remove old ABI support.
5137         * pt.c (check_explicit_specialization): Likewise.
5138         (tsubst_decl): Likewise.
5139         * rtti.c (init_rtti_processing): Likewise.
5140         (build_headof): Likewise.
5141         (get_tinfo_decl_dynamic): Likewise.
5142         (tinfo_from_decl): Likewise.
5143         (build_dynamic_cast_1): Likewise.
5144         (synthesize_tinfo_var): Likewise.
5145         * init.c (build_new): Allow enumeration types for the array-bounds
5146         in a direct-new-declarator.
5147
5148         * semantics.c (finish_typeof): Resolve OFFSET_REFs.
5149
5150         * pt.c (check_explicit_specialization): Copy TREE_PRIVATE and
5151         TREE_PROTECTED from the template being specialized.
5152
5153 2001-02-17  Jason Merrill  <jason@redhat.com>
5154
5155         * decl2.c (build_artificial_parm): Set TREE_READONLY.
5156
5157         * decl.c (bad_specifiers): Allow throw specs on things with
5158         pointer-to-function or -member-function type.
5159         * init.c (build_default_init): Don't use a CONSTRUCTOR to initialize
5160         a pmf.
5161
5162 2001-02-17  Mark Mitchell  <mark@codesourcery.com>
5163
5164         * call.c (check_dtor_name): Handle template names correctly.
5165
5166 2001-02-16  Jason Merrill  <jason@redhat.com>
5167
5168         * cp-tree.h (DECL_USE_VTT_PARM): Remove.
5169         * decl2.c (maybe_retrofit_in_chrg): Don't create it.
5170         * optimize.c (maybe_clone_body): Don't substitute it.
5171         * call.c (build_new_method_call): Check in_chrg instead.
5172         * init.c (expand_virtual_init): Likewise.
5173
5174 2001-02-16  Gabriel Dos Reis  <gdr@codesourcery.com>
5175
5176         * decl.c (check_tag_decl): Make sure a typedef for an anonymous
5177         class-type introduces at least a type-name.
5178
5179 2001-02-16  Jakub Jelinek  <jakub@redhat.com>
5180
5181         * call.c (convert_like_real): Create a temporary for non-lvalue.
5182
5183 2001-02-16  Jeffrey Oldham  <oldham@codesourcery.com>
5184
5185         * cp-tree.h: Fix typos in comments.
5186
5187 2001-02-16  Jason Merrill  <jason@redhat.com>
5188
5189         * optimize.c (remap_block): If we're compiling a clone, pass the
5190         new block to insert_block.
5191
5192 2001-02-16  Mark Mitchell  <mark@codesourcery.com>
5193
5194         * semantics.c (finish_asm_stmt): Robustify.
5195
5196 2001-02-15  Mark Mitchell  <mark@codesourcery.com>
5197
5198         * pt.c (push_template_decl_real): Don't remangle the name of a
5199         class template.
5200
5201 2001-02-15  Jim Meyering  <meyering@lucent.com>
5202
5203         * Make-lang.in (c++.install-common): Depend on installdirs.
5204         (c++.install-info): Likewise.
5205         (c++.install-man): Likewise.
5206
5207 2001-02-15  Mark Mitchell  <mark@codesourcery.com>
5208
5209         * typeck2.c (build_m_component_ref): Robustify.
5210
5211 2001-02-15  Alexandre Oliva  <aoliva@redhat.com>
5212
5213         * friend.c (do_friend): Don't take the nested [template] class
5214         into account when deciding whether to warn about the friend
5215         function not referring to a template function.
5216
5217 2001-02-14  Jakub Jelinek  <jakub@redhat.com>
5218
5219         * typeck.c (build_unary_op): Clarify error message.
5220
5221 2001-02-08  Aldy Hernandez  <aldyh@redhat.com>
5222
5223         * parse.y (component_constructor_declarator): allow optional
5224         parentheses around constructor class name.
5225
5226 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
5227
5228         * cp-tree.h (setup_vtbl_ptr): Move prototype to semantics.c
5229         section.
5230         * init.c (emit_base_init): Remove incorrect comment about
5231         virtual bases.
5232         * method.c (make_thunk): Fix comment alignment.
5233
5234 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
5235
5236         Kill remnants of this is variable.
5237         * cp-tree.h (flag_this_is_variable): Remove.
5238         * decl2.c (flag_this_is_variable): Remove.
5239         * class.c (fixed_type_or_null): Add cdtor parm. Adjust.
5240         (build_vbase_path): The path is non-static, even in a cdtor.
5241         (resolves_to_fixed_type_p): Add additional return value.
5242         * search.c (init_vbase_pointers): Adjust.
5243         * tree.c (lvalue_p_1): Adjust.
5244         * typeck.c (mark_addressable): Adjust.
5245
5246 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
5247
5248         * pt.c (unify): Don't check cv quals of array types.
5249
5250 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
5251
5252         * tree.c (cp_build_qualified_type_real): Use CP_TYPE_QUALS to
5253         check whether we already have the type.
5254
5255 2001-02-13  Mark Mitchell  <mark@codesourcery.com>
5256
5257         * cp-tree.h (CLASSTYPE_DESTRUCTORS): Fix typo in comment.
5258         * call.c (build_op_delete_call): Simplify to remove duplicate
5259         code.
5260         * class.c (clone_function_decl): Don't build the deleting variant
5261         of a non-virtual destructor.
5262         * decl.c (finish_destructor_body): Don't call delete if this is a
5263         non-virtual destructor.
5264         * init.c (build_delete): Explicitly call `operator delete' when
5265         deleting an object with a non-virtual destructor.
5266
5267 2001-02-13  Jason Merrill  <jason@redhat.com>
5268
5269         * lang-specs.h: Add more __EXCEPTIONS.
5270
5271 2001-02-12  Nathan Sidwell  <nathan@codesourcery.com>
5272
5273         * typeck2.c (process_init_constructor): Check
5274         TREE_HAS_CONSTRUCTOR before issuing missing init warning.
5275
5276 2001-02-12  Nathan Sidwell  <nathan@codesourcery.com>
5277
5278         * pt.c (maybe_adjust_types_for_deduction, DEDUCE_ORDER case):
5279         Remove spurious information in comment. Allow further
5280         adjustments of REFERENCE_TYPE args.
5281
5282 2001-02-12  Nathan Sidwell  <nathan@codesourcery.com>
5283
5284         * errfn.c (cp_deprecated): Tweak diagnostic text.
5285         * parse.y (new_initializer): Deprecate initializer lists
5286         extension.
5287
5288 2001-02-12  Mark Mitchell  <mark@codesourcery.com>
5289
5290         Remove old ABI support.
5291
5292 2001-02-11  Mark Mitchell  <mark@codesourcery.com>
5293
5294         * decl2.c (flag_vtable_thunks): Always set it to 1.
5295         (flag_new_abi): Likewise.
5296         * lang-specs.h: Remove conditional on ENABLE_NEW_GXX_ABI.
5297
5298         * Makefile.in (g++spec.o): Fix typo.
5299
5300 2001-02-09  Jason Merrill  <jason@redhat.com>
5301
5302         * lang-specs.h: Restore definition of __EXCEPTIONS.
5303
5304 2001-02-08  Jason Merrill  <jason@redhat.com>
5305
5306         * search.c (shared_member_p): New function.
5307         (lookup_field_r): Use it.
5308         * cp-tree.h (SHARED_MEMBER_P): Remove.
5309
5310         * method.c (process_overload_item): Handle template-dependent array
5311         bounds.
5312         * pt.c (type_unification_real): If we end up with undeduced nontype
5313         parms, try again.
5314
5315         * decl.c (lookup_name_real): Tweak warning to refer to decls, not
5316         types.
5317
5318         * typeck2.c (friendly_abort): Don't say anything if we have
5319         earlier errors or sorries.
5320
5321         * decl.c (check_tag_decl): Notice attempts to redefine bool and
5322         wchar_t.  Ignore if in_system_header.
5323
5324         * decl.c (maybe_push_cleanup_level): New fn...
5325         (start_decl_1): ...split out from here.
5326         * cvt.c (build_up_reference): Use it.
5327         * cp-tree.h: Declare it.
5328
5329 2001-02-07  Mark Mitchell  <mark@codesourcery.com>
5330
5331         * lang-specs.h: Use CPLUSPLUS_CPP_SPEC for the preprocessor
5332         spec.
5333
5334 2001-02-06  Nathan Sidwell  <nathan@codesourcery.com>
5335
5336         * pt.c (lookup_template_class): Make sure it's a primary
5337         template or template_template_parm when called from the parser.
5338         (instantiate_template_class): Add assertion.
5339
5340 2001-02-05  Alexandre Oliva  <aoliva@redhat.com>
5341
5342         * method.c (build_mangled_name) [old abi]: Protect flush_repeats()
5343         from error_mark_node.
5344
5345 2001-02-05  Nathan Sidwell  <nathan@codesourcery.com>
5346
5347         Fix specification and implementation bugs in V3 ABI
5348         construction vtables.
5349         * cp-tree.h (flag_dump_class_layout): New flag.
5350         (BINFO_OVERRIDE_ALONG_VIRTUAL_PATH_P): Remove.
5351         (BINFO_LOST_PRIMARY_P): New flag.
5352         (SET_BINFO_NEW_VTABLE_MARKED): Adjust asserts.
5353         (BINFO_PRIMARY_MARKED_P): Rename to ...
5354         (BINFO_PRIMARY_P): ... here.
5355         (binfo_via_virtual): New prototype.
5356         * decl2.c (flag_dump_class_layout): New flag.
5357         (cxx_decode_option): Set it. Adjust -fdump-translation-unit to
5358         use `=' as a file name separator.
5359         * init.c (dfs_initialize_vtbl_ptrs): Walk into virtual primary
5360         bases.
5361         (build_vtbl_address): If this is a virtual primary base, then
5362         get the vtbl of what it is ultimately primary for.
5363         * search.c (dfs_skip_nonprimary_vbases_unmarkedp): Adjust
5364         for BINFO_PRIMARY_P.
5365         (dfs_skip_nonprimary_vbases_markedp): Likewise.
5366         (get_shared_vbase_if_not_primary): Likewise.
5367         (dfs_get_pure_virtuals): Likewise.
5368         (expand_upcast_fixups): Likewise.
5369         (fixup_virtual_upcast_offsets): Likewise.
5370         (dfs_find_vbase_instance): Likewise.
5371         (find_vbase_instance): Likewise.
5372         (binfo_from_vbase): Adjust comment to reflect reality.
5373         (binfo_via_virtual): New function.
5374         * class.c (VTT_TOP_LEVEL_P, VTT_MARKED_BINFO_P): New macros
5375         for binfo walking during VTT construction.
5376         (dfs_mark_primary_bases): Remove.
5377         (force_canonical_binfo_r): New function.
5378         (force_canonical_binfo): New function.
5379         (mark_primary_virtual_base): New function.
5380         (mark_primary_bases): Walk in inheritance graph order, use
5381         mark_primary_virtual_base.
5382         (determine_primary_base): Use some more intermediate variables.
5383         (dfs_find_final_overrider): Don't check for overriding along a
5384         virtual path.
5385         (dfs_modify_vtables): Walk into primary virtual bases too.
5386         (walk_subobject_offsets): Adjust for BINFO_PRIMARY_P.
5387         (build_base_fields): Likewise.
5388         (dfs_set_offset_for_unshared_vbases): Likewise.
5389         (layout_virtual_bases): Likewise.
5390         (end_of_class): Likewise.
5391         (finish_struct_1): Call dump_class_hierarchy, if requested.
5392         (dfs_get_primary_binfo): Use BINFO_TYPE for binfos.
5393         (dump_class_hierarchy_r): Add stream parameter. Emit more information.
5394         (dump_class_hierarchy): Add file parameter. Append to file, if
5395         required.
5396         (finish_vtbls): Adjust accumulate_vtbl_inits call.
5397         Use canonical base for virtual bases.
5398         (build_vtt): Add more comments. Adjust build_vtt_inits call.
5399         (build_vtt_inits): Remove VIRTUAL_VTTS_P parm.
5400         Only set BINFO_VPTR_INDEX on top level. Use VTT_TOP_LEVEL_P,
5401         VTT_MARKED_BINFO_P for binfo walking. Use canonical vbase for
5402         virtual VTTs.
5403         (dfs_build_secondary_vptr_vtt_inits): Extract VTT_TOP_LEVEL_P
5404         from DATA.  We want virtual primary bases and all bases via virtual.
5405         Only set BINFO_VPTR_INDEX for top level. Look up from a primary
5406         virtual base when not a construction vtable.
5407         (dfs_ctor_vtable_bases_queue_p): New DFS predicate.
5408         (build_ctor_vtbl_group): Adjust accumulate_vtbl_inits call.
5409         Use canonical bases when processing virtual bases.
5410         (accumulate_vtbl_inits): We're interested in any base via a
5411         virtual path.
5412         (dfs_accumulate_vtbl_inits): If this is a primary virtual base
5413         within a construction vtable, determine what is being overridden.
5414         (build_vtbl_initializer): Add more comments
5415         (add_vcall_offset_vtbl_entries_1): Adjust comment.
5416         (build_rtti_vtbl_entries): Check if the base has lost its
5417         primary.
5418
5419 2001-02-05  Mark Mitchell  <mark@codesourcery.com>
5420
5421         * Makefile.in (g++spec.o): Adjust use of DRIVER_DEFINES.
5422
5423 Sun Feb  4 15:52:44 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
5424
5425         * decl.c (pushdecl): Call abort instead of fatal.
5426         * except.c (decl_is_java_type): Call fatal_error instead of fatal.
5427         * init.c (build_new_1): Likewise.
5428         (build_java_class_ref): Call internal_error and fatal_error, not fatal.
5429         * decl.c (build_typename_type): hash_table_init now returns void.
5430         decl.c (init_decl_processing): Make an error non-fatal.
5431
5432 2001-02-04  Mark Mitchell  <mark@codesourcery.com>
5433
5434         * cp-tree.h (CLASSTYPE_INTERFACE_UNKNOWN): Fix formatting.
5435         Document.
5436         (CLASSTYPE_INTERFACE_KNOWN): Likewise.
5437         (SET_CLASSTYPE_INTERFACE_UNKNOWN_X): Likewise.
5438         (SET_CLASSTYPE_INTERFACE_UNKNOWN): Likewise.
5439         (SET_CLASSTYPE_INTERFACE_KNOWN): Likewise.
5440         * decl.c (maybe_commonize_var): Use the new name-mangling where
5441         appropriate.
5442         * decl2.c (comdat_linkage): Enhance comments.  Make all
5443         compiler-generated things static, if COMDAT is not available.
5444         (get_tinfo_decl): Do not make typeinfo objects that belong in the
5445         library COMDAT.
5446         (tinfo_base_init): Use the correct mangled name for typeinfo
5447         strings, and push them into the global scope.
5448         (typeinfo_in_lib_p): New function.
5449         (synthesize_tinfo_var): Use it.
5450         (create_real_tinfo_var): Likewise.
5451
5452 2001-02-03  Jakub Jelinek  <jakub@redhat.com>
5453
5454         * decl.c (push_class_binding): Use context_for_name_lookup instead
5455         of CP_DECL_CONTEXT.
5456         * search.c (context_for_name_lookup): Remove static.  Check for NULL
5457         context in the loop.
5458         * cp-tree.h (context_for_name_lookup): Add prototype.
5459
5460 2001-02-02  Jakub Jelinek  <jakub@redhat.com>
5461
5462         * cp-tree.h (build_expr_ptr_wrapper, can_free): Remove.
5463         * tree.c (build_expr_ptr_wrapper, can_free, permanent_obstack):
5464         Remove.
5465         * call.c (convert_class_to_reference, build_user_type_conversion_1,
5466         add_warning): Change build_expr_ptr_wrapper to build_ptr_wrapper.
5467
5468 2001-02-02  Mark Mitchell  <mark@codesourcery.com>
5469
5470         * Make-lang.in (g++spec.o): Add DRIVER_DEFINES to the list
5471         of macros used when compiling g++spec.c.
5472         * g++spec.c (lang_specific_driver): Link with the shared
5473         libgcc by default.
5474
5475 2001-01-29  Joseph S. Myers  <jsm28@cam.ac.uk>
5476
5477         * decl2.c (build_expr_from_tree), lex.c (make_pointer_declarator,
5478         make_reference_declarator, make_call_declarator), method.c
5479         (implicitly_declare_fn), parse.y (namespace_using_decl,
5480         notype_unqualified_id, expr_or_declarator, new_type_id,
5481         after_type_declarator, direct_after_type_declarator,
5482         notype_declarator, complex_notype_declarator,
5483         complex_direct_notype_declarator, qualified_id,
5484         notype_qualified_id, overqualified_id, direct_new_declarator,
5485         absdcl, direct_abstract_declarator, conversion_declarator), pt.c
5486         (tsubst), semantics.c (begin_constructor_declarator): Use build_nt
5487         instead of build_parse_node.
5488
5489 2001-01-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5490
5491         * cp-tree.h (cp_tree_index): Delete CPTI_MINUS_ONE.
5492         (minus_one_node): Moved to top level gcc directory.  Renamed
5493         to integer_minus_one_node.
5494
5495         * init.c (init_init_processing): Don't set minus_one_node.
5496         (build_vec_init): Use integer_minus_one_node.
5497
5498         * rtti.c (get_tinfo_decl_dynamic): Likewise.
5499
5500 2001-01-28  Jakub Jelinek  <jakub@redhat.com>
5501
5502         * optimize.c (copy_body_r): If MODIFY_EXPR has both arguments
5503         identical and they would be replaced with constant, remove
5504         MODIFY_EXPR from the tree.
5505
5506 2001-01-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5507
5508         * Make-lang.in: Remove all dependencies on defaults.h.
5509         * call.c: Don't include defaults.h.
5510         * decl.c: Likewise.
5511         * decl2.c: Likewise.
5512         * except.c: Likewise.
5513         * pt.c: Likewise.
5514         * rtti.c: Likewise.
5515         * tree.c: Likewise.
5516         * typeck.c: Likewise.
5517
5518 2001-01-25  Jakub Jelinek  <jakub@redhat.com>
5519
5520         * mangle.c (write_mangled_name, write_encoding): Mangle overloaded
5521         operators even in "C" linkage.
5522         * method.c (set_mangled_name_for_decl): Likewise.
5523         * decl.c (grokfndecl): Call set_mangled_name_for_decl even for
5524         overloaded operators in "C" linkage.
5525
5526 2001-01-24  Nathan Sidwell  <nathan@codesourcery.com>
5527
5528         * pt.c (tsubst_decl): Remove IN_DECL parameter.
5529         (tsubst_arg_types): Check parameter is not void.
5530         (tsubst): Adjust tsubst_decl call.
5531
5532 2001-01-24  Nathan Sidwell  <nathan@codesourcery.com>
5533
5534         * call.c (add_builtin_candidate): Quote std properly, from
5535         previous change.
5536
5537 2001-01-23  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5538
5539         * pt.c (check_explicit_specialization): Clone constructors and
5540         destructors.
5541
5542 2001-01-23  Nathan Sidwell  <nathan@codesourcery.com>
5543
5544         * decl.c (grokdeclarator): Don't presume DECL_LANG_SPECIFIC
5545         indicates anything special about template depth. Make sure we
5546         only count the user visible template classes.
5547
5548 2001-01-23  Nathan Sidwell  <nathan@codesourcery.com>
5549
5550         * call.c (build_conv): Typo in comment.
5551         (add_builtin_candidate): Add more explanation.
5552         Remove extra test for ENUMERAL_TYPE in {PRE,POST}INCREMENT_EXPR.
5553         Allow ENUMERAL_TYPEs for relops and eqops. Add both candidates
5554         when we have enumeral types.
5555         (add_builtin_candidates): Add more explanation. Add ENUMERAL_TYPE
5556         candidates for relops and eqops.
5557         (joust): Simplify control flow. Allow a non-template user
5558         function to hide a builtin.
5559
5560 2001-01-22  Nathan Sidwell  <nathan@codesourcery.com>
5561
5562         * cp-tree.h (unification_kind_t): Add DEDUCE_ORDER.
5563         (more_specialized): Add deduction parameter.
5564         * call.c (joust): Adjust more_specialized call.
5565         * pt.c (UNIFY_ALLOW_OUTER_MORE_CV_QUAL,
5566         UNIFY_ALLOW_OUTER_LESS_CV_QUAL): New unify flags.
5567         (get_bindings_order): Remove.
5568         (get_bindings_real): Add DEDUCE parameter.
5569         (maybe_adjust_types_for_deduction): Return extra unify flags. Do
5570         REFERENCE_TYPE jig for DEDUCE_ORDER.
5571         (type_unification_real): Deal with DEDUCE_ORDER. Use result of
5572         maybe_adjust_types_for_deduction.
5573         (more_specialized): Add DEDUCE parameter. Call get_bindings_real
5574         directly.
5575         (try_one_overload): Use result of maybe_adjust_types_for_deduction.
5576         (check_cv_quals_for_unify): Use new unify qualifier flags.
5577         (unify): Clear new unify qualifier flags.
5578         (get_bindings_real): Add DEDUCE parameter.
5579         (get_bindings): Adjust call to get_bindings_real.
5580         (get_bindings_overload): Likewise.
5581         (most_specialized_instantiation): Adjust call to
5582         more_specialized.
5583
5584 2001-01-19  Jason Merrill  <jason@redhat.com>
5585
5586         * decl2.c (flag_vtable_thunks): Also depend on ENABLE_NEW_GXX_ABI.
5587
5588         * decl.c (init_decl_processing): Just force -fvtable-thunks on if
5589         -fnew-abi.
5590
5591 2001-01-19  Ute Pelkmann  <scope.muc@t-online.de>
5592
5593         * decl2.c (arg_assoc_class): Fix double iteration logic.
5594
5595 2001-01-19  Jason Merrill  <jason@redhat.com>
5596
5597         * init.c (build_delete): Always call convert_force to strip cv-quals.
5598
5599         * decl2.c (flag_new_abi): Depend on ENABLE_NEW_GXX_ABI.
5600         * lang-specs.h: Default ABI depends on ENABLE_NEW_GXX_ABI.
5601         * g++spec.c: Don't look at ENABLE_NEW_GXX_ABI.
5602
5603 2001-01-19  Nathan Sidwell  <nathan@codesourcery.com>
5604
5605         * search.c (get_vbase_1): Count only virtual bases.
5606
5607 2001-01-19  Nathan Sidwell  <nathan@codesourcery.com>
5608
5609         * class.c (duplicate_tag_error): Robustify flag clearing.
5610
5611 2001-01-19  Nathan Sidwell  <nathan@codesourcery.com>
5612
5613         * cp-tree.h (lookup_template_class): Add complain parm.
5614         * decl.c (lookup_namespace_name): Adjust call to
5615         lookup_template_class.
5616         (make_typename_type): Likewise.
5617         * semantics.c (finish_template_type): Likewise.
5618         * pt.c (lookup_template_class): Add complain parm. Adjust.
5619         (tsubst_aggr_type): Pass COMPLAIN down to lookup_template_class.
5620         (tsubst): Likewise.
5621
5622 2001-01-19  Nathan Sidwell  <nathan@codesourcery.com>
5623
5624         * pt.c (copy_default_args_to_explicit_spec): Preserve
5625         object's CV quals. Reorganize.
5626
5627 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
5628
5629         * typeck.c (build_modify_expr): Say `initialization' for
5630         INIT_EXPRs.
5631         * init.c (build_default_init): Convert to enumeral type, if
5632         needed.
5633
5634 2001-01-18  Jakub Jelinek  <jakub@redhat.com>
5635
5636         * parse.y (nomods_initdcl0): Properly set things up for
5637         initdcl0_innards.
5638
5639 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
5640
5641         * pt.c (UNIFY_ALLOW_OUTER_LEVEL): New unify flag.
5642         (type_unification_real): Set it.
5643         (unify): Use it.
5644
5645 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
5646
5647         * decl.c (finish_destructor_body): Convert to vbase pointer here.
5648
5649 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
5650
5651         * semantics.c (begin_class_definition): Check we're not inside a
5652         template parm list.
5653
5654 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
5655
5656         * tree.c (walk_tree, TREE_LIST): Don't walk the TREE_PURPOSE of
5657         BASELINK_P.
5658
5659 2001-01-16  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
5660
5661         * typeck.c (build_function_call_real): Call fold on the CALL_EXPR.
5662         * call.c (build_over_call): Add comment.
5663
5664 2001-01-16 Daniel Berlin <dberlin@redhat.com>
5665
5666         * cvt.c (ocp_convert): Handle vector type conversion
5667         * typeck2.c (digest_init): Handle vector type initializations
5668
5669 2001-01-16  Phil Edwards  <pme@sources.redhat.com>
5670
5671         * g++spec.c:  Don't add libraries needlessly if -fsyntax-only
5672           was given.
5673
5674 2001-01-15  Nathan Sidwell  <nathan@codesourcery.com>
5675
5676         * pt.c (check_nontype_parm): Rename to ...
5677         (invalid_nontype_parm_type_p): ... here.
5678         (process_template_parm): Adjust.
5679         (convert_template_argument): Adjust.
5680
5681 2001-01-15  Nathan Sidwell  <nathan@codesourcery.com>
5682
5683         * pt.c (check_nontype_parm): New function.
5684         (process_template_parm): Use it.
5685         (convert_template_argument): Use it.
5686         (convert_nontype_argument, RECORD_TYPE): Assert it's a ptr to
5687         member.
5688
5689 2001-01-14  Jeffrey Oldham  <oldham@codesourcery.com>
5690
5691         * tree.c: Add defaults.h
5692         (cp_valid_lang_attribute): Incorporate SUPPORTS_INIT_PRIORITY.
5693         * Make-lang.in (cp/tree.o): Add defaults.h.
5694
5695 2001-01-13  Joseph S. Myers  <jsm28@cam.ac.uk>
5696
5697         * Make-lang.in (CXX_C_OBJS): Add c-format.o.
5698
5699 2001-01-13  Joseph S. Myers  <jsm28@cam.ac.uk>
5700
5701         * g++.1: Change to be ".so man1/gcc.1".
5702
5703 2001-01-13  Joseph S. Myers  <jsm28@cam.ac.uk>
5704
5705         * Make-lang.in (c++.info, c++.install-info): Build and install g++
5706         internals info.
5707         (c++.uninstall, c++.maintainer-clean): Remove g++ internals info.
5708         ($(srcdir)/cp/g++int.info): New target.
5709         * gxxint.texi: Add info directory entry.  Use @@ in email address.
5710         * .cvsignore: Update.
5711
5712 2001-01-12  Nathan Sidwell  <nathan@codesourcery.com>
5713
5714         * typeck.c (build_c_cast): Do template processing earlier.
5715         Always pedwarn on array casts.
5716
5717 2001-01-12  Nathan Sidwell  <nathan@codesourcery.com>
5718
5719         * friend.c (make_friend_class): Make sure a templated class is
5720         actually a template.
5721
5722 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
5723
5724         * decl2.c (get_guard): Set linkage from guarded decl.
5725
5726 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
5727
5728         * call.c (convert_default_arg): Check for unprocessed
5729         DEFAULT_ARG.
5730         * cp-tree.h (replace_defarg): Move to spew.c.
5731         (maybe_snarf_defarg, add_defarg_fn, do_pending_defargs): Move to
5732         spew.c, which is where they really are.
5733         (done_pending_defargs): Declare.
5734         (unprocessed_defarg_fn): Declare.
5735         * decl.c (replace_defarg): Move to spew.c
5736         * parse.y (structsp): Call done_pending_defargs.
5737         * spew.c (defarg_fns): Rearrange list structure.
5738         (defarg_fnsdone): New static variable.
5739         (defarg_depfns): New static variable.
5740         (init_spew): Adjust.
5741         (add_defarg_fn): Store the type in TREE_TYPE.
5742         (do_pending_defargs): Detect and deal with ordering constraints
5743         and circularity.
5744         (done_pending_defargs): New function.
5745         (unprocessed_defarg_fn): New function.
5746         (replace_defarg): Moved from decl.c. Robustify. Don't save
5747         if circularity detected.
5748
5749 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
5750
5751         * pt.c (unify): Check array has a domain, before checking
5752         whether it is variable sized.
5753
5754 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
5755
5756         * decl.c (grokparms): Unobfuscate and get correct diagnostic for
5757         parameters with pointers to arrays of unknown bound.
5758
5759 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
5760
5761         * parse.y (template_parm_header, template_spec_header): New
5762         reductions. Split out from ...
5763         (template_header): ... here. Use them.
5764         (template_template_parm): Use template_parm_header.
5765         * semantics.c (finish_template_template_parm): Add assert.
5766
5767 2001-01-10  Mark Mitchell  <mark@codesourcery.com>
5768
5769         * mangle.c (write_builtin_type): Fix thinko.
5770
5771         * pt.c (copy_default_args_to_explicit_spec_1): New function.
5772         (copy_default_args_to_explicit_spec): Likewise.
5773         (check_explicit_specialization): Use it.
5774
5775         * class.c (finish_struct_1):  Remove last argument in call to
5776         make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
5777         * decl.c (builtin_function): Likewise.
5778         (build_cp_library_fn): Likewise.
5779         (check_initializer): Likewise.
5780         (make_rtl_for_nonlocal_decl): Likewise.
5781         (cp_finish_decl): Likewise.
5782         (start_function): Likewise.
5783         * decl2.c (finish_anon_union): Likewise.
5784         * friend.c (do_friend): Likewise.
5785         * init.c (build_java_class_ref): Likewise.
5786         * method.c (make_thunk): Likewise.
5787         * pt.c (tsubst_friend_function): Likewise.
5788         * semantics.c (expand_body): Likewise.
5789
5790 2001-01-10  Mark Mitchell  <mark@codesourcery.com>
5791
5792         * cp-tree.h (DECL_CLONED_FUNCTION_P): Avoid wild reads by not
5793         looking at DECL_CLONED_FUNCTION for non-functions.
5794
5795 2001-01-10  Nathan Sidwell  <nathan@codesourcery.com>
5796
5797         * error.c (dump_template_parameter): Use parm to determine how
5798         to print default value.
5799
5800 2001-01-10  Nathan Sidwell  <nathan@codesourcery.com>
5801
5802         * class.c (duplicate_tag_error): Clear more flags.
5803
5804 2001-01-10  Nathan Sidwell  <nathan@codesourcery.com>
5805
5806         * call.c (build_new_method_call): Use binfo_for_vbase.
5807
5808 2001-01-10  Joseph S. Myers  <jsm28@cam.ac.uk>
5809
5810         * cp-tree.h (flag_cond_mismatch): Don't declare.
5811         * decl2.c (flag_cond_mismatch): Don't define.
5812         (lang_f_options): Remove cond-mismatch.
5813         (unsupported_options): Add cond-mismatch.
5814
5815 2001-01-09  Nathan Sidwell  <nathan@codesourcery.com>
5816
5817         * class.c (handle_using_decl): Reject using of constructor name
5818         of sourcing class. Allow injecting of a method with same name as
5819         nested class. Fixup error messages.
5820
5821 2001-01-09  Joseph S. Myers  <jsm28@cam.ac.uk>
5822
5823         * decl2.c (lang_decode_option): Handle -Wformat=2.
5824
5825 2001-01-08  Nathan Sidwell  <nathan@codesourcery.com>
5826
5827         * cp-tree.h (lang_decl_flags): Rename defined_in_class to
5828         initialized_in_class.
5829         (DECL_DEFINED_IN_CLASS_P): Rename to ...
5830         (DECL_INITIALIZED_IN_CLASS_P): ... here, to reflect true meaning.
5831         * decl.c (duplicate_decls): Preseve DECL_INITIALIZED_IN_CLASS_P.
5832         (cp_finish_decl): Adjust for DECL_INITIALIZED_IN_CLASS_P.
5833         * pt.c (check_default_tmpl_args): Adjust for
5834         DECL_INITIALIZED_IN_CLASS_P.
5835         (instantiate_class_template): Likewise.
5836         (instantiate_decl): Check DECL_INITIALIZED_IN_CLASS_P.
5837
5838         * class.c (finish_struct): Constify saved_filename.
5839
5840 2001-01-08  Nathan Sidwell  <nathan@codesourcery.com>
5841
5842         * class.c (duplicate_tag_error): Adjust diagnostic.
5843         (finish_struct): Locally set location to start of struct.
5844         * decl.c (fixup_anonymous_aggr): Use cp_error_at.
5845
5846 2001-01-08  Nathan Sidwell  <nathan@codesourcery.com>
5847
5848         * decl.c (struct binding_level): Adjust class_shadowed comments
5849         to reflect reality.
5850         (push_class_level_binding): Adjust comments to reflect reality.
5851         Set IDENTIFIER_CLASS_VALUE when replacing an existing binding.
5852         Don't set TREE_VALUE on the class_shadowed list.
5853
5854 2001-01-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5855
5856         * decl2.c (acceptable_java_type): Allow references too.
5857         * init.c (build_java_class_ref): When using the new ABI, search
5858         `class$' and have it mangled with `mangle_decl.'
5859         * mangle.c (write_java_integer_type_codes): New function.
5860         (write_builtin_type): Detect and mangle Java integer and real
5861         types.
5862
5863 2001-01-07  Mark Mitchell  <mark@codesourcery.com>
5864
5865         * decl2.c (grokfield): Don't accept `asm' specifiers for
5866         non-static data members.
5867
5868 2001-01-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5869
5870         * expr.c (cplus_expand_expr): Don't reset `target'.
5871
5872 2001-01-07  Neil Booth  <neil@daikokuya.demon.co.uk>
5873
5874         * cp/decl2.c (cxx_post_options): Call cpp_post_options.
5875
5876 2001-01-05  Nathan Sidwell  <nathan@codesourcery.com>
5877
5878         * parse.y (template_datadef): Check for error_mark_node.
5879
5880 2001-01-05  Nathan Sidwell  <nathan@codesourcery.com>
5881
5882         * cp-tree.def (DEFAULT_ARG): Make `x' class.
5883
5884 2001-01-04  Joseph S. Myers  <jsm28@cam.ac.uk>
5885
5886         * decl.c (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE): Don't define.
5887         (record_builtin_type): Make non-static.
5888         (flag_short_double): Don't declare.
5889         (init_decl_processing): Remove the creation of many tree nodes now
5890         in c_common_nodes_and_builtins.
5891         (build_void_list_node): New function.
5892         * decl2.c (flag_short_double, flag_short_wchar): Don't define.
5893         * cp-tree.h (flag_short_wchar): Don't declare.
5894
5895 2001-01-04  Mark Mitchell  <mark@codesourcery.com>
5896
5897         * call.c (build_conv): Don't use build1 for USER_CONV.
5898         * pt.c (tsubst_copy): Or for PREINCREMENT_EXPR and similar nodes.
5899
5900 2001-01-03  Joseph S. Myers  <jsm28@cam.ac.uk>
5901
5902         * lex.c (lang_init): Call c_common_lang_init.
5903
5904 2001-01-03  Nathan Sidwell  <nathan@codesourcery.com>
5905
5906         * search.c (lookup_fnfields_here): Remove.
5907         (look_for_overrides_r): Use lookup_fnfields_1.
5908         Ignore functions from using declarations.
5909
5910 2001-01-03  Nathan Sidwell  <nathan@codesourcery.com>
5911
5912         Implement exceptions specifiers for implicit member functions.
5913         * cp-tree.h (merge_exceptions_specifiers): Declare new function.
5914         * method.c (synthesize_exception_spec): New function.
5915         (locate_dtor, locate_ctor, locate_copy): New functions.
5916         (implicitly_declare_fn): Generate the exception spec too.
5917         * search.c (check_final_overrider): Check artificial functions
5918         too.
5919         * typeck2.c (merge_exception_specifiers): New function.
5920
5921 2001-01-03  Jason Merrill  <jason@redhat.com>
5922
5923         * init.c (build_default_init): New fn.
5924         (perform_member_init): Split out from here.
5925         (build_new_1): Use it.  Simplify initialization logic.
5926         (build_vec_init): Take an array, rather than a pointer and maxindex.
5927         Speed up simple initializations.  Don't clean up if we're assigning.
5928         * cp-tree.h: Adjust.
5929         * decl2.c (do_static_initialization): Remove TREE_VEC case.
5930         * parse.y (new_initializer): Return void_zero_node for ().
5931         * typeck.c (build_modify_expr): Handle getting a CONSTRUCTOR.
5932         * typeck2.c (digest_init): Only complain about user-written
5933         CONSTRUCTORs.
5934
5935 2000-12-22  Mike Stump  <mrs@wrs.com>
5936
5937         * decl2.c: (max_tinst_depth): Increase to 50.
5938
5939 2001-01-02  Mark Mitchell  <mark@codesourcery.com>
5940
5941         * class.c (invalidate_class_lookup_cache): Zero the
5942         previous_class_values.
5943         * cp-tree.h (TMPL_PARMS_DEPTH): Use TREE_INT_CST_LOW, not
5944         TREE_INT_CST_HIGH.
5945         (CLASSTYPE_TEMPLATE_LEVEL): Likewise.
5946         * decl.c (free_bindings): New variable.
5947         (push_binding): Don't create a new binding if we have one on the
5948         free list.
5949         (pop_binding): Put old bindings on the free list.
5950         (init_decl_processing): Use size_int, not build_int_2.
5951         Register free_bindings as a GC root.
5952         (cp_make_fname_decl): Use size_int, not build_int_2.
5953         (push_inline_template_parms_recursive): Likewise.
5954         (end_template_parm_list): Likewise.
5955         (for_each_tempalte_parm): Do not use walk_tree_without_duplicates.
5956         (tsubst_template_parms): Use size_int, not build_int_2.
5957         (tsubst): Likewise.
5958         * rtti.c (get_vmi_pseudo_type_info): Likewise.
5959
5960 2001-01-02  Richard Henderson  <rth@redhat.com>
5961
5962         * parse.y (asm): Set ASM_INPUT_P.
5963
5964 2001-01-02  Jason Merrill  <jason@redhat.com>
5965
5966         * tree.c (cp_valid_lang_attribute): Don't set CLASSTYPE_COM_INTERFACE
5967         for v3 ABI.
5968
5969         * typeck.c (cp_truthvalue_conversion): New fn.
5970         * cvt.c (ocp_convert): Use it.
5971
5972         * cp-tree.h: Lose c-common.c decls.
5973
5974         * typeck.c (build_unary_op): Restore old &a.f diagnostic code.
5975         * cvt.c (convert_to_void): Use type_unknown_p.
5976
5977         * typeck.c (strip_all_pointer_quals): Also strip quals from
5978         pointer-to-member types.
5979
5980         * Make-lang.in (cp/TAGS): Use --no-globals.  Ignore parse.c, and treat
5981         parse.y as C.
5982
5983         * call.c (build_new_method_call): Do evaluate the object parameter
5984         when accessing a static member.
5985         * typeck.c (build_component_ref): Likewise.
5986
5987 2001-01-02  Andreas Jaeger  <aj@suse.de>
5988
5989         * decl.c (cp_missing_noreturn_ok_p): New.
5990         (init_decl_processing): Set lang_missing_noreturn_ok_p.
5991
5992 2000-12-29  Jakub Jelinek  <jakub@redhat.com>
5993
5994         * decl.c (init_decl_processing): Fix sign of wchar_type_node.
5995
5996 2000-12-29  Mark Mitchell  <mark@codesourcery.com>
5997
5998         * class.c (pushclass): Remove #if 0'd code.
5999         * cp-tree.h (overload_template_name): Remove.
6000         * decl.c (store_bindings): Simplify.
6001         (pop_from_top_level): Likewise.
6002         * pt.c (overload_template_name): Remove.
6003         (instantiate_decl): Don't call push_to_top_level if it's not
6004         needed.
6005
6006 2000-12-28  Mark Mitchell  <mark@codesourcery.com>
6007
6008         * pt.c (register_local_specialization): Don't return a value.
6009         (lookup_template_class): Use move-to-front heuristic when looking
6010         up template instantiations.
6011         (instantiate_decl): Only push_to_top_level when we're actually
6012         going to instantiate the template.
6013
6014 2000-12-29  Hans-Peter Nilsson  <hp@bitrange.com>
6015
6016         * search.c (binfo_for_vtable): Return least derived class, not
6017         most.  Handle secondary vtables.
6018
6019 2000-12-22  Jason Merrill  <jason@redhat.com>
6020
6021         * pt.c (more_specialized): Don't optimize len==0.
6022         (fn_type_unification): If we're adding the return type, increase len.
6023
6024         * typeck.c (build_binary_op): Fix pmf comparison logic.
6025
6026         * call.c (joust): Use DECL_NONSTATIC_MEMBER_FUNCTION_P, not
6027         DECL_STATIC_FUNCTION_P.
6028
6029         * semantics.c (genrtl_finish_function): Don't try to jump to
6030         return_label unless it exists.
6031
6032         In partial ordering for a call, ignore parms for which we don't have
6033         a real argument.
6034         * call.c (joust): Pass len to more_specialized.
6035         (add_template_candidate_real): Strip 'this', pass len.
6036         * pt.c (more_specialized): Pass len down.  Lose explicit_args parm.
6037         (get_bindings_order): New fn.  Pass len down.
6038         (get_bindings_real): Strip 'this', pass len.
6039         (fn_type_unification): Likewise.
6040         (type_unification_real): Succeed after checking 'len' args.
6041         (most_specialized_instantiation): Lose explicit_args parm.
6042         * class.c (resolve_address_of_overloaded_function): Strip 'this',
6043         pass len.
6044
6045 2000-12-21  Jason Merrill  <jason@redhat.com>
6046
6047         * pt.c (tsubst_decl): A FUNCTION_DECL has DECL_RESULT, not
6048         DECL_TEMPLATE_RESULT.
6049
6050         * search.c (lookup_field_r): Call lookup_fnfields_1, not
6051         lookup_fnfields_here.
6052
6053         * parse.y (typename_sub2): Return the TYPE_DECL, not the type.
6054
6055         * call.c (build_object_call): Also allow conversions that return
6056         reference to pointer to function.
6057         (add_conv_candidate): Handle totype being ref to ptr to fn.
6058         (build_field_call): Also allow members of type reference to function.
6059         Lose support for calling pointer to METHOD_TYPE fields.
6060
6061         * error.c (dump_expr): Handle *_CAST_EXPR.
6062
6063         * typeck2.c (build_scoped_ref): Always convert to the naming class.
6064
6065         * tree.c (break_out_cleanups): Lose.
6066         * cp-tree.h: Remove prototype.
6067         * typeck.c (build_component_ref): Don't break_out_cleanups.
6068         (build_compound_expr): Likewise.
6069         * semantics.c (finish_expr_stmt): Likewise.
6070
6071 2000-12-20  Richard Henderson  <rth@redhat.com>
6072
6073         * cp-tree.h: Update declarations.
6074         * decl.c (finish_case_label): Return the new stmt node.
6075         * semantics.c (finish_goto_stmt): Likewise.
6076         (finish_expr_stmt, finish_return_stmt): Likewise.
6077         (finish_break_stmt, finish_continue_stmt): Likewise.
6078         (finish_asm_stmt): Likewise.
6079         * parse.y (already_scoped_stmt): Set STMT_LINENO.
6080         (compstmt, implicitly_scoped_stmt, stmt): Likewise.
6081         (simple_if, simple_stmt): Return the new stmt node.
6082         (save_lineno): New.
6083
6084 2000-12-18  Joseph S. Myers  <jsm28@cam.ac.uk>
6085
6086         * cp-tree.h: Don't declare warn_long_long.
6087
6088 2000-12-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6089
6090         * tree.c (no_linkage_helper): Use CLASS_TYPE_P instead of
6091         IS_AGGR_TYPE.
6092
6093 2000-12-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6094
6095         * pt.c (unify): Handle when both ARG and PARM are
6096         BOUND_TEMPLATE_TEMPLATE_PARM.
6097
6098 2000-12-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6099
6100         * pt.c (reduce_template_parm_level): Set DECL_ARTIFICIAL and
6101         DECL_TEMPLATE_PARM_P.
6102
6103 2000-12-15  Jason Merrill  <jason@redhat.com>
6104
6105         * init.c (build_new_1): Reorganize.  Now with 100% fewer SAVE_EXPRs!
6106
6107         * init.c (build_new_1): Don't strip quals from type.
6108
6109         * decl.c (pushdecl): Don't check for linkage on a non-decl.
6110
6111         * call.c (build_op_delete_call): See through ARRAY_TYPEs.
6112
6113         * call.c (build_new_function_call): Lose space before paren in
6114         error message.
6115         (build_new_method_call): Likewise.
6116
6117         * typeck2.c (build_m_component_ref): Propagate quals from datum.
6118
6119 2000-12-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6120
6121         * pt.c (check_explicit_specialization): Propagate default
6122         function arguments to explicit specializations.
6123
6124 2000-12-13  DJ Delorie  <dj@redhat.com>
6125
6126         * typeck.c (build_binary_op): Do signed/unsigned warnings for >?
6127         and <? operators.
6128
6129 2000-12-08  Jason Merrill  <jason@redhat.com>
6130
6131         * error.c (dump_function_name): Don't let the user see __comp_ctor.
6132
6133         Clean up copy-initialization in overloading code.
6134         * call.c (build_user_type_conversion_1): Die if we are asked to
6135         convert to the same or a base type.
6136         (implicit_conversion): Avoid doing so.  Lose reference binding code.
6137         (convert_like_real): Treat BASE_CONV and RVALUE_CONV as implicit
6138         direct-initialization.  Also do direct-init part of copy-init.
6139         (build_user_type_conversion): Don't provide context to convert_like.
6140         * cvt.c (ocp_convert): build_user_type_conversion will now provide
6141         the constructor call for copy-init.
6142
6143         * pt.c (tsubst_decl): Call clone_function_decl here if this is an
6144         instantiation of a member template.
6145         (do_decl_instantiation): Not here.
6146
6147 2000-12-07  Nathan Sidwell  <nathan@codesourcery.com>
6148
6149         * class.c (check_field_decls): Don't special case anonymous
6150         fields in error messages.
6151         (note_name_declared_in_class): Use %D on diagnostic.
6152
6153         * tree.c (pod_type_p): Use strip_array_types.
6154         (cp_valid_lang_attribute): Likewise.
6155         * typeck.c (cp_type_quals): Strip arrays separately, to avoid
6156         multiple evaluations.
6157         (cp_has_mutable_p): Use strip_array_types.
6158
6159 2000-12-07  Nathan Sidwell  <nathan@codesourcery.com>
6160
6161         * cp-tree.h (sufficient_parms_p): Declare new function.
6162         * call.c (sufficient_parms_p): New function, broken out of ...
6163         (add_function_candidate): ... here. Use it.
6164         (add_conv_candidate): Use it.
6165         * decl.c (grok_ctor_properties): Use it.
6166
6167 2000-12-07  Jakub Jelinek  <jakub@redhat.com>
6168
6169         * optimize.c (copy_body_r): Set STMT_IS_FULL_EXPR_P on EXPR_STMT.
6170
6171 2000-12-07  Joseph S. Myers  <jsm28@cam.ac.uk>
6172
6173         * decl2.c (lang_decode_option): Handle -Wformat-security.
6174
6175 2000-12-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6176
6177         * pt.c (verify_class_unification): New function.
6178         (get_class_bindings): Use it.
6179         (try_class_unification): Tidy.
6180         (unify): Handle when argument of a template-id is not
6181         template parameter dependent.
6182         (template_args_equal): Handle when TREE_CODE's do not match.
6183
6184 2000-12-06  Alexandre Oliva  <aoliva@redhat.com>
6185
6186         * lang-specs.h (c++): When invoking the stand-alone preprocessor
6187         for -save-temps, pass all relevant -Defines to it, and then don't
6188         pass them to cc1plus.
6189
6190 2000-12-05  Will Cohen  <wcohen@redhat.com>
6191
6192         * decl.c (finish_case_label): Cleared
6193         more_cleanups_ok in surrounding function scopes.
6194         (define_label): Likewise.
6195
6196 2000-12-05  Nathan Sidwell  <nathan@codesourcery.com>
6197
6198         * cp-tree.h (IDENTIFIER_VIRTUAL_P): Document.
6199         (get_matching_virtual): Remove.
6200         (look_for_overrides): Declare new function.
6201         * decl.c (grokfndecl): Don't set IDENTIFIER_VIRTUAL_P or
6202         DECL_VINDEX here.
6203         * class.c (check_for_override): Move base class iteration code
6204         to look_for_overrides.
6205         * search.c (next_baselink): Remove.
6206         (get_virtuals_named_this): Remove.
6207         (get_virtual_destructor): Remove.
6208         (tree_has_any_destructors_p): Remove.
6209         (struct gvnt_info): Remove.
6210         (check_final_overrider): Remove `virtual' from error messages.
6211         (get_matching_virtuals): Remove. Move functionality to ...
6212         (look_for_overrides): ... here, and ...
6213         (look_for_overrides_r): ... here. Set DECL_VIRTUAL_P, if found
6214         to be overriding.
6215
6216 2000-12-05  Nathan Sidwell  <nathan@codesourcery.com>
6217
6218         * typeck.c (get_delta_difference): If via a virtual base,
6219         return zero.
6220         * cvt.c (cp_convert_to_pointer): If via a virtual base, do no
6221         adjustment.
6222
6223 2000-12-04  Richard Henderson  <rth@redhat.com>
6224
6225         * error.c (dump_tree): Use output_add_string not OB_PUTS.
6226
6227 2000-12-04  Jason Merrill  <jason@redhat.com>
6228
6229         * mangle.c (write_type): Mangle VECTOR_TYPE with "U8__vector".
6230         (write_builtin_type): Pass intSI_type_node and the like through
6231         type_for_mode.
6232         * method.c (process_overload_item): Mangle VECTOR_TYPEs with 'o'.
6233         Pass intSI_type_node and the like through type_for_mode.
6234         * decl2.c (arg_assoc_type): Handle VECTOR_TYPE like COMPLEX_TYPE.
6235         * pt.c (tsubst, unify): Likewise.
6236         * tree.c (walk_tree): Likewise.
6237         * error.c (dump_type): Likewise.
6238         (dump_type_prefix, dump_type_suffix): Don't bother with VECTOR_TYPE.
6239
6240         * Make-lang.in: Tweak top comment for emacs.
6241         (cp/TAGS): Restore.
6242
6243         * except.c (expand_throw): Use push_throw_library_fn for _Jv_Throw.
6244
6245         * class.c (clone_function_decl): Robustify.
6246
6247 2000-12-04  Michael Matz  <matzmich@cs.tu-berlin.de>
6248
6249         * decl.c (store_bindings): Only search in the non modified
6250         old_bindings for duplicates.
6251
6252 2000-12-04  Nathan Sidwell  <nathan@codesourcery.com>
6253
6254         * error.c (dump_function_decl): Use DECL_VIRTUAL_P, not
6255         TYPE_POLYMORPHIC_P.
6256
6257         * typeck.c (build_static_cast): Remove unused variable.
6258
6259 2000-12-01  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
6260
6261         * pt.c: Fix typo in comment.
6262
6263 2000-12-01  Joseph S. Myers  <jsm28@cam.ac.uk>
6264
6265         * decl2.c (warn_format): Remove definition.
6266         (lang_decode_option): Handle -Wformat-nonliteral,
6267         -Wno-format-extra-args and -Wno-format-y2k.  Use set_Wformat.
6268
6269 2000-12-01  Joseph S. Myers  <jsm28@cam.ac.uk>
6270
6271         * decl.c (WINT_TYPE, INTMAX_TYPE, UINTMAX_TYPE): Don't define.
6272         (init_decl_processing): Don't create string_type_node,
6273         const_string_type_node, wint_type_node, intmax_type_node,
6274         uintmax_type_node, default_function_type, ptrdiff_type_node and
6275         unsigned_ptrdiff_type_node.  Adjust position of call to
6276         c_common_nodes_and_builtins.
6277         (identifier_global_value): New function.
6278
6279 2000-12-01  Nathan Sidwell  <nathan@codesourcery.com>
6280
6281         * call.c (standard_conversion): Reject pointer to member
6282         conversions from ambiguous, inaccessible or virtual bases.
6283         * typeck.c (build_static_cast): Don't check pointers to members
6284         specially.
6285
6286 2000-11-30  Nathan Sidwell  <nathan@codesourcery.com>
6287
6288         * method.c (do_build_copy_constructor): Preserve cv
6289         qualifications when accessing source object members.
6290         (do_build_assign_ref): Likewise. Remove separate diagnostics for
6291         unnamed fields.
6292
6293 2000-11-30  Nathan Sidwell  <nathan@codesourcery.com>
6294
6295         * method.c (do_build_assign_ref): Construct appropriately
6296         CV-qualified base reference. Don't allow const casts in base
6297         conversion.
6298
6299 2000-11-30  Nathan Sidwell  <nathan@codesourcery.com>
6300
6301         * call.c (build_over_call): Use VOID_TYPE_P. Don't die on
6302         incomplete return type.
6303
6304 2000-11-28  Nathan Sidwell  <nathan@codesourcery.com>
6305
6306         * parse.y (base_class.1): Produce a _TYPE not a _DECL.
6307         * semantics.c (finish_base_specifier): Accept a _TYPE not a
6308         _DECL.
6309
6310 2000-11-28  Nathan Sidwell  <nathan@codesourcery.com>
6311
6312         * spew.c (yyerror): Cope if yylval.ttype is NULL.
6313
6314 2000-11-28  Nathan Sidwell  <nathan@codesourcery.com>
6315
6316         * decl.c (grokdeclarator): Diagnose undefined template contexts.
6317
6318 2000-11-28  Nathan Sidwell  <nathan@codesourcery.com>
6319
6320         * decl.c (grokdeclarator): Do type access control on friend
6321         class.
6322
6323 2000-11-27  Nathan Sidwell  <nathan@codesourcery.com>
6324
6325         * decl.c (grokfndecl): Undo COMPONENT_REF damage caused by
6326         bison parser ickiness.
6327         * pt.c (tsubst_friend_function): Enter namespace scope when
6328         tsubsting the function name.
6329         * cp-tree.h (DECL_TI_TEMPLATE): Update comment to reflect reality.
6330
6331 2000-11-27  Nathan Sidwell  <nathan@codesourcery.com>
6332
6333         * cp-tree.h (binfo_from_vbase): Return the virtual base's binfo.
6334         * cvt.c (cp_convert_to_pointer): Add force parameter.
6335         Allow conversions via virtual base if forced.
6336         (convert_to_pointer_force): Adjust call to cp_convert_to_pointer.
6337         (ocp_convert): Likewise.
6338         * search.c (binfo_from_vbase): Return the virtual base's binfo.
6339         * typeck.c (get_delta_difference): Adjust handling of virtual
6340         bases.
6341
6342 2000-11-26  Mark Mitchell  <mark@codesourcery.com>
6343
6344         * tree.c (struct list_hash): Remove.
6345         (list_hash_table): Make it be an htab.
6346         (struct list_proxy): New type.
6347         (list_hash_eq): New function.
6348         (list_hash_pieces): Renamed from ...
6349         (list_hash): ... this.
6350         (list_hash_lookup): Remove.
6351         (list_hash_add): Remove.
6352         (hash_tree_cons): Use the generic hashtable.
6353         (mark_list_hash): Remove.
6354         (init_tree): Create the hashtable.
6355
6356 2000-11-25  Joseph S. Myers  <jsm28@cam.ac.uk>
6357
6358         * method.c (build_mangled_C9x_name): Rename to
6359         build_mangled_C99_name.  Change C9X references in comments to
6360         refer to C99.
6361
6362 2000-11-24  Nathan Sidwell  <nathan@codesourcery.com>
6363
6364         * parse.y (unary_expr): Move VA_ARG from here ...
6365         (primary): ... to here.
6366
6367 2000-11-24  Nathan Sidwell  <nathan@codesourcery.com>
6368
6369         * semantics.c (finish_id_expr): If type is error_mark, return
6370         error_mark.
6371
6372 2000-11-23  Nathan Sidwell  <nathan@codesourcery.com>
6373
6374         * pt.c (lookup_template_class): Simplify loop exit constructs.
6375         Cope when there is no partial instantiation of a template
6376         template member.
6377
6378 Thu Nov 23 02:16:47 2000  J"orn Rennecke <amylaar@redhat.com>
6379
6380         * Make-lang.in (g++spec.o, cxxmain.o): Depend on $(CONFIG_H).
6381
6382 2000-11-22  Mark Mitchell  <mark@codesourcery.com>
6383
6384         * mangle.c (mangle_conv_op_name_for_type): Don't use `__op'
6385         prefix.
6386
6387         * pt.c (do_decl_instantiate): Explicitly clone constructors and
6388         destructors that haven't already been cloned.
6389
6390 2000-11-20  Richard Henderson  <rth@redhat.com>
6391
6392         * parse.y (yyparse_1): Rename the parser entry point.
6393
6394 2000-11-20  Alex Samuel  <samuel@codesourcery.com>
6395
6396         * mangle.c (write_name): Use <unscoped-name> for names directly in
6397         function scope.
6398         (write_unscoped_name): Accept names directly in function scope.
6399
6400 2000-11-20  Nathan Sidwell  <nathan@codesourcery.com>
6401
6402         * lex.c (rid_to_yy, RID_EXPORT): Make unique keyword.
6403         * parse.y (extdef): Add EXPORT reduction.
6404         * spew.c (yylex): Don't skip export here.
6405
6406 2000-11-19  Mark Mitchell  <mark@codesourcery.com>
6407
6408         * decl.c (init_decl_processing): Correct name of pure virtual
6409         function under the new ABI.
6410         * rtti.c (throw_bad_cast): Likewise, for bad cast function.
6411         (throw_bad_typeid): Likewise for bad typeid function.
6412
6413 2000-11-18  Mark Mitchell  <mark@codesourcery.com>
6414
6415         * decl.c (grokparms): Don't even function types of `void' type,
6416         either.
6417         * mangle.c (write_type): Don't crash when confronted with the
6418         error_mark_node.
6419
6420         * decl.c (grokparms): Don't create parameters of `void' type.
6421
6422 2000-11-17  Zack Weinberg  <zack@wolery.stanford.edu>
6423
6424         * lex.c (mark_impl_file_chain): Delete.
6425         (init_parse): Remove call to ggc_add_string_root.  No need to
6426         ggc_strdup a string constant.  Do not add impl_file_chain to GC
6427         roots.
6428         (handle_pragma_implementation): No need to ggc_strdup main_filename.
6429
6430 2000-11-17  Nathan Sidwell  <nathan@codesourcery.com>
6431
6432         * pt.c (tsubst_expr, DECL_STMT): Instantiate decl's type.
6433
6434 2000-11-17  Nathan Sidwell  <nathan@codesourcery.com>
6435
6436         * cp-tree.h (PARMLIST_ELLIPSIS_P): New macro.
6437         * decl.c (grokdeclarator): Don't reject void parms here.
6438         (require_complete_types_for_parms): Simplify, use
6439         complete_type_or_else.
6440         (grokparms): Remove bitrot. Remove funcdef parm.
6441         Deal with ellipsis parm lists here.
6442         * semantics.c (finish_parmlist): Don't append void_list_node
6443         here. Set PARMLIST_ELLIPSIS_P.
6444
6445 2000-11-17  Nathan Sidwell  <nathan@codesourcery.com>
6446
6447         * typeck2.c (incomplete_type_error): Reorganise to avoid
6448         excessive diagnostics.
6449
6450 2000-11-16  Zack Weinberg  <zack@wolery.stanford.edu>
6451
6452         * lex.c (struct impl_files, internal_filename): Constify a char *.
6453
6454 2000-11-16  Mark Mitchell  <mark@codesourcery.com>
6455
6456         * mangle.c (write_special_name_constructor): Don't generate
6457         assembler junk when confronted with an old-style constructor.
6458         (write_special_name_destructor): Likewise.
6459         (mangle_decl_string): Do it here instead.
6460
6461 2000-11-16  Nathan Sidwell  <nathan@codesourcery.com>
6462
6463         * call.c (op_error): Make error messages clearer.
6464
6465 2000-11-15  Mark Mitchell  <mark@codesourcery.com>
6466
6467         * decl.c (wrapup_globals_for_namespace): Don't mark things
6468         TREE_ASM_WRITTEN when they're not.
6469
6470 2000-11-15  Jason Merrill  <jason@redhat.com>
6471
6472         * typeck2.c (friendly_abort): Uncount the error before handing
6473         off to fancy_abort.
6474
6475 2000-11-15  Nathan Sidwell  <nathan@codesourcery.com>
6476
6477         * typeck.c (lookup_anon_field): Cope with qv qualifiers.
6478
6479 2000-11-14  Mark Mitchell  <mark@codesourcery.com>
6480
6481         * class.c (build_vtbl_initializer): Fix typo in comment.
6482         * typeck.c (expr_sizeof): Don't crash on errors.
6483
6484 2000-11-14  Jim Wilson  <wilson@redhat.com>
6485
6486         * lang-specs.h: Add %2 after %(cc1_options).
6487
6488 2000-11-14  Richard Henderson  <rth@redhat.com>
6489
6490         * typeck.c (c_sizeof): Be strict about casting result value
6491         back to c_size_type_node.
6492         (expr_sizeof, c_sizeof_nowarn, c_alignof): Likewise.
6493
6494 2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>
6495
6496         * typeck.c (build_unary_op): Use boolean_increment from
6497         c-common.c, moving the relevant code there.
6498
6499 2000-11-11  Jason Merrill  <jason@redhat.com>
6500
6501         * typeck.c (mark_addressable): Don't call put_var_into_stack.
6502
6503         * decl.c (maybe_commonize_var): Set DECL_UNINLINABLE for statics
6504         in inlines.
6505
6506 2000-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6507
6508         * decl.c (grokdeclarator, save_function_data): Use memcpy, not bcopy.
6509         * lex.c (copy_lang_decl): Likewise.
6510
6511 2000-11-09  Mark Mitchell  <mark@codesourcery.com>
6512
6513         * dump.c (cp_dump_tree): Don't dump function bodies here.
6514
6515         * Make-lang.in (CXX_C_OBJS): Add c-dump.o.
6516         (dump.o): Update dependency list.
6517         * cp-tree.h (DECL_MAYBE_TEMPLATE): Remove.
6518         (flag_dump_translation_unit): Likewise.
6519         (CP_TYPE_QUALS): Adjust definition.
6520         (DECL_C_BIT_FIELD): Remove.
6521         (SET_DECL_C_BIT_FIELD): Likewise.
6522         (CLEAR_DECL_C_BIT_FIELD): Likewise.
6523         (add_maybe_template): Likewise.
6524         (strip_array_types): Likewise.
6525         (dump_node_to_file): Likewise.
6526         (cp_dump_tree): New function.
6527         * decl.c (init_decl_processing): Set lang_dump_tree.
6528         * decl2.c (flag_dump_translation_unit): Remove.
6529         * dump.c: Move most of it to ../c-dump.c.
6530         (cp_dump_tree): New function.
6531         * pt.c (add_maybe_template): Remove.
6532         * typeck.c (strip_array_types): Likewise.
6533
6534 2000-11-07  Eric Christopher  <echristo@redhat.com>
6535
6536         * decl.c (init_decl_processing): Change definition of
6537         __wchar_t to wchar_t.  Remove artificial declaration of
6538         wchar_t.
6539         * lex.c: Change instances of __wchar_t to wchar_t.
6540
6541 2000-11-09  Nathan Sidwell  <nathan@codesourcery.com>
6542
6543         * lex.c (do_identifier): Don't lookup_name for operators.
6544         * parse.y (operator): Save looking_for_typename.
6545         (unoperator): Restore it.
6546         * spew.c (frob_opname): Use nth_token for lookahead.
6547
6548 2000-11-08  Nathan Sidwell  <nathan@codesourcery.com>
6549
6550         * decl.c (grok_op_properties): Always use coerce_new_type and
6551         coerce_delete_type.
6552         * decl2.c (coerce_new_type): Use c_size_type_node. Preserve
6553         exception specification. Tidy up.
6554         (coerce_delete_type): Preserve exception specification. Tidy up.
6555
6556 2000-11-07  Joseph S. Myers  <jsm28@cam.ac.uk>
6557
6558         * class.c (duplicate_tag_error, build_vtbl_initializer), decl.c
6559         (push_binding_level), error.c (cp_tree_printer), pt.c
6560         (process_partial_specialization, tsubst_template_arg_vector),
6561         search.c (lookup_member): Use memset () instead of bzero ().
6562
6563 2000-11-07  Nathan Sidwell  <nathan@codesourcery.com>
6564
6565         * decl.c (build_ptrmemfunc_type): Allow error_mark_node.
6566
6567 2000-11-05  Joseph S. Myers  <jsm28@cam.ac.uk>
6568
6569         * Make-lang.in (c++.distdir): Remove.
6570
6571 2000-11-04  Mark Mitchell  <mark@codesourcery.com>
6572
6573         * decl2.c (do_nonmember_using_decl): Allow `extern "C"'
6574         declarations from different namespaces to be combined.
6575
6576 2000-11-03  Zack Weinberg  <zack@wolery.stanford.edu>
6577
6578         * decl.c: Include tm_p.h.
6579
6580 2000-11-03  Joseph S. Myers  <jsm28@cam.ac.uk>
6581
6582         * tree.c (cp_tree_equal): Use memcmp () instead of bcmp ().
6583
6584 2000-11-02  Joseph S. Myers  <jsm28@cam.ac.uk>
6585
6586         * dump.c (dequeue_and_dump), lex.c (interface_strcmp), method.c
6587         (build_overload_value), repo.c (open_repo_file), xref.c
6588         (open_xref_file): Use strchr () and strrchr () instead of index ()
6589         and rindex ().
6590
6591 2000-11-01  Bernd Schmidt  <bernds@redhat.co.uk>
6592
6593         * call.c (build_over_call): Call fold on the CALL_EXPR.
6594
6595 2000-11-01  Gabriel Dos Reis  <gdr@codesourcery.com>
6596
6597         * error.c (dump_template_decl): Separate template hearders with
6598         space not comma.
6599
6600 2000-10-31  Gabriel Dos Reis  <gdr@codesourcery.com>
6601
6602         * error.c: Move TFF_ macros into cp-tree.h.  Throughout, replace
6603         TS_* flags with corresponding TFF_*.  Adjust prototypes of
6604         functions (which used to take a tree_string_flags) to take an int.
6605
6606         * cp-tree.h (enum tree_string_flags): Remove
6607         (TFF_PLAIN_IDENTIFIER, TFF_NAMESPACE_SCOPE, TFF_CLASS_SCOPE,
6608         TFF_CHASE_NAMESPACE_ALIAS, TFF_CHASE_TYPEDEF, TFF_DECL_SPECIFIERS,
6609         TFF_CLASS_KEY_OR_ENUM, TFF_RETURN_TYPE,
6610         TFF_FUNCTION_DEFAULT_ARGUMENTS, TFF_EXCEPTION_SPECIFICATION,
6611         TFF_TEMPLATE_HEADER, TFF_TEMPLATE_DEFAULT_ARGUMENTS,
6612         TFF_TEMPLATE_NAME, TFF_EXPR_IN_PARENS, TFF_SCOPE): New macros.
6613         (type_as_string, decl_as_string, expr_as_string,
6614         context_as_string): Adjust prototype.
6615
6616         * class.c (dump_class_hierarchy_r): Use TFF_PLAIN_IDENTIFIER
6617         instead of TS_PLAIN.
6618
6619         * pt.c (mangle_class_name_for_template): Use TFF_CHASE_TYPEDEF
6620         instead of TF_CHASE_TYPEDEFS. Use TFF_PLAIN_IDENTIFIER instead of
6621         plain `0'.
6622
6623 2000-10-30  Mark Mitchell  <mark@codesourcery.com>
6624
6625         * cp-tree.h (DECL_EXTERNAL_LINKAGE_P): New macro.
6626         (linkage_kind): New enumeration.
6627         (decl_linkage): New function.
6628         * decl2.c (comdat_linkage): Extend comment.
6629         * error.c (dump_function_decl): Print the arguments used to
6630         instantiate a template, even when not printing the type of the
6631         function.
6632         * pt.c (convert_nontype_argument): Use DECL_EXTERNAL_LINKAGE_P,
6633         not TREE_PUBLIC, to test for external linkage.
6634         * tree.c (decl_linkage): New function.
6635
6636 2000-10-28  Mark Mitchell  <mark@codesourcery.com>
6637
6638         * pt.c (instantiate_decl): Always instantiate static data members
6639         initialized in-class.
6640
6641 2000-10-27  Zack Weinberg  <zack@wolery.stanford.edu>
6642
6643         * Make-lang.in: Move all build rules here from Makefile.in,
6644         adapt to new context.  Wrap all rules that change the current
6645         directory in parentheses.  Expunge all references to $(P).
6646         When one command depends on another and they're run all at
6647         once, use && to separate them, not ;.  Add OUTPUT_OPTION to
6648         all object-file generation rules.  Delete obsolete variables.
6649
6650         * Makefile.in: Delete.
6651         * config-lang.in: Delete outputs= line.
6652
6653 2000-10-26  Gabriel Dos Reis  <gdr@codesourcery.com>
6654
6655         * error.c (dump_function_decl): Print no space between
6656         `ptr-operator' the `type-specifier' of the return type.
6657         (dump_type_prefix): Make sure we put space at the appropriate
6658         place.
6659
6660 2000-10-23  Jason Merrill  <jason@redhat.com>
6661
6662         * call.c (equal_functions): Also call decls_match for extern "C" fns.
6663
6664 2000-10-22  Jason Merrill  <jason@redhat.com>
6665
6666         * call.c (build_conditional_expr): Use ocp_convert to force
6667         rvalue conversion.
6668
6669 2000-10-22  Mark Mitchell  <mark@codesourcery.com>
6670
6671         * call.c (standard_conversion): Use RVALUE_CONVs for all
6672         expressions that satisfy lvalue_p, not just those that satisfy
6673         real_lvalue_p.
6674
6675         * optimize.c (copy_body_r): Don't treat CALL_EXPRs specially.
6676
6677         * typeck.c (c_sizeof): Return an expression of `size_t' type,
6678         not one with TYPE_IS_SIZETYPE set.
6679         (dubious_conversion_warnings): Remove special-case code.
6680
6681 2000-10-21  Geoffrey Keating  <geoffk@cygnus.com>
6682
6683         * decl2.c (arg_assoc_type): Handle VECTOR_TYPE.
6684         * error.c (dump_type): Handle VECTOR_TYPE like POINTER_TYPE.
6685         (dump_type_prefix): Print vector-of-int as 'int vector'.
6686         (dump_type_suffix): Handle VECTOR_TYPE like POINTER_TYPE.
6687         * tree.c (walk_tree): Handle VECTOR_TYPE.
6688
6689         * decl.c (init_decl_processing): Call MD_INIT_BUILTINS.
6690
6691 2000-10-21  Jason Merrill  <jason@redhat.com>
6692
6693         * parse.y (operator): Set got_object from got_scope.
6694         Set looking_for_typename.
6695         * decl.c (lookup_name_real): Clear val after setting from_obj.
6696         Reorganize diagnostic.
6697
6698 2000-10-20  Jason Merrill  <jason@redhat.com>
6699
6700         * tree.c (walk_tree): Don't walk into default args.
6701
6702         * error.c (dump_expr): Use host_integerp.
6703
6704 2000-10-20  David Edelsohn  <edelsohn@gnu.org>
6705
6706         * typeck2.c (abstract_virtuals_error): Use "because" instead of
6707         "since" in error message.
6708
6709 Fri Oct 20 13:54:59 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
6710
6711         * typeck.c (dubious_conversion_warning): Suppress if TYPE_IS_SIZETYPE.
6712
6713 2000-10-20  Jeffrey Oldham  <oldham@codesourcery.com>
6714
6715         * decl.c (revert_static_member_fn): Fixed typo.
6716
6717 2000-10-19  Mark Mitchell  <mark@codesourcery.com>
6718
6719         * class.c (subobject_offset_fn): New type.
6720         (dfs_record_base_offsets): Remove.
6721         (record_base_offsets): Likewise.
6722         (dfs_search_base_offsets): Likewise.
6723         (record_subobject_offset): New function.
6724         (check_subobject_offset): Likewise.
6725         (walk_subobject_offsets): Likewise.
6726         (record_subobject_offsets): Likewise.
6727         (layout_conflict_p): Reimplement.
6728         (layout_nonempty_base_or_field): Correct handling of type
6729         conflicts during layout.
6730         (layout_empty_base): Likewise.
6731         (build_base_field): Adjust to handle new representation of empty
6732         base offset table.
6733         (build_base_fields): Likewise.
6734         (layout_virtual_bases): Likewise.
6735         (splay_tree_compare_integer_csts): New function.
6736         (layout_class_type): Use a splay_tree, rather than a varray, to
6737         represent the offsets of empty bases.
6738
6739         * cp-tree.h (DECL_ANTICIPATED): Don't require a FUNCTION_DECL.
6740         * decl.c (select_decl): Don't return declarations that are
6741         DECL_ANTICIPATED.
6742
6743 2000-10-18  Mark Mitchell  <mark@codesourcery.com>
6744
6745         * cp-tree.h (cp_tree_index): Add CPTI_FAKE_STD.
6746         (fake_std_node): New macro.
6747         * decl.c (in_std): Rename to ...
6748         (in_fake_std): ... this.
6749         (flag_no_builtin): Remove.
6750         (flag_no_nonansi_builtin): Likewise.
6751         (walk_namespaces_r): Use fake_std_node.
6752         (push_namespace): Use std_identifier.
6753         (pop_namespace): Use in_fake_std.
6754         (lookup_name_real): Use fake_std_node.
6755         (init_decl_processing): When -fhonor-std, create the `std'
6756         namespace.  Don't create a dummy fake_std_node in that case.
6757         Adjust call to c_common_nodes_and_builtins.  Use std_identifier.
6758         (builtin_function): Put builtins whose names don't begin
6759         with `_' in the std namespace.
6760         * decl2.c (flag_no_builtin): Remove.
6761         (flag_no_nonansi_builtin): Likewise.
6762         (set_decl_namespace): Use fake_std_node.
6763         (validate_nonmember_using_decl): Likewise.
6764         (do_using_directive): Likewise.
6765         (handle_class_head): Likewise.
6766         * dump.c (dequeue_and_dump): Likewise.
6767         * except.c (init_exception_processing): Use std_identifier.
6768         * init.c (build_member_call): Use fake_std_node.
6769         * rtti.c (init_rtti_processing): Use std_identifier.
6770
6771 2000-10-17  Mark Mitchell  <mark@codesourcery.com>
6772
6773         * cp-tree.h (back_end_hook): Remove declaration.
6774         * decl2.c (back_end_hook): Remove definition.
6775
6776         * dump.c (dequeue_and_dump): Dump TREE_USED.
6777
6778 Tue Oct 17 20:19:06 2000  Brad Lucier <lucier@math.purdue.edu>
6779
6780         * spew.c (snarf_defarg): Cast 2nd arg to obstack_blank to (int).
6781
6782 2000-10-17  Joseph S. Myers  <jsm28@cam.ac.uk>
6783
6784         * decl.c (WINT_TYPE): Define.
6785         (init_decl_processing): Create types unsigned_ptrdiff_type_node,
6786         c_size_type_node, signed_size_type_node and wint_type_node.
6787
6788 2000-10-17  Joseph S. Myers  <jsm28@cam.ac.uk>
6789
6790         * decl2.c (warn_missing_format_attribute): New variable.
6791         (lang_decode_option): Decode -Wmissing-format-attribute.
6792
6793 2000-10-16  Mark Mitchell  <mark@codesourcery.com>
6794
6795         * typeck.c (qualify_type): Remove.
6796         (composite_pointer_type): Fix handling of conversions to `cv void*'.
6797
6798 2000-10-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6799
6800         * Makefile.in (parse.c, parse.h): Fix think-o in last patch.
6801
6802 2000-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6803
6804         * Makefile.in (parse.c, parse.h): Create atomically.
6805
6806 2000-10-12  Mark Mitchell  <mark@codesourcery.com>
6807
6808         * class.c (current_obstack): Remove.
6809         * decl.c (ggc_p): Remove.
6810         (start_decl): Don't use decl_tree_cons.
6811         (grokdeclarator): Don't use build_decl_list.
6812         (start_function): Don't use decl_tree_cons.
6813         (finish_function): Don't mess with obstacks.
6814         * decl2.c (grok_x_components): Don't use build_decl_list.
6815         * lex.c (make_call_declarator): Don't call decl_tree_cons.
6816         (implicitly_declare_fn): Don't call build_decl_list.
6817         * parse.y (frob_specs): Don't call build_decl_list or
6818         decl_tree_cons.
6819         (expr_or_declarator_intern): Don't call decl_tree_cons.
6820         (primary): Don't call build_decl_list.
6821         (fcast_or_absdcl): Likewise.
6822         (typed_declspecs): Don't call decl_tree_cons.
6823         (reserved_declspecs): Don't call build_decl_list.
6824         (declmods): Likewise.
6825         (reserved_typespecquals): Likewise.
6826         (aggr): Likewise.
6827         (new_type_id): Likewise.
6828         (cv_qualifiers): Likewise.
6829         (after_type_declarator_intern): Likewise.
6830         (notype_declarator_intern): Likewise.
6831         (absdcl_intern): Likewise.
6832         (named_parm): Likewise.
6833         * pt.c (most_specialized_class): Likewise.
6834         * repo.c (temporary_obstack): Make it a structure, not a pointer.
6835         (init_repo): Initialize it.
6836         * search.c (current_obstack): Remove.
6837         * typeck2.c (add_exception_specifier): Don't call build_decl_list.
6838
6839 2000-10-09  Richard Henderson  <rth@cygnus.com>
6840
6841         * Make-lang.in (CXX_EXTRA_HEADERS): Remove.
6842         (c++ language support bits for libgcc): Remove.
6843         (c++.clean): Remove cplib2.txt cleanup.
6844         * config-lang.in (headers, lib2funcs): Remove.
6845
6846         * exception.cc, new.cc, new1.cc, new2.cc: Remove files.
6847         * tinfo.cc, tinfo.h, tinfo2.cc, vec.cc: Remove files.
6848         * inc/cxxabi.h, inc/exception, inc/new: Remove files.
6849         * inc/new.h, inc/typeinfo: Remove files.
6850
6851 2000-10-08  Joseph S. Myers  <jsm28@cam.ac.uk>
6852
6853         * decl.c (INTMAX_TYPE, UINTMAX_TYPE): Define if not already
6854         defined.
6855         (init_decl_processing): Initialize intmax_type_node and
6856         uintmax_type_node.
6857
6858 2000-10-06  Richard Henderson  <rth@cygnus.com>
6859
6860         * cp-tree.h (struct cp_language_function): Remove x_result_rtx.
6861         (original_result_rtx): Remove.
6862         * decl.c (save_function_data): Don't clear x_result_rtx.
6863         (mark_lang_function): Don't mark it either.
6864         * expr.c (fixup_result_decl): Remove.
6865         * semantics.c (genrtl_named_return_value): Frob the return decl
6866         before calling emit_local_var.
6867         (genrtl_finish_function): Don't call fixup_result_decl.
6868         Always emit the jump to return_label.
6869
6870 2000-10-06  Nathan Sidwell  <nathan@codesourcery.com>
6871
6872         * pt.c (lookup_template_class): Set current access for enum.
6873         (tsubst_enum): Set file & line for enum decl.
6874
6875         * spew.c (yylex): Remove unused variable.
6876
6877 2000-10-05  Richard Henderson  <rth@cygnus.com>
6878
6879         * semantics.c (genrtl_finish_function): Don't init or check
6880         can_reach_end; remove noreturn and return value checks.
6881
6882 2000-10-05  Tom Tromey  <tromey@cygnus.com>
6883
6884         * init.c (build_java_class_ref): Use `build_static_name' with a
6885         suffix, not a prefix, to build the class object's name.
6886
6887 2000-10-05  Nathan Sidwell  <nathan@codesourcery.com>
6888
6889         * cp-tree.h (access_kind): Fix comment typo.
6890         * decl2.c (grokfield): Fix diagnostic typo.
6891         * semantics.c (finish_template_type): Fix comment typo.
6892         (finish_qualified_object_call_expr): Likewise.
6893
6894 2000-10-05  Nathan Sidwell  <nathan@codesourcery.com>
6895
6896         * pt.c (tsubst_expr, DECL_STMT case): Don't process if
6897         tsubsting fails.
6898
6899 2000-10-05  Nathan Sidwell  <nathan@codesourcery.com>
6900
6901         * spew.c (frob_id): New static function.
6902         (frob_opname): Use it.
6903         (yylex): Use it.
6904
6905 2000-10-01  Mark Mitchell  <mark@codesourcery.com>
6906
6907         * decl.c (lang_mark_false_label_stack): Remove.
6908         * lex.c (cp_mang_lang_type): Use ggc_alloc_cleared.
6909
6910 2000-09-30  Joseph S. Myers  <jsm28@cam.ac.uk>
6911
6912         * gxxint.texi: Use @email for formatting email addresses.
6913
6914 2000-09-29  Gabriel Dos Reis  <gdr@codesourcery.com>
6915
6916         * error.c: Remove direct obstack manipulation.  Replace with
6917         output_buffer-based formatting.  Adjust calls to removed macros.
6918         (obstack_chunk_alloc, obstack_chunk_free): Remove.
6919         (OB_INIT, OB_PUTC, OB_PUTC2, OB_PUTS, OB_PUTID, OB_PUTCP,
6920         OB_FINISH, OB_PUTI, OB_END_TEMPLATE): Likewise.
6921
6922 2000-09-24  Mark Mitchell  <mark@codesourcery.com>
6923
6924         * ir.texi: Move to ../c-tree.texi.
6925
6926 2000-09-20  Jason Merrill  <jason@redhat.com>
6927
6928         * decl2.c (get_guard): Check DECL_FUNCTION_SCOPE_P.
6929
6930 2000-09-21  Andreas Jaeger  <aj@suse.de>
6931
6932         * errfn.c: Move declaration of cp_printer and cp_printers to ...
6933         * cp-tree.h: ... here.
6934
6935         * error.c: Remove declaration of cp_printer.
6936
6937 2000-09-20  Mark Mitchell  <mark@codesourcery.com>
6938
6939         * tree.c (mark_local_for_remap_r): Handle CASE_LABELs.
6940
6941 2000-09-20  Hans-Peter Nilsson  <hp@axis.com>
6942
6943         * except.c: Delete #if 0:d EXCEPTION_SECTION_ASM_OP-default and
6944         users.
6945
6946 2000-09-18  Mark Mitchell  <mark@codesourcery.com>
6947
6948         * decl.c (start_function): Robustify.
6949
6950 2000-09-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6951
6952         * cp-tree.h (check_function_format): Accept a `status' parameter.
6953
6954         * call.c, typeck.c: Updates calls to `check_function_format'.
6955
6956 2000-09-17  Geoffrey Keating  <geoffk@cygnus.com>
6957
6958         * decl2.c (handle_class_head): Always push some scope even
6959         in the error case.
6960
6961 2000-09-16  Mark Mitchell  <mark@codesourcery.com>
6962
6963         * cp-tree.h (struct cp_language_function): Remove
6964         x_scope_stmt_stack and name_declared.
6965         (current_scope_stmt_stack): Remove.
6966         (function_name_declared_p): New macro.
6967         (struct lang_decl_flags): Use c_lang_decl as a base class.
6968         (context): Remove.
6969         (struct lang_decl): Replace saved_tree with context.
6970         (DECL_FRIEND_CONTEXT): Adjust accordingly.
6971         (SET_DECL_FRIEND_CONTEXT): Likewise.
6972         (DECL_VIRTUAL_CONTEXT): Likewise.
6973         (DECL_SAVED_TREE): Remove.
6974         (C_DECLARED_LABEL_FLAG): Likewise.
6975         (cplus_expand_expr_stmt): Don't declare.
6976         (add_decl_stmt): Likewise.
6977         (add_scope_stmt): Likewise.
6978         * decl.c (mark_stmt_tree): Remove.
6979         (case_compare): Likewise.
6980         (finish_case_label): Use c_add_case_label.
6981         (init_decl_processing): Set more language-specific hooks.
6982         (build_enumerator): Fix typo in comment.
6983         (cplus_expand_expr_stmt): Remove.
6984         (mark_lang_function): Use mark_c_language_function.
6985         (lang_mark_tree): Use c_mark_lang_decl.
6986         * decl2.c: Change order of inclusion.
6987         * except.c: Likewise.
6988         * expr.c (cplus_expand_expr): Remove handling of STMT_EXPR.  Fall
6989         back on c_expand_expr.
6990         * friend.c: Include expr.h.
6991         * init.c: Change order of inclusion.
6992         * Makefile.in: Update dependencies.
6993         * lex.h (free_lang_decl_chain): Remove.
6994         * optimize.c (maybe_clone_body): Use function_name_declared_p.
6995         * pt.c (build_template_decl): Don't copy DECL_VIRTUAL_CONTEXT if
6996         it doesn't exist.
6997         (instantiate_decl): Use function_name_declared_p.
6998         * semantics.c (lang_expand_expr_stmt): Remove.
6999         (set_current_function_name_declared): Likewise.
7000         (current_function_name_declared): Likewise.
7001         (begin_compound_stmt): Use function_name_declared_p.
7002         (add_decl_stmt): Remove.
7003         (setup_vtbl_ptr): Use function_name_declared_p.
7004         (add_scope_stmt): Remove.
7005         (current_scope_stmt_stack): New function.
7006         (cp_expand_stmt): Don't handle SCOPE_STMTs.
7007         (expand_body): Use function_name_declared_p.
7008         * tree.c (cp_statement_code_p): Don't include SCOPE_STMT.
7009         * typeck.c: Change order of includes.
7010         (convert_sequence): Remove.
7011
7012 2000-09-14  Joseph S. Myers  <jsm28@cam.ac.uk>
7013
7014         * lex.c (reswords): Add _Complex.
7015
7016 Thu Sep 14 12:10:45 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7017
7018         * Make-lang.in (cplib2.txt): Depend on cp/Makefile.
7019
7020 2000-09-13  J. David Anglin  <dave@hiauly1.hia.nrc.ca>
7021
7022         * init.c (begin_init_stmts): Don't use // comments.
7023
7024 2000-09-12  Jason Merrill  <jason@redhat.com>
7025
7026         * decl.c (maybe_deduce_size_from_array_init): Set do_default for
7027         all non-extern arrays.
7028
7029         * decl.c (grokdeclarator): Complain about 'friend T' for implicit
7030         typenames, too.  Downgrade complaint to pedwarn.
7031         (xref_tag): Warn about surprising behavior of 'friend struct T'.
7032         * decl2.c (handle_class_head): Generate a TYPENAME_TYPE for
7033         'class This::Inherited'.
7034
7035 2000-09-12  Mark Mitchell  <mark@codesourcery.com>
7036
7037         * decl.c (finish_case_label): Given the LABEL_DECL a
7038         DECL_CONTEXT.
7039
7040 2000-09-12  Gabriel Dos Reis  <gdr@codesourcery.com>
7041
7042         * error.c (TFF_PLAIN_IDENTIFIER, TFF_NAMESPACE_SCOPE,
7043         TFF_CLASS_SCOPE, TFF_CHASE_NAMESPACE_ALIAS, TFF_CHASE_TYPDEF,
7044         TFF_DECL_SPECIFIERS, TFF_CLASS_KEY_OR_ENUM, TFF_RETURN_TYPE,
7045         TFF_FUNCTION_DEFAULT_ARGUMENTS, TFF_EXCEPTION_SPECIFICATION,
7046         TFF_TEMPLATE_HEADER, TFF_TEMPLATE_DEFAULT_ARGUMENTS, TFF_SCOPE):
7047         New macros.
7048         (sorry_for_unsupported_tree, print_scope_operator,
7049         print_left_paren, print_right_paren, print_left_bracket,
7050         print_right_bracket, print_whitespace): Likewise.
7051         (aggr_variety): Rename to class_key_or_enum.
7052         (print_type): Rename to print_type_id.
7053         (print_type_specifier_seq, print_simple_type_specifier,
7054         print_elaborated_type_specifier,
7055         print_rest_of_abstract_declarator,
7056         print_parameter_declaration_clause, print_exception_specification,
7057         print_nested_name_specifier, print_template_id,
7058         typedef_original_name,  print_template_argument_list_start,
7059         print_template_argument_list_end): New functions.
7060
7061 2000-09-11  Gabriel Dos Reis  <gdr@codesourcery.com>
7062
7063         * ir.texi: Add more documentation.
7064
7065 2000-09-11  Mark Mitchell  <mark@codesourcery.com>
7066
7067         * cp-tree.h (struct saved_scope): Remove x_function_parms.
7068         (current_function_parms): Don't define.
7069         (struct cp_language_function): Remove parms_stored.
7070         (current_function_just_assigned_this): Don't define.
7071         (current_function_parms_stored): Likewise.
7072         (static_ctors): Declare.
7073         (static_dtors): Likewise.
7074         (SF_EXPAND): Don't define.
7075         (expand_start_early_try_stmts): Remove declaration.
7076         (store_parm_decls): Likewise.
7077         * decl.c (static_ctors): Don't declare.
7078         (static_dtors): Likewise.
7079         (struct binding_level): Remove this_block.
7080         (poplevel): Remove dead code.
7081         (set_block): Likewise.
7082         (mark_binding_level): Don't mark this_block.
7083         (mark_saved_scope): Don't mark x_function_parms.
7084         (init_decl_processing): Don't add current_function_parms as a GC
7085         root.
7086         (check_function_type): Change prototype.
7087         (start_function): Remove RTL-generation code.
7088         (expand_start_early_try_stmts): Remove.
7089         (store_parm_decls): Give it internal linkage.  Remove
7090         RTL-generation code.
7091         (finish_function): Remove RTL-generation code.
7092         * decl2.c (static_ctors): Fix formatting.
7093         (static_dtors): Likewise.
7094         * method.c (use_thunk): Don't call store_parm_decls.
7095         (synthesize_method): Likewise.
7096         * optimize.c (maybe_clone_body): Likewise.
7097         * parse.y (fn.def2): Likewise.
7098         (.set_base_init): Likewise.
7099         (nodecls): Likewise.
7100         * pt.c (instantiate_decl): Likewise.
7101         * rtti.c (synthesize_tinfo_fn): Likewise.
7102         * semantics.c (genrtl_try_block): Simplify.
7103         (expand_body): Use genrtl_start_function and
7104         genrtl_finish_function.
7105         (genrtl_start_function): New function.
7106         (genrtl_finish_function): Likewise.
7107
7108 2000-09-11  Nathan Sidwell  <nathan@codesourcery.com>
7109
7110         * error.c (cp_tree_printer, case 'P'): Append break.
7111
7112 2000-09-11  Nathan Sidwell  <nathan@codesourcery.com>
7113
7114         * cp-tree.h (frob_opname): Declare.
7115         * parse.y (saved_scopes): New static variable.
7116         (cp_parse_init): Adjust.
7117         (do_id): If lastiddecl is NULL, do do_identifier.
7118         (operator): Save scope information.
7119         (unoperator): New reduction. Restore scope information.
7120         (operator_name): Append unoperator. Call frob_opname.
7121         * spew.c (frob_opname): Define.
7122
7123 2000-09-10  Zack Weinberg  <zack@wolery.cumb.org>
7124
7125         * decl.c, rtti.c: Include defaults.h if not already included.
7126         Don't define the *_TYPE_SIZE macros.
7127
7128 2000-09-09  Mark Mitchell  <mark@codesourcery.com>
7129
7130         * cp-tree.h (push_switch): Change prototype.
7131         (check_cp_case_value): Remove declaration.
7132         (decl_constant_value): Likewise.
7133         * decl.c (struct cp_switch): Add switch_stmt and cases.
7134         (case_compare): New function.
7135         (push_switch): Set switch_stmt.  Initialize cases.
7136         (pop_switch): Clean up cases.
7137         (define_case_label): Rename to ...
7138         (finish_case_label): ... this.  Do semantic analysis for case
7139         labels here.
7140         (start_function): Correct comment.
7141         * decl2.c (check_cp_case_value): Remove.
7142         * expr.c (do_case): Remove.
7143         * pt.c (tsubst_expr): Adjust call to finish_case_label.
7144         * semantics.c (genrtl_do_poplevel): Remove declaration.
7145         (RECHAIN_STMTS): Remove.
7146         (finish_break_stmt): Use build_break_stmt.
7147         (finish_continue_stmt): Use build_continue_stmt.
7148         (finish_switch_cond): Adjust condition here, rater than in
7149         c_expand_start_case.
7150         (finish_case_label): Remove.
7151         * typeck.c (c_expand_return): Remove.
7152         (c_expand_start_case): Likewise.
7153
7154 2000-09-07  Gabriel Dos Reis  <gdr@codesourcery.com>
7155
7156         * ir.texi: Document type nodes.
7157
7158 2000-09-06  Mark Mitchell  <mark@codesourcery.com>
7159
7160         * cp-tree.h (init_cp_semantics): Declare.
7161         (genrtl_try_block): Don't declare.
7162         (genrtl_handler): Likewise.
7163         (genrtl_catch_block): Likewise.
7164         (genrtl_ctor_stmt): Likewise.
7165         (genrtl_subobject): Likewise.
7166         (genrtl_do_poplevel): Likewise.
7167         (genrtl_named_return_value): Likewise.
7168         * lex.c (init_parse): Call init_cp_semantics.
7169         * semantics.c (genrtl_try_block): Give it internal linkage.
7170         (genrtl_handler): Likewise.
7171         (genrtl_catch_block): Likewise.
7172         (genrtl_ctor_stmt): Likewise.
7173         (genrtl_subobject): Likewise.
7174         (genrtl_do_poplevel): Likewise.
7175         (genrtl_named_return_value): Likewise.
7176         (lang_expand_stmt): Rename to ...
7177         (cp_expand_stmt): ... this.  Only handle C++-specific nodes.
7178         (init_cp_semantics): Define.
7179
7180         * decl.c (initialize_local_var): Remove RTL-generating code.
7181         * semantics.c (genrtl_try_block): Fix formatting.
7182
7183         Move statement-tree facilities from C++ to C front-end.
7184         * cp-tree.h (cp_tree_index): Remove CPTI_VOID_ZERO.
7185         (void_zero_node): Remove.
7186         (stmt_tree): Likewise.
7187         (scope_chain): Adjust.
7188         (language_function): Rename to cp_language_function.
7189         (cp_function_chain): Adjust.
7190         (current_stmt_tree): Remove.
7191         (last_tree): Likewise.
7192         (last_expr_type): Likewise.
7193         (struct lang_decl): Adjust.
7194         (STMT_IS_FULL_EXPR_P): Remove.
7195         (add_tree): Remove.
7196         (begin_stmt_tree): Likewise.
7197         (finish_stmt_tree): Likewise.
7198         (walk_tree_fn): Likewise.
7199         (walk_stmt_tree): Likewise.
7200         * class.c (finish_struct): Replace use of add_tree with add_stmt.
7201         * decl.c (mark_stmt_tree): Adjust type.
7202         (init_decl_processing): Don't build void_zero_node.
7203         (initialize_local_var): Adjust usage of current_stmt_tree.
7204         (finish_enum): Use add_stmt, not add_tree.
7205         (save_function_data): Adjust use of language_function.
7206         (finish_constructor_body): Use add_stmt, not add_tree.
7207         (finish_destructor_body): Likewise.
7208         (push_cp_function_context): Adjust use of language_function.
7209         (pop_cp_function_context): Likewise.
7210         (mark_lang_function): Likewise.
7211         (mark_cp_function_context): Likewise.
7212         * init.c (build_aggr_init): Adjust use of current_stmt_tree.
7213         (build_vec_init): Likewise.
7214         * semantics.c (SET_LAST_STMT): Remove.
7215         (RECHAIN_STMTS): Don't use it.
7216         (stmts_are_full_exprs_p): Adjust use of current_stmt_tree.
7217         (current_stmt_tree): Define.
7218         (add_tree): Remove.
7219         (finish_goto_stmt): Use add_stmt, not add_tree.
7220         (finish_expr_stmt): Likewise.
7221         (begin_if_stmt): Likewise.
7222         (finish_then_clause): Likewise.
7223         (begin_while_stmt): Likewise.
7224         (begin_do_stmt): Likewise.
7225         (finish_return_stmt): Likewise.
7226         (begin_for_stmt): Likewise.
7227         (finish_break_stmt): Likewise.
7228         (finish_continue_stmt): Likewise.
7229         (begin_switch_stmt): Likewise.
7230         (finish_case_label): Likewise.
7231         (begin_try_block): Likewise.
7232         (begin_function_try_block): Likewise.
7233         (begin_handler): Likewise.
7234         (begin_catch_block): Likewise.
7235         (begin_compound_stmt): Likewise.
7236         (begin_asm_stmt): Likewise.
7237         (finish_asm_stmt): Likewise.
7238         (finish_label_stmt): Likewise.
7239         (add_decl_stmt): Likewise.
7240         (finish_subobject): Likewise.
7241         (finish_decl_cleanup): Likewise.
7242         (finish_named_return_value): Likewise.
7243         (setup_vtbl_ptr): Likewise.
7244         (add_scope_stmt): Likewise.
7245         (finish_stmt_expr): Likewise.
7246         (prune_unused_decls): Remove.
7247         (begin_stmt_tree): Likewise.
7248         (finish_stmt_tree): Likewise.
7249         (prep_stmt): Adjust use of current_stmt_tree.
7250         (lang_expand_stmt): Likewise.
7251         * tree.c (statement_code_p): Remove.
7252         (cp_statement_code_p): New function.
7253         (walk_stmt_tree): Remove.
7254         (init_tree): Set lang_statement_code_p.
7255
7256 2000-09-06  Zack Weinberg  <zack@wolery.cumb.org>
7257
7258         Integrated preprocessor.
7259
7260         * Make-lang.in, Makefile.in: Remove all references to input.c,
7261         gxx.gperf, and hash.h.  Add ../c-lex.o to C_OBJS.
7262         * gxx.gperf, hash.h, input.c: Delete.
7263         * lang-specs.h: Pass -lang-c++ to cc1plus so cpplib is
7264         initialized properly.
7265
7266         * class.c (fixup_pending_inline): Take a tree, not a
7267         struct pending_inline *.  All callers changed.
7268         (init_class_processing): Set RID_PUBLIC, RID_PRIVATE,
7269         RID_PROTECTED entries in ridpointers[] array here.
7270         * decl.c (duplicate_decls): Do not refer to struct
7271         pending_inline.
7272         (record_builtin_type, init_decl_processing): Use RID_MAX not
7273         CP_RID_MAX.
7274         (grokdeclarator): Use C_IS_RESERVED_WORD.
7275         * decl2.c (lang_decode_option): Ignore -lang-c++ for sake of
7276         cpplib.
7277         (grok_x_components): Do not inspect pending_inlines chain.
7278
7279         * cp-tree.h (struct lang_identifier): Add rid_code entry.
7280         (C_IS_RESERVED_WORD, C_RID_CODE, C_RID_YYCODE): New.
7281         (flag_no_gnu_keywords, flag_operator_names, rid_to_yy): Declare.
7282         (DEFARG_LENGTH, struct pending_inline, TIME_IDENTIFIER_TIME,
7283         TIME_IDENTIFIER_FILEINFO): Kill.
7284         Update prototypes.
7285         * lex.h: Expunge cp_rid.  Rewrite RIDBIT macros to use just a
7286         single 32-bit word.
7287         * parse.y: Call do_pending_inlines unconditionally.
7288         reinit_parse_for_method is now snarf_method.  fn.defpen is no
7289         longer necessary.  Remove unnecessary <itype> annotation on
7290         SCOPE.  Do not refer to end_of_file or struct pending_inline.
7291         * semantics.c (begin_inline_definitions): Call
7292         do_pending_inlines unconditionally.
7293
7294         * lex.c: Remove all code now shared with C front end.
7295         Initialize cpplib properly if USE_CPPLIB.  Put reserved words
7296         into the get_identifier table.  Rewrite pragma handling to
7297         work with the registry.  Move code to save tokens for later
7298         processing to spew.c.
7299
7300         * spew.c: Rewrite everything in terms of token streams instead
7301         of text.  Move routines here from lex.c / input.c as
7302         appropriate.  GC-mark trees hanging off the pending inlines
7303         chain.
7304
7305 2000-09-06  Mark Mitchell  <mark@codesourcery.com>
7306
7307         * NEWS: Mention that the named return value extension has been
7308         deprecated.
7309         * cp-tree.h (original_result_rtx): Define.
7310         (TREE_REFERENCE_EXPR): Remove.
7311         (DECL_VPARENT): Likewise.
7312         (pushdecl_nonclass_level): Likewise.
7313         (store_return_init): Likewise.
7314         (reinit_lang_specific): Likewise.
7315         (genrtl_named_return_value): Change prototype.
7316         * decl.c (original_result_rtx): Remove.
7317         (cp_finish_decl): Don't build DECL_STMTs for RESULT_DECLs.
7318         Do not generate RTL for local variables here.
7319         (store_return_init): Remove.
7320         * semantics.c (genrtl_named_return_value): Simplify.  Fold in
7321         store_return_init.
7322         (finish_named_return_value): Adjust accordingly.  Warn that this
7323         extension is deprecated.
7324         (lang_expand_stmt): Adjust call to genrtl_named_return_value.
7325
7326 2000-09-06  Nathan Sidwell  <nathan@codesourcery.com>
7327
7328         * pt.c (type_unification_real): Replace switch with if.
7329         (unify): Tsubst non-type parms before comparing.
7330
7331 2000-09-06  Nathan Sidwell  <nathan@codesourcery.com>
7332
7333         * error.c (dump_typename): New function, broken out of ...
7334         (dump_type): ... here. Use it.
7335         * typeck.c (same_type_p): Use cp_tree_equal for TYPENAME_TYPE.
7336
7337 2000-09-06  Nathan Sidwell  <nathan@codesourcery.com>
7338
7339         * init.c (build_offset_ref): Deal with namespace scoped
7340         TEMPLATE_ID_EXPRs.
7341
7342 2000-09-06  Nathan Sidwell  <nathan@codesourcery.com>
7343
7344         * class.c (resolve_address_of_overloaded_function): Add
7345         explanation message.
7346         * decl.c (define_case_label): Reformat explanation.
7347         * decl2.c (finish_static_data_member_decl): Likewise.
7348         (grokfield): Likewise.
7349         * friend.c (do_friend): Likewise.
7350
7351 2000-09-05  Zack Weinberg  <zack@wolery.cumb.org>
7352
7353         * tree.c (walk_tree): Expose tail recursion.
7354         (walk_stmt_tree): New function.
7355         * cp-tree.h: Prototype walk_stmt_tree.
7356         * semantics.c (prune_unused_decls): Operate on SCOPE_STMTs not
7357         the BLOCKs directly.  If a BLOCK has no variables after
7358         pruning, discard it.
7359         (finish_stmt_tree): Use walk_stmt_tree.  No need to save and
7360         restore the line number.
7361
7362 2000-09-05  Mark Mitchell  <mark@codesourcery.com>
7363
7364         * Makefile.in (CXX_TREE_H): Add dependency on HTAB_H.
7365         (pt.o): Remove dependency on HTAB_H.
7366         * cp-tree.h: Include hashtab.h.
7367         (walk_tree): Change prototype.
7368         (walk_tree_without_duplicates): New function.
7369         * decl.c (check_default_argument): Use it.
7370         * optimize.c (remap_decl): Adjust calls to walk_tree.
7371         (copy_body): Likewise.
7372         (expand_calls_inline): Likewise.
7373         (calls_setjmp_p): Use walk_tree_without_duplicates.
7374         * pt.c: Don't include hashtab.h.
7375         (for_each_template_parm): Use walk_tree_without_duplicates.
7376         * semantics.c (finish-stmt_tree): Likewise.
7377         (expand_body): Likewise.
7378         * tree.c (walk_tree): Add additional parameter.
7379         (walk_tree_without_duplicates): New function.
7380         (count_trees): Use it.
7381         (verify_stmt_tree): Adjust call to walk_tree.
7382         (find_tree): Use walk_tree_without_duplicates.
7383         (no_linkage_check): Likewise.
7384         (break_out_target_exprs): Adjust call to walk_tree.
7385         (cp_unsave): Likewise.
7386
7387 2000-09-04  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
7388
7389         * cp-tree.def (BOUND_TEMPLATE_TEMPLATE_PARM): New tree code.
7390         (TEMPLATE_TEMPLATE_PARM): Adjust comment.
7391         * cp-tree.h (TYPE_BINFO): Adjust comment.
7392         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Likewise.
7393         (TEMPLATE_TYPE_PARM_INDEX): Likewise.
7394         (IS_AGGR_TYPE): Use BOUND_TEMPLATE_TEMPLATE_PARM instead.
7395         (TYPE_TEMPLATE_INFO): Likewise.
7396         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): Likewise.
7397         * class.c (push_nested_class): Likewise.
7398         * decl.c (lookup_name_real): Likewise.
7399         (grokdeclarator): Likewise.
7400         (grok_op_properties): Likewise.
7401         (xref_tag): Likewise.
7402         (xref_basetypes): Likewise.
7403         * decl2.c (constructor_name_full): Likewise.
7404         (arg_assoc_template_arg): Add TEMPLATE_TEMPLATE_PARM case.
7405         (arg_assoc_type): Use BOUND_TEMPLATE_TEMPLATE_PARM instead.
7406         * error.c (dump_type): Split TEMPLATE_TEMPLATE_PARM case.
7407         (dump_type_prefix): Add BOUND_TEMPLATE_TEMPLATE_PARM.
7408         (dump_type_suffix): Likewise.
7409         * init.c (is_aggr_type): Use BOUND_TEMPLATE_TEMPLATE_PARM
7410         instead.
7411         (get_aggr_from_typedef): Likewise.
7412         * mangle.c (write_type): Split TEMPLATE_TEMPLATE_PARM case.
7413         (write_expression): Add BOUND_TEMPLATE_TEMPLATE_PARM.
7414         (write_template_parm): Likewise.
7415         (write_template_template_parm): Check tree code instead of
7416         using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
7417         * method.c (build_overload_nested_name): Add
7418         BOUND_TEMPLATE_TEMPLATE_PARM.
7419         (process_overload_item): Split TEMPLATE_TEMPLATE_PARM case.
7420         * parse.y (bad_parm): Add BOUND_TEMPLATE_TEMPLATE_PARM.
7421         * pt.c (convert_template_argument): Check tree code instead of
7422         using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
7423         (for_each_template_parm_r): Split TEMPLATE_TEMPLATE_PARM case.
7424         (for_each_template_parm): Adjust comment.
7425         (tsubst): Add BOUND_TEMPLATE_TEMPLATE_PARM.  Reorganize.
7426         (tsubst_copy): Add BOUND_TEMPLATE_TEMPLATE_PARM.
7427         (unify): Add BOUND_TEMPLATE_TEMPLATE_PARM.  Reorganize.  Use
7428         template_args_equal to compare template template parameter cases.
7429         * ptree.c (print_lang_type): Add BOUND_TEMPLATE_TEMPLATE_PARM.
7430         * search.c (lookup_field_1): Use BOUND_TEMPLATE_TEMPLATE_PARM
7431         instead.
7432         * tree.c (copy_template_template_parm): Decide whether to create
7433         a TEMPLATE_TEMPLATE_PARM or BOUND_TEMPLATE_TEMPLATE_PARM node.
7434         (walk_tree): Add BOUND_TEMPLATE_TEMPLATE_PARM.
7435         (copy_tree_r): Likewise.
7436         * typeck.c (comptypes): Likewise.  Check tree code instead of
7437         using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
7438
7439 2000-09-04  Mark Elbrecht  <snowball3@bigfoot.com>
7440
7441         * decl.c (finish_function): Move the code for handling functions
7442         marked with the constructor and destructor attributes inside the
7443         expand_p block.
7444
7445 2000-09-04  Nathan Sidwell  <nathan@codesourcery.com>
7446
7447         * init.c (resolve_offset_ref): Deal with TEMPLATE_ID_EXPR.
7448
7449 2000-09-04  Nathan Sidwell  <nathan@codesourcery.com>
7450
7451         * pt.c (lookup_template_class): Remove abort.
7452         * tree.c (get_type_decl): Allow error_mark_node.
7453
7454 2000-09-04  Nathan Sidwell  <nathan@codesourcery.com>
7455
7456         * decl2.c (arg_assoc): Deal with COMPONENT_REFs inside
7457         TEMPLATE_ID_EXPRs.
7458
7459 2000-09-03  Mark Mitchell  <mark@codesourcery.com>
7460
7461         * operators.def (ALIGNOF_EXPR, MAX_EXPR, MIN_EXPR): Change
7462         new ABI mangling.
7463
7464 2000-09-01  Nathan Sidwell  <nathan@codesourcery.com>
7465
7466         * parse.y (named_class_head): Check for TYPENAME_TYPE. Simplify
7467         union tag mismatch error reporting.
7468
7469 2000-09-01  Nathan Sidwell  <nathan@codesourcery.com>
7470
7471         * call.c (build_scoped_method_call): Check it is not a namespace.
7472
7473 2000-08-30  Jason Merrill  <jason@redhat.com>
7474
7475         * cp-tree.h (LOCAL_CLASS_P): Use decl_function_context.
7476
7477         * tree.c (bot_manip): Check TREE_CONSTANT rather than
7478         !TREE_SIDE_EFFECTS.  Call break_out_target_exprs and
7479         build_target_expr_with_type for the non-AGGR_INIT_EXPR case.
7480
7481         * decl.c (start_function): Always call make_function_rtl.
7482
7483 2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>
7484
7485         * semantics.c (prune_unused_decls): New function.
7486         (finish_stmt_tree): Call it via walk_tree.
7487
7488 2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>
7489
7490         * class.c (build_secondary_vtable): Constify a char *.
7491         * decl.c (init_decl_processing): Initialize function_id_node,
7492         pretty_function_id_node, and func_id_node.
7493         * input.c (struct input_source): Constify 'str'.
7494         (feed_input): Constify first argument.
7495         * mangle.c (write_identifier): Constify argument.
7496         * pt.c (mangle_class_name_for_template): Constify argument.
7497
7498 2000-08-29  Mark Mitchell  <mark@codesourcery.com>
7499
7500         * typeck.c (mark_addressable): Remove code that pokes around in
7501         RTL.
7502
7503 2000-08-28  Jason Merrill  <jason@redhat.com>
7504
7505         * lex.c (file_name_nondirectory): Move to toplev.c.
7506
7507         * cp-tree.h (LOCAL_CLASS_P): New macro.
7508         * class.c (finish_struct_1): Use it.
7509
7510 2000-08-27  Alex Samuel  <samuel@codesourcery.com>
7511
7512         * mangle.c (CLASSTYPE_TEMPLATE_ID_P): Remove unexplained voodoo.
7513         (write_encoding): Pass another argument to write_name.
7514         (write_name): Add ignore_local_scope parameter.  Fix handling of
7515         local names.
7516         (write_nested_name): Use write_unqualified_name.
7517         (write_prefix): Likewise.  Skip out on FUNCTION_DECLs.
7518         (write_template_prefix): Use write_unqualified_name.
7519         (write_component): Remove.
7520         (write_local_name): Add parameter.  Use direct local entity to
7521         discriminator calculation.
7522         (write_class_enum_type): Pass another argument to write_name.
7523         (write_template_template_arg): Likewise.
7524         (make_guard_variable): Likewise.
7525
7526 2000-08-27  Jason Merrill  <jason@redhat.com>
7527
7528         * decl.c (pushdecl): Matching decls for local externs are found in
7529         the current level.  Propagate linkage information from previous
7530         declarations.
7531
7532 2000-08-26  Gabriel Dos Reis  <gdr@codesourcery.com>
7533
7534         * ir.texi (Expressions): Fix typo.
7535
7536 2000-08-25  Greg McGary  <greg@mcgary.org>
7537
7538         * tree.c (init_tree): Use ARRAY_SIZE.
7539
7540 2000-08-25  Gabriel Dos Reis  <gdr@codesourcery.com>
7541
7542         * error.c (cp_tree_printer): Rework.
7543
7544 2000-08-25  Mark Mitchell  <mark@codesourcery.com>
7545
7546         * Make-lang.in (CXX_LIB2FUNCS): Remove cp-demangle.o and
7547         dyn-string.o.
7548         (CXX_LIB2SRCS): Remove cp-demangle.c and dyn-string.c.
7549         (cp-demangle.o): Remove target.
7550         (dyn-string.o): Likewise.
7551
7552         * decl.c (grokfndecl): Require that `main' return an `int'.
7553         * mangle.c (write_encoding): Don't mangle return types for
7554         conversion functions.
7555
7556 2000-08-25  Gabriel Dos Reis  <gdr@codesourcery.com>
7557
7558         * error.c (tree_formatting_info): New data type.
7559         (tree_being_formatted): New macro.
7560         (tree_formatting_flags): Likewise.
7561         (put_whitespace): Likewise.
7562         (print_tree_identifier): Likewise.
7563         (print_identifier): Likewise.
7564         (cp_tree_printer, print_function_argument_list, print_declaration,
7565         print_expression, print_function_declaration,
7566         print_function_parameter, print_type, print_cv_qualifier): New
7567         functions.
7568         (init_error): Initialize lang_printer.
7569
7570 2000-08-24  Jason Merrill  <jason@redhat.com>
7571
7572         * typeck.c (build_ptrmemfunc): Just reinterpret if there's no
7573         adjustment necessary.
7574
7575 2000-08-24  Greg McGary  <greg@mcgary.org>
7576
7577         * cp-tree.h (MAIN_NAME_P): Remove macro.
7578
7579 2000-08-24  Gabriel Dos Reis  <gdr@codesourcery.com>
7580
7581         * error.c (print_instantiation_context): Don't forget to flush the
7582         buffer.
7583
7584 2000-08-23  Jason Merrill  <jason@redhat.com>
7585
7586         * typeck.c (build_ptrmemfunc): Save the input pmf.
7587
7588         * method.c (process_modifiers): Use same_type_p.
7589
7590 2000-08-23  Mark Mitchell  <mark@codesourcery.com>
7591
7592         * cp-tree.h (DECL_CLONED_FUNCTION_P): Check DECL_LANG_SPECIFIC.
7593         * mangle.c (write_function_type): Change prototype.
7594         (write_encoding): Don't mangle return types for
7595         constructors or destructors.
7596         (write_type): Adjust call to write_function_type.
7597         * pt.c (instantiate_template): Instantiate alternate entry points
7598         when instantiating the main function.
7599
7600 2000-08-23  Gabriel Dos Reis  <gdr@codesourcery.com>
7601
7602         * error.c (cp_print_error_function): Don't use embedded '\n' in
7603         output_printf.
7604
7605 2000-08-23  Gabriel Dos Reis  <gdr@codesourcery.com>
7606
7607         * decl.c (init_decl_processing): Remove bogus initialization.
7608         * error.c (lang_print_error_function): Restore here.
7609         (init_error): Initialize print_error_function.
7610
7611 2000-08-22  Theodore Papadopoulo  <Theodore.Papadopoulo@sophia.inria.fr>
7612
7613         * decl2.c (arg_assoc): Revert my 2000-08-11 change.
7614
7615 2000-08-22  Gabriel Dos Reis  <gdr@codesourcery.com>
7616
7617         * Makefile.in (error.o): Depends on diagnostic.h
7618
7619         * cp-tree.h (problematic_instantiation_changed,
7620         record_last_problematic_instantiation, current_instantiation,
7621         print_instantiation_context): Declare.
7622         (maybe_print_template_context): Remove.
7623
7624         * decl.c (init_decl_processing): Set print_error_function to NULL.
7625         (lang_print_error_function): Remove, since we're using a new
7626         machinery.
7627
7628         * error.c: #include diagnostic.h
7629         (function_category): New function.
7630         (cp_diagnostic_starter): Likewise.
7631         (cp_diagnostic_finalizer): Likewise.
7632         (cp_print_error_function): Likewise.
7633         (maybe_print_instantiation_context): Likewise.
7634         (print_instantiation_full_context): Likewise.
7635         (print_instantiation_partial_context): Likewise.
7636         (print_instantiation_context): Define.
7637         (init_error): Initialize diagnostic pager and finalizer.
7638
7639         * pt.c (problematic_instantiation_changed): Define.
7640         (record_last_problematic_instantiation): Likewise.
7641         (current_instantiation): Likewise.
7642         (maybe_print_template_context): Remove.
7643         (print_template_context): Likewise.
7644         (current_tinst_level): Make static to reflect Brendan Kehoe's
7645         change of 1995-04-13.
7646         (push_tinst_level): Call print_instantiation_context.
7647
7648 2000-08-21  Nix  <nix@esperi.demon.co.uk>
7649
7650         * lang-specs.h: Do not process -o or run the assembler if
7651         -fsyntax-only.
7652
7653 2000-08-21  Joseph S. Myers  <jsm28@cam.ac.uk>
7654
7655         * decl.c (flag_hosted, flag_noniso_default_format_attributes): New
7656         variables.
7657         * decl2.c (lang_decode_option): Disable gettext attributes for
7658         -ansi.
7659
7660 2000-08-21  Gabriel Dos Reis  <gdr@codesourcery.com>
7661
7662         * lex.c (lang_init_options): Default diagnostic message maximum
7663         length to 80, when line-wrapping.
7664
7665 2000-08-20  Mark Mitchell  <mark@codesourcery.com>
7666
7667         * class.c (build_vtbl_initializer): Clear the entire
7668         vtbl_init_data.  Start keeping track of the functions for which we
7669         have created vcall offsets here.
7670         (dfs_build_vcall_offset_vtbl_entries): Remove.
7671         (build_vcall_offset_vtbl_entries): Reimplement.
7672         (add_vcall_offset_vtbl_entries_r): New function.
7673         (add_vcall_offset_vtbl_entries_1): Likewise.  Tweak logic for
7674         computing when vcall offsets are necessary.
7675
7676 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
7677
7678         * decl.c (member_function_or_else): Use cp_error ... %T.
7679         (grokdeclarator): Likewise.
7680         (start_method): Likewise.
7681         * friend.c (make_friend_class): Use cp_pedwarn ... %T.
7682
7683 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
7684
7685         * decl2.c (grokfield): Set CLASSTYPE_GOT_SEMICOLON on class
7686         TYPE_DECLs.
7687
7688 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
7689
7690         * cp-tree.h (PTRMEM_OK_P): New macro.
7691         (itf_ptrmem_ok): New enumeration value.
7692         * class.c (resolve_address_of_overloaded_function): Add PTRMEM
7693         argument. Diagnose implicit pointer to member.
7694         (instantiate_type): Don't diagnose implicit pointer to member
7695         here. Pass itf_ptrmem_ok if ok. Adjust calls to
7696         resolve_address_of_overloaded_function.
7697         * init.c (build_offset_ref): Set PTRMEM_OK_P.
7698         (resolve_offset_ref): Don't diagnose implicit pointer to member here.
7699         * semantics.c (finish_parenthesized_expr): Clear OFFSET_REFs here.
7700         * typeck.c (build_x_unary_op): Calculate PTRMEM_OK_P.
7701         (build_unary_op): Deal with single non-static member in
7702         microsoft-land.
7703
7704 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
7705
7706         * decl2.c (arg_assoc_type): Cope with TYPENAME_TYPE.
7707
7708 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
7709
7710         * cp-tree.h (enum_name_string): Remove prototype.
7711         (report_case_error): Remove prototype.
7712         * cp/typeck2.c (enum_name_string): Remove.
7713         (report_case_error): Remove.
7714         * error.c (dump_expr): Deal with enum values directly.
7715         Correctly negate integer constant.
7716
7717 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
7718
7719         * inc/cxxabi.h (__cxa_vec_new2, __cxa_vec_new3): Declare.
7720         (__cxa_vec_delete2, __cxa_vec_delete3): Declare.
7721         * vec.cc (__cxa_vec_new2, __cxa_vec_new3): Implement.
7722         (__cxa_vec_delete2, __cxa_vec_delete3): Implement.
7723         (__cxa_vec_new): Use __cxa_vec_new2.
7724         (__cxa_vec_delete): Use __cxa_vec_delete2.
7725
7726 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
7727
7728         * vec.cc (__cxa_vec_new): Set "C" linkage.
7729         (__cxa_vec_ctor): Likewise.
7730         (__cxa_vec_cctor): Likewise.
7731         (__cxa_vec_dtor): Likewise.
7732         (__cxa_vec_delete): Likewise.
7733         * inc/cxxabi.h (__cxa_vec_new): Set "C" linkage.
7734         (__cxa_vec_ctor): Likewise.
7735         (__cxa_vec_cctor): Likewise.
7736         (__cxa_vec_dtor): Likewise.
7737         (__cxa_vec_delete): Likewise.
7738
7739 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
7740
7741         * class.c (instantiate_type): Reinstate local variable
7742         deleted in previous change.
7743
7744         * cvt.c (cp_convert_to_pointer): Pass itf_complain, not
7745         itf_no_attributes.
7746
7747 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
7748
7749         * cp-tree.h (instantiate_type_flags): New enumeration.
7750         (instantiate_type): Change parameter.
7751         * class.c (instantiate_type): Adjust prototype. Adjust.
7752         * call.c (standard_conversion): Adjust instantiate_type call.
7753         (reference_binding): Likewise.
7754         (build_op_delete_call): Likewise.
7755         (convert_like_real): Likewise.
7756         * cvt.c (cp_convert_to_pointer): Likewise.
7757         (convert_to_reference): Likewise.
7758         * pt.c (convert_nontype_argument): Likewise.
7759         * typeck.c (build_binary_op): Likewise.
7760         (build_ptrmemfunc): Likewise.
7761         (convert_for_assignment): Likewise.
7762
7763 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
7764
7765         * cp-tree.h (CPTR_AGGR_TAG): New global tree node.
7766         (current_aggr): Define.
7767         * decl.c (grokdeclarator): Make sure a friend class is an
7768         elaborated type specifier.
7769         * parse.y (current_aggr): Remove static definition.
7770         (cp_parse_init): Adjust.
7771         (structsp): Clear and restore current_aggr.
7772         (component_decl_list): Clear current_aggr.
7773
7774         * error.c (dump_type, case TYPENAME_TYPE): Don't emit the
7775         aggregate tag on the typename's context.
7776
7777         * pt.c (tsubst_friend_class): Return error_mark_node, if
7778         parms becomes NULL.
7779         (instantiate_class_template): Ignore error_mark_node friend types.
7780
7781 2000-08-14  Nathan Sidwell  <nathan@codesourcery.com>
7782
7783         * cvt.c (warn_ref_binding): New static function, broken out of ...
7784         (convert_to_reference): ... here. Use it.
7785
7786 2000-08-11  Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
7787
7788         * parse.y (template_arg): Add rule for template qualified with
7789         global scope.
7790
7791 2000-08-11  Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
7792
7793         * decl2.c (add_function): Reorganize.
7794         (arg_assoc): Do not consider function template decls.
7795
7796 2000-08-11  Jason Merrill  <jason@redhat.com>
7797
7798         * decl.c (lookup_name_real): Don't forget the TYPENAME_TYPE we're
7799         looking inside.
7800
7801 2000-08-11  Nathan Sidwell  <nathan@codesourcery.com>
7802
7803         * cp-tree.h (resolve_scope_to_name): Remove unused prototype.
7804         (lookup_nested_tag): Likewise.
7805
7806         * decl2.c (grokfield): Fix comment to reflect many types of _DECLs
7807         can be produced.
7808
7809 2000-08-11  Nathan Sidwell  <nathan@codesourcery.com>
7810
7811         * parse.y (named_complex_class_head_sans_basetype): Remove
7812         always true if.
7813
7814 2000-08-11  Nathan Sidwell  <nathan@codesourcery.com>
7815
7816         * decl2.c (build_expr_from_tree, case METHOD_CALL_EXPR): Build
7817         explicit TEMPLATE_ID_EXPR args.
7818         (build_expr_from_tree, case CALL_EXPR): Likewise.
7819
7820 2000-08-11  Nathan Sidwell  <nathan@codesourcery.com>
7821
7822         * decl.c (check_tag_decl): Diagnose typename's which don't
7823         declare anything.
7824
7825 2000-08-10  Nathan Sidwell  <nathan@codesourcery.com>
7826
7827         * init.c (build_aggr_init): Reject bogus array initializers
7828         early.
7829
7830 2000-08-09  Nathan Sidwell  <nathan@codesourcery.com>
7831
7832         * rtti.c (build_dynamic_cast_1): Set "C" linkage for new abi
7833         runtime.
7834         * cp/tinfo.cc (__dynamic_cast): Likewise.
7835         * cp/inc/cxxabi.h (__dynamic_cast): Likewise.
7836
7837 2000-08-09  Nathan Sidwell  <nathan@codesourcery.com>
7838
7839         * cvt.c (convert_to_pointer_force): Fix error message when
7840         attempting to cast from ambiguous base.
7841
7842 2000-08-08  Jason Merrill  <jason@redhat.com>
7843
7844         * pt.c (tsubst_aggr_type): Bail if creating the argvec fails.
7845         (tsubst_template_arg_vector): Likewise.
7846
7847         * decl2.c (build_anon_union_vars): Choose the largest field; don't
7848         assume that one will be as large as the union.
7849
7850 2000-08-07  Kazu Hirata  <kazu@hxi.com>
7851
7852         * cp-tree.h (CLASSTYPE_HAS_PRIMARY_BASE_P): Fix a comment typo.
7853         * decl.c (pop_labels): Likewise.
7854
7855 2000-08-04  Jeffrey Oldham  <oldham@codesourcery.com>
7856
7857         * inc/cxxabi.h (__pbase_type_info): Changed member names to match
7858         specifications.
7859         (__pointer_to_member_type_info): Likewise.
7860         (__base_class_info): Likewise.
7861         (__class_type_info): Likewise.
7862         (__si_class_type_info): Likewise.
7863         (__vmi_class_type_info): Likewise.
7864         * tinfo.cc (__si_class_type_info::__do_find_public_src):
7865         Changed member names to match specifications.
7866         (__vmi_class_type_info::__do_find_public_src): Likewise.
7867         (__si_class_type_info::__do_dyncast): Likewise.
7868         (__vmi_class_type_info::__do_dyncast): Likewise.
7869         (__si_class_type_info::__do_upcast): Likewise.
7870         (__vmi_class_type_info::__do_upcast): Likewise.
7871         * tinfo2.cc (__pbase_type_info::__do_catch): Likewise.
7872         (__pbase_type_info::__pointer_catch): Likewise.
7873         (__pointer_type_info::__pointer_catch): Likewise.
7874         (__pointer_to_member_type_info::__pointer_catch): Likewise.
7875
7876 2000-08-04  Zack Weinberg  <zack@wolery.cumb.org>
7877
7878         * Make-lang.in (cc1plus): Depend on $(BACKEND), not stamp-objlist.
7879         * Makefile.in: Add C_OBJS, BACKEND; delete OBJS, OBJDEPS.
7880         (cc1plus): Link with $(BACKEND) and $(C_OBJS).
7881
7882 2000-08-04  Mark Mitchell  <mark@codesourcery.com>
7883
7884         * cp-tree.h (add_method): Change prototype.
7885         * class.c (add_method): Remove FIELDS parameter.  Add ERROR_P.
7886         Don't double the size of the method vector in the error case.
7887         (handle_using_decl): Adjust call to add_method.
7888         (add_implicitly_declared_members): Likewise.
7889         (clone_function_decl): Likewise.
7890         * decl2.c (check_classfn): Likewise.
7891         * semantics.c (finish_member_declaration): Likewise.
7892
7893 2000-08-04  Joseph S. Myers  <jsm28@cam.ac.uk>
7894
7895         * decl.c (flag_isoc94): New variable.
7896
7897 2000-08-02  Jason Merrill  <jason@redhat.com>
7898
7899         * pt.c (do_type_instantiation): Add complain parm; don't complain
7900         if called recursively.
7901         * cp-tree.h, parse.y: Adjust.
7902
7903 2000-08-02  Zack Weinberg  <zack@wolery.cumb.org>
7904
7905         * decl2.c: Silently ignore -Wstrict-prototypes; warn about
7906         -Wno-strict-prototypes.
7907
7908         * g++spec.c: Adjust type of second argument to
7909         lang_specific_driver, and update code as necessary.
7910
7911         * cp-tree.h: Don't prototype min_precision here.
7912         (my_friendly_assert): Cast expression to void.
7913         * semantics.c (do_poplevel): Initialize scope_stmts.
7914
7915 2000-08-02  Mark Mitchell  <mark@codesourcery.com>
7916
7917         * cp-tree.h (DECL_NEEDED_P): Tweak.
7918
7919 2000-07-28  Jason Merrill  <jason@redhat.com>
7920
7921         * lang-specs.h: Use %i in rule for .ii files.
7922
7923 2000-07-31  Zack Weinberg  <zack@wolery.cumb.org>
7924
7925         * lang-specs.h: Rename cpp to cpp0 and/or tradcpp to tradcpp0.
7926
7927 2000-07-30  Mark Mitchell  <mark@codesourcery.com>
7928
7929         Allow indirect primary bases.
7930         * cp-tree.h (struct lang_type): Remove vfield_parent.  Add
7931         primary_base.
7932         (CLASSTYPE_VFIELD_PARENT): Remove.
7933         (CLASSTYPE_PRIMARY_BINFO): Reimplement.
7934         (BINFO_PRIMARY_BINFO): Remove.
7935         (CLASSTYPE_HAS_PRIMARY_BASE_P): Reimplement.
7936         (BINFO_VBASE_PRIMARY_P): Likewise.
7937         (BINFO_PRIMARY_BASE_OF): New macro.
7938         (BINFO_INDIRECT_PRIMARY_P): Likewise.
7939         (get_primary_binfo): New function.
7940         * decl.c (lang_mark_tree): Make lang_type::primary_base.
7941         * class.c (vcall_offset_data_s): Rename to ...
7942         (vtbl_init_data_s): ... this.  Rename primary_p to primary_vtbl_p,
7943         and add ctor_vtbl_p.
7944         (get_derived_offset): Use get_primary_binfo.
7945         (dfs_mark_primary_bases): Adjust handling of virtual primary
7946         bases.
7947         (mark_primary_bases): Likewise.
7948         (set_primary_base): Take a binfo, not an integer, as a
7949         representation of the primary base.
7950         (indirect_primary_base_p): Remove.
7951         (determine_primary_base): Adjust for indirect primary bases.
7952         (dfs_find_final_overrider): Fix typo in coment.
7953         (update_vtable_entry_for_fn): Use get_primary_binfo.
7954         (layout_nonempty_base_or_field): Tweak.
7955         (build_base_fields): Adjust for new primary base semantics.
7956         (dfs_propagate_binfo_offsets): Remove.
7957         (propagate_binfo_offsets): Rewrite.
7958         (dfs_set_offset_for_shared_vbases): Remove.
7959         (layout_virtual_bases): Don't use it.
7960         (layout_class_type): Set CLASSTYPE_SIZE correctly under the new
7961         ABI.
7962         (finish_struct_1): Set CLASSTYPE_PRIMARY_BINFO, not
7963         CLASSTYPE_VFIELD_PARENT.
7964         (dfs_get_primary_binfo): New function.
7965         (get_primary_binfo): Likewise.
7966         (dump_class_hierarchy_r): Tweak printing of primary bases.
7967         (build_vtbl_initializer): Fix typo in comments.  Use
7968         vtbl_init_data.
7969         (build_vcall_and_vbase_vtbl_entries): Likewise.
7970         (build_vbaes_offset_vtbl_entries): Likewise.
7971         (dfs_build_vcall_offset_vtbl_entries): Adjust setting of
7972         BV_VCALL_INDEX to handle indirect primary bases.
7973         (build_vcall_offset_vtbl_entries): Use vtbl_init_data.
7974         (build_rtti_vtbl_entries): Likewise.
7975         * search.c (get_shared_vbase_if_not_primary): Tweak.
7976         (find_vbase_instance): Likewise.
7977         (binfo_for_vtable): Simplify.
7978         * tree.c (unshare_base_binfos): Clear BINFO_PRIMARY_BASE_OF.
7979         (make_binfo): Make it have 11 entries.
7980
7981 2000-07-30  Alex Samuel  <samuel@codesourcery.com>
7982
7983         * mangle.c (DECL_TEMPLATE_ID_P): Remove.
7984         (CLASSTYEP_TEMPLATE_ID_P): Check template info, and context when
7985         ascertaining primaryness.
7986         (G): Remove template_args.
7987         (decl_is_template_id): New function.
7988         (write_encoding): Use decl_is_template_id.
7989         (write_name): Likewise.  Handle type_decls.  Get main variant of
7990         type decls.
7991         (write_nested_name): Likewise.
7992         (write_prefix): Likewise.
7993         (write_template_prefix): Likewise.
7994         (write_special_name_constructor): Remove defunct production from
7995         comment.
7996         (write_bare_function_type): Remove comment about absent parameter.
7997         (write_template_template_arg): Add missing grammar production to
7998         comment.
7999
8000 2000-07-27  Jason Merrill  <jason@redhat.com>
8001
8002         * decl.c (duplicate_decls): If common_type produces a non-typedef
8003         type for a typedef, just use the old type.
8004
8005 2000-07-27  Mark Mitchell  <mark@codesourcery.com>
8006
8007         * cp-tree.h (function_depth): Declare.
8008         (verify_stmt_tree): Likewise.
8009         (find_tree): Likewise.
8010         * decl.c (function_depth): Give it external linkage.
8011         * optimize.c (optimize_function): Increment and decrement it.
8012         * tree.c (verify_stmt_tree_r): New function.
8013         (verify_stmt_tree): Likewise.
8014         (find_tree_r): Likewise.
8015         (find_tree): Likewise.
8016
8017 2000-07-27  Jason Merrill  <jason@redhat.com>
8018
8019         * pt.c (for_each_template_parm_r, case RECORD_TYPE): Use
8020         TYPE_PTRMEMFUNC_P.
8021         * cp-tree.h (TYPE_TEMPLATE_INFO): Check for TYPE_LANG_SPECIFIC.
8022
8023 2000-07-26  Mark Mitchell  <mark@codesourcery.com>
8024
8025         * decl.c (start_cleanup_fn): Mark the function as `inline'.
8026         * decl2.c (get_guard): Call cp_finish_decl, not
8027         rest_of_decl_compilation, for local guards.
8028         * lex.c (do_identifier): Remove unused variable.
8029
8030 Wed Jul 26 15:05:51 CEST 2000   Marc Espie <espie@cvs.openbsd.org>
8031
8032         * parse.y:  Add missing ';'.
8033
8034 2000-07-26  Mark Mitchell  <mark@codesourcery.com>
8035
8036         * parse.y (empty_parms): Use `()', not `(...)', when in the scope
8037         of `extern "C++"'.
8038
8039 2000-07-25  Nathan Sidwell  <nathan@codesourcery.com>
8040
8041         Kill strict_prototype. Backwards compatibility only for
8042         non NO_IMPLICIT_EXTERN_C systems.
8043         * cp-tree.h (flag_strict_prototype): Remove.
8044         (strict_prototype): Remove.
8045         (strict_prototypes_lang_c, strict_prototypes_lang_cplusplus): Remove.
8046         * decl.c (maybe_push_to_top_level): Adjust.
8047         (pop_from_top_level): Adjust.
8048         (decls_match): Only allow sloppy parm matching for ancient
8049         system headers.
8050         (init_decl_processing): Adjust.
8051         (grokdeclarator): Adjust.
8052         * decl2.c (flag_strict_prototype): Remove.
8053         (strict_prototype): Remove.
8054         (strict_prototypes_lang_c, strict_prototypes_lang_cplusplus): Remove.
8055         (lang_f_options): Remove "strict-prototype".
8056         (unsupported-options): Add "strict-prototype".
8057         * lex.c (do_identifier): Adjust.
8058         (do_scoped_id): Adjust.
8059         * parse.y (empty_parms): Adjust.
8060         * class.c (push_lang_context): Adjust.
8061         (pop_lang_context): Adjust.
8062         * typeck.c (comp_target_parms): Adjust.
8063
8064 2000-07-25  Nathan Sidwell  <nathan@codesourcery.com>
8065
8066         * decl.c (poplevel): Deal with anonymous variables at for scope.
8067         (maybe_inject_for_scope_var): Likewise.
8068
8069 2000-07-25  Zack Weinberg  <zack@wolery.cumb.org>
8070
8071         * decl.c: Remove all signal handling code, now done in toplev.c.
8072
8073 2000-07-23  Mark Mitchell  <mark@codesourcery.com>
8074
8075         * decl.c (make_rtl_for_nonlocal_decl): Rework.
8076
8077         * pt.c (lookup_template_class): Ensure that TYPE_CONTEXT is set
8078         correctly.
8079
8080 2000-07-20  Zack Weinberg  <zack@wolery.cumb.org>
8081
8082         * cp-tree.h: Use __FUNCTION__ not __PRETTY_FUNCTION__.
8083         Define my_friendly_assert and my_friendly_abort as macros
8084         which may call friendly_abort.  Prototype friendly abort, not
8085         my_friendly_abort or my_friendly_assert.
8086         * decl.c (signal_catch): Report the signal caught in the error
8087         message.  Call fatal directly.
8088         * typeck2.c (ack, my_friendly_assert): Delete.
8089         (my_friendly_abort): Rename to friendly_abort.  Expect file,
8090         line, and function parameters.  Report the abort code, then
8091         call fancy_abort.  Do not mask an abort if errors have
8092         already occurred.
8093
8094 2000-07-18  Nathan Sidwell  <nathan@codesourcery.com>
8095
8096         * typeck.c (comp_target_parms): Remove obsolete parameter.
8097         (comp_target_types): Adjust.
8098
8099 2000-07-17  Jason Merrill  <jason@redhat.com>
8100
8101         * typeck.c (mark_addressable): Never set TREE_USED.
8102         * call.c (build_call): Don't abort on calls to library functions
8103         that have been declared normally.
8104
8105         * typeck.c (build_binary_op): Fix grammar in warning.
8106
8107         * exception.cc (__eh_free): Fix prototype.
8108
8109         * decl2.c (finish_decl_parsing): Handle TEMPLATE_ID_EXPR.
8110
8111         * decl.c (pushdecl): Handle seeing an OVERLOAD in
8112         IDENTIFIER_NAMESPACE_VALUE.
8113
8114 2000-07-16  Mark Mitchell  <mark@codesourcery.com>
8115
8116         * cp-tree.h (THUNK_VCALL_OFFSET): Update documentation.
8117         * method.c (use_thunk): Correct handling of vcall offsets.
8118
8119 2000-07-14  Zack Weinberg  <zack@wolery.cumb.org>
8120
8121         * .cvsignore: parse.h and parse.c have no cp- prefix.
8122
8123 2000-07-13  Mark Mitchell  <mark@codesourcery.com>
8124
8125         * .cvsignore: New file.
8126
8127 2000-07-13  Zack Weinberg  <zack@wolery.cumb.org>
8128
8129         * lang-specs.h: Use the new named specs.  Remove unnecessary braces.
8130
8131 2000-07-12  Mark Mitchell  <mark@codesourcery.com>
8132
8133         * Makefile.in ($(PARSE_H)): Depend directly on parse.y.
8134         * parse.c: Remove.
8135         * parse.h: Likewise.
8136
8137 2000-07-11  Mark Mitchell  <mark@codesourcery.com>
8138
8139         * class.c (layout_class_type): Add pointers to virtual bases after
8140         base classes under the old ABI.
8141
8142 2000-07-10  Benjamin Chelf  <chelf@codesourcery.com>
8143
8144         * semantics.c (finish_for_stmt): Remove call to emit_line_note.
8145         (finish_continue_stmt): Likewise.
8146         (begin_for_stmt): Remove call to note_level_for_for.
8147         (finish_goto_stmt): Change call from build_min_nt
8148         to build_stmt.
8149         (finish_expr_stmt): Likewise.
8150         (begin_if_stmt): Likewise.
8151         (begin_while_stmt): Likewise.
8152         (finish_while_stmt): Likewise.
8153         (finish_return_stmt): Likewise.
8154         (begin_for_stmt): Likewise.
8155         (finish_for_stmt): Likewise.
8156         (finish_break_stmt): Likewise.
8157         (begin_switch_stmt): Likewise.
8158         (finish_case_label): Likewise.
8159         (genrtl_try_block): Likewise.
8160         (begin_try_block): Likewise.
8161         (begin_handler): Likewise.
8162         (begin_compound_stmt): Likewise.
8163         (finish_asm_stmt): Likewise.
8164         (finish_label_stmt): Likewise.
8165         (add_decl_stmt): Likewise.
8166         (finish_subobject): Likewise.
8167         (finish_decl_cleanup): Likewise.
8168         (finish_named_return_value): Likewise.
8169         (setup_vtbl_ptr): Likewise.
8170         (add_scope_stmt): Likewise.
8171         * decl.c (finish_constructor_body): Likewise.
8172         (finish_destructor_body): Likewise.
8173         * optimize.c (copy_body_r): Likewise.
8174         (initialize_inlined_parameters): Likewise.
8175         (declare_return_variable): Likewise.
8176         (expand_call_inline): Likewise.
8177
8178 2000-07-10  Jakub Jelinek  <jakub@redhat.com>
8179
8180         * semantics.c (expand_body): Sync interface information
8181         at the end of function body expansion.
8182
8183 2000-07-09  Jason Merrill  <jason@redhat.com>
8184
8185         * init.c (build_new_1): Bail early if the call to new fails.
8186
8187         * decl.c (compute_array_index_type): Check specifically for
8188         an INTEGER_CST, not just TREE_CONSTANT.
8189
8190         * decl.c (duplicate_decls): Don't call duplicate_decls on
8191         the DECL_TEMPLATE_RESULT.
8192         (decls_match): Return 0 if the DECL_TEMPLATE_RESULTs have different
8193         codes.
8194
8195         * error.c (dump_template_bindings): Don't crash if we had an
8196         invalid argument list.
8197
8198         * typeck.c (c_expand_start_case): Do narrowing here.
8199         * semantics.c (finish_switch_cond): Not here.
8200
8201 2000-07-09  Hidvegi Zoli  <hzoli@austin.ibm.com>
8202
8203         * parse.y (asm_clobbers): Do string concatenation.
8204
8205 2000-07-09  Mark Mitchell  <mark@codesourcery.com>
8206
8207         * decl.c (pushtag): Don't put local classes in template functions
8208         on the local_classes list.
8209
8210 2000-07-04  Scott Snyder  <snyder@fnal.gov>
8211
8212         * decl2.c (get_guard): Add missing return for old ABI local
8213         variable case.
8214
8215 2000-07-09  Mark Mitchell  <mark@codesourcery.com>
8216
8217         * cp-tree.h (char_type_p): New function.
8218         * decl.c (init_decl_processing): Don't initialize
8219         signed_wchar_type_node or unsigned_wchar_type_node.
8220         (complete_array_type): Handle brace-enclosed string-constants.
8221         * rtti.c (emit_support_tinfos): Remove #if 0'd code.
8222         * tree.c (char_type_p): New function.
8223         * typeck2.c (digest_init): Use char_type_p.
8224
8225 2000-07-06  Nathan Sidwell  <nathan@codesourcery.com>
8226
8227         * pt.c (tsubst): Don't layout type, if it's error_mark.
8228
8229 2000-07-06  Nathan Sidwell  <nathan@codesourcery.com>
8230
8231         * pt.c (instantiate_pending_templates): Reset template level.
8232
8233 2000-07-05  Jason Merrill  <jason@redhat.com>
8234
8235         * call.c (joust): Don't complain about `operator char *()' beating
8236         `operator const char *() const'.
8237
8238 2000-07-04  scott snyder  <snyder@fnal.gov>
8239             Jason Merrill  <jason@redhat.com>
8240
8241         * repo.c (repo_get_id): Handle the case where a class with virtual
8242         bases has a null TYPE_BINFO_VTABLE.
8243
8244 2000-07-04  Kevin Buhr  <buhr@stat.wisc.edu>
8245             Jason Merrill  <jason@redhat.com>
8246
8247         * parse.y (member_init): Just pass in the type.
8248         * init.c (expand_member_init): Handle getting a type.
8249
8250 2000-07-04  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
8251             Jason Merrill  <jason@redhat.com>
8252
8253         * decl.c (finish_function): Warn if a function has no return
8254         statement.
8255         Suggested by Andrew Koenig.
8256         * typeck.c (check_return_expr): Do set current_function_returns_value
8257         if we got an error_mark_node.
8258
8259 2000-07-03  Nathan Sidwell  <nathan@codesourcery.com>
8260
8261         * decl2.c (push_decl_namespace): Push the original namespace.
8262
8263 2000-07-03  Nathan Sidwell  <nathan@codesourcery.com>
8264
8265         * pt.c (instantiate_class_template): Set CLASSTYPE_VBASECLASSES.
8266         * semantics.c (begin_class_definition): Clear it.
8267
8268 2000-07-02  Benjamin Chelf  <chelf@codesourcery.com>
8269
8270         * cp-tree.h (genrtl_goto_stmt): Remove declaration.
8271         (genrtl_expr_stmt): Likewise.
8272         (genrtl_decl_stmt): Likewise.
8273         (genrtl_if_stmt): Likewise.
8274         (genrtl_while_stmt): Likewise.
8275         (genrtl_do_stmt): Likewise.
8276         (genrtl_return_stmt): Likewise.
8277         (genrtl_for_stmt): Likewise.
8278         (genrtl_break_stmt): Likewise.
8279         (genrtl_continue_stmt): Likewise.
8280         (genrtl_scope_stmt): Likewise.
8281         (genrtl_switch_stmt): Likewise.
8282         (genrtl_case_label): Likewise.
8283         (genrtl_begin_compound_stmt): Likewise.
8284         (genrtl_finish_compound_stmt): Likewise.
8285         (genrtl_compound_stmt): Likewise.
8286         (genrtl_asm_stmt): Likewise.
8287
8288         * init.c (begin_init_stmts): Remove call to
8289         genrtl_begin_compound_stmt.
8290         (finish_init_stmts): Remove call to genrtl_finish_compound_stmt.
8291
8292         * semantics.c (lang_expand_stmt): Changed call to
8293         genrtl_compound_stmt to ignore return value.
8294
8295 2000-07-02  Mark Mitchell  <mark@codesourcery.com>
8296
8297         * mangle.c (canonicalize_for_substitution): Return the canonical
8298         variant of a type.
8299
8300         * decl.c (duplicate_decls): Preserve DECL_ORIGINAL_TYPE for a
8301         TYPE_DECL.
8302         * typeck.c (commonparms): Remove obstack manipulations.
8303
8304 2000-07-01  Benjamin Chelf  <chelf@codesourcery.com>
8305
8306         * Make-lang.in (cc1plus$(exeext)): Added c-semantics.o.
8307
8308         * Makefile.in (OBJS): Added ../c-semantics.o.
8309         (OBJDEPS): Likewise.
8310
8311         * cp-tree.h (TREE_LANG_FLAG_?): Moved common documentation to
8312         ../c-common.h.
8313         (struct stmt_tree): Added comment.
8314         (current_function_name_declared): Removed.
8315         (stmts_are_full_exprs_p): Likewise.
8316         (genrtl_do_pushlevel): Likewise.
8317         (genrtl_clear_out_block): Likewise.
8318         (COMPOUND_STMT_NO_SCOPE): Moved to ../c-common.h.
8319         (DECL_ANON_UNION_ELEMS): Likewise.
8320         (emit_local_var): Likewise.
8321         (make_rtl_for_local_static): Likewise.
8322         (do_case): Likewise.
8323         (expand_stmt): Likewise.
8324         (genrtl_decl_cleanup): Likewise.
8325         (c_expand_asm_operands): Likewise.
8326         (c_expand_return): Likewise.
8327         (c_expand_start_case): Likewise.
8328
8329         * decl.c (make_rtl_for_local_static): Moved to c-semantics.c.
8330         (emit_local_var): Likewise.
8331         (initialize_local_var): Change reference to
8332         stmts_are_full_exprs_p to call to stmts_are_full_exprs_p().
8333         Change reference to stmts_are_full_exprs_p to
8334         current_stmt_tree->stmts_are_full_exprs_p.
8335         (push_cp_function_context): Likewise.
8336
8337         * expect.c (expand_throw): Change reference to
8338         stmts_are_full_exprs_p.
8339
8340         * init.c (build_aggr_init): Change reference to
8341         stmts_are_full_exprs_p.
8342         (build_vec_init): Likewise.
8343
8344         * optimize.c (maybe_clone_body): Change reference to
8345         current_function_name_declared to
8346         cp_function_chain->name_declared.
8347
8348         * pt.c (instantiate_decl): Change reference to
8349         current_function_name_declared to
8350         cp_function_chain->name_declared.
8351
8352         * semantics.c (expand_cond): Moved declaration to c-common.h.
8353         (genrtl_do_pushlevel): Moved to c-semantics.c.
8354         (genrtl_clear_out_block): Likewise.
8355         (genrtl_goto_stmt): Likewise.
8356         (genrtl_expr_stmt): Likewise.
8357         (genrtl_decl_stmt): Likewise.
8358         (gerntl_if_stmt): Likewise.
8359         (genrtl_while_stmt): Likewise.
8360         (genrtl_do_stmt): Likewise.
8361         (genrtl_return_stmt): Likewise.
8362         (genrtl_for_stmt): Likewise.
8363         (genrtl_break_stmt): Likewise.
8364         (genrtl_continue_stmt): Likewise.
8365         (genrtl_scope_stmt): Likewise.
8366         (genrtl_switch_stmt): Likewise.
8367         (genrtl_case_label): Likewise.
8368         (genrtl_begin_compound_stmt): Likewise.
8369         (genrtl_finish_compound_stmt): Likewise.
8370         (genrtl_compound_stmt): Likewise.
8371         (genrtl_asm_stmt): Likewise.
8372         (genrtl_decl_cleanup): Likewise.
8373         (expand_cond): Likewise.
8374         (expand_stmt): Renamed to ...
8375         (lang_expand_stmt): ... this.
8376         (lang_expand_expr_stmt): Initialize.
8377         (set_current_function_name_declared): Likewise.
8378         (stmts_are_full_exprs_p): Likewise.
8379         (current_function_name_declared): Likewise.
8380         (anon_aggr_type_p): Likewise.
8381         (do_poplevel): Change reference to
8382         stmts_are_full_exprs_p to call to stmts_are_full_exprs_p().
8383         Change reference to stmts_are_full_exprs_p to
8384         current_stmt_tree->stmts_are_full_exprs_p.
8385         (add_tree): Likewise.
8386         (finish_expr_stmt): Likewise.
8387         (prep_stmt): Likewise.
8388         (lang_expand_stmt): Likewise.
8389         (begin_compound_stmt): Change reference to
8390         current_function_name_declared to
8391         cp_function_chain->name_declared and call to
8392         current_function_name_declared().
8393         (setup_vtbl_ptr): Likewise.
8394         (genrtl_do_poplevel): Removed.
8395
8396 2000-06-30  Jason Merrill  <jason@redhat.com>
8397
8398         * init.c (init_init_processing): Go back to aligning like
8399         double_type_node for old ABI.
8400         (get_cookie_size): Make cookie larger if we get a type that needs
8401         more alignment.
8402         (build_vec_delete): Call it.
8403
8404         * typeck.c (qualify_type_recursive): New fn.
8405         (composite_pointer_type): Use it.
8406         (build_binary_op): Use composite_pointer_type.
8407
8408 2000-06-24  Carlos O'Ryan  <coryan@cs.wustl.edu>
8409             Jason Merrill  <jason@redhat.com>
8410
8411         * typeck.c (check_return_expr): Don't complain about returning
8412         NULL from operator new if -fcheck-new.
8413         * cp-tree.h: Declare flag_check_new here.
8414         * init.c: Not here.
8415
8416 2000-06-28  Alex Samuel  <samuel@codesourcery.com>
8417
8418         * mangle.c (find_substitution): Use same_type_p.
8419         (write_encoding): Don't check for substitutions.
8420
8421 2000-06-30  Nathan Sidwell  <nathan@codesourcery.com>
8422
8423         * parse.y (expr_no_comma_rangle): New non-terminal.
8424         (template_parm): Use it for default parameter case.
8425         (template_arg): Use it.
8426         (expr_no_commas): Remove commented out undefined extensions.
8427         * Makefile.in (CONFLICTS): Adjust to 33 s/r & 48 r/r.
8428         * parse.h, parse.c: Rebuilt.
8429
8430 2000-06-30  Mark Mitchell  <mark@codesourcery.com>
8431
8432         * semantics.c (genrtl_asm_stmt): Don't decay input operands here.
8433         (finish_asm_stmt): Do it here, instead.
8434
8435         * cp-tree.h (ridpointers): Don't declare.
8436         * decl.c (record_builtin_type): Use CP_RID_MAX instead of RID_MAX.
8437         (record_builtin_java_type): Likewise.
8438         (init_decl_processing): Likewise.
8439         * lex.c: Move inclusion of lex.h.
8440         (ridpointers): Don't define.
8441         (init_parse): Initialize ripdointers.  Use CP_RID_MAX instead of
8442         RID_MAX.
8443         * lex.h (enum rid): Rename to ...
8444         (enum cp_rid): ... this.
8445         (ridpointers): Don't declare.
8446         * parse.y: Move inclusion of lex.h.
8447         * parse.c: Regenerated.
8448         * spew.c: Move inclusion of lex.h.
8449
8450         * cp-tree.h (struct language_function): Remove temp_name_counter.
8451         (temp_name_counter): Remove.
8452         (get_temp_name): Change prototype.
8453         (get_guard): New function.
8454         (get_guard_cond): Likewise.
8455         (set_guard): Likewise.
8456         * cvt.c (build_up_reference): Adjust call to get_temp_name.
8457         * decl.c (expand_static_init): Use get_guard and friends to
8458         implement guard variables.
8459         * decl2.c (get_temp_name): Assume that the variables created are
8460         always static.
8461         (get_sentry): Rename to ...
8462         (get_guard): ... this.  Implement new ABI guard variables.
8463         (get_guard_bits): New function.
8464         (get_guard_cond): Likewise.
8465         (set_guard): Likewise.
8466         (start_static_initialization_or_destruction): Use them.
8467         (do_static_initialization): Replace sentry with guard throughout.
8468         (do_static_destruction): Likewise.
8469         * init.c (create_temporary_var): Add comment.
8470
8471 2000-06-28  Alex Samuel  <samuel@codesourcery.com>
8472
8473         * mangle.c (find_substitution): Use same_type_p.
8474         (write_encoding): Don't check for substitutions.
8475
8476 2000-06-30  Nathan Sidwell  <nathan@codesourcery.com>
8477
8478         * parse.y (expr_no_comma_rangle): New non-terminal.
8479         (template_parm): Use it for default parameter case.
8480         (template_arg): Use it.
8481         (expr_no_commas): Remove commented out undefined extensions.
8482         * Makefile.in (CONFLICTS): Adjust to 33 s/r & 48 r/r.
8483         * parse.h, parse.c: Rebuilt.
8484
8485 2000-06-29  Mark Mitchell  <mark@codesourcery.com>
8486
8487         * cp-tree.h (flag_const_strings): Remove.
8488         (warn_parentheses): Likewise.
8489         (warn_format): Likewise.
8490         (common_type): Likewise.
8491         (default_conversion): Likewise.
8492         (build_binary_op): Likewise.
8493         (cp_build_binary_op): New macro.
8494         * call.c (build_new_op): Use cp_build_binary_op instead of
8495         build_binary_op.
8496         * class.c (build_vtable_entry_ref): Likewise.
8497         * decl.c (expand_static_init): Likewise.
8498         (compute_array_index_type): Likewise.
8499         (build_enumerator): Likewise.
8500         * decl2.c (delete_sanity): Likewise.
8501         (start_static_initialization_or_destruction): Likewise.
8502         * error.c (dump_type_suffix): Likewise.
8503         * init.c (resolve_offset_ref): Likewise.
8504         (build_new): Likewise.
8505         (build_new_1): Likewise.
8506         (build_vec_delete_1): Likewise.
8507         (build_vec_init): Likewise.
8508         (build_delete): Likewise.
8509         * rtti.c (synthesize_tinfo_fn): Likewise.
8510         (synthesize_tinfo_var): Likewise.
8511         * search.c (expand_upcast_fixups): Likewise.
8512         (fixup_all_virtual_upcast_offsets): Likewise.
8513         * typeck.c (build_array_ref): Likewise.
8514         (get_member_function_from_ptrfunc): Likewise.
8515         (build_binary_op): Add parameter.
8516         (pointer_int_sum): Use cp_build_binary_op.
8517         (pointer_diff): Likewise.
8518         (build_modify_expr): Likewise.
8519         (get_delta_difference): Likewise.
8520         (build_ptrmemfunc): Likewise.
8521
8522 2000-06-29  Nathan Sidwell  <nathan@codesourcery.com>
8523
8524         * cp-tree.h (SET_DECL_ARTIFICIAL): Remove.
8525         * decl.c (create_implicit_typedef): Adjust.
8526         * decl2.c (build_artificial_parm): Adjust.
8527         * method.c (implicitly_declare_fn): Adjust.
8528         * pt.c (push_inline_template_parms_recursive): Adjust.
8529         (process_template_parm): Adjust.
8530         (overloaded_template_name): Adjust.
8531         * semantics.c (finish_template_template_parm): Adjust.
8532
8533 2000-06-28  Mark Mitchell  <mark@codesourcery.com>
8534
8535         * cp-tree.h (CLEAR_BINFO_NEW_VTABLE_MARKED): Remove.
8536         * class.c (update_vtable_entry_for_fn): Correct logic for deciding
8537         where to emit thunks.
8538         (build_vtt): Adjust call to build_vtt_inits.
8539         (build_vtt_inits): Add parameter to indicate whether or not
8540         sub-VTTs for virtual bases should be included.  Adjust handling of
8541         construction vtables.
8542         (get_matching_base): New function.
8543         (dfs_build_vtt_inits): Rename to ...
8544         (dfs_build_secondary_vptr_vtt_inits): Adjust handling of
8545         construction vtables.
8546         (dfs_fixup_binfo_vtbls): Likewise.
8547         (build_ctor_vtbl_groups): Build construction vtables for virtual
8548         bases, too.
8549         (accumulate_vtbl_inits): Tweak logic for deciding whether or not
8550         to build construction vtbls.
8551         (dfs_accumulate_vtbl_inits): Adjust handling of
8552         construction vtables.
8553
8554         * pt.c (tsubst, case TEMPLATE_TEMPLATE_PARM): Handle cv-qualified
8555         types correctly.
8556
8557 2000-06-27  Mark Mitchell  <mark@codesourcery.com>
8558
8559         * decl.c (grokfndecl): Set DECL_CONTEXT for static functions too.
8560
8561 2000-06-26  Nathan Sidwell  <nathan@codesourcery.com>
8562
8563         * search.c (hides): Remove.
8564         (is_subobject_of_p): Add most_derived parameter. Use
8565         CANONICAL_BINFO.
8566         (lookup_field_queue_p): Adjust.
8567         (lookup_field_r): Adjust.
8568
8569 2000-06-26  Nathan Sidwell  <nathan@codesourcery.com>
8570
8571         * decl2.c (handle_class_head): Bash typedefs to the type's main
8572         decl.
8573
8574 2000-06-25  Mark Mitchell  <mark@codesourcery.com>
8575
8576         * cp-tree.h (genrtl_begin_stmt_expr): Rename to ...
8577         (begin_global_stmt_expr): ... this.
8578         (genrtl_finish_stmt_expr): Rename to ...
8579         (finish_global_stmt_expr): ... this.
8580         * init.c (begin_init_stmts): Adjust calls.
8581         (finish_init_stmts): Likewise.
8582         * semantics.c (genrtl_begin_stmt_expr): Rename to ...
8583         (begin_global_stmt_expr): ... this.
8584         (genrtl_finish_stmt_expr): Rename to ...
8585         (finish_global_stmt_expr): ... this.
8586
8587 2000-06-25 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
8588
8589         * search.c (lookup_member): Fix typo in comment.
8590
8591 2000-06-24  Jason Merrill  <jason@redhat.com>
8592
8593         * decl.c (pushdecl): Don't set DECL_CONTEXT from current_namespace.
8594         (push_namespace): Set DECL_CONTEXT for a new NAMESPACE_DECL.
8595
8596 2000-06-24  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
8597
8598         * parse.y (complex_direct_notype_declarator): Support global_scope.
8599         * Makefile.in: Adjust conflict count.
8600
8601 2000-06-23  Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
8602
8603         * parse.y (template_arg): Convert TEMPLATE_DECL
8604         that is a template template parameter to
8605         TEMPLATE_TEMPLATE_PARM here.
8606
8607         * cp-tree.def (TEMPLATE_TEMPLATE_PARM): Adjust comment.
8608         * cp-tree.h (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): New macro.
8609         (copy_template_template_parm): Adjust prototype.
8610         * decl.c (grokdeclarator): Remove dead code.
8611         * pt.c (process_template_parm): Tidy.
8612         (lookup_template_class): Construct nodes in
8613         copy_template_template_parm.
8614         (tsubst): Pass TEMPLATE_DECL rather than IDENTIFIER_NODE to
8615         lookup_template_class.  Use TYPE_TI_TEMPLATE.
8616         * tree.c (copy_template_template_parm): Add NEWARGS
8617         parameter.
8618         (mapcar): Adjust call to copy_template_template_parm.
8619         * typeck.c (comptypes): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL.
8620         * method.c (build_template_template_parm_names): Change error
8621         code to avoid compilation warning.
8622
8623         * gxxint.texi: Document template template parameter
8624         name mangling.
8625
8626 2000-06-21  Alex Samuel  <samuel@codesourcery.com>
8627
8628         * Make-lang.in (CXX_LIB2FUNCS): Add cp-demangle.o and dyn-string.o.
8629         (CXX_LIB2SRCS): Add cp-demangle.c and dyn-string.c.
8630         (cp-demangle.o): New rule.
8631         (dyn-string.o): Likewise.
8632         * inc/cxxabi.h (__cxa_demangle): New declaration.
8633
8634 2000-06-22  Mark Mitchell  <mark@codesourcery.com>
8635
8636         * cp-tree.h (BV_USE_VCALL_INDEX_P): New macro.
8637         (BV_GENERATE_THUNK_WITH_VTABLE_P): Likewise.
8638         (lang_decl_flags): Add generate_with_vtable_p.  Make vcall_offset
8639         a tree, not an int.
8640         (THUNK_GENERATE_WITH_VTABLE_P): New macro.
8641         (make_thunk): Change prototype.
8642         (emit_thunk): Rename to use_thunk.
8643         (mangle_thunk): Change prototype.
8644         * class.c (get_derived_offset): Simplify.
8645         (copy_virtuals): Clear BV_USE_VCALL_INDEX_P and
8646         BV_GENERATE_THUNK_WITH_VTABLE_P.
8647         (build_primary_vtable): Simplify.
8648         (add_virtual_function): Use BV_FN, rather than TREE_VALUE.
8649         (dfs_find_base): Remove.
8650         (update_vtable_entry_for_fn): Correct bug in finding the base
8651         where a virtual function was first declared.  Figure out whether
8652         or not to emit a vcall-thunk with the vtables in which it appears.
8653         Correct logic for deciding whether to use an ordinary thunk, or a
8654         vcall thunk.
8655         (finish_struct_1): Remove unnecssary code.
8656         (build_vtbl_initializer): Use ssize_int for the running counter of
8657         negative indices.
8658         (build_vtbl_initializer): Only use vcall thunks where necessary.
8659         Mark thunks as needing to be emitted with their vtables, or not.
8660         (build_vbase_offset_vtbl_entries): Adjust for use of ssize_int in
8661         indices.  Use size_binop.
8662         (dfs_build_vcall_offset_vtbl_entries): Don't rely on
8663         BINFO_PRIMARY_MARKED_P here.  Use BV_FN consistently.  Use
8664         size_binop.
8665         (build_rtti_vtbl_entries): Adjust call to build_vtable_entry.
8666         (build_vtable_entry): Mark thunks as needing to be emitted with
8667         their vtables, or not.
8668         * decl.c (lang_mark_tree): Mark the vcall_offset in a thunk.
8669         * decl2.c (mark_vtable_entries): Use use_thunk instead of
8670         emit_thunk.
8671         * dump.c (dequeue_and_dump): Remove dead code.  Dump new thunk
8672         information.
8673         * error.c (dump_expr): Use BV_FN.
8674         * mangle.c (mangle_thunk): Adjust now that vcall_offset is a tree,
8675         not an int.
8676         * method.c (make_thunk): Likewise.
8677         (emit_thunk): Rename to use_thunk.  Allow callers to decide
8678         whether or not to actually emit the thunk.  Adjust for changes in
8679         representation of vcall offsets.
8680         * search.c (dfs_get_pure_virtuals): Use BV_FN.
8681         * semantics.c (emit_associated_thunks): New function.
8682         (expand_body): Use it.
8683         * ir.texi: Adjust decriptions of thunks.
8684
8685 2000-06-22  Jason Merrill  <jason@redhat.com>
8686
8687         * pt.c (tsubst_decl, case FUNCTION_DECL): Clear DECL_SAVED_TREE.
8688         (tsubst_friend_function): Copy it here.
8689
8690         * decl.c (grok_op_properties): Fix typo.
8691
8692         * decl2.c (delete_sanity): Clarify warning, avoid failure on
8693         deleting void*.
8694
8695         * pt.c (check_explicit_specialization): Clarify error.
8696
8697         * decl.c (pushdecl): Also pull out one of the FUNCTION_DECLs from
8698         an old OVERLOAD when we're declaring a non-function.
8699         (pushdecl, destroy_local_var): Check for error_mark_node.
8700         (warn_extern_redeclared_static): Also bail early if
8701         we're a CONST_DECL.
8702         (push_overloaded_decl): Ignore an old error_mark_node.
8703
8704 2000-06-22  Nathan Sidwell  <nathan@codesourcery.com>
8705
8706         * call.c (build_x_va_arg): Check if in a template decl.
8707         * pt.c (tsubst_copy, case VA_ARG_EXPR): Use build_x_va_arg.
8708
8709 2000-06-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8710
8711         * class.c (push_lang_context): TYPE_NAME gets you to the Java
8712         types DECLs.
8713         * decl.c (check_goto): Computed gotos assumed OK.
8714
8715 2000-06-20  Jason Merrill  <jason@redhat.com>
8716
8717         * pt.c (tsubst_decl, case TYPE_DECL): Fix test for TYPE_DECLs
8718         for which we don't need to look for instantiations.
8719
8720 2000-06-21  Nathan Sidwell  <nathan@codesourcery.com>
8721
8722         * parse.y (program): Always call finish_translation_unit.
8723         * parse.c, parse.h: Rebuilt.
8724
8725 2000-06-20  Zack Weinberg  <zack@wolery.cumb.org>
8726
8727         * method.c: Don't include hard-reg-set.h.
8728
8729 2000-06-20  Nathan Sidwell  <nathan@codesourcery.com>
8730
8731         * rtti.c (get_base_offset): Cope when vbase field is in a base.
8732
8733 2000-06-20  Nathan Sidwell  <nathan@codesourcery.com>
8734
8735         * call.c (build_conditional_expr): Use VOID_TYPE_P.
8736         * cvt.c (cp_convert_to_pointer): Likewise.
8737         (convert_to_void): Likewise.
8738         * error.c (dump_expr): Likewise.
8739         * except.c (complete_ptr_ref_or_void_ptr_p): Likewise.
8740         * init.c (build_delete): Likewise.
8741         * method.c (emit_thunk): Likewise.
8742         * optmize.c (declare_return_variable): Likewise.
8743         * rtti.c (get_tinfo_decl_dynamic): Likewise.
8744         (get_typeid): Likewise.
8745         (build_dynamic_cast_1): Likewise.
8746         * typeck.c (composite_pointer_type): Likewise.
8747         (common_type): Likewise.
8748         (build_indirect_ref): Likewise.
8749         (build_binary_op): Likewise.
8750         (build_x_compound_expr): Likewise.
8751         (check_return_expr): Likewise.
8752         * typeck2.c (add_exception_specifier): Likewise.
8753
8754         * mangle.c (write_method_parms): Use direct comparison for end
8755         of parmlist.
8756
8757 2000-06-19  Benjamin Chelf  <chelf@codesourcery.com>
8758
8759         * cp-tree.h (genrtl_try_block): Declare function.
8760         (genrtl_handler): Likewise.
8761         (genrtl_catch_block): Likewise.
8762         (genrtl_ctor_stmt): Likewise.
8763         (genrtl_subobject): Likewise.
8764         (genrtl_decl_cleanup): Likewise.
8765         (genrtl_do_poplevel): Likewise.
8766         (genrtl_do_pushlevel): Likewise.
8767         (genrtl_clear_out_block): Likewise.
8768         (genrtl_goto_stmt): Likewise.
8769         (genrtl_expr_stmt): Likewise.
8770         (genrtl_decl_stmt): Likewise.
8771         (genrtl_if_stmt): Likewise.
8772         (genrtl_while_stmt): Likewise.
8773         (genrtl_do_stmt): Likewise.
8774         (genrtl_return_stmt): Likewise.
8775         (genrtl_for_stmt): Likewise.
8776         (genrtl_break_stmt): Likewise.
8777         (genrtl_continue_stmt): Likewise.
8778         (genrtl_scope_stmt): Likewise.
8779         (genrtl_switch_stmt): Likewise.
8780         (genrtl_case_label): Likewise.
8781         (genrtl_begin_compound_stmt): Likewise.
8782         (genrtl_finish_compound_stmt): Likewise.
8783         (genrtl_compound_stmt): Likewise.
8784         (genrtl_asm_stmt): Likewise.
8785         (genrtl_named_return_value): Likewise.
8786         (genrtl_begin_stmt_expr): Likewise.
8787         (genrtl_finish_stmt_expr): Likewise.
8788         (finish_for_stmt): Removed first argument.
8789         (finish_switch_stmt): Likewise.
8790
8791         * semantics.c (genrtl_try_block): Define function.
8792         (genrtl_handler): Likewise.
8793         (genrtl_catch_block): Likewise.
8794         (genrtl_ctor_stmt): Likewise.
8795         (genrtl_subobject): Likewise.
8796         (genrtl_decl_cleanup): Likewise.
8797         (genrtl_do_poplevel): Likewise.
8798         (genrtl_do_pushlevel): Likewise.
8799         (genrtl_clear_out_block): Likewise.
8800         (genrtl_goto_stmt): Likewise.
8801         (genrtl_expr_stmt): Likewise.
8802         (genrtl_decl_stmt): Likewise.
8803         (genrtl_if_stmt): Likewise.
8804         (genrtl_while_stmt): Likewise.
8805         (genrtl_do_stmt): Likewise.
8806         (genrtl_return_stmt): Likewise.
8807         (genrtl_for_stmt): Likewise.
8808         (genrtl_break_stmt): Likewise.
8809         (genrtl_continue_stmt): Likewise.
8810         (genrtl_scope_stmt): Likewise.
8811         (genrtl_switch_stmt): Likewise.
8812         (genrtl_case_label): Likewise.
8813         (genrtl_begin_compound_stmt): Likewise.
8814         (genrtl_finish_compound_stmt): Likewise.
8815         (genrtl_compound_stmt): Likewise.
8816         (genrtl_asm_stmt): Likewise.
8817         (genrtl_named_return_value): Likewise.
8818         (genrtl_begin_stmt_expr): Likewise.
8819         (genrtl_finish_stmt_expr): Likewise.
8820         (finish_for_stmt): Removed first argument and generate rtl
8821         specific code.
8822         (finish_switch_stmt): Likewise.
8823         (do_poplevel): Removed generate rtl specific code.
8824         (do_pushlevel): Likewise.
8825         (add_tree): Likewise.
8826         (finish_goto_stmt): Likewise.
8827         (finish_expr_stmt): Likewise.
8828         (begin_if_stmt): Likewise.
8829         (finish_if_stmt_cond): Likewise.
8830         (finish_then_clause): Likewise.
8831         (begin_else_clause): Likewise.
8832         (finish_else_clause): Likewise.
8833         (finish_if_stmt): Likewise.
8834         (clear_out_block): Likewise.
8835         (begin_while_stmt): Likewise.
8836         (finish_while_stmt_cond): Likewise.
8837         (finish_while_stmt): Likewise.
8838         (begin_do_stmt): Likewise.
8839         (finish_do_body): Likewise.
8840         (finish_do_stmt): Likewise.
8841         (finish_return_stmt): Likewise.
8842         (begin_for_stmt): Likewise.
8843         (finish_for_init_stmt): Likewise.
8844         (finish_for_cond): Likewise.
8845         (finish_for_expr): Likewise.
8846         (finish_break_stmt): Likewise.
8847         (finish_continue_stmt): Likewise.
8848         (begin_switch_stmt): Likewise.
8849         (finish_switch_cond): Likewise.
8850         (finish_case_label): Likewise.
8851         (begin_try_block): Likewise.
8852         (begin_function_try_block): Likewise.
8853         (finish_try_block): Likewise.
8854         (finish_cleanup_try_block): Likewise.
8855         (finish_cleanup): Likewise.
8856         (finish_function_try_block): Likewise.
8857         (finish_handler_sequence): Likewise.
8858         (finish_function_handler_sequence): Likewise.
8859         (begin_handler): Likewise.
8860         (finish_handler_parms): Likewise.
8861         (begin_catch_block): Likewise.
8862         (finish_handler): Likewise.
8863         (begin_compound_stmt): Likewise.
8864         (finish_compound_stmt): Likewise.
8865         (finish_asm_stmt): Likewise.
8866         (finish_label_stmt): Likewise.
8867         (finish_label_decl): Likewise.
8868         (finish_subobject): Likewise.
8869         (finish_decl_cleanup): Likewise.
8870         (finish_named_return_value): Likewise.
8871         (begin_stmt_expr): Likewise.
8872         (finish_stmt_expr): Likewise.
8873
8874         * decl.c (initialize_local_var): Changed call to finish_expr_stmt
8875         to call genrtl_expr_stmt when appropriate.
8876
8877         * init.c (begin_init_stmts): Changed calls to begin_stmt_expr and
8878         begin_compound_expr to call genrtl_begin_stmt_expr and
8879         genrtl_begin_compound_expr when appropriate.
8880         (finish_init_stmts): Changed calls to finish_compound_expr and
8881         finish_stmt_expr to call genrtl_finish_compound_expr and
8882         genrtl_finish_stmt_expr when appropriate.
8883         (expand_default_init): Changed call to finish_expr_stmt to call
8884         genrtl_expr_stmt when appropriate.
8885         (build_vec_init): Likewise.
8886
8887         * parse.y (simple_stmt): Removed first argument from call to
8888         finish_for_stmt. Removed first argument from call to
8889         finish_switch_stmt.
8890
8891         * parse.c: Regenerated.
8892
8893         * pt.c (tsubst_expr): Removed first argument from call to
8894         finish_for_stmt. Removed first argument from call to
8895         finish_switch_stmt.
8896
8897 2000-06-16  Benjamin Chelf  <chelf@codesourcery.com>
8898
8899         * cp-tree.h (enum cplus_tree_code): Changed __DUMMY to
8900         CP_DUMMY_TREE_CODE. Remove #include "c-common.def".
8901
8902         * lex.c (cplus_tree_code_type[]): Removed #include "c-common.def".
8903         (cplus_tree_code_length[]): Likewise.
8904         (cplus_tree_code_name[]): Likewise.
8905         (init_parse): Added call to add_c_tree_codes. Changed
8906         LAST_AND_UNUSED_TREE_CODE to LAST_C_TREE_CODE.
8907
8908 2000-06-16  Mark Mitchell  <mark@codesourcery.com>
8909
8910         * cp-tree.h (finish_mem_initializers): Declare.
8911         (count_trees): Likewise.
8912         * parse.y (base_init): Use finish_mem_initializers.
8913         * semantics.c (finish_mem_initializers): New function.
8914
8915         * tree.c (count_trees_r): Prototype.  Use DATA parameter to store
8916         the number of trees.
8917         (n_trees): Remove.
8918         (count_trees): Don't use it.
8919
8920 2000-06-15  Jason Merrill  <jason@redhat.com>
8921
8922         * tree.c (count_trees): New debugging function.
8923
8924         * typeck.c (build_x_function_call): Use DECL_FUNCTION_TEMPLATE_P.
8925         * init.c (build_member_call): Pull out the name of a DECL.
8926
8927         * Makefile.in (semantics.o, pt.o): Depend on TIMEVAR_H.
8928         * semantics.c (expand_body): Push to TV_INTEGRATION here.
8929         * optimize.c (optimize_function): Not here.
8930         * pt.c (instantiate_decl): Push to TV_PARSE.
8931
8932 2000-06-15  Mark Mitchell  <mark@codesourcery.com>
8933
8934         * cp-tree.h (struct language_function): Remove x_base_init_list
8935         and x_member_init_list.
8936         (current_base_init_list): Remove.
8937         (current_member_init_list): Likewise.
8938         (setup_vtbl_ptr): Change prototype.
8939         (emit_base_init): Likewise.
8940         (expand_member_init): Likewise.
8941         (reinit_parse_for_function): Remove.
8942         * decl.c (save_function_data): Don't clear x_base_init_list and
8943         x_member_init_list.
8944         (mark_language_function): Don't mark them.
8945         * init.c (perform_member_init): Tweak comment.
8946         (sort_member_init): Take the list of initializers as an argument.
8947         (sort_base_init): Likewise.
8948         (emit_base_init): Likewise.
8949         (expand_member_init): Return the initializer.  Don't use global
8950         variables.
8951         * lex.c (reinit_parse_for_function): Remove.
8952         * method.c (build_template_parm_names): Correct substitution.
8953         (do_build_copy_constructor): Don't use current_member_init_list
8954         and current_base_init_list.
8955         (synthesize_method): Likewise.
8956         * parse.y (base_init): Split mem-initializers into
8957         base-initializers and field-initializers.
8958         (member_init_list): Build up the list here.
8959         (member_init): Return the initializer.
8960         (fn.depfn): Don't use reinit_parse_for_function.
8961         * parse.c: Regenerated.
8962         * pt.c (convert_nontype_argument): Don't make an ADDR_EXPR of the
8963         ERROR_MARK.
8964         (tsubst_expr): Don't use current_member_init_list
8965         and current_base_init_list.
8966         (tsubst_expr_values): Rename to ...
8967         (tsubst_initializer_list): ... this.  Use convert_from_reference.
8968         * semantics.c (setup_vtbl_ptr): Don't use current_member_init_list
8969         and current_base_init_list.
8970         (begin_function_definition): Don't call reinit_parse_for_function.
8971
8972         * dump.c (dequeue_and_dump): Use TREE_VEC_LENGTH with vectors.
8973
8974         * error.c (dump_expr): Handle ADDR_EXPRs with REFERENCE_TYPE
8975         correctly.
8976
8977         * cp-tree.h (DECL_PENDING_INLINE_P): Relax checking.
8978
8979 2000-06-14  Benjamin Chelf  <chelf@codesourcery.com>
8980
8981         * cp-tree.h (IF_COND): Move to c-common.h.
8982         (THEN_CLAUSE): Likewise.
8983         (ELSE_CLAUSE): Likewise.
8984         (WHILE_COND): Likewise.
8985         (WHILE_BODY): Likewise.
8986         (DO_COND): Likewise.
8987         (DO_BODY): Likewise.
8988         (RETURN_EXPR): Likewise.
8989         (EXPR_STMT_EXPR): Likewise.
8990         (FOR_INIT_STMT): Likewise.
8991         (FOR_COND): Likewise.
8992         (FOR_EXPR): Likewise.
8993         (FOR_BODY): Likewise.
8994         (SWITCH_COND): Likewise.
8995         (SWITCH_BODY): Likewise.
8996         (CASE_LOW): Likewise.
8997         (CASE_HIGH): Likewise.
8998         (GOTO_DESTINATION): Likewise.
8999         (COMPOUND_BODY): Likewise.
9000         (ASM_CV_QUAL): Likewise.
9001         (ASM_STRING): Likewise.
9002         (ASM_OUTPUTS): Likewise.
9003         (ASM_INPUTS): Likewise.
9004         (ASM_CLOBBERS): Likewise.
9005         (DECL_STMT_DECL): Likewise.
9006         (STMT_EXPR_STMT): Likewise.
9007         (LABEL_STMT_LABEL): Likewise.
9008         (SCOPE_BEGIN_P): Likewise.
9009         (SCOPE_END_P): Likewise.
9010         (SCOPE_STMT_BLOCK): Likewise.
9011         (SCOPE_NULLIFIED_P): Likewise.
9012         (SCOPE_NO_CLEANUPS_P): Likewise.
9013         (SCOPE_PARTIAL_P): Likewise.
9014         (ASM_VOLATILE_P): Likewise.
9015         (STMT_LINENO): Likewise.
9016         (STMT_LINENO_FOR_FN_P): Likewise.
9017
9018         * cp-tree.def: Removed SRCLOC, SIZEOF_EXPR, ARROW_EXPR,
9019         ALIGNOF_EXPR, EXPR_STMT, COMPOUND_STMT, DECL_STMT, IF_STMT,
9020         FOR_STMT, WHILE_STMT, DO_STMT, RETURN_STMT, BREAK_STMT,
9021         CONTINUE_STMT, SWITCH_STMT, GOTO_STMT, LABEL_STMT, ASM_STMT,
9022         SCOPE_STMT, CASE_LABEL, STMT_EXPR.
9023
9024         * Makefile.in (CXX_TREE_H): Added $(srcdir)/../c-common.def.
9025
9026         * Make-lang.in (CXX_SRCS): Added $(srcdir)/c-common.def.
9027         (cc1plus$(exeext)): Added $(srcdir)/c-common.def.
9028
9029         * lex.c (cplus_tree_code_type[]): Added '#include "c-common.def"'.
9030         (cplus_tree_code_length[]): Added '#include "c-common.def"'.
9031         (cplus_tree_code_name[]): Added '#include "c-common.def"'.
9032
9033 2000-06-14  Mark Mitchell  <mark@codesourcery.com>
9034
9035         * cp-tree.h (BINFO_OVERRIDE_ALONG_VIRTUAL_PATH): New macro.
9036         * class.c (dfs_find_final_overrider): Set it appropriately.
9037         (dfs_built_vtt_inits): Check BINFO_OVERRIDE_ALONG_VIRTUAL_PATH to
9038         avoid unneeded secondary vptrs.
9039
9040 2000-06-13  Jakub Jelinek  <jakub@redhat.com>
9041
9042         * class.c (build_secondary_vtable): Set DECL_USER_ALIGN.
9043         (check_bitfield_decl, check_field_decl): Likewise.
9044         (build_vtbl_or_vbase_field, build_base_field): Likewise.
9045         (layout_class_type): Set DECL_USER_ALIGN resp. CLASSTYPE_USER_ALIGN.
9046         * decl.c (record_unknown_type): Set TYPE_USER_ALIGN.
9047         (xfer_tag, finish_enum): Likewise.
9048         * decl2.c (finish_builtin_type): Likewise.
9049         * init.c (init_init_processing): Likewise.
9050         * pt.c (instantiate_class_template): Likewise.
9051         * rtti.c (get_tinfo_decl, synthesize_tinfo_fn): Set DECL_USER_ALIGN.
9052         * cp-tree.h (struct lang_type): Add user_align member.
9053         (CLASSTYPE_USER_ALIGN): Define.
9054
9055 Tue Jun 13 15:48:03 2000  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>
9056
9057         * Make-lang.in (c++.install-common): Install g++-cross in
9058         $(gcc_tooldir)/bin as g++ and c++; g++ in $(bindir) as
9059         $(target_alias)-g++ and $(target_alias)-c++.
9060
9061 2000-06-12  Mark Mitchell  <mark@codesourcery.com>
9062
9063         * class.c (vcall_offset_data_s): Add last_init and fns.
9064         (overrides): Rename to same_signature_p.
9065         (dfs_find_final_overrider): Adjust accordingly.
9066         (mark_overriders): Likewise.
9067         (warn_hidden): Likewise.
9068         (build_vtbl_initializer): Reorganize machinery for building things
9069         at negative offsets.
9070         (build_vcall_and_vbase_vtbl_entries): Likewise.
9071         (build_vbase_offset_vtbl_entries): Likewise.
9072         (dfs_build_vcall_offset_vtbl_entries): Correct order of vcall
9073         offset entries.  Do not create two entries for functions with the
9074         same signature.
9075         (build_vcall_offset_vtbl_entries): Initialize vod->fns.
9076         (build_rtti_vtbl_entries): Reorganize machinery for building things
9077         at negative offsets.
9078
9079         * optimize.c (expand_call_inline): Don't recurse into the code
9080         used to initialize the parameters more than once.
9081
9082 2000-06-11  Mark Mitchell <mark@codesourcery.com>
9083
9084         * mangle.c (NESTED_TEMPLATE_MATCH): Fix typo in comment.
9085         (is_std_substitution): Don't check CLASSTYPE_USE_TEMPLATE here.
9086         (find_substitution): Only use the `Sa' substitution for
9087         std::allocator, not instantiations of it.
9088         (write_template_prefix): Move comment.  Only use a TREE_LIST to
9089         represent substitutions for a member template.
9090         (write_array_type): Mangle array dimensions correctly.
9091         * optimize.c (maybe_clone_body): Copy more information from the
9092         cloned function.
9093         * pt.c (regenerate_decl_from_template): Preserve DECL_USE_TEMPLATE
9094         on the regenerated declaration.
9095
9096 2000-06-11  Chip Salzenberg  <chip@valinux.com>
9097             Mark Mitchell <mark@codesourcery.com>
9098
9099         * class.c (build_vtable): Clarify comment.
9100         (build_ctor_vtbl_group): Pass the most derived type to
9101         build_vtable.
9102
9103 2000-06-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9104
9105         * decl2.c (compare_options): Don't needlessly cast away const-ness.
9106
9107 2000-06-10  Mark Mitchell  <mark@codesourcery.com>
9108
9109         * decl.c (add_binding): Handle duplicate declarations of external
9110         variables.
9111
9112 2000-06-09  Chip Salzenberg  <chip@valinux.com>
9113             Mark Mitchell <mark@codesourcery.com>
9114
9115         * mangle.c (write_number): Take an unsigned HOST_WIDE_INT as an
9116         argument.
9117         (write_signed_number): New macro.
9118         (write_unsigned_number): Likewise.
9119         (write_source_name): Use them.
9120         (write_number): Handle signed and unsigned values.
9121         (write_integer_cst): Use tree_int_cst_sgn, and use
9122         write_unsigned_number or write_signed_number as appropriate.
9123         (write_discriminator): Use write_unsigned_number or
9124         write_signed_number as appropriate.
9125         (write_template_arg_literal): Likewise.
9126         (write_array_type): Use tree_low_cst.
9127         (write_template_parm):  Use write_unsigned_number or
9128         write_signed_number as appropriate.
9129         (write_substitution): Adjust call to write_number.
9130         (write_type): Get the TYPE_MAIN_VARIANT before mangling it.
9131         (write_expression): Handle non-type template arguments of
9132         reference type correctly.
9133         (mangle_thunk): Use write_signed_number.
9134
9135 2000-06-09  Chip Salzenberg  <chip@valinux.com>
9136
9137         * mangle.c (find_substition): Don't mangle objects with typename
9138         substitutions (e.g. "cin" as "Si").
9139
9140 2000-06-09  Zack Weinberg  <zack@wolery.cumb.org>
9141
9142         * call.c (add_candidate): Use ggc_alloc_cleared.
9143         * decl.c (lookup_label): Likewise.
9144         * lex.c (retrofit_lang_decl): Likewise.
9145
9146 2000-06-09  Jason Merrill  <jason@casey.soma.redhat.com>
9147
9148         * semantics.c (expand_body): Push to TV_EXPAND.
9149         * optimize.c (optimize_function): Push to TV_INTEGRATION.
9150         * decl.c (start_function): Always call announce_function.
9151
9152         * tinfo2.cc: Just declare abort.
9153
9154 2000-06-09  Gabriel Dos Reis  <gdr@codesourcery.com>
9155
9156         * lex.c (DEF_OPERATOR): Say `operator@' -not- `operator @'
9157         whenever @ is a symbolic name.
9158
9159 2000-06-08  Jakub Jelinek  <jakub@redhat.com>
9160
9161         * method.c (make_thunk): Clear DECL_VTT_PARM in thunk.
9162
9163 2000-06-07  Mark Mitchell  <mark@codesourcery.com>
9164
9165         * decl.c (pushdecl): Look up functions by DECL_NAME, not
9166         DECL_ASSEMBLER_NAME.
9167
9168 2000-06-06  Mark Mitchell  <mark@codesourcery.com>
9169
9170         * decl2.c (c_language): Define.
9171
9172 2000-06-06  Gabriel Dos Reis  <gdr@codesourcery.com>
9173
9174         * lex.c (lang_init_options): Tweak.
9175
9176         * decl2.c: Remove #inclusion of diagnostic.h
9177         (lang_decode_option): Move diagnostic formatting options to
9178         toplevel.
9179
9180         * lang-options.h: Remove documentation for diagnostic options.
9181
9182         * Makefile.in (lex.o): Depends upon diagnostic.h
9183
9184 2000-06-06  Mark Mitchell  <mark@codesourcery.com>
9185
9186         * decl.c (redeclaration_error_message): If two TEMPLATE_DECLs have
9187         the same DECL_RESULT, it's not a redefinition.
9188         * pt.c (tsubst_decl): Remove code to handle illegal
9189         specializations.
9190
9191 2000-06-06  Nathan Sidwell  <nathan@codesourcery.com>
9192
9193         * exception.cc: (__eh_alloc, __eh_free): Moved to libgcc2.c
9194
9195 2000-06-05  Jason Merrill  <jason@casey.soma.redhat.com>
9196
9197         * search.c (maybe_suppress_debug_info): Don't check
9198         CLASSTYPE_INTERFACE_ONLY if CLASSTYPE_INTERFACE_KNOWN isn't set.
9199
9200         * pt.c (mark_decl_instantiated): Do SET_DECL_EXPLICIT_INSTANTIATION
9201         here if extern_p.
9202
9203         Remember instantiation context in deferred instantiations.
9204         * cp-tree.h (struct tinst_level): Remove.
9205         (TINST_DECL, TINST_LINE, TINST_FILE): New macros.
9206         * pt.c (current_tinst_level): Now a tree.
9207         (print_template_context, push_tinst_level, pop_tinst_level,
9208         tinst_for_decl): Adjust.
9209         (reopen_tinst_level): New fn.
9210         (init_pt): Register current_tinst_level as a root.
9211         (add_pending_template): Put current_tinst_level in TREE_PURPOSE
9212         of the pending templates list.
9213         (instantiate_pending_templates): Adjust.  Call reopen_tinst_level.
9214         * lex.c (extract_interface_info): Adjust.
9215         * decl2.c (warn_if_unknown_interface): Adjust.
9216
9217 2000-06-05  Mark Mitchell  <mark@codesourcery.com>
9218
9219         * class.c (indirect_primary_base_p): New function.
9220         (determine_primary_base): Use it.
9221
9222 2000-06-05  Nathan Sidwell  <nathan@codesourcery.com>
9223
9224         Update new-abi dynamic cast algorithm.
9225         * tinfo.cc (__class_type_info::__dyncast_result): Add
9226         whole_details. Adjust constructor.
9227         (__vmi_class_type_info::__do_dyncast): Adjust for vmi_flags.
9228         Avoid unnecessary searching.
9229         (__dynamic_cast): Adjust for __dyncast_result::whole_details.
9230
9231 Mon Jun  5 06:48:55 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
9232
9233         * decl.c (init_decl_processing): Don't call record_component_aliases.
9234         * tree.c (build_cplus_array_type_1): Likewise.
9235
9236 2000-06-04  Mark Mitchell  <mark@codesourcery.com>
9237
9238         * ir.texi: Correct typo.
9239         * mangle.c (write_expression): Handle non-type template arguments
9240         with reference type.
9241         * method.c (build_overload_value): Likewise.
9242         * pt.c (convert_nontype_argument): Explicitly represent conversion
9243         to a reference with an ADDR_EXPR.
9244         (unify): Always unify arguments in left-to-right order.
9245
9246 2000-06-03  Alex Samuel    <samuel@codesourcery.com>
9247             Mark Mitchell  <mark@codesourcery.com>
9248
9249         * Make-lang.in (CXX_SRCS): Add mangle.c.
9250         * Makefile.in (CXX_OBJS): Add mangle.o.
9251         (mangle.o): New rule.
9252
9253         * class.c (local_classes): New variable.
9254         * class.c (get_vtable_name): Use mangle_vtable_for_type for new ABI.
9255         (get_vtt_name): Use mangle_vtt_name for new ABI.
9256         (init_class_processing): Initialize local_classes.
9257         (build_ctor_vtbl_group): Use mangle_ctor_vtbl_for_type for new ABI.
9258         * cp-tree.h (cp_tree_index): Add CPTI_STD_IDENTIFIER.
9259         (std_identifier): New macro.
9260         (DECL_VOLATILE_MEMFUNC_P): New macro.
9261         (DECL_NAMESPACE_STD_P): Likewise.
9262         (local_classes): Declare.
9263         (get_mostly_instantiated_function_type): Declare.
9264         (init_mangle): Declare.
9265         (mangle_decl): Likewise.
9266         (mangle_type_string): Likewise.
9267         (mangle_type): Likewise.
9268         (mangle_typeinfo_for_type): Likewise.
9269         (mangle_typeinfo_string_for_type): Likewise.
9270         (mangle_vtbl_for_type): Likewise.
9271         (mangle_vtt_for_type): Likewise.
9272         (mangle_ctor_vtbl_for_type): Likewise.
9273         (mangle_thunk): Likewise.
9274         (mangle_conv_op_name_for_type): Likewise.
9275         (mangle_guard_variable): Likewise.
9276         * decl.c (pushtag): Keep track of local classes.
9277         (initialize_predefined_identifiers): Initialize std_identifier.
9278         (init_decl_processing): Use std_identifier.
9279         (start_decl): Don't treat instantiations as specializations.
9280         (grokdeclarator): Likewise.
9281         (grokvardecl): Call mangle_decl for new ABI.  Only set mangled
9282         name for fully-instantiated templates.
9283         * decl2.c (grokclassfn): Use set_mangled_name_for_decl for
9284         destructors with the new ABI.
9285         (finish_static_data_member_decl): Use mangle_decl under the new ABI.
9286         (grokfield): Use mangle_type for new ABI.
9287         (grokoptypename): Use mangle_conv_op_for_type for new ABI.
9288         (get_sentry): Use mangle_guard_variable for new ABI.
9289         (start_static_initialization_or_destruction): Likewise.
9290         * expr.c (extract_aggr_init): Remove.
9291         (extract_scalar_init): Likewise.
9292         (extract_init): Remove #if 0'd code.
9293         * mangle.c: New function.
9294         * method.c (build_mangled_name): Assert not flag_new_abi.
9295         (build_static_name): Likewise.
9296         (build_decl_overload_real): Likewise.
9297         (build_typename_overload): Likewise.
9298         (build_overload_with_type): Likewise.
9299         (build_overload_name): Likewise.
9300         (get_ctor_vtbl_name): Likewise.
9301         (start_squangling): Likewise.
9302         (get_id_2): Likewise.
9303         (set_mangled_name_for_decl): Call mangle_decl for new ABI.
9304         (init_method): Call init_mangle for new ABI.
9305         (make_thunk): Call mangle_thunk for new ABI.
9306         * operators.def: Correct new ABI manglings for the `%' operator.
9307         Add `::' operator.
9308         * pt.c (build_template_decl): Copy DECL_OVERLOADED_OPERATOR_P and
9309         DECL_ASSIGNMENT_OPERATOR_P to the TEMPLATE_DECL.
9310         (lookup_template_class): Call mangle_decl for new ABI.
9311         (get_mostly_instantiated_function_type): New function.
9312         (set_mangled_name_for_template_decl): Use it.
9313         (tsubst_decl): Use set_mangled_name_for_decl for destructors with
9314         the new ABI.  Use mangle_conv_op_name_for_type for instantiated
9315         conversion op names.
9316         * rtti.c (tinfo_name): Call mangle_type_string for new ABI.
9317         (get_tinfo_decl): Call mangle_typeinfo_for_type for new ABI.
9318         (tinfo_base_init):  Likewise.  Mangle typeinfo string name with
9319         mangle_typeinfo_string_for_type.
9320
9321 2000-06-03  Mark Mitchell  <mark@codesourcery.com>
9322
9323         * cp-tree.h (TMPL_ARGS_LEVEL): Clarify comment.
9324         (INNERMOST_TEMPLATE_ARGS): New macro.
9325         (innermost_args): Remove.
9326         (get_innermost_template_args): New function.
9327         * decl2.c (arg_assoc_class): Use INNERMOST_TEMPLATE_ARGS.
9328         * error.c (dump_function_decl): Be caution when using
9329         most_general_template.
9330         * method.c (build_template_parm_names):  Use
9331         INNERMOST_TEMPLATE_ARGS.
9332         * pt.c (add_to_template_args): Tidy comment
9333         (get_innermost_template_args): New function.
9334         (check_explicit_specialization): Clear DECL_INITIAL for a new
9335         specialization.
9336         (process_partial_specialization): Use INNERMOST_TEMPLATE_ARGS.
9337         Tidy.
9338         (push_template_decl): Always register specializations of the most
9339         general template.
9340         (convert_template_argument): Use INNERMOST_TEMPLATE_ARGS.
9341         (coerce_template_parms): Likewise.
9342         (lookup_template_class): Likewise.
9343         (innermost_args): Remove.
9344         (tsubst_decl): Use INNERMOST_TEMPLATE_ARGS.
9345         (tsubst_decl): Handle tricky specializations.  Use
9346         get_innermost_template_args.
9347         (instantiate_template): Simplify handling of partial
9348         instantiations.
9349         (get_class_bindings): Use INNERMOST_TEMPLATE_ARGS.
9350         (most_general_template): Reimplement, in a more straightforward
9351         manner.
9352         (regenerate_decl_from_template): Tweak formatting.  Use
9353         TMPL_ARGS_DEPTH for clarity.
9354         (set_mangled_name_for_template_decl): Use INNERMOST_ARGS.
9355
9356         * dump.c (dequeue_and_dump): Dump information about thunks.
9357
9358 2000-06-01  Richard Henderson  <rth@cygnus.com>
9359
9360         * decl.c (init_decl_processing): Set lang_get_alias_set first thing.
9361
9362 2000-06-01  Richard Henderson  <rth@cygnus.com>
9363
9364         * decl2.c (unsupported_options): Fix typo, make const.
9365         (lang_decode_option): Fix bsearch argument order.
9366
9367 2000-06-01  Mark Mitchell  <mark@codesourcery.com>
9368
9369         * init.c (resolve_offset_ref): Remove check for TREE_ADDRESSABLE
9370         on FIELD_DECLs.
9371
9372 Wed May 31 14:09:00 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
9373
9374         * cp-tree.h (c_get_alias_set): Deleted.
9375         * Makefile.in (decl.o): Include ../expr.h.
9376         * decl.c (expr.h): Include.
9377         (init_decl_processing): Call record_component_aliases for arrays.
9378         (grokdeclarator): Likewise.
9379         Set TREE_ADDRESSABLE for fields that aren't bitfields.
9380         * tree.c (build_cplus_array_type_1): Call record_component_aliases.
9381
9382 2000-05-31  Mark Mitchell  <mark@codesourcery.com>
9383
9384         Remove guiding declaration support.
9385         * cp/cp-tree.h (flag_dump_translation_unit): Make it const.
9386         (flag_guiding_decls): Remove.
9387         * call.c (build_user_type_conversion_1): Remove support for
9388         guiding decls.
9389         (build_new_function_call): Likewise.
9390         (build_new_op): Likewise.
9391         (build_new_method_call): Likewise.
9392         * decl.c (start_function): Likewise.
9393         * friend.c (is_friend): Likewise.
9394         (do_friend): Likewise.
9395         * decl2.c ((flag_dump_translation_unit): Make it const.
9396         (flag_guiding_decls): Remove.
9397         (unsupported_options): New variable
9398         (compare_options): New function.
9399         (lang_decode_option): Use them.
9400
9401         * decl.c (build_cp_library_fn): Set DECL_CONTEXT.
9402
9403         * method.c (mangle_expression): Adjust test for legal expression
9404         operators.
9405
9406         * pt.c (instantiate_decl): Save and restore the local
9407         specializations list.
9408
9409 2000-05-30  Jason Merrill  <jason@decepticon.cygnus.com>
9410
9411         * decl.c (grok_reference_init): Pass LOOKUP_ONLYCONVERTING.
9412
9413 2000-05-30  Mark Mitchell  <mark@codesourcery.com>
9414
9415         * call.c (add_template_candidate_real): Handle member template
9416         constructors for classes with virtual bases.
9417         (build_user_type_conversion_1): Use in_charge_arg_for_name.
9418         (build_new_method_call): Use DECL_NONSTATIC_MEMBER_FUNCTION_P.
9419
9420         * ir.texi: Update thunk documentation.
9421
9422         * call.c (joust): Fix handling of overloaded builtin operators.
9423
9424 2000-05-30  Zack Weinberg  <zack@wolery.cumb.org>
9425
9426         * cp-tree.h (DECL_ANTICIPATED): New macro.
9427         Document new use of DECL_LANG_FLAG_7.
9428         * decl.c (builtin_function): Set DECL_ANTICIPATED on builtins
9429         in the user namespace.
9430         * lex.c (do_identifier): If the identifier's declaration has
9431         DECL_ANTICIPATED on, it has not yet been declared.  But do not
9432         replace it with an ordinary implicit declaration.
9433
9434         * tinfo2.cc: Include stdlib.h.
9435
9436 2000-05-29  Mark Mitchell  <mark@codesourcery.com>
9437
9438         * cp-tree.h (CLASSTYPE_ALIGN_UNIT): New macro.
9439         * class.c (layout_empty_base): Use CLASSTYPE_ALIGN_UNIT, not
9440         CLASSTYPE_ALIGN.
9441
9442 2000-05-28  Gabriel Dos Reis  <gdr@codesourcery.com>
9443
9444         * decl2.c (lang_decode_option): Use skip_leading_substring instead
9445         of plain strncmp.
9446
9447 2000-05-28  Alexandre Oliva  <aoliva@cygnus.com>
9448
9449         * operators.def (<?): Duplicated, should have been...
9450         (>?): this.  Fixed.
9451
9452 2000-05-27  Alex Samuel    <samuel@codesourcery.com>
9453             Mark Mitchell  <mark@codesourcery.com>
9454
9455         * cp-tree.h (ansi_opname): Make it a macro.
9456         (ansi_assopname): Likewise.
9457         (struct lang_decl_flags): Add assignment_operator_p.
9458         (struct lang_decl): Add operator_code.
9459         (DECL_VTT_PARM): Adjust.
9460         (DECL_OVERLOADED_OPERATOR_P): Return the operator_code for an
9461         overloaded operator.
9462         (SET_OVERLOADED_OPERATOR_CODE): New macro.
9463         (DECL_ASSIGNMENT_OPERATOR_P): New macro.
9464         (DECL_ARRAY_DELETE_OPERATOR_P): Adjust.
9465         (opname_tab): Remove.
9466         (assignop_tab): Likewise.
9467         (operator_name_info_t): New type.
9468         (operator_name_info): New variable.
9469         (assignment_operator_name_info): Likewise.
9470         (build_cp_library_fn): Remove declaration.
9471         (push_cp_library_fn): Likewise.
9472         (operator_name_string): Likewise.
9473         (build_decl_overload): Likewise.
9474         * call.c (print_z_candidates): Simplify.
9475         (build_object_call): Adjust usage of ansi_opname.  Use
9476         DECL_OVERLOADED_OPERATOR_P.
9477         (op_error): Adjust operator name lookup.
9478         (build_conditional_expr): Adjust usage of ansi_opname.
9479         (build_new_op): Likewise.
9480         (build_op_delete_call): Likewise.
9481         (build_over_call): Likewise.
9482         (joust): Use DECL_OVERLOADED_OPERATOR_P.
9483         * decl.c (duplicate_decls): Copy operator_code.
9484         (init_decl_processing): Adjust parameters to push_cp_library_fn.
9485         (builtin_function): Adjust parameters to build_library_fn_1.
9486         (build_library_fn_1): Accept an overloaded operator code.
9487         (build_library_fn): Pass ERROR_MARK.
9488         (build_cp_library_fn): Accept an overloaded operator code.
9489         (push_cp_library_fn): Likewise.
9490         (grokfndecl): Tweak.
9491         (grokdeclarator): Simplify code to compute names of overloaded
9492         operators.  Adjust use of ansi_opname.
9493         (ambi_op_p): Work on tree_codes, not identifiers.
9494         (unary_op_p): Likewise.
9495         (grok_op_properties): Likewise.
9496         (start_function): Use DECL_OVERLOADED_OPERATOR_P.
9497         (lang_mark_tree): Don't try to mark the operator_code.
9498         * decl2.c (grok_function_init): Use DECL_OVERLOADED_OPERATOR_P.
9499         * error.c (dump_decl): Remove special handling for operator
9500         names.
9501         (dump_function_name): Likewise.
9502         (dump_expr): Adjust name lookup of operators.
9503         (op_to_string): Simplify.
9504         (assop_to_string): Likewise.
9505         * init.c (build_new_1): Adjust use of ansi_opname.
9506         * lex.c (opname_tab): Remove.
9507         (assignop_tab): Likewise.
9508         (ansi_opname): Likewise.
9509         (ansi_assopname): Likewise.
9510         (operator_name_string): Likewise.
9511         (reinit_lang_specific): Likewise.
9512         (operator_name_info): New variable.
9513         (assignment_operator_name_info): Likewise.
9514         (init_operators): New function.
9515         (init_parse): Use it.
9516         (do_identifier): Adjust use of ansi_opname.
9517         * method.c (mangle_expression): Don't use ansi_opname for
9518         mangling.
9519         (build_decl_overload_real): Use DECL_OVERLOADED_OPERATOR_P.
9520         (build_decl_overload): Remove.
9521         (build_typename_overload): Use OPERATOR_TYPENAME_FORMAT directly.
9522         (do_build_assign_ref): Adjust use of ansi_opname.
9523         (synthesize_method): Likewise.
9524         (implicitly_declare_fn): Likewise.
9525         * operators.def: New file.
9526         * parse.y (operator): Adjust use of ansi_opname.
9527         * pt.c (tsubst_decl): Use IDENTIFIER_OPNAME_P.
9528         (set_mangled_name_for_template_decl): Don't play games with
9529         current_namespace.
9530         (special_function_p): Adjust use of ansi_opname.
9531         * typeck.c (check_return_expr): Likewise.
9532         * Make-lang.in (cc1plus): Depend on operators.def.
9533         * Makefile.in (lex.o): Likewise.
9534         (decl.o): Likewise.
9535
9536 2000-05-27  Zack Weinberg  <zack@wolery.cumb.org>
9537
9538         * Make-lang.in (cplib2.ready): Eradicate.
9539
9540 Sat May 27 11:25:46 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
9541
9542         * method.c (mangle_expression): Use TREE_CODE_LENGTH.
9543         * tree.c (break_out_calls, build_min_nt): Use TREE_CODE_LENGTH.
9544         (built_min, cp_tree_equal): Likewise.
9545
9546 2000-05-26  Mark Mitchell  <mark@codesourcery.com>
9547
9548         * class.c (layout_nonempty_base_or_field): Replace
9549         `record_layout_info' with `record_layout_info_s'.
9550
9551 2000-05-26  Jason Merrill  <jason@casey.soma.redhat.com>
9552
9553         Fix goto checking.
9554         * cp-tree.h (struct language_function): x_named_labels is now
9555         a struct named_label_list*.
9556         * decl.c (struct named_label_use_list): Renamed from...
9557         (struct named_label_list): ...this.  New struct.
9558         (push_binding_level): Don't set eh_region.
9559         (note_level_for_eh): New fn.
9560         (pop_label): Take label and old value directly.
9561         (pop_labels): Adjust for new named_labels format.
9562         (lookup_label): Likewise.
9563         (poplevel): Note characteristics of a binding level containing a
9564         named label.  Mess with named label lists earlier.
9565         (mark_named_label_lists): New fn.
9566         (mark_lang_function): Call it.
9567         (use_label): New fn, split out from...
9568         (make_label_decl): ...here.  Don't call it.
9569         (decl_jump_unsafe, check_previous_goto, check_previous_goto_1,
9570         check_previous_gotos): New fns, split out from...
9571         (define_label): ...here.
9572         (check_switch_goto): New fn.
9573         (define_case_label): Call it.
9574         (check_goto): New fn.
9575         * semantics.c (finish_goto_stmt): Call it and use_label.
9576         (begin_compound_stmt): If we're a try block, call note_level_for_eh.
9577         (expand_stmt): Never pass 1 as DONT_JUMP_IN to expand_end_bindings.
9578
9579 2000-05-26  Mark Mitchell  <mark@codesourcery.com>
9580
9581         * class.c (build_vtable_entry_ref): Correct usage of
9582         get_vtbl_decl_for_binfo.
9583
9584         * decl2.c (grokclassfn): Set DECL_LANGUAGE here.
9585         * method.c (implicitly_declare_fn): Not here.
9586
9587 2000-05-26  Nathan Sidwell  <nathan@codesourcery.com>
9588
9589         * cp-tree.h (CPTI_PTMD_DESC_TYPE): Rename to ...
9590         (CPTI_PTMD_DESC_TYPE): ... here.
9591         (ptmd_desc_type_node): Rename to ...
9592         (ptm_desc_type_node): ... here.
9593         * decl.c: Likewise.
9594         * rtti.c (ptmd_initializer): Rename to ...
9595         (ptm_initializer): ... here.
9596         (sythesize_tinfo_var): Adjust. Deal with pointer to member
9597         function.
9598         (create_tinfo_types): Adjust.
9599
9600 2000-05-25  Mark Mitchell  <mark@codesourcery.com>
9601
9602         Finish implementation of VTTs.
9603         * cp-tree.h (cp_tree_index): Add CPTI_VTT_PARM_TYPE and
9604         CPTI_VTT_PARM_IDENTIFIER.
9605         (vtt_parm_identifier): New macro.
9606         (vtt_parm_type): Likewise.
9607         (BINFO_SUBVTT_INDEX): Likewise.
9608         (BINFO_VPTR_INDEX): Likewise.
9609         (struct lang_decl): Add vtt_parm.
9610         (DECL_VTT_PARM): New macro.
9611         (DECL_USE_VTT_PARM): Likewise.
9612         (DECL_NEEDS_VTT_PARM_P): Likewise.
9613         (get_vtt_name): Declare.
9614         (build_artificial_parm): Likewise.
9615         (fixup_all_virtual_upcast_offsets): Likewise.
9616         (expand_indirect_vtbls_init): Remove.
9617         * call.c (build_new_method_call): Pass the vtt to subobject
9618         constructors and destructors.
9619         * class.c (get_vtt_name): Give it external linkage.
9620         (build_clone): Handle the magic VTT parameters for clones.
9621         (clone_function_decl): Fix typo in comment.
9622         (build_vtt): Keep track of the indices in the VTTs where various
9623         entities are stored.
9624         (build_vtt_inits): Likewise.
9625         (dfs_build_vtt_inits): Likewise.
9626         (build_ctor_vtbl_group): Tweak type of construction vtables.
9627         (dfs_accumulate_vtbl_inits): Build vtables for all bases, even
9628         primary bases, when building construction vtables.
9629         * decl.c (duplicate_decls): Handle DECL_VTT_PARM.
9630         (initialize_predefined_identifiers): Add vtt_parm_identifier.
9631         (init_decl_processing): Initialize vtt_parm_type.
9632         (grokfndecl): Use DECL_OVERLOADED_OPERATOR_P.
9633         (lang_mark_tree): Make vtt_parm.
9634         * decl2.c (build_artificial_parm): New function.
9635         (maybe_retrofit_in_chrg): Use it.  Add VTT parameters.
9636         (grokclassfn): Use build_artificial_parm.
9637         * init.c (initialize_vtbl_ptrs): Call
9638         fixup_all_virtual_upcast_offsets directly.
9639         (perform_member_init): Use the complete subobject destructor for
9640         member cleanups.
9641         (build_vtbl_address): New function.
9642         (expand_virtual_init): Handle VTTs.
9643         * optimize (maybe_clone_body): Likewise.
9644         * search.c (fixup_all_virtual_upcast_offsets): Give it external
9645         linkage.
9646         (expand_indirect_vtbls_init): Remove.
9647         * semantics.c (setup_vtbl_ptr): Fix typos in comment.
9648         * tree.c (make_binfo): Make them bigger.
9649
9650 2000-05-25  Nathan Sidwell  <nathan@codesourcery.com>
9651
9652         * inc/cxxabi.h (__pbase_type_info): Define, based on
9653         __pointer_type_info.
9654         (__pointer_type_info): Derive from __pbase_type_info. Adjust.
9655         (__pointer_to_member_type_info): Likewise.
9656         * tinfo2.cc (__pbase_type_info::~__pbase_type_info): Implement.
9657         (__pointer_to_member_type_info::__is_pointer_p): Remove.
9658         (__pointer_type_info::__do_catch): Rename to ...
9659         (__pbase_type_info::__do_catch): ... here. Adjust.
9660         (__pbase_type_info::__pointer_catch): Implement.
9661         (__pointer_type_info::__pointer_catch): Adjust.
9662         (__pointer_to_member_type_info::__pointer_catch): Adjust.
9663
9664 2000-05-25  Nathan Sidwell  <nathan@codesourcery.com>
9665
9666         * tinfo.h (__user_type_info::contained_virtual_p): New
9667         predicate.
9668         * tinfo.cc (__user_type_info::do_upcast): Fix bug with diamond
9669         shaped hierarchy.
9670         (__vmi_class_type_info::__do_upcast): Fix bug with NULL pointer to
9671         diamond shaped hierarchy. Add early out for mixed diamond and
9672         duplicate shaped hierarchy.
9673
9674 2000-05-24  Mark Mitchell  <mark@codesourcery.com>
9675
9676         * cp-tree.h (build_delete): Change prototype.
9677         (build_vec_delete): Likewise.
9678         * call.c (build_scoped_method_call): Use special_function_kind
9679         values to indicate the kind of destruction to be done.
9680         (build_method_call): Likewise.
9681         * decl.c (finish_destructor_body): Likewise.
9682         (maybe_build_cleanup_1): Likewise.  Rename to ...
9683         (maybe_build_cleanup): ... this.
9684         * decl2.c (delete_sanity): Use special_function_kind
9685         values to indicate the kind of destruction to be done.
9686         (build_cleanup): Likewise.
9687         * init.c (perform_member_init): Likewise.
9688         (build_vec_delete_1): Likewise.
9689         (build_dtor_call): Simplify.
9690         (build_delete): Use special_function_kind
9691         values to indicate the kind of destruction to be done.
9692         (build_vbase_delete): Likewise.
9693         (build_vec_delete): Likewise.
9694
9695         * init.c (sort_member_init): Fix typo in error message generation
9696         code.
9697
9698 Mon May 15 11:46:29 2000  Donald Lindsay  <dlindsay@cygnus.com>
9699
9700         * semantics.c (begin_class_definition): make the packed
9701         attribute be sensitive to the "-fpack-struct" command line flag
9702
9703 2000-05-24  Nathan Sidwell  <nathan@codesourcery.com>
9704
9705         Update new-abi upcast algorithm.
9706         * inc/cxxabi.h (__class_type_info::__do_upcast): Change
9707         prototype and meaning of return value.
9708         (__si_class_type_info::__do_upcast): Likewise.
9709         (__vmi_class_type_info::__do_upcast): Likewise.
9710         * tinfo.cc (__class_type_info::__upcast_result): Replace
9711         whole2dst with part2dst. Adjust ctor.
9712         (__class_type_info::__do_upcast): Adjust call of worker function.
9713         (__class_type_info::__do_upcast): Adjust.
9714         (__si_class_type_info::__do_upcast): Adjust. Use parent's
9715         __do_upcast.
9716         (__vmi_class_type_info::__do_upcast): Likewise. Fix private
9717         virtual base in diamond hierarchy bug.
9718
9719 2000-05-23  Mark Mitchell  <mark@codesourcery.com>
9720
9721         * cp-tree.h (lang_decl_flags): Rename mutable_flag to uninlinable
9722         and bitfield to tinfo_fn_p.
9723         (DECL_TINFO_FN_P): Adjust.
9724         (SET_DECL_TINFO_FN_P): Likewise.
9725         (DECL_MUTABLE_P): Likewise.
9726         (DECL_C_BIT_FIELD): Likewise.
9727         (SET_DECL_C_BIT_FIELD): Likewise.
9728         (CLEAR_DECL_C_BIT_FIELD): Likewise.
9729         (DECL_UNINLINABLE): Likewise.
9730         * class.c (alter_access): Call retrofit_lang_decl if ncessary.
9731         (handle_using_decl): Remove assertion.
9732         (build_vtbl_or_vbase_field): Use build_decl, not build_lang_decl,
9733         to build FIELD_DECLs.
9734         (build_base_field): Likewise.
9735         (layout_class_type): Likewise.
9736         * decl.c (init_decl_processing): Likewise.
9737         (build_ptrmemfunc_type): Likewise.
9738         (grokdeclarator): Likewise.
9739         * decl2.c (grok_x_components): Likewise.
9740         * except.c (call_eh_info): Likewise.
9741         * init.c (init_init_processing): Likewise.
9742         * rtti.c (expand_class_desc): Likewise.
9743         (create_pseudo_type_info): Likewise.
9744         (get_vmi_pseudo_type_info): Likewise.
9745         (create_tinfo_types): Likewise.
9746         * ptree.c (print_lang_decl): Adjust.
9747         * typeck.c (build_component_ref): Don't check DECL_LANG_SPECIFIC
9748         before checking DECL_MUTABLE_P.
9749
9750         * decl2.c (maybe_retrofit_in_chrg): Don't create in-charge
9751         parameters for template functions.
9752         * pt.c (tsubst_decl): Make sure we call maybe_retrofit_in_chrg for
9753         destructors as well as constructors.
9754
9755 2000-05-22  Mark Mitchell  <mark@codesourcery.com>
9756
9757         * class.c (build_ctor_vtbl_group): Set inits.
9758         * optimize.c (maybe_clone_body): Set DECL_INLINE and
9759         DECL_THIS_INLINE appropriately for clones.
9760
9761         * cp-tree.h (IDENTIFIER_TYPENAME_P): Use a flag, not strncmp.
9762         (DECL_CONV_FN_P): Simplify.
9763         (DECL_OPERATOR): Remove.
9764         (language_to_string): Declare.
9765         * decl.c (duplicate_decls): Fix typo in comment.
9766         (grokdeclarator): Adjust use of IDENTIFIER_TYPENAME_P.
9767         (grok_op_properties): Use DECL_CONV_FN_P instead of
9768         IDENTIFIER_TYPENAME_P.
9769         * dump.c (dequeue_and_dump): Dump the language linkage of
9770         declarations.
9771         * error.c (language_to_string): Give it external linkage.
9772         * method.c (build_typename_overload): Set IDENTIFIER_TYPENAME_P.
9773         (implicitly_declare_fn): Set DECL_LANGUAGE.
9774         * pt.c (check_explicit_specialization): Use DECL_CONV_FN_P, not
9775         IDENTIFIER_TYPENAME_P.
9776         (tsubst_decl): Likewise.
9777         (tsubst_copy): Adjust use of IDENTIFIER_TYPENAME_P.
9778         * semantics.c (finish_member_declaration): Don't mark members of
9779         classes declared in an extern "C" region as extern "C".
9780
9781 2000-05-22  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
9782
9783         * decl2.c (qualified_lookup_using_namespace): Look through
9784         namespace aliases.
9785
9786         * decl.c (push_using_decl): Return the old decl on namespace level.
9787
9788 2000-05-21  Mark Mitchell  <mark@codesourcery.com>
9789
9790         * cp-tree.h (SET_BINFO_NEW_VTABLE_MARKED): Add sanity checks.
9791         (VTT_NAME_PREFIX): New macro.
9792         (CTOR_VTBL_NAME_PREFIX): Likewise.
9793         (get_ctor_vtbl_name): New function.
9794         * class.c (get_vtable_name): Simplify.
9795         (get_vtt_name): New function.
9796         (get_vtable_decl): Don't set IDENTIFIER_GLOBAL_VALUE.
9797         (dfs_mark_primary_bases): Update the CLASSTYPE_VBASECLASSES list
9798         when a virtual base becomes primary.
9799         (finish_struct_1): Set CLASSTYPE_VFIELDS a little earlier.  Build
9800         VTTs.
9801         (finish_vtbls): Adjust calls to accumulate_vtbl_inits to pass in
9802         additional parameters.
9803         (dfs_finish_vtbls): Don't clear BINFO_NEW_VTABLE_MARKED.
9804         (initialize_array): New function.
9805         (build_vtt): Likewise.
9806         (build_vtt_inits): Likewise.
9807         (dfs_build_vtt_inits): Likewise.
9808         (dfs_fixup_binfo_vtbls): Likewise.
9809         (build_ctor_vtbl_group): Likewise.
9810         (initialize_vtable): Use initialize_array.
9811         (accumulate_vtbl_inits): Reimplement to handle construction
9812         vtables.
9813         (dfs_accumulate_vtbl_inits): Likewise.
9814         (bulid_vtbl_initializer): Adjust parameter name.
9815         * method.c (build_typename_overload): Remove #if 0'd code.
9816         (get_ctor_vtbl_name): New function.
9817         * search.c (dfs_walk_real): Use BINFO_N_BASETYPES.
9818         (init_vbase_pointers): Don't mess with the TREE_CHAIN of a binfo.
9819
9820         * cp-tree.h (struct lang_type): Remove search_slot.
9821         (CLASSTYPE_SEARCH_SLOT): Remove.
9822         (emit_base_init): Change prototype.
9823         (initialize_vtbl_ptrs): Likewise.
9824         (expand_indirect_vtbls_init): Likewise.
9825         (clear_search_slots): Remove.
9826         * decl.c (lang_mark_tree): Don't mark search_slot.
9827         * init.c (initialize_vtbl_ptrs): Simplify.
9828         (emit_base_init): Likewise.
9829         * search.c (struct vbase_info): Document decl_ptr.
9830         (convert_pointer_to_single_level): Remove.
9831         (dfs_find_vbases): Remove.
9832         (dfs_init_base_pointers): Simplify.
9833         (dfs_clear_vbase_slots): Remove.
9834         (dfs_vtable_path_unmark): New function.
9835         (init_vbase_pointers): Simplify.
9836         (expand_upcast_fixups): Don't rely on CLASSTYPE_SEARCH_SLOT.
9837         (expand_indirect_vtbls_init): Simplify.  Don't call
9838         mark_all_temps_used.
9839         * semantics.c (setup_vtbl_ptr): Adjust calls to emit_base_init and
9840         initialize_vtbl_ptrs.
9841
9842 2000-05-20  Zack Weinberg  <zack@wolery.cumb.org>
9843
9844         * except.c: Add static prototypes.
9845
9846 2000-05-20  H.J. Lu  <hjl@gnu.org>
9847
9848         * Make-lang.in (cplib2.ready): Also depend on cc1plus$(exeext).
9849
9850 2000-05-19  Mark Mitchell  <mark@codesourcery.com>
9851
9852         Don't create a separate copy of virtual bases for the
9853         CLASSTYPE_VBASECLASSES list.
9854         * cp-tree.h (CLASSTYPE_VBASECLASSES): Change documentation.
9855         (BINFO_FOR_VBASE): Remove.
9856         (CANONICAL_BINFO): Adjust.
9857         (binfo_for_vbase): New function.
9858         * class.c (build_vbase_pointer_fields): Use binfo_for_vbase
9859         instead of BINFO_FOR_VBASE.
9860         (build_vbase_pointer): Likewise.
9861         (build_secondary_vtable): Likewise.
9862         (dfs_mark_primary_bases): Likewise.
9863         (mark_primary_bases): Likewise.
9864         (layout_nonempty_base_or_field): Likewise.
9865         (dfs_set_offset_for_shared_vbases): Likewise.
9866         (dfs_set_offset_for_unshared_vbases): Likewise.
9867         (layout_virtual_bases): Likewise.  Adjust for changes to the
9868         CLASSTYPE_VBASECLASSES list.
9869         (dump_class_hierarchy_r): Use binfo_for_vbase
9870         instead of BINFO_FOR_VBASE.
9871         (dump_class_hierarchy): Likewise.
9872         (finish_vtbls): Likewise.
9873         (build_vtbl_initializer): Adjust for changes to the
9874         CLASSTYPE_VBASECLASSES list.
9875         (build_vbase_offset_vtbl_entries): Use binfo_for_vbase.
9876         * decl.c (finish_destructor_body): Adjust for changes to the
9877         CLASSTYPE_VBASECLASSES list.
9878         * init.c (sort_base_init): Use binfo_for_vbase.
9879         (construct_virtual_bases): Adjust for changes to the
9880         CLASSTYPE_VBASECLASSES list.
9881         (expand_member_init): Use binfo_for_vbase.
9882         (build_vbase_delete):  Adjust for changes to the
9883         CLASSTYPE_VBASECLASSES list.
9884         * method.c (do_build_copy_constructor): Likewise.
9885         * rtti.c (get_base_offset): Use binfo_for_vbase.
9886         (expand_class_desc): Remove #if 0'd code.
9887         * search.c (struct vbase_info): Remove vbase_types.
9888         (get_base_distance):  Use binfo_for_vbase.
9889         (lookup_field_queue_p): Use CANONICAL_BINFO.
9890         (get_shared_vbase_if_not_primary): Use binfo_for_vbase.
9891         (get_pure_virtuals): Adjust for changes to the
9892         CLASSTYPE_VBASECLASSES list.
9893         (dfs_find_vbases): Use binfo_for_vbase.
9894         (dfs_init_vbase_pointers): Likewise.
9895         (init_vbase_pointers): Don't initialize vi.vbase_types.
9896         (virtual_context): Use binfo_for_vbase.
9897         (fixup_all_virtual_upcast_offsets): Adjust for changes to the
9898         CLASSTYPE_VBASECLASSES list.
9899         (expand_indirect_vtbls_init): Simplify.
9900         (dfs_get_vbase_types): Don't replicate virtual bases.
9901         (find_vbase_instance): Use binfo_for_vbase.
9902         (binfo_for_vbase): New function.
9903         * typeck.c (get_delta_difference): Use binfo_for_vbase.
9904
9905 2000-05-17  Mark Mitchell  <mark@codesourcery.com>
9906
9907         * decl2.c (finish_anon_union): Generalize error messages to handle
9908         anonymous structures.
9909         * init.c (perform_member_init): Remove `name' parameter.
9910         (build_field_list): New function.
9911         (sort_member_init): Handle anonymous union initialization order
9912         correctly.  Check for multiple initializations of the same union.
9913         (emit_base_init): Don't look up fields by name here.
9914         (expand_member_init): Record the result of name lookup for future
9915         reference.
9916         * typeck.c (build_component_ref): Fix formatting.
9917
9918 Wed May 17 17:27:44 2000  Andrew Cagney  <cagney@b1.cygnus.com>
9919
9920         * decl.c (pop_label): Replace warn_unused with warn_unused_label.
9921         * typeck.c (build_x_compound_expr): Replace warn_unused with
9922         warn_unused_value.
9923
9924         * decl2.c (lang_decode_option): Update -Wall unused flags by
9925         calling set_Wunused.
9926
9927 2000-05-16  Mark Mitchell  <mark@codesourcery.com>
9928
9929         * cp-treeh (BINFO_NEW_VTABLE_MARKED): Update documentation.
9930         * init.c (dfs_vtable_path_unmark): Remove.
9931         * search.c (marked_new_vtable_p): Likewise.
9932         (unmarked_new_vtable_p): Likewise.
9933         (dfs_search_slot_nonempty_p): Likewise.
9934         (dfs_mark): Likewise.
9935         (dfs_vtable_path_unmark): Likewise.
9936         (dfs_find_vbases): Don't set BINFO_NEW_VTABLE_MARKED.
9937         (dfs_int_vbase_pointers): Don't clear BINFO_VTABLE_PATH_MARKED.
9938         (dfs_init_vbase_pointers): Remove special-case new ABI code.
9939         (dfs_clear_vbase_slots): Don't clear BINFO_NEW_VTABLE_MARKED.
9940         (init_vbase_pointers): Simplify.
9941         (expand_indirect_vtbls_init): Likewise.
9942
9943         * class.c (copy_virtuals): New function.
9944         (build_primary_table): Use it.
9945         (build_secondary_vtable): Likewise.
9946         (modify_vtable_entry): Use NULL_TREE, not integer_zero_node, to
9947         indicate that no vcall offset is required.
9948         (add_virtual_function): Likewise.
9949         (modify_all_vtables): Likewise.
9950         (dfs_finish_vtbls): Adjust call to build_vtbl_initializer.
9951         (dfs_accumulate_vtbl_inits): Likewise.
9952         (build_vtbl_initializer): Make changes to handle construction
9953         vtables.
9954         (dfs_build_vcall_offset_vtbl_entries): Likewise.
9955         (build_rtti_vtbl_entries): Likewise.
9956         (build_vtable_entries): Handle a NULL vcall_index.
9957
9958 2000-05-15  Gabriel Dos Reis  <gdr@codesourcery.com>
9959
9960         * decl2.c (lang_decode_option): Fix thinko.
9961
9962 2000-05-14  Jason Merrill  <jason@casey.cygnus.com>
9963
9964         * except.c (check_handlers): New fn.
9965         * cp-tree.h: Declare it.
9966         * semantics.c (finish_handler_sequence): Call it.
9967         (finish_function_handler_sequence): Likewise.
9968         (finish_handler_parms): Set TREE_TYPE on the handler.
9969         * cp-tree.h (PUBLICLY_UNIQUELY_DERIVED_P): New macro.
9970         * search.c (get_base_distance_recursive): If protect>1, ignore
9971         special access.
9972         (get_base_distance): Don't reduce watch_access.
9973
9974 2000-05-13  Gabriel Dos Reis <gdr@codesourcery.com>
9975
9976         * lex.c: #include diagnostic.h.
9977         (lang_init_options): Set default prefixing rules.
9978
9979         * lang-options.h: Add -fdiagnostics-show-location=.
9980
9981         * decl2.c: #include diagnostic.h.
9982         (lang_decode_option): Handle -fdiagnostics-show-location=.
9983
9984 2000-05-12  Nathan Sidwell  <nathan@codesourcery.com>
9985
9986         * tinfo.cc: Revert my 2000-05-08 and 2000-05-07 changes.
9987         * vec.cc: Revert my 2000-05-07 change.
9988
9989 2000-05-11  Jason Merrill  <jason@casey.cygnus.com>
9990
9991         * class.c (check_field_decls): Complain about non-static data
9992         members with same name as class in class with constructor.
9993
9994 2000-05-10  Jason Merrill  <jason@casey.cygnus.com>
9995
9996         * decl.c (grokdeclarator): Allow non-static data members with
9997         same name as class.
9998
9999 2000-05-09  Zack Weinberg  <zack@wolery.cumb.org>
10000
10001         * cp-tree.h: Constify tree_srcloc.filename, tinst_level.file,
10002         and pending_inline.filename.  Update prototypes.
10003         * decl.c (define_label): Constify filename parameter.
10004         * decl2.c (warn_if_unknown_interface): Constify local char *.
10005         * input.c Constify input_source.filename. Don't declare
10006         input_filename or lineno.  Constify filename parameter to feed_input.
10007         * lex.c (init_parse): Constify parameter and return value.
10008         (cp_pragma_interface, cp_pragma_implementation): Constify
10009         filename argument.
10010         (reinit_parse_for_method, reinit_parse_for_block,
10011         reinit_parse_for_expr, feed_defarg, handle_cp_pragma):
10012         Constify local char *.
10013         * pt.c: Don't declare lineno or input_filename.
10014         (print_template_context, tsubst_friend_function, tsubst_decl,
10015         tsubst, instantiate_decl): Constify local char *.
10016         * semantics.c (expand_body): Constify local char *.
10017         * tree.c (build_srcloc): Constify filename parameter.
10018         * typeck.c (c_expand_asm_operands): Constify filename
10019         parameter.
10020
10021 2000-05-08  Nathan Sidwell  <nathan@codesourcery.com>
10022
10023         * tinfo.cc (__dynamic_cast): Use a reinterpret_cast. Fix
10024         offsetof expansion.
10025
10026 2000-05-08  Branko Cibej  <branko.cibej@hermes.si>
10027
10028         * inc/cxxabi.h:  Fix typos in comment.
10029         (__base_class_info::__offset): Use a static_cast.
10030
10031 2000-05-07  Nathan Sidwell  <nathan@codesourcery.com>
10032
10033         * inc/cxxabi.h: Use __SIZE_TYPE_ and __PTRDIFF_TYPE__ in place
10034         of std::size_t and std::ptrdiff_t respectively.
10035         * tinfo.cc: Likewise.
10036         * vec.cc: Likewise.
10037
10038 2000-05-06  Richard Henderson  <rth@cygnus.com>
10039
10040         * typeck.c (build_c_cast): Don't warn integer->pointer size
10041         mismatch for constants.
10042
10043 2000-05-06  Nathan Sidwell  <nathan@codesourcery.com>
10044
10045         * rtti.c (ptmd_initializer): Set non-public, if class is
10046         incomplete.
10047
10048         * inc/cxxabi.h (__dynamic_cast): Explicitly say extern "C++".
10049         (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
10050         __cxa_vec_delete): Likewise.
10051         * tinfo.cc (__dynamic_cast): Likewise.
10052         * vec.cc (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
10053         __cxa_vec_delete): Likewise.
10054
10055 2000-05-04  Mark Mitchell  <mark@codesourcery.com>
10056
10057         * cp-tree.h (DELTA_FROM_VTABLE_ENTRY): Remove.
10058         (SET_FNADDR_FROM_VTABLE_ENTRY): Likewise.
10059         (lang_decl_flags): Add vcall_offset.
10060         (THUNK_VCALL_OFFSET): Use it.
10061         * decl.c (lang_mark_tree): Don't mark DECL_ACCESS for a thunk.
10062         * method.c (make_thunk): Create the lang_decl here, not in
10063         emit_thunk.
10064         (emit_thunk): Make generic thunks into ordinary functions once
10065         they have been fed to expand_body.
10066         * semantics.c (expand_body): Set current_function_is_thunk here.
10067
10068 2000-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10069
10070         * class.c (update_vtable_entry_for_fn): Prototype.
10071
10072         * pt.c (tsubst_decl): Initialize variables `argvec', `gen_tmpl'
10073         and `tmpl'.
10074
10075         * search.c (dfs_build_inheritance_graph_order): Prototype.
10076
10077 2000-05-04  Mark Mitchell  <mark@codesourcery.com>
10078
10079         * cp-tree.h (special_function_kind): Add various kinds of
10080         destructors.
10081         (special_function_p): New function.
10082         * class.c (overrides): Don't let one kind of destructor override
10083         another.
10084         * decl2.c (mark_used): Use DECL_NON_THUNK_FUNCTION_P when deciding
10085         whether or not to instantiate a template.
10086         * tree.c (special_function_p): Define.
10087
10088 2000-05-03  Mark Mitchell  <mark@codesourcery.com>
10089
10090         * cp-tree.def (THUNK_DECL): Remove.
10091         * cp-tree.h (DECL_THUNK_P): New macro.
10092         (DECL_NON_THUNK_FUNCTION_P): Likewise.
10093         (DECL_EXTERN_C_FUNCTION_P): Likewise.
10094         (SET_DECL_THUNK_P): Likewise.
10095         (DELTA_FROM_VTABLE_ENTRY): Use DECL_THUNK_P.
10096         (FNADDR_FROM_VTABLE_ENTRY): Likewise.
10097         (DECL_MAIN_P): Use DECL_EXTERN_C_FUNCTION_P.
10098         * decl.c (decls_match): Use DECL_EXTERN_C_P.
10099         (duplicate_decls): Likewise.
10100         (pushdecl): Likewise.  Adjust thunk handling.
10101         (grokfndecl): Use DECL_EXTERN_C_P.
10102         * decl2.c (mark_vtable_entries): Use DECL_THUNK_P.
10103         * dump.c (dequeue_and_dump): Remove THUNK_DECL handling.
10104         * except.c (nothrow_libfn_p): Use DECL_EXTERN_C_P.
10105         * expr.c (cplus_expand_expr): Remove THUNK_DECL handling.
10106         * method.c (make_thunk): Use SET_DECL_THUNK_P.  Set
10107         DECL_NO_STATIC_CHAIN.
10108         (emit_thunk): Don't play games with TREE_CODE on thunks.  Don't
10109         set DECL_DESTRUCTOR_P or DECL_CONSTRUCTOR_P on a thunk.
10110         * search.c (covariant_return_p): Remove THUNK_DECL handling.
10111         * ir.texi: Update.
10112
10113 2000-05-01  Jason Merrill  <jason@casey.cygnus.com>
10114
10115         * tree.c (walk_tree): Set lineno.
10116
10117 2000-05-01  Mark Mitchell  <mark@codesourcery.com>
10118
10119         * exception.cc: Update license notice.
10120         * new.cc: Likewise.
10121         * new1.cc: Likewise.
10122         * new2.cc: Likewise.
10123         * tinfo.cc: Likewise.
10124         * tinfo2.cc: Likewise.
10125         * vec.cc: Likewise.
10126         * inc/cxxabi.h: Likewise.
10127         * inc/exception: Likewise.
10128         * inc/new: Likewise.
10129         * inc/new.h: Likewise.
10130         * inc/typeinfo: Likewise.
10131
10132 2000-05-01  Jason Merrill  <jason@casey.cygnus.com>
10133
10134         * tree.c (build_target_expr_with_type): If we already have a
10135         TARGET_EXPR, just return it.
10136
10137         * optimize.c (initialize_inlined_parameters): Don't generate an
10138         EXPR_STMT if we can just use DECL_INITIAL.
10139         * decl.c (emit_local_var): Only make the initialization a
10140         full-expression if stmts_are_full_exprs_p.
10141
10142 2000-05-01  Mark Mitchell  <mark@codesourcery.com>
10143
10144         * cp-tree.h (same_type_ignoring_top_level_qualifiers_p): New
10145         macro.
10146         * call.c (standard_conversion): Use it.
10147         (direct_reference_binding): Likewise.
10148         (build_over_call): Likewise.
10149         (is_properly_derived_from): Likewise.
10150         (compare_ics): Likewise.
10151         * class.c (resolves_to_fixed_type_p): Likewise.
10152         * optimize.c (declare_return_variable): Likewise.
10153         * pt.c (is_specialization_of): Likewise.
10154         (unify): Likewise.
10155         * typeck.c (comp_target_parms): Likeiwse.
10156         (build_static_cast): Likewise.
10157         (build_reinterpret_cast): Likewise.
10158         (build_const_cast): Likewise.
10159         (comp_ptr_ttypes_real): Likewise.
10160         (comp_ptr_ttypes_const): Likewise.
10161         * typeck2.c (process_init_constructor): Likewise.
10162
10163 2000-04-30  Scott Snyder <snyder@fnal.gov>
10164
10165         * decl.c (finish_destructor_body): Use the base destructor when
10166         destroying virtual bases.
10167
10168 2000-04-30  Mark Mitchell  <mark@codesourcery.com>
10169
10170         * expr.c (cplus_expand_expr): Preserve temporaries when expanding
10171         STMT_EXPRs.
10172         * optimize.c (struct inline_data): Add target_exprs field.
10173         (declare_return_variable): When a function returns an aggregate,
10174         use the variable declared in the TARGET_EXPR as the remapped
10175         DECL_RESULT.
10176         (expand_call_inline): Update the pending target_exprs stack.
10177         (optimize_function): Initialize the stack.
10178
10179         * decl2.c (finish_file): Fix typo in comment.
10180
10181         * method.c (emit_thunk): Don't try to return a `void' value.
10182
10183         * optimize.c (initialize_inlined_parameters): If the parameter is
10184         addressable, we need to make a new VAR_DECL, even if the
10185         initializer is constant.
10186
10187 2000-04-28  Cosmin Truta  <cosmint@cs.ubbcluj.ro>
10188
10189         * decl.c (grok_op_properties): Add an extra check of argtypes.
10190
10191 2000-04-27  Mark Mitchell  <mark@codesourcery.com>
10192
10193         * optimize.c (copy_body_r): Use STRIP_TYPE_NOPS when copying
10194         variables.
10195         (initialize_inlined_parameters): Try to avoid creating new
10196         VAR_DECLs.
10197
10198 2000-04-27  Alex Samuel  <samuel@codesourcery.com>
10199
10200         * lex.c (my_get_run_time): Remove.
10201         (init_filename_times): Use get_run_time instead of my_get_run_time.
10202         (check_newline): Likewise.
10203         (dump_time_statistics): Likewise.
10204         * decl2.c (finish_file): Push and pop timevar TV_VARCONST instead
10205         of computing elapsed time explicitly.
10206
10207 2000-04-26  Mark Mitchell  <mark@codesourcery.com>
10208
10209         * cp-tree.h (TREE_READONLY_DECL_P): Use DECL_P.
10210         * init.c (decl_constant_value): Check TREE_READONLY_DECL_P.
10211         * call.c (convert_like_real): Don't test TREE_READONLY_DECL_P
10212         before calling decl_constant_value.
10213         * class.c (check_bitfield_decl): Likewise.
10214         * cvt.c (ocp_convert): Likewise.
10215         (convert): Likewise.
10216         * decl.c (compute_array_index_type): Likewise.
10217         (build_enumerator): Likewise.
10218         * decl2.c (check_cp_case_value): Likewise.
10219         * pt.c (convert_nontype_argument): Likewise.
10220         (tsubst): Likewise.
10221         * typeck.c (decay_conversion): Likewise.
10222         (build_compound_expr): Likewise.
10223         (build_reinterpret_cast): Likewise.
10224         (build_c_cast): Likewise.
10225         (convert_for_assignment): Likewise.
10226
10227 2000-04-26  Jason Merrill  <jason@casey.cygnus.com>
10228
10229         * decl.c (finish_function): Don't play games with DECL_INLINE.
10230
10231 2000-04-25  Gabriel Dos Reis  <dosreis@cmla.ens-cachan.fr>
10232
10233         * ir.texi: Correct typo.
10234
10235 2000-04-25  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
10236
10237         * decl.c (grokdeclarator): Reject VLAs as members.
10238
10239 2000-04-24  Gabriel Dos Reis  <gdr@codesourcery.com>
10240
10241         * call.c (standard_conversion): Accept conversion between
10242         COMPLEX_TYPEs.
10243
10244         * cvt.c (ocp_convert): Handle conversion to COMPLEX_TYPE.
10245
10246 2000-04-24  Zack Weinberg  <zack@wolery.cumb.org>
10247
10248         * decl2.c (finish_file): Remove double setup for accounting
10249         compile time.
10250
10251 2000-04-24  Robert Lipe <robertlipe@usa.net>
10252
10253         * cp-tree.h (lang_type): Member `language' now ENUM_BITFIELD.
10254
10255 2000-04-23  Benjamin Kosnik  <bkoz@cygnus.com>
10256
10257         * new.cc (set_new_handler): Needs to be in std::.
10258
10259 2000-04-23  Mark Mitchell  <mark@codesourcery.com>
10260
10261         * cp-tree.h (lang_decl): Remove pretty_function_p.
10262         (DECL_PRETTY_FUNCTION_P): Use TREE_LANG_FLAG_0, not a bit in the
10263         language-specific node.
10264         * decl.c (cp_make_fname_decl): Use build_decl, not
10265         build_lang_decl, to build the variables.
10266         (grokvardecl): Don't call build_lang_decl for local variables in
10267         templates.
10268         (grokdeclarator): Don't call build_lang_decl for local type
10269         declarations in templates.
10270         * lex.c (retrofit_lang_decl): Use ggc_alloc_obj to allocated
10271         zero'd memory, rather than calling memset.
10272         * pt.c: Include hashtab.h.
10273         (local_specializations): New variable.
10274         (retrieve_local_specialization): Use it.
10275         (register_local_specialization): Likewise.
10276         (tsubst_decl): Don't assume local variables have
10277         DECL_LANG_SPECIFIC.
10278         (instantiate_decl): Set up local_specializations.
10279         * Makefile.in (HTAB_H): New variable.
10280
10281 2000-04-23  Richard Henderson  <rth@cygnus.com>
10282
10283         * typeck.c (c_expand_asm_operands): Restore the original
10284         contents of the output list.
10285
10286 2000-04-22  Gabriel Dos Reis <gdr@codesourcery.com>
10287
10288         * ir.texi:  Document complex number representation.
10289
10290 2000-04-20  Nathan Sidwell  <nathan@codesourcery.com>
10291
10292         * rtti.c (init_rtti_processing): Set tinfo_var_id in new-abi.
10293         (target_incomplete_p): New function.
10294         (tinfo_base_init): Create comdat NTBS name variable.
10295         (ptr_initializer): Add non_public parameter. Calculate it.
10296         (ptmd_initializer): Likewise.
10297         (synthesize_tinfo_var): Adjust. Emit incomplete class tinfo.
10298         (create_real_tinfo_var): Add non_public parameter. Use it.
10299         Push proxy into global namespace.
10300         * inc/cxxabi.h (__pointer_type_info::incomplete_class_mask):
10301         New enumeration.
10302         * inc/typeinfo (type_info::before, type_info::operator==):
10303         Compare __name addresses.
10304
10305         * tinfo2.cc: Remove new-abi builtins comment.
10306
10307 2000-04-20  Jason Merrill  <jason@casey.cygnus.com>
10308
10309         * typeck.c (build_x_function_call): Resolve an OFFSET_REF.
10310
10311         * call.c (joust): Exit early if we get the same function, too.
10312
10313         * decl2.c (key_method): Return NULL_TREE for template classes.
10314         (import_export_class): Don't need to check for template classes.
10315
10316 2000-04-18  Zack Weinberg  <zack@wolery.cumb.org>
10317
10318         * lex.c: Remove references to cccp.c.
10319
10320 2000-04-18  Mark Mitchell  <mark@codesourcery.com>
10321
10322         * cp-tree.h (lang_decl_flags): Remove const_memfunc and
10323         volatile_memfunc.  Add destructor_attr.  Adjust dummy.
10324         (DECL_DESTRUCTOR_P): Use destructor_attr.
10325         (DECL_CONST_MEMFUNC_P): Reimplement.
10326         (DECL_VOLATILE_MEMFUNC_P): Remove.
10327         * class.c (finish_struct_methods): Use CLASSTYPE_DESTRUCTORS.
10328         (overrides): Use DECL_DESTRUCTOR_P.
10329         (check_for_override): Likewise.
10330         * decl.c (start_function): Likewise.
10331         * decl2.c (grokfclassfn): Likewise.
10332         (check_classfn): Likewise.
10333         (grok_function_init): Likewise.
10334
10335 2000-04-17  Mark Mitchell  <mark@codesourcery.com>
10336
10337         * decl2.c (grokfield): Issue error on illegal data member
10338         declaration.
10339
10340 Mon Apr 17 17:11:16 2000  Mark P Mitchell  <mark@codesourcery.com>
10341
10342         * method.c (make_thunk): Set DECL_CONTEXT for a THUNK_DECL.
10343
10344 2000-04-16  Mark Mitchell  <mark@codesourcery.com>
10345
10346         * class.c (build_vtable_entry): Don't build thunks for type-info
10347         functions.
10348
10349 2000-04-16  Jason Merrill  <jason@casey.cygnus.com>
10350
10351         * decl.c (decls_match): Allow a redeclaration of a builtin to
10352         specify args while the builtin did not.
10353
10354 2000-04-15  Mark Mitchell  <mark@codesourcery.com>
10355
10356         * cp-tree.def (THUNK_DECL): Add to documentation.
10357         * cp-tree.h (flag_huge_objects): Declare.
10358         * class.c (modify_vtable_entry): Tidy.
10359         (update_vtable_entry_for_fn): Split out from dfs_modify_vtables.
10360         Calculate delta appropriately for the new ABI.
10361         (dfs_modify_vtables): Use it.
10362         (modify_all_vtables): Fix thinko in code to add overriding copies
10363         of functions to primary vtables.
10364         (build_clone): Fix typo in comment.
10365         (clone_function_decl): Correct order of destructors in vtable.
10366         (build_vbase_offset_vtbl_entries): Adjust comment.
10367         (dfs_vcall_offset_queue_p): Remove.
10368         (dfs_build_vcall_offset_vtbl_entries): Update BV_VCALL_INDEX.
10369         (build_vcall_offset_vtbl_entries): Juse use dfs_skip_vbases.
10370         (build_vtable_entry): Correct check for pure virtual functions.
10371         Don't declare flag_huge_objects.
10372         * decl.c (flag_huge_objects): Remove declaration.
10373         * method.c (make_thunk): Tweak mangling for vcall offset thunks.
10374         Use int_size_in_bytes.
10375         (emit_thunk): Handle vcall offset thunks.
10376
10377 Sat Apr 15 16:00:01 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
10378
10379         * decl2.c (parse_time, varconst_time): Delete declarations.
10380         (finish_file): Delete LINENO declaration.
10381         START_TIME and THIS_TIME now long.
10382
10383 2000-04-13  Nathan Sidwell  <nathan@codesourcery.com>
10384
10385         * class.c (build_base_field): Reformat comment.
10386
10387         * inc/cxxabi.h (stddef.h): Comment inclusion.
10388         (__base_class_info::__offset): Comment shift.
10389
10390 2000-04-12  Mark Mitchell  <mark@codesourcery.com>
10391
10392         * cp-tree.h (IDENTIFIER_CTOR_OR_DTOR_P): New macro.
10393         (cp_tree_index): Add CPTI_PUSH_EXCEPTION_IDENTIFIER.
10394         (cp_push_exception_identifier): New macro.
10395         (DECL_COMPLETE_DESTRUCTOR_P): New macro.
10396         (DECL_BASE_DESTRUCTOR_P): Likewise.
10397         (DECL_DELETING_DESTRUCTOR_P): Likewise.
10398         (get_vtbl_decl_for_binfo): Fix formatting.
10399         (in_charge_arg_for_name): New macro.
10400         (maybe_build_cleanup_and_delete): Remove declaration.
10401         * call.c (build_field_call): Use IDENTIFIER_CTOR_OR_DTOR_P.
10402         (in_charge_arg_for_name): New function.
10403         (build_new_method_call): Use it.  Handle cloned destructors.
10404         (build_clone): Don't make the base constructor virtual.
10405         Automatically defer generated functions.
10406         (clone_function_decl): Handle destructors, too.
10407         (clone_constructors_and_destructors): Likewise.
10408         (create_vtable_ptr): Don't create a vtable entry for a cloned
10409         function.
10410         * decl.c (predefined_identifier): Add ctor_or_dtor_p.
10411         (initialize_predefined_identifiers): Update appropriately.
10412         (finish_destructor_body): Simplify.
10413         (maybe_build_cleanup_and_delete): Remove.
10414         * except.c (expand_throw): Handle new-ABI destructors.
10415         * init.c (expand_cleanup_for_base): Use base_dtor_identifier.
10416         (build_dtor_call): New function.
10417         (build_delete): Use it.  Simplify.
10418         * optimize.c (maybe_clone_body): Handle destructors.
10419         * search.c (lookup_field_queue_p): Use IDENTIFIER_CTOR_OR_DTOR_P.
10420
10421         * exception.cc (cleanup_fn): New typedef.
10422         (CALL_CLEANUP): New macro.
10423         (cp_eh_info): Use them.
10424         (__cp_push_exception): Likewise.
10425         (__cp_pop_exception): Likewise.
10426
10427 2000-04-11  Mark Mitchell  <mark@codesourcery.com>
10428
10429         * cp-tree.h (cp_tree_index): Add CPTI_DTOR_IDENTIFIER.
10430         (complete_dtor_identifier): New macro.
10431         (CLASSTYPE_FIRST_CONVERSION): Remove.
10432         (CLASSTYPE_CONSTRUCTOR_SLOT): New macro.
10433         (CLASSTYPE_DESTRUCTOR_SLOT): Likewise.
10434         (CLASSTYPE_FIRST_CONVERSION_SLOT): Likewise.
10435         (CLASSTYPE_CONSTRUCTORS): Likewise.
10436         (CLASSTYPE_DESTRUCTORS): Likewise.
10437         (lang_decl): Add cloned_function.
10438         (DECL_COMPLETE_CONSTRUCTOR_P): New macro.
10439         (DECL_BASE_CONSTRUCTOR_P): Likewise.
10440         (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P): Likewise.
10441         (DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P): Likewise.
10442         (DECL_CLONED_FUNCTION_P): Likewise.
10443         (DECL_CLONED_FUNCTION): Likewise.
10444         (clone_function_decl): Declare.
10445         (maybe_clone_body): Likewise.
10446         * call.c (build_user_type_conversion_1): Call complete object
10447         constructors in the new ABI.
10448         (build_new_method_call): Don't add in-charge parameters under the
10449         new ABI.
10450         * class.c (add_method): Use DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P,
10451         DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P, CLASSTYPE_CONSTRUCTOR_SLOT, and
10452         CLASSTYPE_DESTRUCTOR_SLOT.
10453         (build_clone): New function.
10454         (clone_function_decl): Likewise.
10455         (clone_constructors_and_destructors): Likewise.
10456         (check_bases_and_members): Use it.
10457         * decl.c (iniitialize_predefined_identifiers): Initialize
10458         complete_dtor_identifier.
10459         (finish_function): Don't add extra code to a clone.
10460         (lang_mark_tree): Mark cloned_function.
10461         * decl2.c (mark_used): Don't bother trying to instantiate things
10462         we synthesized.
10463         * dump.c (dequeue_and_dump): Don't dump CP_DECL_CONTEXT twice.
10464         * method.c (set_mangled_name_for_decl): Don't treat clones as
10465         constructors.
10466         (synthesize_method): Sythesize cloned functions, not the clones.
10467         * optimize.c (inline_data): Update comment on ret_label.
10468         (remap_block): Don't assume DECL_INITIAL exists.
10469         (copy_body_r): Allow ret_label to be NULL.
10470         (maybe_clone_body): Define.
10471         * pt.c (tsubst_decl): Handle clones.
10472         (instantiate_clone): New function.
10473         (instantiate_template): Use it.
10474         (set_mangled_name_for_template_decl): Don't treat clones as
10475         constructors.
10476         * search.c (lookup_fnfields_1): Use CLASSTYPE_CONSTRUCTOR_SLOT,
10477         CLASSTYPE_DESTRUCTOR_SLOT, and CLASSTYPE_FIRST_CONVERSION_SLOT.
10478         * semantics.c (expand_body): Clone function bodies as necessary.
10479
10480         * optimize.c (remap_decl): Avoid sharing structure for arrays
10481         whose size is only known at run-time.
10482         * tree.c (copy_tree_r): Don't copy PARM_DECLs.
10483
10484         * cp-tree.h (lang_decl_flags): Rename constructor_for_vbase_attr
10485         to has_in_charge_parm_p.
10486         (DECL_CONSTRUCTOR_FOR_VBASE_P): Rename to ...
10487         (DECL_HAS_IN_CHARGE_PARM_P): ... this.
10488         (DECL_COPY_CONSTRUCTOR_P): New macro.
10489         * call.c (add_function_candidate): Use DECL_HAS_IN_CHARGE_PARM_P.
10490         (build_user_type_conversion_1): Likewise.
10491         (convert_like_real): Likewise.
10492         (build_over_call): Likeiwse.  Use DECL_COPY_CONSTRUCTOR_P.
10493         * decl.c (grokdeclarator): Use DECL_HAS_IN_CHARGE_PARM_P.
10494         (copy_args_p): Likewise.
10495         (grok_ctor_properties): Likewise.
10496         (start_function): Likewise.
10497         * decl2.c (maybe_retrofit_in_charge): Likewise.  Set it.
10498         * error.c (dump_function_decl): Use DECL_HAS_IN_CHARGE_PARM_P.
10499         * init.c (emit_base_init): Use DECL_COPY_CONSTRUCTOR_P.
10500         * method.c (do_build_copy_constructor): Use
10501         DECL_HAS_IN_CHARGE_PARM_P.
10502         (synthesize_method): Likewise.
10503         * pt.c (instantiate_template): Remove goto.
10504         * tree.c (build_cplus_method_type): Remove mention of obstacks in
10505         comment.
10506
10507         * cp-tre.h (finish_function): Change prototype.
10508         * decl.c (end_cleanup_fn): Adjust caller.
10509         (finish_function): Take only one parameter.
10510         * decl2.c (finish_objects): Adjust caller.
10511         (finish_static_storage_duration_function): Likewise.
10512         * method.c (emit_thunk): Likewise.
10513         * parse.y: Likewise.
10514         * parse.c: Regenerated.
10515         * pt.c (instantiate_decl): Likewise.
10516         * rtti.c (synthesize_tinfo_fn): Likewise.
10517         * semantics.c (expand_body): Likewise.
10518
10519         * cp-tree.h (copy_decl): New function.
10520         * class.c (finish_struct_1): Use it.
10521         * lex.c (copy_decl): Define it.
10522         * pt.c (tsubst_decl): Likewise.
10523         * tree.c (copy_template_template_parm): Likewise.
10524
10525         * cp-tree.h (lang_type): Remove has_nonpublic_ctor and
10526         has_nonpublic_assign_ref.
10527         (TYPE_HAS_NONPUBLIC_CTOR): Don't declare.
10528         (TYPE_HAS_NONPUBLIC_ASSIGN_REF): Likewise.
10529         * class.c (finish_struct_methods): Don't set
10530         TYPE_HAS_NONPUBLIC_CTOR or TYPE_HAS_NONPUBLIC_ASSIGN_REF.
10531         (interface_only): Don't declare.
10532         (interface_unknown): Likewise.
10533
10534 2000-04-11  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
10535
10536         * tree.h (HAVE_TEMPLATES): Remove definition.
10537         * lang-options.h (-fthis-is-variable): Remove documentation.
10538
10539 2000-04-10  Jason Merrill  <jason@casey.cygnus.com>
10540
10541         * class.c (instantiate_type): Handle object-relative template-id.
10542
10543         * semantics.c (finish_expr_stmt): Call convert_to_void here.
10544         * decl.c (cplus_expand_expr_stmt): Not here.
10545
10546         * rtti.c (build_dynamic_cast_1): Call non_lvalue.
10547         Initialize exprtype earlier.
10548
10549         * parse.y (fn.def1): Check for defining types in return types.
10550
10551         * decl.c (check_tag_decl): Notice extra fundamental types.
10552         Diagnose empty decls in classes, too.
10553
10554         * decl.c (grokdeclarator): Don't override an anonymous name if no
10555         declarator was given.
10556
10557         * cvt.c (convert_to_void): Call resolve_offset_ref.
10558
10559         * typeck.c (build_x_function_call): Abort if we get an OFFSET_REF.
10560
10561         * decl2.c (decl_namespace): Handle getting a type.
10562
10563         * typeck.c (build_c_cast): Re-enable warning for cast between
10564         pointer and integer of different size.
10565
10566 2000-04-10  Nathan Sidwell  <nathan@codesourcery.com>
10567
10568         * inc/cxxabi.h (__pointer_type_info): Add restrict and
10569         incomplete flags.
10570         (__pointer_type_info::__pointer_catch): New virtual function.
10571         (__pointer_to_member_type_info): Derive from
10572         __pointer_type_info. Adjust.
10573         (__pointer_to_member_type_info::__do_catch): Remove.
10574         (__pointer_to_member_type_info::__is_pointer_p): Declare.
10575         (__pointer_to_member_type_info::__pointer_catch): Declare.
10576         * rtti.c (qualifier_flags): Add restrict flag.
10577         (ptmd_initializer): Reorder members.
10578         (create_tinfo_types): Expand comments. Reorder
10579         ptmd_desc_type_node members.
10580         * tinfo2.cc (__pointer_to_member_type_info::__is_pointer_p):
10581         Implement.
10582         (__pointer_type_info::__do_catch): Move specific code into
10583         __pointer_catch. Call it.
10584         (__pointer_type_info::__pointer_catch): Non-pointer-to-member
10585         specific catch checking. Fix void conversion check.
10586         (__pointer_to_member_type_info::__do_catch): Remove.
10587         (__pointer_to_member_type_info::__pointer_catch): Implement.
10588
10589 2000-04-10  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
10590
10591         * lex.c (init_parse): Remove traces of classof and headof.
10592         * decl2.c (flag_operator_names): Default to 1.
10593         (lang_decode_option): Do not set it for -ansi.
10594
10595 2000-04-09  Mark Mitchell  <mark@codesourcery.com>
10596
10597         * cp-tree.h (struct lang_decl): Remove main_decl_variant.
10598         (DECL_MAIN_VARIANT): Remove.
10599         * decl.c (duplicate_decls): Don't set it.
10600         (start_function): Likewise.
10601         (lang_mark_tree): Don't mark it.
10602         * decl2.c (defer_fn): Don't use it.
10603         * lex.c (retrofit_lang_decl): Don't set it.
10604         * pt.c (tsubst_decl): Likewise.
10605         * ptree.c (print_lang_decl): Don't print it.
10606         * typeck.c (mark_addressable): Don't use it.
10607
10608 2000-04-09  Nathan Sidwell  <nathan@codesourcery.com>
10609
10610         * vec.cc: Include <new> and <exception>.
10611         (__cxa_vec_ctor): Use __cxa_vec_dtor for cleanup.
10612         (__cxa_vec_dtor): Catch dtor exceptions, and rethrow or
10613         terminate.
10614         (__cxa_vec_delete): Catch dtor exceptions.
10615
10616 2000-04-09  Nathan Sidwell  <nathan@codesourcery.com>
10617
10618         Prepend __ to implementation defined names.
10619         * inc/typeinfo (type_info): Rename _name to __name.
10620         (type_info::type_info): Rename parameter.
10621         (type_info::operator==, type_info::operator!=,
10622         type_info::before): Likewise.
10623         (type_info::is_pointer_p, type_info::is_function_p,
10624         type_info::do_catch, type_info::do_upcast): Prepend __. Rename
10625         parameters.
10626         * inc/cxxabi.h
10627         (__fundamental_type_info::__fundamental_type_info) Rename parameters.
10628         (__pointer_type_info::__pointer_type_info): Likewise.
10629         (__pointer_type_info::is_pointer_p,
10630         __pointer_type_info::do_catch): Prepend __. Rename parameters.
10631         (__array_type_info::__array_type_info): Rename parameters.
10632         (__function_type_info::__function_type_info): Likewise.
10633         (__function_type_info::is_function_p): Prepend __.
10634         (__enum_type_info::__enum_type_info): Rename parameters.
10635         (__pointer_to_member_type_info::__pointer_to_member_type_info):
10636         Likewise.
10637         (__pointer_to_member_type_info::do_catch): Prepend __. Rename
10638         parameters.
10639         (__base_class_info::is_virtual_p, is_public_p, offset): Prepend __.
10640         (__class_type_info::__class_type_info): Rename parameters.
10641         (__class_type_info::sub_kind): Prepend __. Adjust member names.
10642         (__class_type_info::upcast_result,
10643         __class_type_info::dyncast_result): Prepend __. Move definition
10644         into tinfo.cc.
10645         (__class_type_info::do_upcast, __class_type_info::do_catch,
10646         __class_type_info::find_public_src,
10647         __class_type_info::do_dyncast,
10648         __class_type_info::do_find_public_src): Prepend __. Rename
10649         parameters.
10650         (__si_class_type_info::__si_class_type_info): Rename parameters.
10651         (__si_class_type_info::do_upcast, __si_class_type_info::do_dyncast,
10652         __si_class_type_info::do_find_public_src): Prepent __. Rename
10653         parameters.
10654         (__vmi_class_type_info::__vmi_class_type_info): Rename parameters.
10655         (__vmi_class_type_info::do_upcast, __vmi_class_type_info::do_dyncast,
10656         __vmi_class_type_info::do_find_public_src): Prepent __. Rename
10657         parameters.
10658         (__dynamic_cast): Rename parameters.
10659         * tinfo.cc (type_info::is_pointer_p, type_info::is_function_p,
10660         type_info::do_catch, type_info::do_upcast): Prepend __.
10661         (contained_p, public_p, virtual_p, contained_public_p,
10662         contained_nonpublic_p, contained_nonvirtual_p): Adjust.
10663         (__class_type_info::do_catch,
10664         __class_type_info::do_upcast): Prepend __. Adjust.
10665         (__class_type_info::__upcast_result,
10666         __class_type_info::__dyncast_result): Move from inc/cxxabi.h.
10667         Adjust.
10668         (__class_type_info::find_public_src): Prepend __. Adjust.
10669         (__class_type_info::do_find_public_src,
10670         __si_class_type_info::do_find_public_src,
10671         __vmi_class_type_info::do_find_public_src): Likewise.
10672         (__class_type_info::do_dyncast,
10673         __si_class_type_info::do_dyncast,
10674         __vmi_class_type_info::do_dyncast): Likewise.
10675         (__class_type_info::do_upcast,
10676         __si_class_type_info::do_upcast,
10677         __vmi_class_type_info::do_upcast): Likewise.
10678         (__dynamic_cast): Adjust.
10679         * tinfo2.cc (__pointer_type_info::is_pointer_p): Prepend __.
10680         (__function_type_info::is_function_p): Likewise.
10681         (__pointer_type_info::do_catch): Likewise. Adjust.
10682         (__pointer_to_member_type_info::do_catch): Likewise. Adjust.
10683         (__throw_type_match_rtti_2): Adjust.
10684         (__is_pointer): Adjust.
10685
10686 2000-04-08  Mark Mitchell  <mark@codesourcery.com>
10687
10688         * cp-tree.h (cp_tree_index): Add CPTI_COMPLETE_CTOR_IDENTIFIER.
10689         (complete_ctor_identifier): New macro.
10690         (special_function_kind): Add sfk_copy_constructor and
10691         sfk_assignment_operator.
10692         (LOOKUP_HAS_IN_CHARGE): Remove.
10693         (cons_up_default_function): Rename to ...
10694         (implicitly_declare_fn): ... this.
10695         * call.c (build_new_method_call): Add in-charge parameters for
10696         constructors here.
10697         * class.c (add_implicitly_declared_members): Change parameter name
10698         from cant_have_assignment to cant_have_const_assignment.
10699         Replace calls to cons_up_default_function to implicitly_declare_fn.
10700         * cvt.c (ocp_convert): Use complete_ctor_identifier.
10701         * decl.c (initialize_predefined_identifiers): Initialize it.
10702         (start_function): Use DECL_CONSTRUCTOR_FOR_VBASE_P instead of
10703         complex expression.
10704         * init.c (expand_default_init): Don't calculate the in-charge
10705         parameter here.
10706         (build_new_1): Likewise.
10707         * lex.c (cons_up_default_function): Move to method.c.
10708         * method.c (synthesize_method): Use DECL_DESTRUCTOR_P.
10709         (implicitly_declare_fn): New function.
10710         * typeck.c (build_static_cast): Use complete_ctor_identifier.
10711         (build_modify_expr): Likewise.
10712         * typeck2.c (build_functional_cast): Likewise.
10713
10714         Under the new ABI, constructors don't return `this'.
10715         * cp-tree.h (warn_reorder): Declare.
10716         (special_function_kind): New enum.
10717         (global_base_init_list): Remove declaration.
10718         (emit_base_init): Don't return a value.
10719         (check_base_init): Don't declare.
10720         (is_aggr_typedef): Likewise.
10721         * decl.c (check_special_function_return_type): New function.
10722         (return_types): Remove.
10723         (grokdeclarator): Use check_special_function_return_type.
10724         (start_function): Don't initialize ctor_label under the new ABI.
10725         (finish_construtor_body): Don't create a corresponding LABEL_STMT.
10726         * init.c (begin_init_stmts): Move to top of file.
10727         (finish_init_stmts): Likewise.
10728         (warn_reorder): Don't declare.
10729         (emit_base_init): Don't create a STMT_EXPR here.  Don't return a
10730         value.
10731         (check_base_init): Remove.
10732         (is_aggr_typedef): Likewise.
10733         (build_new_1): Don't use the return value of a constructor.
10734         * semantics.c (setup_vtbl_ptr): Don't use the return value
10735         of emit_base_init.
10736         * typeck.c (check_return_expr): Don't magically convert return
10737         statements into `return this' in constructors under the new ABI.
10738
10739         * cp-tree.h (cp_tree_index): Add CPTI_BASE_CTOR_IDENTIFIER,
10740         CPTI_BASE_DTOR_IDENTIFIER, and CPTI_DELETING_DTOR_IDENTIFIER.
10741         (base_ctor_identifier): New macro.
10742         (base_dtor_identifier): Likewise.
10743         (deleting_dtor_identifier): Likewise.
10744         * decl.c: Don't include obstack.h.
10745         (obstack_chunk_alloc): Don't define.
10746         (obstack_chunk_free): Likewise.
10747         (struct predefined_identifier): New type.
10748         (initialize_predefined_identifiers): New function.
10749         (init_decl_processing): Use it.
10750         (debug_temp_inits): Remove.
10751         (start_method): Don't call preserve_data.
10752         (hack_incomplete_structures): Update comment.
10753         * init.c (init_init_processing): Don't initialize
10754         nelts_identifier.
10755         (build_offset_rf): Remove dead code.
10756         (build_delete): Use CLASSTYPE_N_BASECLASSES.
10757         * search.c (init_search_processing): Don't initialize
10758         vptr_identifier.
10759
10760 2000-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10761
10762         * typeck.c (build_binary_op): Call `tree_expr_nonnegative_p' to elide
10763         some sign_compare warnings.
10764
10765 2000-04-07  Nathan Sidwell  <nathan@codesourcery.com>
10766
10767         Rename abi::__vmi_class_type_info members.
10768         * inc/cxxabi.h (__vmi_class_type_info): Rename details, n_bases,
10769         base_list, detail_masks members to vmi_flags, vmi_base_count,
10770         vmi_bases and vmi_flags_masks respectively.
10771         (__vmi_class_type_info::vmi_flags_masks): Rename
10772         details_unknown_mask to flags_unknown_mask.
10773         * tinfo.cc (__class_type_info::do_upcast): Adjust.
10774         (__vmi_class_type_info::do_find_public_src): Adjust.
10775         (__vmi_class_type_info::do_dyncast): Adjust.
10776         (__vmi_class_type_info::do_upcast): Adjust.
10777
10778 2000-04-07  Nathan Sidwell  <nathan@codesourcery.com>
10779
10780         * tinfo.cc (convert_to_base): New function.
10781         (get_vbase_offset): Remove. Move into convert_to_base.
10782         (__vmi_class_type_info::do_find_public_src): Adjust.
10783         (__vmi_class_type_info::do_dyncast): Adjust.
10784         (__vmi_class_type_info::do_upcast): Adjust.
10785
10786 2000-04-06  Jason Merrill  <jason@yorick.cygnus.com>
10787
10788         * tinfo.cc (operator=): Use __builtin_strcmp.
10789         * tinfo2.cc (before): Likewise.
10790
10791 2000-04-06  Mark Mitchell  <mark@codesourcery.com>
10792
10793         * cp-tree.h (lang_decl_flags): Rename saved_inline to deferred.
10794         (DECL_SAVED_INLINE): Rename to ...
10795         (DECL_DEFERRED_FN): ... this.
10796         (in_function_p): Remove declaration.
10797         (mark_inline_for_output): Rename to ...
10798         (defer_fn): ... this.
10799         * decl.c (finish_function): Adjust call to mark_inline_for_output.
10800         (in_function_p): Remove definition.
10801         * decl2.c (saved_inlines): Rename to ...
10802         (deferred_fns): ... this.
10803         (saved_inlines_used): Rename to ...
10804         (deferred_fns_used): ... this.
10805         (mark_inline_for_output): Rename to ...
10806         (defer_fn): ... this.
10807         (finish_file): Adjust accordingly.
10808         (init_decl2): Likewise.
10809         * lex.c (cons_up_default_function): Likewise.
10810         * pt.c (mark_decl_instantiated): Likewise.
10811         (instantiate_decl): Don't set DECL_DEFER_OUTPUT under any
10812         circumstances.
10813         * rtti.c (get_tinfo_decl): Adjust call to mark_inline_for_output.
10814         * semantics.c (expand_body): Defer more functions.
10815
10816 2000-04-06  Nathan Sidwell  <nathan@codesourcery.com>
10817
10818         * vec.cc: New file.
10819         * Make-lang.in (CXX_LIB2FUNCS): Add it.
10820         (vec.o): Build it.
10821         * inc/cxxabi.h (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
10822         __cxa_vec_delete): Declare.
10823
10824 2000-04-06  Nathan Sidwell  <nathan@codesourcery.com>
10825
10826         * rtti.c (dfs_class_hint_mark): New static function.
10827         (dfs_class_hint_unmark): New static function.
10828         (class_hint_flags): Use them.
10829
10830 2000-04-05  Benjamin Kosnik  <bkoz@cygnus.com>
10831
10832         * decl2.c: Make flag_honor_std dependent on ENABLE_STD_NAMESPACE.
10833
10834 2000-04-05  Mark Mitchell  <mark@codesourcery.com>
10835
10836         * cp-tree.h (instantiate_decl): Change prototype.
10837         * decl2.c (mark_used): Adjust call.
10838         * optimize.c (inlinable_function_p): Adjust handling of templates.
10839         * pt.c (do_decl_instantiation): Adjust call to instantiate_decl.
10840         (do_type_instantiation): Likewise.
10841         (instantiate_decl): Defer more templates.
10842         (instantiate_pending_templates): Adjust logic to handle inline
10843         friend functions.
10844
10845         * Makefile.in (GGC_H): New variable.  Use it throughout in place
10846         of ggc.h.
10847
10848         * call.c: Don't include obstack.h.  Include ggc.h.
10849         (obstack_chunk_alloc): Don't define.
10850         (obstack_chunk_free): Likewise.
10851         (add_candidate): Allocate the z_candidate with ggc_alloc_obj.
10852         * decl.c (push_switch): Use xmalloc to allocate the cp_switch.
10853         (pop_switch): Free it.
10854
10855         * decl2.c (grokclassfn): Set TREE_READONLY for PARM_DECLs.
10856
10857         * dump.c (dequeue_and_dump): Don't try to print the bit_position
10858         if we don't have a DECL_FIELD_OFFSET.
10859
10860 Wed Apr  5 15:12:18 MET DST 2000  Jan Hubicka  <jh@suse.cz>
10861
10862         * optimize.c (calls_setjmp_r): Use setjmp_call_p instead of
10863         special_function_p.
10864
10865 2000-04-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10866
10867         * cfns.gperf (hash, libc_name_p): Prototype.
10868
10869         * rtti.c (build_dynamic_cast_1): Constification.
10870
10871         * search.c (dfs_debug_unmarkedp, dfs_debug_mark): Unhide prototypes.
10872
10873         * semantics.c (deferred_type_access_control): Prototype.
10874
10875 2000-04-04  Mark Mitchell  <mark@codesourcery.com>
10876
10877         Correct many new ABI issues regarding vbase and vcall offset
10878         layout.
10879         * cp-tree.h (BINFO_VTABLE): Document.
10880         (struct lang_type): Tweak formatting.
10881         (BINFO_PRIMARY_BINFO): Add to documentation.
10882         (CLASSTYPE_VSIZE): Fix typo in comment.
10883         (CLASSTYPE_VBASECLASSES): Update documentation.
10884         (BINFO_VBASE_MARKED): Remove.
10885         (SET_BINFO_VBASE_MARKED): Likewise.
10886         (CLEAR_BINFO_VBASE_MARKED): Likewise.
10887         (BINFO_FIELDS_MARKED): Remove.
10888         (SET_BINFO_FIELDS_MARKED): Likewise.
10889         (CLEAR_BINFO_FIELDS_MARKED): Likewise.
10890         (enum access_kind): New enumeration.
10891         (num_extra_vtbl_entries): Remove declaration.
10892         (size_extra_vtbl_entries): Likewise.
10893         (get_vtbl_decl_for_binfo): New function.
10894         (dfs_vbase_unmark): Remove declaration.
10895         (mark_primary_bases): Likewise.
10896         * class.c (SAME_FN): Remove.
10897         (struct vcall_offset_data_s): Move definition.
10898         (build_vbase_pointer): Use `build', not `build_binary_op', to
10899         access the vbase pointer under the new ABI.
10900         (build_vtable_entry_ref): Use get_vtbl_decl_for_binfo.
10901         (build_primary_vtable): Likewise.
10902         (dfs_mark_primary_bases): Move here from search.c.
10903         (mark_primary_bases): Likewise.
10904         (determine_primary_bases): Under the new ABI, don't make a base
10905         class a primary base just because we don't yet have any virtual
10906         functions.
10907         (layout_vtable_decl): Use get_vtbl_decl_for_binfo.
10908         (num_vfun_entries): Remove.
10909         (dfs_count_virtuals): Likewise.
10910         (num_extra_vtbl_entries): Likewise.
10911         (size_extra_vtbl_entries): Likewise.
10912         (layout_virtual_bases): Iterate in inheritance graph order under
10913         the new ABI.
10914         (finish_struct_1): Use TYPE_VFIELD, not CLASSTYPE_VSIZE, to
10915         indicate that a vfield is present.
10916         (init_class_processing): Initialize access_public_node, etc., from
10917         ak_public, etc.
10918         (get_vtbl_decl_for_binfo): New function.
10919         (dump_class_hierarchy_r): Likewise.
10920         (dump_class_hierarchy): Use it.
10921         (finish_vtbls): Build the vtbls in inheritance graph order.
10922         (dfs_finish_vtbls): Adjust call to build_vtbl_initializer.
10923         (initialize_vtable): Use get_vtbl_decl_for_binfo.
10924         (accumulate_vtbl_inits): Add comments explaining why a pre-order
10925         walk is required.
10926         (dfs_accumulate_vtbl_inits): Set BINFO_VTABLE to the location
10927         where the vptr points, even for primary vtables.
10928         (build_vtbl_initializer): Adjust handling of vbase and vcall
10929         offsets.
10930         (build_vcall_and_vbase_vtable_entries): New function.
10931         (dfs_build_vbase_offset_vtbl_entries): Remove.
10932         (build_vbase_offset_vtbl_entries): Reimplement.
10933         (dfs_build_vcall_offset_vtbl_entries): Don't include virtuals that
10934         were already handled in a primary base class vtable.
10935         (build_vcall_offset_vtbl_entries): Adjust.
10936         (build_rtti_vtbl_entries): Adjust.
10937         * decl2.c (output_vtable_inherit): Use get_vtbl_decl_for_binfo.
10938         * init.c (expand_virtual_init): Simplify.
10939         * repo.c (repo_get_id): Use get_vtbl_decl_for_binfo.
10940         * rtti.c (create_pseudo_type_info): Adjust calculation of vptr.
10941         * search.c (BINFO_ACCESS): New macro.
10942         (SET_BINFO_ACCESS): Likewise.
10943         (dfs_access_in_type): Manipulate access_kinds, not access nodes.
10944         (access_in_type): Likewise.
10945         (dfs_accessible_p): Likewise.
10946         (protected_accessible_p): Likewise.
10947         (lookup_fnfields_1): Adjust documentation.
10948         (dfs_mark_primary_bases): Move to class.c
10949         (mark_primary_bases): Likewise.
10950         (dfs_vbase_unmark): Remove.
10951         (virtual_context): Use BINFO_FOR_VBASE.
10952         (dfs_get_vbase_types): Simplify.
10953         (dfs_build_inheritance_graph_order): New function.
10954         (get_vbase_types): Use it.
10955         * tree.c (debug_binfo): Use get_vtbl_decl_for_binfo.
10956
10957         * tinfo.cc (get_vbase_offset): New function.
10958         (__vmi_class_type_info::do_find_public_src): Use it.
10959         (__vmi_class_type_info::do_dyncast): Likewise.
10960         (__vmi_class_type_info::do_upcast): Likewise.
10961
10962 2000-04-03  Zack Weinberg  <zack@wolery.cumb.org>
10963
10964         * lang-specs.h: Pass -fno-show-column to the preprocessor.
10965
10966 2000-03-30  Nathan Sidwell  <nathan@codesourcery.com>
10967
10968         * rtti.c (class_hint_flags): Rename flags.
10969         (class_initializer): Remove flags.
10970         (synthesize_tinfo_var): Combine offset and flags. Add flags
10971         for __vmi_class_type_info.
10972         (create_tinfo_types): Remove flags from __class_type_info and
10973         __si_class_type_info. Merge flags and offset from
10974         base_class_type_info.
10975         * inc/cxxabi.h (__base_class_info): Merge offset and vmi_flags.
10976         (__base_class_info::is_virtual_p): Adjust.
10977         (__base_class_info::is_public_p): Adjust.
10978         (__base_class_info::offset): New accessor.
10979         (__class_type_info::details): Remove member.
10980         (__class_type_info::__class_type_info): Lose details.
10981         (__class_type_info::detail_masks): Remove.
10982         (__si_class_type_info::__si_class_type_info): Lose details.
10983         (__vmi_class_type_info::details): New member.
10984         (__vmi_class_type_info::__vmi_class_type_info): Adjust.
10985         (__vmi_class_type_info::detail_masks): New member.
10986         * tinfo.cc (__class_type_info::do_upcast): Initialize result
10987         with unknown_details_mask.
10988         (__vmi_class_type_info::do_find_public_src): Adjust
10989         (__vmi_class_type_info::do_dyncast): Adjust.
10990         (__vmi_class_type_info::do_upcast): Set result details, if
10991         needed. Adjust.
10992         (__dynamic_cast): Temporarily #if out optimization.
10993
10994 2000-03-29  Nathan Sidwell  <nathan@codesourcery.com>
10995
10996         * rtti.c (get_tinfo_decl): Mark used.
10997         (emit_tinfo_decl): Don't optimize polymorphic type_info. Only
10998         mark as dealt with, if we output it.
10999
11000 2000-03-28  Mark Mitchell  <mark@codesourcery.com>
11001
11002         * class.c: Reorganize to put virtual function table initialization
11003         machinery at the end of the file.
11004
11005 2000-03-28  Jason Merrill  <jason@casey.cygnus.com>
11006
11007         * class.c (finish_struct): Use bitsize_zero_node.
11008         * pt.c (instantiate_class_template): Likewise.
11009
11010 2000-03-28  Mark Mitchell  <mark@codesourcery.com>
11011
11012         Put RTTI entries at negative offsets in new ABI.
11013         * class.c (dfs_build_vbase_offset_vtbl_entries): Put the first
11014         vbase offset at index -3, not -1.
11015         (build_vtabe_offset_vtbl_entries): Use unmarked_vtable_pathp, not
11016         dfs_vtable_path_unmarked_real_bases_queue_p to walk bases.
11017         (dfs_build_vcall_offset_vtbl_entries): Don't use skip_rtti_stuff.
11018         (build_rtti_vtbl_entries): New function.
11019         (set_rtti_entry): Remove.
11020         (build_primary_vtable): Don't use it.
11021         (build_secondary_vtable): Likewise.
11022         (start_vtable): Remove.
11023         (first_vfun_index): New function.
11024         (set_vindex): Likewise.
11025         (add_virtual_function): Don't call start_vtable.  Do call
11026         set_vindex.
11027         (set_primary_base): Rename parameter.
11028         (determine_primary_base): Likewise.
11029         (num_vfun_entries): Don't use skip_rtti_stuff.
11030         (num_extra_vtbl_entries): Include RTTI information.
11031         (build_vtbl_initializer): Use build_rtti_vtbl_entries.
11032         (skip_rtti_stuff): Remove.
11033         (dfs_modify_vtables): Don't use it.
11034         (modify_all_vtables): Don't use start_vtable.  Do use set_vindex.
11035         (layout_nonempty_base_or_field): Update size handling.
11036         (create_vtable_ptr): Tweak.
11037         (layout_class_type): Adjust parameter names.
11038         (finish_struct_1): Simplify.
11039         * cp-tree.h (CLASSTYPE_VSIZE): Tweak documentation.
11040         (skip_rtti_stuff): Remove.
11041         (first_vfun_index): New function.
11042         (dfs_vtable_path_unmarked_real_bases_queue_p): Remove.
11043         (dfs_vtable_path_marked_real_bases_queue_p): Remove.
11044         (marked_vtable_pathp): Declare.
11045         (unmarked_vtable_pathp): Likewise.
11046         * error.c (dump_expr): Use first_vfun_index to calculate vtable
11047         offsets.
11048         * rtti.c (build_headof): Look for RTTI at negative offsets.
11049         (get_tinfo_decl_dynamic): Likewise.
11050         (tinfo_base_init): Don't take the address of the TINFO_VTABLE_DECL
11051         here.
11052         (create_pseudo_type_info): Do it here instead.  Adjust so that
11053         vptr points at first virtual function.
11054         * search.c (marked_vtable_pathp): Make it global.
11055         (unmarked_vtable_pathp): Likewise.
11056         (dfs_vtable_path_unmarked_real_bases_queue_p): Remove.
11057         (dfs_vtable_path_marked_real_bases_queue_p): Likewise.
11058         (dfs_get_pure_virtuals): Don't use skip_rtti_stuff.
11059         (get_pure_virtuals): Likewise.
11060         (expand_upcast_fixups): Likewise.
11061         * tree.c (debug_binfo): Likewise.
11062         * tinfo.cc (__dynamic_cast): Look for vtable_prefix at appropriate
11063         negative offset.
11064
11065 Sun Mar 26 20:15:26 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11066
11067         * class.c (check_field_decl): Fix typo.
11068         (build_vtbl_or_vbase_field): Don't clear DECL_SAVED_INSNS.
11069         (check_methods): Likewise.
11070         (check_field_decls): Likewise.
11071         Use DECL_CONTEXT, not DECL_FIELD_CONTEXT.
11072         * cp-tree.h (DECL_SHADOWED_FOR_VAR, DECL_TEMPLATE_RESULT):
11073         Use DECL_RESULT_FLD, not DECL_RESULT.
11074         * decl.c (xref_tag): Use DECL_TEMPLATE_RESULT.
11075         * lex.c (identifier_type): Likewise.
11076         * pt.c (determine_specialization, lookup_template_class): Likewise.
11077         (tsubst_friend_function, tsubst_decl, instantiate_template): Likewise.
11078         (resolve_overloaded_unification, more_specialized): Likewise.
11079         * semantics.c (finish_member_declaration): Likewise.
11080         * typeck.c (build_x_function_call): Likewise.
11081
11082 2000-03-26  Mark Mitchell  <mark@codesourcery.com>
11083
11084         * class.c (layout_empty_base): Handle empty bases with non-byte
11085         alignment.
11086         (build_base_field): Likewise.
11087         (layout_virtual_bases): Likewise.
11088
11089         * class.c (finish_struct_1): Fix typo in this change:
11090
11091         Sat Mar 25 09:12:10 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11092
11093 2000-03-25  Mark Mitchell  <mark@codesourcery.com>
11094
11095         * decl.c (grokdeclarator): Count partial specializations when
11096         keeping track of how many template classes have been seen.
11097
11098         * dump.c (dequeue_and_dump): Dump DECL_TEMPLATE_RESULT.
11099
11100 Sat Mar 25 09:12:10 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11101
11102         * class.c (build_vbase_pointer_fields): layout_field now place_field.
11103         (get_vfield_offset): Use byte_position.
11104         (set_rtti_entry): Set OFFSET to ssizetype zero.
11105         (get_binfo_offset_as_int): Deleted.
11106         (dfs_record_base_offsets): Use tree_low_cst.
11107         (dfs_search_base_offsets): Likewise.
11108         (layout_nonempty_base_or_field): Reflect changes in RLI format
11109         and call byte_position.
11110         (layout_empty_base): Convert offset to ssizetype.
11111         (build_base_field): use rli_size_unit_so_far.
11112         (dfs_propagate_binfo_offsets): Do computation in proper type.
11113         (layout_virtual_bases): Pass ssizetype to propagate_binfo_offsets.
11114         (layout_class_type): Reflect changes in RLI names and fields.
11115         (finish_struct_1): Set DECL_FIELD_OFFSET.
11116         * dump.c (dequeue_and_dump): Call bit_position.
11117         * expr.c (cplus_expand_constant): Use byte_position.
11118         * rtti.c (expand_class_desc): Use bitsize_one_node.
11119         * typeck.c (build_component_addr): Use byte_position and don't
11120         special case for zero offset.
11121
11122 2000-03-24  Nathan Sidwell  <nathan@codesourcery.com>
11123
11124         * decl.c (vtype_decl_p): Use TYPE_POLYMORPHIC_P.
11125
11126         * rtti.c (get_tinfo_decl): Set comdat linkage on new-abi
11127         tinfo object.
11128         (emit_tinfo_decl): Only emit polymorphic tinfo's when emitting
11129         vtable.
11130
11131 2000-03-20 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
11132
11133         * call.c (check_dtor_name, build_new_method_call): Use TYPE_P and
11134         DECL_P macros.
11135         * decl.c (push_class_binding, poplevel, pushtag, lookup_namespace_name,
11136         make_typename_type, check_initializer, cp_finish_decl,
11137         xref_tag): Likewise.
11138         * decl2.c (grokfield, build_expr_from_tree, build_expr_from_tree,
11139         decl_namespace, arg_assoc_template_arg, arg_assoc,
11140         validate_nonmember_using_decl, do_class_using_decl): Likewise.
11141         * error.c (dump_template_argument, dump_expr, cp_file_of, cp_line_of,
11142         args_to_string): Likewise.
11143         * friend.c (is_friend): Likewise.
11144         * lex.c (note_got_semicolon, note_list_got_semicolon,
11145         is_global): Likewise.
11146         * method.c (build_overload_nested_name, build_overload_value,
11147         build_qualified_name, build_qualified_name, hack_identifier): Likewise.
11148         * parse.y (typename_sub, typename_sub1): Likewise.
11149         * pt.c (push_inline_template_parms_recursive, check_template_shadow,
11150         process_partial_specialization, convert_template_argument,
11151         template_args_equal, add_pending_template, lookup_template_class,
11152         for_each_template_parm_r, maybe_fold_nontype_arg,
11153         tsubst, instantiate_template, type_unification_real, unify,
11154         instantiate_pending_templates, set_mangled_name_for_template_decl):
11155         Likewise.
11156         * repo.c (repo_get_id, repo_template_used): Likewise.
11157         * search.c (lookup_field_1): Likewise.
11158         * tree.c (walk_tree, get_type_decl, cp_tree_equal, member_p): Likewise.
11159         * xref.c (classname): Likewise.
11160
11161 2000-03-22  Mark Mitchell  <mark@codesourcery.com>
11162
11163         * cp-tree.h (BINFO_FOR_VBASE): Adjust documentation.
11164         (CANONICAL_BINFO): New macro.
11165         (BINFO_NEW_VTABLE_MARKED): Use it.
11166         (SET_BINFO_NEW_VTABLE_MARKED): Likewise.
11167         (CLEAR_BINFO_NEW_VTABLE_MARKED): Likewise.
11168         * class.c (dfs_build_vbase_offset_vtbl_entries): Use BINFO_TYPE,
11169         not TREE_TYPE.
11170         (build_primary_vtable): Adjust usage of BINFO_NEW_VTABLE_MARKED.
11171         (build_secondary_vtable): Likewise.
11172         (dfs_finish_vtbls): Likewise.
11173         (dfs_accumulate_vtbl_inits): Likewise.
11174         (accumulate_vtbl_inits): New function.
11175         (finish_vtbls): Make sure that virtual bases come after
11176         non-virtual bases in the vtable group.
11177         (record_base_offsets): Don't save and restore TREE_VIA_VIRTUAL.
11178         (finish_struct_1): Adjust usage of BINFO_NEW_VTABLE_MARKED.
11179         * search.c (struct vbase_info): Move definition.
11180         (marked_new_vtable_p): Adjust usage of BINFO_NEW_VTABLE_MARKED.
11181         (unmarked_new_vtable_p): Likewise.
11182         (dfs_mark_vtable_path): Remove.
11183         (dfs_mark_new_vtable): Remove.
11184         (dfs_unmark_new_vtable): Likewise.
11185         (dfs_clear_search_slot): Likewise.
11186         (dfs_find_vbases):  Adjust usage of BINFO_NEW_VTABLE_MARKED.
11187         (dfs_clear_vbase_slots): Likewise.
11188         (init_vbase_pointers): LIkewise.
11189
11190 2000-03-22  Jason Merrill  <jason@casey.cygnus.com>
11191
11192         * typeck.c (type_after_usual_arithmetic_conversions): Prefer a
11193         SIZETYPE to a non-SIZETYPE.
11194
11195 2000-03-21  Mark Mitchell  <mark@codesourcery.com>
11196
11197         * class.c (layout_virtual_bases): Adjust names in conditionally
11198         compiled code.
11199
11200         * class.c (record_base_offsets): New function.
11201         (layout_conflict_p): Likewise.
11202         (layout_nonempty_base_or_field): Use it.
11203         (layout_empty_base): New function.
11204         (build_base_field): Use it.
11205         (build_base_fields): Update comment.
11206         (layout_virtual_bases): Fold in a little code form
11207         layout_basetypes.  Use layout_empty_base.
11208         (layout_basetypes): Remove.
11209         (end_of_class): New function.
11210         (layout_class_type): Use it.  Adjust.
11211
11212         * cp-tree.h (CLASSTYPE_VBASECLASSES): Fix typo in comment.
11213         (fntype_p): Remove.
11214         * search.c (dfs_skip_nonprimary_vbases_unmarkedp): Fix typo in
11215         comment.
11216         (dfs_skip_nonprimary_vbases_markedp): Likewise.
11217         * typeck.c (fntype_p): Remove.
11218
11219         * cp-tree.h (TI_SPEC_INFO): Remove.
11220         (CLASSTYPE_TI_SPEC_INFO): Likewise.
11221         * pt.c (process_partial_specialization): Likewise.
11222
11223         * class.c (build_base_field): Fix thinko in computation of binfo
11224         offsets.
11225
11226         * tree.c (mark_local_for_remap_p): Mark variables declared in
11227         TARGET_EXPRs as well.
11228
11229 2000-03-21  Nathan Sidwell  <nathan@codesourcery.com>
11230
11231         * typeck.c (require_complete_type, complete_type,
11232         complete_type_or_else, c_sizeof, c_sizeof_nowarn,
11233         build_array_ref, convert_arguments, pointer_diff,
11234         build_x_unary_op, build_unary_op, build_c_cast,
11235         build_modify_expr): Use COMPLETE_TYPE_P etc.
11236         * call.c (is_complete, convert_like_real,
11237         build_new_method_call): Likewise.
11238         * class.c (build_vbase_pointer_fields, check_bases,
11239         build_base_field, finish_struct_1, pushclass): Likewise.
11240         * cvt.c (cp_convert_to_pointer, convert_to_void): Likewise.
11241         * decl.c (maybe_process_template_type_declaration, pushtag,
11242         pushdecl, redeclaration_error_message, start_decl, start_decl_1,
11243         layout_var_decl, check_initializer, cp_finish_decl,
11244         grokdeclarator, require_complete_types_for_parms,
11245         grok_op_properties, xref_tag, xref_basetypes,
11246         check_function_type): Likewise.
11247         * decl2.c (check_classfn, reparse_absdcl_as_casts): Likewise.
11248         * friend.c (do_friend): Likewise.
11249         * init.c (build_offset_ref): Likewise.
11250         * parse.y (structsp): Likewise.
11251         * pt.c (maybe_process_partial_specialization,
11252         tsubst_friend_function, instantiate_class_template, tsubst,
11253         do_type_instantiation, instantiate_pending_templates): Likewise.
11254         * repo.c (repo_get_id): Likewise.
11255         * rtti.c (build_typeid, get_typeid, build_dynamic_cast_1,
11256         synthesize_tinfo_var, emit_support_tinfos): Likewise.
11257         * search.c (lookup_fnfields_1, lookup_conversions): Likewise.
11258         * semantics.c (begin_class_definition): Likewise.
11259         * tree.c (build_cplus_method_type): Likewise.
11260         * typeck2.c (digest_init, build_functional_cast,
11261         add_exception_specifier): Likewise.
11262         * parse.h, parse.c: Regenerated.
11263
11264 2000-03-21  Nathan Sidwell  <nathan@codesourcery.com>
11265
11266         * inc/cxxabi.h: New header file. Define new-abi entry points.
11267         (__pointer_type_info::target): Rename member to ...
11268         (__pointer_type_info::type): ... here.
11269         (__base_class_info::type): Rename member to ...
11270         (__base_class_info::base): ... here.
11271         * Make-lang.in (CXX_EXTRA_HEADERS): Add cxxabi.h
11272         * cp-tree.h (CPTI_ABI): New global tree enumeration.
11273         (abi_node): New global tree node.
11274         * decl.c (abi_node): Document.
11275         (init_decl_processing): Initialize abi_node.
11276         * rtti.c (build_dynamic_cast_1): Use abi_node for new-abi.
11277         (get_vmi_pseudo_type_info): Likewise.
11278         (create_tinfo_types): Likewise.
11279         (emit_support_tinfos): Likewise.
11280         * tinfo.h (cxxabi.h): Include for new-abi.
11281         Move rtti class definitions to new header file.
11282         * tinfo.cc (abi): Use the namespace.
11283         (std): Move new abi rtti classes from here ...
11284         (__cxxabiv1): ... to here.
11285         * tinfo2.cc (cxxabi.h): Include for new-abi.
11286         Move rtti class definitions to new header file.
11287         (std): Move new abi rtti classes from here ...
11288         (__cxxabiv1): ... to here.
11289         * inc/typeinfo (__class_type_info): Move into __cxxabiv1
11290         namespace.
11291
11292 2000-03-20  Jed Wing <jedwin@zloty.ugcs.caltech.edu>
11293             Jason Merrill  <jason@casey.cygnus.com>
11294
11295         * method.c (build_overload_int): Use host_integerp.
11296
11297 2000-03-20 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
11298
11299         * init.c (build_offset_ref): Handle the case of a templated member
11300         function.
11301
11302 2000-03-19  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
11303
11304         * except.c (expand_exception_blocks): Clear catch_clauses_last.
11305
11306 2000-03-18  Mark Mitchell  <mark@codesourcery.com>
11307
11308         * cp-tree.h (CLEAR_DECL_C_BIT_FIELD): New macro.
11309         * class.c (check_bitfield_decl): Turn illegal bitfields into
11310         non-bitfields.
11311         (dfs_propagate_binfo_offsets): Adjust for new size_binop
11312         semantics.
11313         (dfs_offset_for_unshared_vbases): Likewise.
11314         * cvt.c (cp_convert_to_pointer): Convert NULL to a
11315         pointer-to-member correctly under the new ABI.
11316         * expr.c (cplus_expand_constant): Don't use cp_convert when
11317         turning an offset into a pointer-to-member.
11318         * init.c (resolve_offset_ref): Don't adjust pointers-to-members
11319         when dereferencing them under the new ABI.
11320         * typeck.c (get_member_function_from_ptrfunc): Tweak calculation
11321         of pointers-to-members under the new ABI.
11322
11323         * class.c (check_bitfield_decl): Remove restriction on really long
11324         bitfields.
11325         (layout_class_type): Implement new ABI handling of bitfields
11326         longer than their types.
11327
11328 2000-03-18  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
11329
11330         * parse.y (extdefs): Call ggc_collect.
11331         * parse.c: Regenerated.
11332
11333 2000-03-18  Nathan Sidwell  <nathan@codesourcery.com>
11334
11335         * class.c (build_base_field): Use TYPE_ALIGN to examine a type.
11336         (note_name_declared_in_class): Use OVL_CURRENT to get at a
11337         potential overload.
11338
11339 Fri Mar 17 08:09:14 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11340
11341         * class.c (build_vbase_path): Use integer_zerop.
11342         (build_vtable_entry): Use tree_low_cst.
11343         (get_vfield_offset): Use bit_position.
11344         (dfs_modify_vtables): New variable vindex_val; `i' is HOST_WIDE_INT.
11345         Use tree_low_cst.
11346         (check_bitfield_decl): Set DECL_SIZE using convert.
11347         (build_base_field): Set DECL_SIZE and DECL_SIZE_UNIT using size_binop.
11348         (layout_virtual_bases): DSIZE is unsigned HOST_WIDE_INT.
11349         Use tree_low_cst.
11350         (finish_struct_1): Use bit_position.
11351         (dump_class_hierarchy): Use tree_low_cst.
11352         * cp-tree.h (min_precision): Add declaration.
11353         * decl.c (xref_tag, xref_basetypes): Use tree_low_cst.
11354         * error.c (dump_type_suffix): Use host_integerp and tree_low_cst.
11355         (dump_expr): Use integer_zerop, host_integerp, and tree_low_cst.
11356         * expr.c (cplus_expand_constant): Use bit_position.
11357         * init.c (build_vec_init): Use host_integerp and tree_low_cst.
11358         * rtti.c (get_base_offset): Use bit_position.
11359         * typeck.c (build_binary_op): Use integer_zerop, compare_tree_int,
11360         host_integerp, and tree_low_cst.
11361         (pointer_int_sum): Use integer_zerop.
11362         (build_component_addr): Use bit_position.
11363
11364 2000-03-17  Nathan Sidwell  <nathan@codesourcery.com>
11365
11366         * typeck.c (require_complete_type): Don't assume size_zero_node.
11367         (complete_type_or_else): Likewise.
11368
11369 2000-03-16  Steven Grady <grady@digitaldeck.com>
11370             Jason Merrill  <jason@casey.cygnus.com>
11371
11372         * rtti.c (build_dynamic_cast_1): Improve diagnostics.
11373
11374 2000-03-16  Nathan Sidwell  <nathan@codesourcery.com>
11375
11376         * decl2.c (grokfield): Bail out if type is error_mark_node.
11377
11378 2000-03-15  Nathan Sidwell  <nathan@codesourcery.com>
11379
11380         * tinfo2.cc (__ptr_to_member_data): Rename to ...
11381         (__pointer_to_member_data): ... here. Adjust.
11382         * rtti.c (create_tinfo_types): Adjust.
11383
11384 2000-03-15  Nathan Sidwell  <nathan@codesourcery.com>
11385
11386         * cp-tree.h (CPTI_REF_DESC_TYPE, ref_desc_type_node): Remove.
11387         * decl.c (ref_desc_type_node): Undocument.
11388         * rtti.c (ptr_ref_initializer): Rename to ...
11389         (ptr_initializer): ... here. Adjust comments.
11390         (ptmd_initializer): Fix comment thinko.
11391         (synthesize_tinfo_var): Remove REFERENCE_TYPE case.
11392         (create_tinfo_types): Remove ref_desc_type_node init.
11393         * tinfo2.cc (__reference_type_info): Remove.
11394
11395 2000-03-15  Nathan Sidwell  <nathan@codesourcery.com>
11396
11397         * decl.c (cp_finish_decl): Remove obsolete comment.
11398
11399         * typeck.c (build_ptrmemfunc1): Kill uninitialized warning.
11400
11401 2000-03-14  Mark Mitchell  <mark@codesourcery.com>
11402
11403         * cp-tree.h: Tweak documentation.
11404         * class.c (build_vbase_pointer_fields): Layout the fields, too.
11405         (avoid_overlap): Remove.
11406         (get_binfo_offset_as_int): New function.
11407         (dfs_serach_base_offsets): Likewise.
11408         (layout_nonempty_base_or_field): Likewise.
11409         (build_base_field): Layout fields here.  Avoid placing two objects
11410         of the same type at the same address, under the new ABI.
11411         (build_base_fields): Adjust accordingly.
11412         (create_vtable_ptr): Return the new field, but don't attach it to
11413         TYPE_FIELDS.
11414         (remove_base_field): Remove.
11415         (remove_base_fields): Remove.
11416         (layout_basetypes): Adjust accordingly.
11417         (layout_class_type): Call layout_field for each field, rather than
11418         just making a wholesale call to layout_type.
11419
11420 2000-03-14  Jeff Sturm  <jsturm@sigma6.com>
11421
11422         * except.c (expand_throw): Fix typo in _Jv_Sjlj_Throw.
11423
11424 2000-03-13  Jason Merrill  <jason@casey.cygnus.com>
11425
11426         * decl.c (grokfndecl): Set TREE_NOTHROW if TYPE_NOTHROW_P.
11427
11428         * except.c (dtor_nothrow): New fn.
11429         (do_pop_exception): Use it.  Take type parm.
11430         (push_eh_cleanup): Take type parm.
11431         (expand_start_catch_block): Pass it.
11432         (build_eh_type_type_ref): Accept null type.
11433
11434 2000-03-12  Mark Mitchell  <mark@codesourcery.com>
11435
11436         * cp-tree.h (revert_static_member_fn): Change prototype.
11437         * decl.c (grokfndecl): Adjust call to revert_static_member_fn.
11438         (grok_op_properties): Likewise.
11439         (start_function): Likewise.
11440         (revert_static_member_fn): Simplify.
11441         * pt.c (check_explicit_specialization): Adjust call to
11442         revert_static_member_fn.
11443
11444 2000-03-11  Mark Mitchell  <mark@codesourcery.com>
11445
11446         * cp-tree.h (scope_kind): New type.
11447         (tmpl_spec_kind): Likewise.
11448         (declare_pseudo_global_level): Remove.
11449         (pseudo_global_level_p): Rename to template_parm_scope_p.
11450         (pushlevel): Remove declaration.
11451         (begin_scope): New function.
11452         (finish_scope): Likewise.
11453         (current_tmpl_spec_kind): Likewise.
11454         * decl.c (struct binding_level): Shorten parm_flag to 2 bits.
11455         Shorten keep to 2 bits.  Rename pseudo_global to template_parms_p.
11456         Add template_spec_p.
11457         (toplevel_bindings_p): Adjust.
11458         (declare_pseudo_global_level): Remove.
11459         (pseudo_global_level_p): Rename to template_parm_scope_p.
11460         (current_tmpl_spec_kind): New function.
11461         (begin_scope): Likewise.
11462         (finish_scope): Likewise.
11463         (maybe_push_to_top_level): Adjust.
11464         (maybe_process_template_type_declaration): Likewise.
11465         (pushtag): Likewise.
11466         (pushdecl_nonclass_level): Likewise.
11467         (lookup_tag): Likewise.
11468         (grokfndecl): Handle member template specializations.  Share
11469         constructor and non-constructor code.
11470         * decl2.c (check_classfn): Handle member template specializations.
11471         * pt.c (begin_template_parm_list): Use begin_scope.
11472         (begin_specialization): Likewise.
11473         (end_specialization): Likewise.
11474         (check_explicit_specialization): Use current_tmpl_spec_kind.
11475         Handle member template specializations.
11476         (end_template_decl): Use finish_scope.  Remove call to
11477         get_pending_sizes.
11478         (push_template_decl_real): Remove bogus error message.
11479         (tsubst_decl): Fix typo in code contained in comment.
11480         (instantiate_template): Handle member template specializations.
11481         (most_general_template): Likewise.
11482
11483 2000-03-11  Gabriel Dos Reis  <gdr@codesourcery.com>
11484
11485         * lex.c (whitespace_cr): Compress consecutive calls to warning().
11486         (do_identifier): Ditto for error().
11487
11488         * pt.c (convert_nontype_argument): Ditto for cp_error().
11489         (convert_template_argument): Ditto for cp_pedwarn().
11490
11491 2000-03-11  Jason Merrill  <jason@casey.cygnus.com>
11492
11493         * exception.cc (__check_null_eh_spec): New fn.
11494         * except.c (expand_end_eh_spec): Call it if the spec is throw().
11495
11496 2000-03-10  Jason Merrill  <jason@casey.cygnus.com>
11497
11498         * decl.c (push_throw_library_fn): Take the FUNCTION_TYPE.
11499         * except.c (expand_end_eh_spec): Add the return type.
11500         * rtti.c (throw_bad_cast): Add the parmtypes.
11501         (throw_bad_typeid): Likewise.
11502
11503         * semantics.c (expand_stmt): Only leave out rtl for unused
11504         artificials, and set DECL_IGNORED_P on them as well.
11505         * decl.c (wrapup_globals_for_namespace): Likewise.
11506
11507 2000-03-09  Nathan Sidwell  <nathan@codesourcery.com>
11508
11509         * decl.c (maybe_commonize_var): Skip all artificial decls.
11510         * pt.c (tsubst_decl): Don't copy TREE_ASM_WRITTEN.
11511
11512 2000-03-10  Jason Merrill  <jason@casey.cygnus.com>
11513
11514         * lang-options.h, decl2.c: Add -fno-enforce-eh-specs.
11515         * cp-tree.h: Declare flag_enforce_eh_specs.
11516         * decl.c (store_parm_decls, finish_function): Check it.
11517
11518         C library functions don't throw.
11519         * Makefile.in (cfns.h): New target.
11520         (except.o): Depend on it.
11521         * Make-lang.in (cc1plus): Depend on cfns.gperf.
11522         * cfns.gperf: New file.
11523         * cfns.h: Generated.
11524         * except.c: Include it.
11525         (nothrow_libfn_p): New fn.
11526         * decl.c (grokfndecl): Use it.
11527         * cp-tree.h: Declare it.
11528
11529         * decl.c (push_overloaded_decl_1, auto_function,
11530         define_function): Lose.
11531         (build_library_fn_1): New static fn.
11532         (builtin_function): Use it.
11533         (get_atexit_node): Use build_library_fn_ptr.
11534         (build_library_fn, build_cp_library_fn, build_library_fn_ptr,
11535         build_cp_library_fn_ptr, push_library_fn, push_cp_library_fn,
11536         push_void_library_fn, push_throw_library_fn): New fns.
11537         * cp-tree.h: Declare them.
11538         (cp_tree_index): Remove CPTI_BAD_CAST, CPTI_BAD_TYPEID.
11539         (throw_bad_cast_node, throw_bad_typeid_node): Lose.
11540         * except.c (init_exception_processing, call_eh_info, do_pop_exception,
11541         (expand_end_eh_spec, alloc_eh_object, expand_throw): Use above fns.
11542         * rtti.c (build_runtime_decl): Lose.
11543         (throw_bad_cast, throw_bad_typeid, get_tinfo_decl,
11544         build_dynamic_cast_1, expand_si_desc, expand_class_desc,
11545         expand_ptr_desc, expand_attr_desc, expand_generic_desc): Use above fns.
11546
11547         * call.c (build_call): Remove result_type parm.
11548         Call mark_used on unused artificial fns.
11549         * init.c, method.c, typeck.c, except.c, rtti.c: Adjust.
11550
11551 2000-03-09  Jason Merrill  <jason@casey.cygnus.com>
11552
11553         * call.c (build_call): Set TREE_NOTHROW on the CALL_EXPR as
11554         appropriate.
11555         * decl.c (define_function): Set TREE_NOTHROW on the FUNCTION_DECL.
11556         * except.c (call_eh_info, alloc_eh_object, expand_throw): Set
11557         TREE_NOTHROW or TREE_THIS_VOLATILE on the function as appropriate.
11558         * rtti.c (build_runtime_decl, get_tinfo_decl, build_dynamic_cast_1,
11559         expand_si_desc, expand_class_desc, expand_ptr_desc, expand_attr_desc,
11560         expand_generic_desc): Likewise.
11561
11562 2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
11563
11564         * exception.cc (__cp_pop_exception): Cleanup the original object.
11565
11566 2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
11567
11568         * decl.c (grok_op_properties): Merge conversion to void warning
11569         with other silly op warnings.
11570
11571 2000-03-08  Jason Merrill  <jason@casey.cygnus.com>
11572
11573         * typeck2.c (process_init_constructor): Set TREE_PURPOSE of
11574         array CONSTRUCTOR elements.  Don't use expr_tree_cons.
11575
11576 2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
11577
11578         * decl.c (cp_make_fname_decl): New function.
11579         (wrapup_globals_for_namespace): Don't emit unused static vars.
11580         (init_decl_processing): Remove comment about use of
11581         array_domain_type. Set make_fname_decl.
11582         (cp_finish_decl): Remove __FUNCTION__ nadgering.
11583         * semantics.c (begin_compound_stmt): Remove
11584         current_function_name_declared flagging.
11585         (expand_stmt): Don't emit unused local statics.
11586         * typeck.c (decay_conversion): Don't treat __FUNCTION__ decls
11587         specially.
11588
11589 2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
11590
11591         * typeck.c (convert_for_assignment): Don't look at array
11592         initializer.
11593         * call.c (convert_like_real): Likewise.
11594
11595 2000-03-07  Jason Merrill  <jason@casey.cygnus.com>
11596
11597         Add initial support for '\uNNNN' specifier.
11598         * lex.c (read_ucs): New fn.
11599         (readescape, skip_white_space): Call it.
11600         (is_extended_char, is_extended_char_1): New fns.
11601         (utf8_extend_token): New fn, #if 0'd out.
11602         (real_yylex): Treat extended chars like letters.
11603
11604         * search.c (note_debug_info_needed): Walk the bases even if we
11605         weren't deferring the type itself.
11606
11607 2000-03-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11608
11609         * decl2.c (finish_objects): Constify a char*.
11610
11611         * method.c (emit_thunk): Likewise.
11612
11613 2000-03-06  Nathan Sidwell  <nathan@codesourcery.com>
11614
11615         * typeck.c (dubious_conversion_warnings): Look through
11616         REFERENCE_TYPE.
11617
11618 Mon Mar  6 08:46:47 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11619
11620         * class.c (dfs_modify_vtables): I is now unsigned.
11621         (check_bitfield_decl): Use tree_int_cst_sgn and compare_tree_int.
11622         (build_base_field): Add casts of TREE_INT_CST_LOW to HOST_WIDE_INT.
11623         * error.c (dump_expr): Cast TREE_INT_CST_HIGH to unsigned.
11624         * init.c (build_vec_init): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
11625         * method.c (build_overload_int): Cast TREE_INT_CST_HIGH to unsigned.
11626         * typeck.c (build_binary_op, case TRUNC_DIV_EXPR):
11627         Call integer_all_onesp.
11628         * typeck2.c (process_init_constructor): Use compare_tree_int.
11629
11630         * lang-specs.h (as): Don't call if -syntax-only.
11631
11632 2000-03-06  Mark Mitchell  <mark@codesourcery.com>
11633
11634         * expr.c (cplus_expand_expr, case STMT_EXPR): Don't set
11635         RTL_EXPR_HAS_NO_SCOPE after all.
11636
11637 2000-03-05  Mark Mitchell  <mark@codesourcery.com>
11638
11639         * expr.c (cplus_expand_expr, case STMT_EXPR): Use
11640         expand_start_stmt_expr and expand_end_stmt_expr directly.  Set
11641         RTL_EXPR_HAS_NO_SCOPE.
11642
11643         * pt.c (instantiate_decl): Clear TI_PENDING_TEMPLATE_FLAG a little
11644         later.
11645
11646         * dump.c (dequeue_and_dump): Dump SCOPE_NO_CLEANUPS_P.
11647
11648 2000-03-05  Nathan Sidwell  <nathan@codesourcery.com>
11649
11650         * call.c (convert_like): Macrofy.
11651         (convert_like_with_context): New macro.
11652         (convert_like_real): Renamed from convert_like.  Add calling
11653         context parameters, for diagnostics. Add recursive flag.  Call
11654         dubious_conversion_warnings for outer conversion.
11655         (build_user_type_conversion): Use convert_like_with_context.
11656         (build_over_call): Likewise. Don't warn about dubious
11657         conversions here. Adjust convert_default_arg calls.
11658         (convert_default_arg): Add context parameters for diagnostics.
11659         Pass through to convert_like_with_context.
11660         * cp-tree.h (convert_default_arg): Add context parameters.
11661         (dubious_conversion_warnings): Prototype new function.
11662         * typeck.c (convert_arguments): Adjust convert_default_arg call.
11663         (dubious_conversion_warnings): New function, broken
11664         out of convert_for_assignment.
11665         (convert_for_assignment): Adjust.
11666
11667 2000-03-03  Jason Merrill  <jason@casey.cygnus.com>
11668
11669         * decl2.c (key_method): Break out from...
11670         (import_export_vtable, import_export_class): ...here.
11671
11672         * decl.c (finish_function): Don't mess with flag_keep_inline_functions.
11673         * decl2.c (finish_vtable_vardecl): Don't check decl_function_context.
11674
11675         * search.c (note_debug_info_needed, dfs_debug_mark,
11676         dfs_debug_unmarkedp): Uncomment.  Adjust for new scheme.
11677         * decl2.c (finish_vtable_vardecl): Call note_debug_info_needed.
11678
11679 2000-03-03  Nathan Sidwell  <nathan@codesourcery.com>
11680
11681         * decl.c (cp_finish_decl): Remove obsolete obstack comments, fix
11682         typos.
11683
11684 2000-03-02  Mark Mitchell  <mark@codesourcery.com>
11685
11686         * cp-tree.h (TYPE_NEEDS_DESTRUCTOR): Rename to ...
11687         (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): ... this.
11688         (TYPE_HAS_TRIVIAL_DESTRUCTOR): New macro.
11689         (lang_type): Split gets_new into has_new and has_array_new.
11690         (TYPE_VEC_NEW_USES_COOKIE): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
11691         (TYPE_GETS_NEW): Split into ...
11692         (TYPE_HAS_NEW_OPERATOR): ... this, and ...
11693         (TYPE_HAS_ARRAY_NEW_OPERATOR): ... this.
11694         (DECL_ARRAY_DELETE_OPERATOR_P): New macro
11695         (build_op_new_call): Don't declare.
11696         (build_new_1): Likewise.
11697         * call.c (build_op_new_call): Remove.
11698         * class.c (check_bases): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR
11699         instead of TYPE_NEEDS_DESTRUCTOR.
11700         (finish_struct_bits): Likewise.
11701         (add_implicitly_declared_members): Likewise.
11702         (check_field_decl): Likewise.
11703         (check_methods): Set TYPE_VEC_DELETE_TAKES_SIZE here, and set it
11704         correctly under the new ABI.
11705         * decl.c (start_decl_1): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR
11706         instead of TYPE_NEEDS_DESTRUCTOR.
11707         (initialize_local_var): Likewise.
11708         (destroy_local_var): Likewise.
11709         (cp_finish_decl): Likewise.
11710         (register_dtor_fn): Likewise.
11711         (grok_op_properties): Set TYPE_HAS_NEW_OPERATOR and
11712         TYPE_HAS_ARRAY_NEW_OPERATOR, not TYPE_HAS_NEW.  Don't set
11713         TYPE_VEC_DELETE_TAKES_SIZE here.
11714         (xref_basetypes): Set TYPE_HAS_NEW_OPERATOR and
11715         TYPE_HAS_ARRAY_NEW_OPERATOR, not TYPE_HAS_NEW.
11716         (store_parm_decls):  Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
11717         (finish_destructor_body): Likewise.
11718         (maybe_build_cleanup_1): Likewise.
11719         * decl2.c (do_static_destruction): Likewise.
11720         * init.c (build_new_1): Make it static.
11721         (perform_member_init): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
11722         (expand_cleanup_for_base): Likewise.
11723         (get_cookie_size): New function.
11724         (build_new_1): Handle array-new cookies correctly under the new
11725         ABI.
11726         (build_vec_delete_1): Likewise.
11727         (build_vec_init):  Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
11728         (build_delete): Likewise.
11729         (build_vec_delete): Handle array-new cookies correctly under the new
11730         ABI.
11731         * lex.c (do_identifier): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
11732         * pt.c (instantiate_class_template): Set TYPE_HAS_NEW_OPERATOR and
11733         TYPE_HAS_ARRAY_NEW_OPERATOR.
11734         * ptree.c (print_lang_type): Check them.
11735         * search.c (context_for_name_lookup): Fix typo in comment.
11736         (tree_has_any_destructor_p): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
11737         * tree.c (break_out_cleanups): Likewise.
11738         (build_cplus_array_test_1): Likewise.
11739         (cp_build_qualified_type_real): Likewise.
11740         * typeck.c (complete_type): Likewise.
11741
11742         * g++spec.c (lang_specific_driver): Add -fnew-abi at the start of
11743         the command-line, not the end.
11744
11745 2000-03-01  Jason Merrill  <jason@casey.cygnus.com>
11746
11747         * pt.c (instantiate_decl): Clear TI_PENDING_TEMPLATE_FLAG.
11748
11749 2000-03-02  Tom Tromey  <tromey@cygnus.com>
11750
11751         * cp-tree.h (build_java_class_ref): Declare.
11752         * init.c (build_java_class_ref): No longer static.
11753         * except.c (expand_throw): Generate a Java-style `throw' if the
11754         thrown object is a "Java" object.
11755         (initialize_handler_parm): Generate a Java-style lookup of
11756         exception info if the caught object is a "Java" object.
11757         (catch_language, catch_language_init): New globals.
11758         (decl_is_java_type): New function.
11759         (expand_start_catch_block): Don't call push_eh_info() or
11760         push_eh_cleanup() when handling a Java-style "catch".  Pass Java
11761         class reference to build_catch_block.
11762
11763 Thu Mar  2 13:32:01 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11764
11765         * typeck.c (comptypes): Treat sizetype like its language equivalent.
11766
11767 2000-03-01  Bernd Schmidt  <bernds@cygnus.co.uk>
11768
11769         * typeck.c (maybe_warn_about_returning_address_of_local): Reorganize
11770         to merge reference/pointer code and fix incorrect warnings.
11771
11772 2000-02-29  Jason Merrill  <jason@casey.cygnus.com>
11773
11774         * search.c (protected_accessible_p): Use context_for_name_lookup.
11775
11776         * init.c (construct_virtual_bases): Fix thinko.
11777         * typeck.c (expand_ptrmemfunc_cst): Fix thinko.
11778
11779 2000-03-01  Martin von Loewis  <loewis@informatik.hu-berlin.de>
11780
11781         * decl.c (current_function_decl): Move to toplev.c.
11782
11783 2000-02-29  Nathan Sidwell  <nathan@codesourcery.com>
11784
11785         * pt.c (fn_type_unification): Unify return type, whenever
11786         provided.
11787         (get_bindings_real): Only pass return type when necessary.
11788         Remove explicit return type check.
11789         * class.c (resolve_address_of_overloaded_function): Pass desired
11790         return type to fn_type_unification.
11791
11792 Mon Feb 28 08:15:23 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11793
11794         * class.c (build_vtbl_or_vbase_field, check_methods): Don't clear
11795         DECL_FIELD_SIZE.
11796         (check_bitfield_decl, check_field_decls): Set DECL_SIZE, not
11797         DECL_FIELD_SIZE.
11798         * rtti.c (expand_class_desc): Likewise.
11799         * cp-tree.h (DECL_INIT_PRIORITY): Use underlying union name.
11800         (THUNK_VCALL_OFFSET): Likewise.
11801         (THUNK_DELTA): Reflect changes in ../tree.h.
11802
11803 2000-02-28  Jason Merrill  <jason@casey.cygnus.com>
11804
11805         * search.c (protected_accessible_p): Also allow the access if
11806         the member is public in DERIVED.  Lose TYPE parm.
11807         (friend_accessible_p): Lose TYPE parm.
11808         (accessible_p): Adjust.
11809
11810 Sun Feb 27 16:40:33 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11811
11812         * class.c (dfs_build_vtable_offset_vtbl_entries): Don't use size_binop
11813         on things that are not sizes; ssize_binop deleted.
11814         Call size_diffop when appropriate.
11815         (dfs_build_vcall_offset_vtbl_entries): Likewise.
11816         (build_primary_vtable, build_secondary_vtable): Likewise.
11817         (dfs_set_offset_for_unshared_vbases, dfs_modify_vtables): Likewise.
11818         Variable I is HOST_WIDE_INT.
11819         (get_vfield_offset): Pass proper types to size_binop.
11820         (size_extra_vtbl_entries, layout_virtual_bases): Likewise.
11821         (finish_struct_1): Likewise.
11822         (skip_rtti_stuff): Arg N is now pointer to signed.
11823         (layout_class_type): Use size_zero_node.
11824         * cp-tree.h (skip_rtti_stuff): Arg N is pointer to signed.
11825         * cvt.c (cp_convert_to_pointer): Pass proper types to size_binop.
11826         * decl.c (complete_arry_type): Pass proper types to size_binop.
11827         (xref_basetypes): BINFO_OFFSET is sizetype.
11828         * error.c (dump_expr): Don't use size_binop non-sizes.
11829         * expr.c (cplus_expand_constant): Pass proper types to size_binop.
11830         * init.c (construct_virtual_bases): Fix type error.
11831         (build_vec_delete_1): Pass proper type to size_binop and don't
11832         fold result.
11833         * lex.c (cp_make_lang_type): BINFO_OFFSET is sizetype.
11834         * rtti.c (get_base_offset): Pass proper type to size_binop.
11835         * search.c (dfs_find_vbases): Fix type error.
11836         (expand_upcast_fixups): Arg to skip_rtti_stuff is pointer to signed.
11837         (dfs_get_vbase_types): BINFO_OFFSET is sizetype.
11838         * tree.c (debug_binfo): Variable N is signed.
11839         Use HOST_WIDE_INT_PRINT_DEC.
11840         * typeck.c (comptypes): sizetype is same as equivalent integer type.
11841         (c_sizeof, c_sizeof_nowarn, expr_sizeof): Use TYPE_SIZE_UNIT,
11842         size_one_node and size_zero_node.
11843         (c_alignof): Use size_one_node.
11844         (build_component_addr): Pass proper types to size_binop.
11845         (expand_ptrmemfunc_cst): Don't use size_binop on non-sizes.
11846
11847 2000-02-26  Jason Merrill  <jason@casey.cygnus.com>
11848
11849         Implement class scope using-declarations for functions.
11850         * class.c (handle_using_decl): Call add_method for used functions.
11851         Use IDENTIFIER_CLASS_VALUE to check for conflicts.
11852         (add_method): Used functions are hidden by local functions.
11853         (check_bases_and_members): Handle using-decls before finalizing
11854         CLASSTYPE_METHOD_VEC.
11855         * call.c (add_function_candidate): Add ctype parm; if non-zero,
11856         override the type of 'this' accordingly.
11857         (add_template_candidate, add_template_candidate_real): Add ctype parm.
11858         (convert_class_to_reference, build_user_type_conversion_1,
11859         build_new_function_call, build_object_call, build_new_op,
11860         build_new_method_call): Pass ctype parm.
11861
11862         * search.c (lookup_member): Put rval_binfo, not basetype_path, in
11863         the baselink.
11864         * call.c (convert_class_to_reference, build_user_type_conversion_1,
11865         build_new_function_call, build_object_call, build_new_op,
11866         build_new_method_call, build_op_delete_call): Don't get basetype_path
11867         from a baselink.
11868         * typeck.c (build_component_ref): Likewise.
11869         * init.c (build_offset_ref): Likewise.
11870         (resolve_offset_ref): Don't call enforce_access.
11871         Call build_scoped_ref.
11872         * typeck2.c (build_scoped_ref): Simplify.  Do nothing if it
11873         would cause an error or if -pedantic.
11874         * class.c (alter_access): Lose binfo parm.
11875
11876 2000-02-26  Mark Mitchell  <mark@codesourcery.com>
11877
11878         * semantics.c (simplify_aggr_init_exprs_p): Don't walk into
11879         types.
11880
11881 2000-02-25  Alfred Minarik <a8601248@unet.univie.ac.at>
11882
11883         * rtti.c (get_vmi_pseudo_type_info): Move __vmi_class_type_info
11884         pseudo_type_info creation into the std namespace
11885
11886 2000-02-26  Mark Mitchell  <mark@codesourcery.com>
11887
11888         * cp-tree.h (DECL_NEEDED_P): Tweak to correct usage before EOF.
11889         (import_export_class): Remove declaration.
11890         * decl2.c (import_export_class): Make it static.
11891         * dump.c (dequeue_and_dump): Handle PREDECREMENT_EXPR,
11892         PREINCREMENT_EXPR, POSTDECREMENT_EXPR, POSTINCREMENT_EXPR,
11893         EXPR_WITH_FILE_LOCATION.
11894         * lex.c (check_newline): Tweak filename/lineno setting.
11895         * semantics.c (begin_while_stmt): Fix typo in comment.
11896
11897 Sat Feb 26 19:50:23 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11898
11899         * lang-options.h (-fmessage-length=): Add missing option.
11900
11901         * Make-lang.in (CXX_SRCS): Add .h files and sort list.
11902
11903 2000-02-26  Zack Weinberg  <zack@wolery.cumb.org>
11904
11905         * Make-lang.in: Delete refs to LIBGCC2_DEPS.
11906
11907 Fri Feb 25 14:52:33 2000  Jim Wilson  <wilson@cygnus.com>
11908
11909         * optimize.c (expand_call_inline): Emit the return label before
11910         evaluating the return value.
11911
11912 2000-02-24  Mark Mitchell  <mark@codesourcery.com>
11913
11914         * lex.c (check_newline): Use push_srcloc and pop_srcloc, rather
11915         than duplicating functionality here.
11916         * optimize.c: Include input.h.
11917         (expand_call_inline): Use push_srcloc and pop_srcloc.
11918         * parse.y (maybe_cv_qualifier): Remove calls to emit_line_note.
11919         * parse.c: Regenerated.
11920         * Makefile.in (lex.o): Depend on input.h.
11921         (optimize.o): Likewise.
11922
11923 2000-02-24  Nathan Sidwell  <nathan@codesourcery.com>
11924
11925         * decl.c (grokdeclarator): Diagnose qualifiers on non-member
11926         function type, rather than ICE.
11927
11928 2000-02-23  Jason Merrill  <jason@casey.cygnus.com>
11929
11930         * decl.c (grokdeclarator): Call decl_type_access_control.
11931         * parse.y (parse_end_decl): Don't call decl_type_access_control if
11932         decl is null.
11933
11934 2000-02-23  Nathan Sidwell  <nathan@codesourcery.com>
11935
11936         * decl.c (decls_match): Remove obsolete static member nadgering.
11937
11938 2000-02-21  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
11939
11940         * decl.c (grokdeclarator): Change ANSI to ISO.
11941         * lex.c (consume_string, readescape, do_identifier): Likewise.
11942         (parse_float, real_yylex): Likewise.
11943         * parse.y (paren_expr_or_null, paren_cond_or_null): Likewise.
11944         (unary_expr, new_initializer, cast_expr, primary, primary_no_id,
11945         new_type_id, maybe_label_decls, simple_stmt,
11946         for.init.statement): Likewise.
11947         * pt.c (do_decl_instantiation, do_type_instantiation): Likewise.
11948         * semantics.c (finish_named_return_value): Likewise.
11949         * parse.c: Regenerate.
11950
11951 2000-02-21  Mark Mitchell  <mark@codesourcery.com>
11952
11953         * cp-tree.h (CPTI_VTABLE_INDEX_TYPE): New macro.
11954         (CPTI_CLASS_STAR_TYPE): Remove.
11955         (vtable_index_type): Likewise.
11956         (class_star_type_node): Remove.
11957         (TYPE_PTRMEMFUNC_FN_TYPE): Adjust for the new ABI.
11958         (build_binary_op_nodefault): Remove.
11959         * call.c (build_new_op): Use build_binary_op instead of
11960         build_binary_op_nodefault.
11961         * decl.c (init_decl_processing): Remove class_star_type_node
11962         initialization.  Make delta_type_node ptrdiff_type_node under the
11963         new ABI.  Initialize vtable_index_type.
11964         (build_ptrmemfunc_type): Build different structures for the new
11965         ABI.
11966         (build_enumerator): Use build_binary_op instead of
11967         build_binary_op_nodefault.
11968         * method.c (build_overload_value): Mangle pointers-to-members
11969         appropriately under the new ABI.
11970         * typeck.c (build_array_ref): Use build_binary_op instead of
11971         build_binary_op_nodefault.
11972         (get_member_function_from_ptrfunc): Adjust for the new ABI.
11973         (build_binary_op_nodefault): Rename to ...
11974         (build_binary_op): ... this.  Remove old version.  Adjust for
11975         pointer-to-member comparisons under the new ABI.
11976         (build_ptrmemfunc1): Remove dead code.  Adjust for the new ABI.
11977         (build_ptrmemfunc): Adjust for the new ABI.
11978         (expand_ptrmemfunc_cst): Likewise.
11979         (delta2_from_ptrmemfunc): Assert that we're not using the new ABI.
11980         (pfn_from_ptrmemfunc): Adjust for the new ABI.
11981
11982 2000-02-21  Gabriel Dos Reis  <gdr@codesourcery.com>
11983
11984         * call.c (build_object_call): Compress consecutive calls to
11985         cp_error.
11986         (build_conditional_expr): Say 'ISO C++' not 'ANSI C++'.
11987         (build_op_delete_call): Adjust message formatting.
11988
11989         * class.c (check_bases): Compress consecutive calls to
11990         cp_pedwarn.
11991         (finish_struct_anon): Say 'ISO C++'.
11992
11993         * decl.c (start_decl): Same here.
11994         (grok_reference_init): Likewise.
11995         (grokfndecl): Correct message formatting.
11996         (grokfndecl): Improve diagnostic.
11997         (check_static_variable_definition): Likewise. Say 'ISO C++'
11998         (compute_array_index_type): Say 'ISO C++'
11999         (create_array_type_for_decl): Compress consecutive calls to
12000         cp_error.
12001         (grokdeclarator): Say 'ISO C++'
12002         (grok_op_properties): Likewise.
12003
12004         * decl2.c (delete_sanity): Clairify diagnostic.
12005         (check_member_template): Same here.
12006         (grok_function_init): Use consistent terminology.
12007
12008         * expr.c (do_case): Say 'ISO C++'
12009
12010         * friend.c (do_friend): Compress consecutive calls to warning.
12011
12012 2000-02-20  Mark Mitchell  <mark@codesourcery.com>
12013
12014         * cp-tree.h (merge_primary_and_secondary_vtables_p): New macro.
12015         * class.c (build_secondary_vtable): Reorganize.  Don't create a
12016         new vtable under the new ABI.
12017         (layout_vtable_decl): Don't add num_extra_vtbl_entries when
12018         computing the size.
12019         (build_vtbl_initializer): Don't return a CONSTRUCTOR; just return
12020         the initializing elements.
12021         (initialize_vtable): New function.
12022         (dfs_finish_vtbls): Use it.
12023         (dfs_accumulate_vtbl_inits): New function.
12024         (finish_vtbls): Merge primary and secondary vtables under the new
12025         ABI.
12026         (finish_struct_1): Remove redundant call to layout_vtable_decl.
12027         * init.c (expand_virtual_init): Deal with BINFO_VTABLEs that
12028         aren't VAR_DECLs.
12029
12030         * class.c (build_vtable): New function, split out from ...
12031         (get_vtable_decl): ... here, and ...
12032         (build_secondary_vtable): ... here.
12033
12034         * pt.c (tsubst_decl): Fix formatting.
12035
12036 Sat Feb 19 18:43:13 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
12037
12038         * class.c (build_primary_vtable, layout_vtable_decl): Likewise.
12039         (avoid_overlap, build_base_field): Likewise.
12040         (build_base_field, build_base_fields, is_empty_class):
12041         Test DECL_SIZE with integer_zero.
12042         (layout_class_type): Set CLASSTYPE_SIZE_UNIT.
12043         * cp-tree.h (struct lang_type): New field size_unit.
12044         (CLASSTYPE_SIZE_UNIT): New macro.
12045         * decl.c (init_decl_processing): Set DECL_SIZE_UNIT.
12046         (cp_finish_decl): Delete -Wlarger-than processing.
12047         * optimize.c (remap_decl): Walk DECL_SIZE_UNIT.
12048         * pt.c (tsubst_decl): Set DECL_SIZE_UNIT.
12049         * tree.c (make_binfo): binfo vector is one entry longer.
12050         (walk_tree): Walk DECL_SIZE_UNIT.
12051
12052 2000-02-19  Mark Mitchell  <mark@codesourcery.com>
12053
12054         * class.c (dfs_build_vcall_offset_vtbl_entries): Fix typo in
12055         comment.
12056         (build_vtable_entry): Don't assume all vtable entries are
12057         functions.
12058         (build_vtbl_initializer): Adjust accordingly.
12059         (get_vtable_decl): Fix formatting.
12060
12061 2000-02-18  Jason Merrill  <jason@casey.cygnus.com>
12062
12063         * semantics.c (deferred_type_access_control): Walk the entire
12064         type_lookups list.
12065         (save_type_access_control): Rename from
12066         initial_deferred_type_access_control.  Just remember the value.
12067         (decl_type_access_control): New fn.
12068         (begin_function_definition): Use deferred_type_access_control, after
12069         we've started the function.  Set type_lookups to error_mark_node.
12070         * parse.y (frob_specs, fn.def1): Adjust.
12071         (parse_decl0, parse_field, parse_field0, parse_bitfield): New fns.
12072         (parse_end_decl, parse_bitfield0, parse_method): New fns.
12073         (fn.def2, initdcl, initdcl0_innards, nomods_initdcl0): Use them.
12074         (after_type_component_declarator0): Likewise.
12075         (after_type_component_declarator): Likewise.
12076         (notype_component_declarator): Likewise.
12077         * cp-tree.h: Adjust.
12078
12079         * decl.c (redeclaration_error_message): Allow redeclaration of
12080         namespace-scope decls.
12081
12082 2000-02-18  Martin von Loewis  <loewis@informatik.hu-berlin.de>
12083
12084         * typeck2.c (my_friendly_abort): Use GCCBUGURL.
12085
12086 2000-02-17  Mark Mitchell  <mark@codesourcery.com>
12087
12088         * class.c (add_method): Don't set DECL_VIRTUAL_CONTEXT.
12089         * decl2.c (grokclassfn): Likewise.
12090
12091         * ir.texi: Document DECL_TEMPLATE_INSTANTIATIONS.
12092
12093         * decl2.c (lang_decode_option): Don't set default message length
12094         here.
12095         * lex.c (lang_init_options): Set it here.
12096
12097 2000-02-16  Mark Mitchell  <mark@codesourcery.com>
12098
12099         Make DECL_CONTEXT mean the class in which a member function was
12100         declared, even for a virtual function.
12101         * cp-tree.h (DECL_CLASS_CONTEXT): Adjust.
12102         (DECL_FRIEND_CONTEXT): New macro.
12103         (DECL_REAL_CONTEXT): Remove.
12104         (SET_DECL_FRIEND_CONTEXT): Likewise.
12105         (DECL_VIRTUAL_CONTEXT): Adjust.
12106         (DECL_CLASS_SCOPE_P): Use TYPE_P.
12107         (add_friends): Remove.
12108         (hack_decl_function_context): Likewise.
12109         * call.c (build_new_function_call): Replace DECL_REAL_CONTEXT with
12110         CP_DECL_CONTEXT.
12111         (build_over_call): Fix indentation.  Use DECL_CONTEXT
12112         instead of DECL_CLASS_CONTEXT.
12113         * class.c (dfs_build_vcall_offset_vtbl_entries): Likewise.
12114         (add_method): Set DECL_VIRTUAL_CONTEXT, not DECL_CLASS_CONTEXT.
12115         (strictly_overrides): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
12116         (build_vtbl_or_vbase_field): Don't set DECL_CLASS_CONTEXT.
12117         (build_base_field): Likewise.
12118         (finish_struct_1): Likewise.
12119         (build_self_reference): Likewise.
12120         * decl.c (push_class_binding): Use CP_DECL_CONTEXT, not
12121         DECL_REAL_CONTEXT.
12122         (pushtag): Use decl_function_context, not
12123         hack_decl_function_context.
12124         (decls_match): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT.
12125         (duplicate_decls): Use DECL_VIRTUAL_CONTEXT.
12126         (pushdecl): Remove bogus code.
12127         (start_decl): Use DECL_CONTEXT rather than DECL_CLASS_CONTEXT.
12128         (cp_finish_decl): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT.
12129         (grokfndecl): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
12130         Use decl_function_context, nothack_decl_function_context.
12131         (grokvardecl): Don't set DECL_CLASS_CONTEXT.
12132         (grokdeclarator): Likewise.  Use decl_function_context, not
12133         hack_decl_function_context.
12134         (copy_args_p): Document.  Don't use DECL_CLASS_CONTEXT.
12135         (start_function): Use DECL_FRIEND_CONTEXT, not
12136         DECL_CLASS_CONTEXT.  Use decl_function_context, not
12137         hack_decl_function_context.
12138         (finish_function): Use decl_function_context, not
12139         hack_decl_function_context.
12140         (maybe_retrofit_in_chrg): Use DECL_CONTEXT, not
12141         DECL_CLASS_CONTEXT.
12142         (grokclassfn): Set DECL_VIRTUAL_CONTEXT, not DECL_CONTEXT.
12143         (finish_static_data_member_decl): Don't set DECL_CLASS_CONTEXT.
12144         (grokfield): Likewise.
12145         (finish_builtin_type): Likewise.
12146         (finish_vtable_vardec): Use decl_function_context, not
12147         hack_decl_function_context.
12148         (import_export_decl): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
12149         (start_static_initialization_or_destruction): Likewise.
12150         (finish_static_initialization_or_destruction): Likewise.
12151         (mark_used): Adjust logic for deciding when to synthesize methods.
12152         * dump.c (dequeue_and_dump): Use CP_DECL_CONTEXT, not
12153         DECL_REAL_CONTEXT.
12154         * error.c (dump_function_decl): Use DECL_CONTEXT, not
12155         DECL_CLASS_CONTEXT.
12156         * friend.c (is_friend): Likewise.
12157         (add_friends): Remove.
12158         (do_friend): Use SET_DECL_FRIEND_CONTEXT.
12159         * lex.c (begin_definition_of_inclass_inline): Use
12160         decl_function_context, not hack_decl_function_context.
12161         (process_next_inline): Likewise.
12162         (do_identifier): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT.
12163         * method.c (set_mangled_name_for_decl): Use DECL_CONTEXT, not
12164         DECL_CLASSS_CONTEXT.
12165         (hack_identifier): Likewise.
12166         (synthesize_method):  Use decl_function_context, not
12167         hack_decl_function_context.
12168         * pt.c (template_class_depth_real): Use CP_DECL_CONTEXT, not
12169         DECL_REAL_CONTEXT.
12170         (is_member_template): Use decl_function_context, not
12171         hack_decl_function_context.  Use DECL_CONTEXT, not
12172         DECL_CLASS_CONTEXT.
12173         (build_template_decl): Set DECL_VIRTUAL_CONTEXT, not
12174         DECL_CLASS_CONTEXT.
12175         (check_default_tmpl_args): Use CP_DECL_CONTEXT, not
12176         DECL_REAL_CONTEXT.
12177         (push_template_decl_real): Likewise.
12178         (instantiate_class_template): Don't call add_friends.
12179         (tsubst_default_argument): Use DECL_CONTEXT, not
12180         DECL_REAL_CONTEXT.
12181         (tsubst_decl): Set DECL_VIRTUAL_CONTEXT, not DECL_CLASS_CONTEXT.
12182         Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
12183         (set_meangled_name_for_template_decl): Use DECL_CONTEXT, not
12184         DECL_CLASS_CONTEXT.
12185         * repo.c (repo_inline_used): Likewise.
12186         * search.c (current_scope): Adjust for new _CONTEXT macros.
12187         (context_for_name_lookup): Use CP_DECL_CONTEXT, not
12188         DECL_REAL_CONTEXT.
12189         (friend_accessible_p): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
12190         (lookup_fnfields_here):Likewise.
12191         (check_final_overrider): Likewise.
12192         (init_vbase_pointers): Likewise.
12193         (virtual_context): Likewise.
12194         * semantics.c (finish_member_declaration): Just set DECL_CONTEXT.
12195         (expand_body): Use decl_function_context, not
12196         hack_decl_function_context.
12197         * tree.c (hack_decl_function_context): Remove.
12198         * typeck.c (build_x_function_call): Use DECL_CONTEXT, not
12199         DECL_CLASS_CONTEXT.
12200         * typeck2.c (error_not_base_type): Likewise.
12201
12202 2000-02-15  Jason Merrill  <jason@casey.cygnus.com>
12203
12204         * decl.c (xref_tag): Don't SET_IDENTIFIER_NAMESPACE_VALUE.
12205
12206 2000-02-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12207
12208         * Make-lang.in (g++spec.o): Depend on $(GCC_H), not gcc.h.
12209
12210 2000-02-15  Jonathan Larmour  <jlarmour@redhat.co.uk>
12211
12212         * lang-specs.h: Add new __GNUC_PATCHLEVEL__ define to default spec.
12213
12214 2000-01-16  Gabriel Dos Reis  <gdr@codesourcery.com>
12215
12216         * decl2.c (lang_decode_option): Enable automatic line wrapping.
12217
12218 2000-02-13  Jason Merrill  <jason@casey.cygnus.com>
12219
12220         * parse.y (frob_specs): Split out...
12221         (parse_decl): From here.
12222         (fn.def2): Call initial_deferred_type_access_control.
12223         (after_type_component_declarator0): Call frob_specs.
12224         (notype_component_declarator0): Likewise.
12225         * search.c (friend_accessible_p): Nested classes are friends of their
12226         enclosing classes.
12227
12228 2000-02-10  Mark Mitchell  <mark@codesourcery.com>
12229
12230         * ir.texi (ADDR_EXPR): Document the fact that an ADDR_EXPR can be
12231         used to create an implicit temporary.
12232
12233         * class.c (dfs_modify_vtables): Tweak calculation of functions to
12234         override.
12235
12236 2000-02-08  Nathan Sidwell  <nathan@acm.org>
12237
12238         * typeck.c (strip_all_pointer_quals): Use TYPE_MAIN_VARIANT, to
12239         strip array element qualifiers too.
12240
12241 2000-02-07  Mark Mitchell  <mark@codesourcery.com>
12242
12243         * decl.c (store_parm_decls): Don't build cleanups for parameters
12244         while processing_template_decl.
12245
12246 2000-02-07  Jason Merrill  <jason@casey.cygnus.com>
12247
12248         * cp-tree.h (struct saved_scope): Add incomplete field.
12249         (namespace_scope_incomplete): New macro.
12250         * decl.c (pushdecl): Use it.
12251         (hack_incomplete_structures): Use it.  See through artificial
12252         binding levels.
12253         (mark_saved_scope): Mark it.
12254
12255         Implement access control for nested types.
12256         * search.c (type_access_control): New fn.
12257         (accessible_p): Now we do perform access control for types.
12258         * semantics.c (deferred_type_access_control): New fn.
12259         (initial_deferred_type_access_control): New fn.
12260         (begin_function_definition): Call it.  Add lookups parm.
12261         * decl.c (struct binding_level): Add this_class field.
12262         (pushlevel_class): Set it.
12263         (mark_binding_level): Mark it.
12264         (lookup_name_real): Use it.  Call type_access_control.
12265         (mark_saved_scope): Mark lookups field.
12266         * cp-tree.h (flagged_type_tree): Add lookups field.
12267         (struct saved_scope): Add lookups field.
12268         (type_lookups): New macro.
12269         * parse.y (declmods): Now <ftype>.
12270         (parse_decl): Add lookups parm.  Call
12271         initial_deferred_type_access_control.
12272         (lang_extdef): Clear type_lookups.
12273         (typed_declspecs, declmods, typespec): Set lookups field.
12274         (initdcl): Call deferred_type_access_control.
12275         (fn.def1, fn.def2, typed_declspecs1, initdcl0_innards, nomods_initdcl0,
12276         component_decl_1, named_parm): Adjust.
12277         * friend.c (is_friend): Nested classes are friends of their
12278         enclosing classes.
12279
12280         * class.c (currently_open_derived_class): New fn.
12281         * method.c (hack_identifier): Use it.
12282
12283         * lex.c (do_identifier): Remove obsolete code.
12284
12285         * parse.y (typed_typespecs): Propagate new_type_flag properly.
12286
12287 2000-02-05  Zack Weinberg  <zack@wolery.cumb.org>
12288
12289         * tinfo.h: Remove apostrophes from C++ comment (xgettext
12290         thinks this file is plain C).
12291
12292 2000-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12293
12294         * Makefile.in (call.o): Depend on $(EXPR_H).
12295
12296         * call.c: Include "expr.h".
12297
12298         * class.c (dump_class_hierarchy): Add prototype.
12299
12300         * search.c (dfs_get_pure_virtuals): Likewise.
12301
12302 2000-02-1  Ulrich Drepper  <drepper@redhat.com>
12303
12304         * parse.y (simple_stmt): Allow :: token in asm parameter list.
12305         * parse.c: Rebuilt.
12306
12307 Mon Jan 31 15:35:29 2000  Jim Wilson  <wilson@cygnus.com>
12308
12309         * class.c (build_vtbl_or_vbase_field): New parameter fcontext.
12310         Store it in DECL_FCONTEXT.
12311         (build_vbase_pointer_fields, create_vtable_ptr): Fix callers.
12312
12313 2000-01-31  Jason Merrill  <jason@casey.cygnus.com>
12314
12315         * tinfo.h (old abi): #include "tconfig.h".
12316         * tinfo.cc (convert_to_base): Move into old abi section.
12317
12318 2000-01-31  Mark Mitchell  <mark@codesourcery.com>
12319
12320         * cp-tree.h (BINFO_VIRTUALS): Tweak documentation.
12321         (CLASSTYPE_PRIMARY_BINFO): Use BINFO_PRIMARY_BINFO.
12322         (BINFO_PRIMARY_BINFO): New macro.
12323         (BF_DELTA): Rename to ...
12324         (BV_DELTA): ... this.
12325         (BF_VCALL_INDEX): Rename to ...
12326         (BV_VCALL_INDEX): ... this.
12327         (BF_FN): Rename to ...
12328         (BV_FN): ... this.
12329         * class.c (build_vbase_path): Adjust for changes to reverse_path.
12330         (set_rtti_entry): Rename BF_ macros to BV_ variants.
12331         (modify_vtable_entry): Simplify.
12332         (add_virtual_function): Rename BF_ macros to BV_ variants.
12333         (build_vtable_initializer): Likewise.
12334         (get_class_offset_1): Remove.
12335         (dfs_get_class_offset): Likewise.
12336         (get_class_offset): Likewise.
12337         (dfs_find_final_overrider): New function.
12338         (find_final_overrider): Likewise.
12339         (modify_one_vtable): Remove.
12340         (dfs_find_base): New function.
12341         (dfs_modify_vtables): Fold modify_one_vtable in here.  Use
12342         find_final_overrider.
12343         (modify_all_vtables): Adjust.  Set BV_VCALL_INDEX on new
12344         virtuals.
12345         (dfs_fixup_vtable_deltas): Remove.
12346         (override_one_vtable): Remove.
12347         (merge_overrides): Likewise.
12348         (layout_virtual_bases): Make sure BINFO_OFFSET is set right for
12349         unreal chilren of virtual bases.
12350         (finish_struct_1): Don't use merge_overrides.  Don't use
12351         dfs_fixup_vtable_deltas.
12352         * tree.c (reverse_path): Return a TREE_LIST, not a chain of
12353         BINFOs.
12354
12355 2000-01-31  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
12356             Jason Merrill  <jason@yorick.cygnus.com>
12357
12358         * tinfo.h: Rename USItype to myint32, depend on BITS_PER_UNIT.
12359
12360 2000-01-31  Alfred Minarik <a8601248@unet.univie.ac.at>
12361
12362         * exception.cc (__throw_bad_typeid): Add missing std::.
12363
12364 2000-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12365
12366         * cp-tree.h (make_thunk): PROTO -> PARAMS.
12367
12368 2000-01-31  Nathan Sidwell  <sidwell@codesourcery.com>
12369
12370         * cp-tree.h (new_abi_rtti_p): Use flag_new_abi.
12371
12372         Runtime support for new-abi rtti.
12373         * inc/typeinfo (type_info::operator!=): Define in class.
12374         (type_info::before, type_info::name, type_info::operator==,
12375         type_info::operator!=): Define new ABI implementations.
12376         (type_info::is_pointer_p, type_info::is_function_p): Declare
12377         new virtual functions.
12378         (type_info::do_catch, type_info::do_upcast): Likewise.
12379
12380         * tinfo.h (__base_class_info): Define new class.
12381         (__class_type_info): Likewise.
12382         (__si_class_type_info): Likewise.
12383         (__vmi_class_type_info): Likewise.
12384         (__dynamic_cast): Prototype.
12385
12386         * tinfo.cc: Conditionalize old and new rtti mechanisms.
12387         (type_info::is_pointer_p): Define new function.
12388         (type_info::is_function_p): Likewise.
12389         (type_info::do_catch): Likewise.
12390         (type_info::do_upcast): Likewise.
12391         (vtable_prefix): New structure for vtable access.
12392         (adjust_pointer): Define new template function.
12393         (contained_p, public_p, virtual_p, contained_public_p,
12394         contained_nonpublic_p, contained_nonvirtual_p): Define new
12395         functions.
12396         (nonvirtual_base_type): New local variable.
12397         (__class_type_info::~__class_type_info): Define.
12398         (__si_class_type_info::~__si_class_type_info): Likewise.
12399         (__vmi_class_type_info::~__vmi_class_type_info): Likewise.
12400         (__class_type_info::do_catch): Define new function.
12401         (__class_type_info::do_upcast): Likewise.
12402         (__class_type_info::find_public_src): Likewise.
12403         (__class_type_info::do_find_public_src): Likewise.
12404         (__si_class_type_info::do_find_public_src): Likewise.
12405         (__vmi_class_type_info::do_find_public_src): Likewise.
12406         (__class_type_info::do_dyncast): Likewise.
12407         (__si_class_type_info::do_dyncast): Likewise.
12408         (__vmi_class_type_info::do_dyncast): Likewise.
12409         (__class_type_info::do_upcast): Likewise.
12410         (__si_class_type_info::do_upcast): Likewise.
12411         (__vmi_class_type_info::do_upcast): Likewise.
12412         (__dynamic_cast): Likewise.
12413
12414         * tinfo2.cc (__fundamental_type_info): Define new class.
12415         (__pointer_type_info): Likewise.
12416         (__reference_type_info): Likewise.
12417         (__array_type_info): Likewise.
12418         (__function_type_info): Likewise.
12419         (__enum_type_info): Likewise.
12420         (__ptr_to_member_type_info): Likewise.
12421         (__fundamental_type_info::~__fundamental_type_info): Define.
12422         (__pointer_type_info::~__pointer_type_info): Likewise.
12423         (__reference_type_info::~__reference_type_info): Likewise.
12424         (__array_type_info::~__array_type_info): Likewise.
12425         (__function_type_info::~__function_type_info): Likewise.
12426         (__enum_type_info::~__enum_type_info): Likewise.
12427         (__ptr_to_member_type_info::~__ptr_to_member_type_info): Likewise.
12428         (__pointer_type_info::do_catch): Define new function.
12429         (__ptr_to_member_type_info::do_catch): Define new function.
12430
12431         (__throw_type_match_rtti_2): Use new ABI interface, if enabled.
12432         (__is_pointer): Likewise.
12433
12434         * exception.cc (__cplus_type_matcher): Deal with new-abi rtti.
12435
12436 2000-01-30  Mark Mitchell  <mark@codesourcery.com>
12437
12438         * cp/class.c (build_vtable): Rename to build_primary_vtable.
12439         (prepare_fresh_vtable): Rename to build_secondary_vtable.
12440         (make_new_vtable): New function.
12441         (modify_vtable_entry): Handle generation of new vtables correctly.
12442         (modify_one_vtable): Remove unused parameter.
12443         (dfs_fixup_vtable_deltas): Likewise.
12444         (override_one_vtable): Use build_secondary_vtable.
12445         (finish_struct_1): Use build_primary_vtable and
12446         build_secondary_vtable.
12447
12448 2000-01-28  Ulrich Drepper  <drepper@redhat.com>
12449
12450         * cp/decl.c: Adjust variable names, comments, help strings.
12451
12452 2000-01-29  Nathan Sidwell  <nathan@acm.org>
12453
12454         * new2.cc (operator delete[]): Use operator delete, don't assume
12455         implementation.
12456
12457 2000-01-29  Nathan Sidwell  <sidwell@codesourcery.com>
12458
12459         * class.c (build_vtbl_initializer): Add argument to
12460         build_vtable_entry call.
12461
12462 2000-01-27  Mark Mitchell  <mark@codesourcery.com>
12463
12464         * cp-tree.def (THUNK_DECL): Discuss vcall indices.
12465         * cp-tree.h (BINFO_VIRTUALS): Update documentation.
12466         (BF_DELTA): New macro.
12467         (BF_VCALL_INDEX): Likewise.
12468         (BF_FN): Likewise.
12469         (THUNK_VCALL_OFFSET): Likewise.
12470         (make_thunk): Change prototype.
12471         * class.c (build_vtable_entry): Integrate
12472         build_vtable_entry_for_fn.  Handle vcall indices.
12473         (build_vtable_entry_for_fn): Remove.
12474         (set_rtti_entry): Handle vcall indices.  Use BF_DELTA,
12475         BF_VCALL_INDEX, BF_FN.
12476         (modify_vtable_entry): Integrate common code from
12477         modify_one_vtable and dfs_fixup_vtable_deltas.
12478         (add_virtual_function): Set BF_VCALL_INDEX.
12479         (build_vtbl_initializer): Simplify.  Use BF_DELTA, BF_VCALL_INDEX,
12480         and BF_FN.
12481         (modify_one_vtable): Simplify.
12482         (dfs_fixup_vtable_deltas): Likewise.
12483         (override_one_vtable): Use BF_DELTA, BF_VCALL_INDEX, BF_FN.
12484         * method.c (make_thunk): Handle vcall indices.
12485
12486 2000-01-28  Nathan Sidwell  <sidwell@codesourcery.com>
12487
12488         Compiler side new abi rtti (not enabled).
12489         * cp-tree.h (new_abi_rtti_p): New macro.
12490         (emit_support_tinfos): Prototype new function.
12491         (tinfo_decl_p): Likewise.
12492         (emit_tinfo_decl): Likwise.
12493         * rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL): New accessor
12494         macros.
12495         (doing_runtime): New local static.
12496         (init_rtti_processing): Add new-abi initializer.
12497         (get_tinfo_decl): Add new-abi logic.
12498         (tinfo_from_decl): Likewise.
12499         (build_dynamic_cast_1): Likewise.
12500         (qualifier_flags): New static function.
12501         (tinfo_base_init): Likewise.
12502         (generic_initializer): Likewise.
12503         (ptr_ref_initializer): Likewise.
12504         (ptmd_initializer): Likewise.
12505         (class_hint_flags): Likewise.
12506         (class_initializer): Likewise.
12507         (synthesize_tinfo_var): Likewise.
12508         (create_real_tinfo_var): Likewise.
12509         (create_pseudo_type_info): Likewise.
12510         (get_vmi_pseudo_type_info): Likewise.
12511         (create_tinfo_types): Likewise.
12512         (emit_support_tinfos): New global function.
12513         (tinfo_decl_p): New global predicate.
12514         (emit_tinfo_decl): New global function.
12515         * class.c (set_rtti_entry): Generalize for old and new rtti.
12516         (build_vtbl_initializer): Likewise.
12517         * decl2.c (finish_file): Likewise.
12518
12519 Thu Jan 27 20:53:36 2000  Jim Wilson  <wilson@cygnus.com>
12520
12521         * optimize.c (remap_decl): Add walk_tree calls for DECL_SIZE (t)
12522         and TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (t))).
12523
12524 Thu Jan 27 13:54:12 2000  Mike Stump  <mrs@wrs.com>
12525
12526         * decl.c (pushdecl): Fix up shadow warnings with respect to implicit
12527         for scopes.
12528
12529 2000-01-26  Jason Merrill  <jason@casey.cygnus.com>
12530
12531         * pt.c (unify): Use fold, not maybe_fold_nontype_arg.
12532
12533 Wed Jan 26 22:19:14 2000  J"orn Rennecke <amylaar@cygnus.co.uk>
12534
12535         * optimize.c (calls_setjmp_r): Supply new argument
12536         to special_function_p.
12537
12538 2000-01-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12539
12540         * call.c: PROTO -> PARAMS.
12541         * class.c: Likewise.
12542         * cp-tree.h: Likewise.
12543         * cvt.c: Likewise.
12544         * decl.c: Likewise.
12545         * decl.h: Likewise.
12546         * decl2.c: Likewise.
12547         * dump.c: Likewise.
12548         * errfn.c: Likewise.
12549         * error.c: Likewise.
12550         * except.c: Likewise.
12551         * expr.c: Likewise.
12552         * init.c: Likewise.
12553         * input.c: Likewise.
12554         * lex.c: Likewise.
12555         * lex.h: Likewise.
12556         * method.c: Likewise.
12557         * optimize.c: Likewise.
12558         * parse.y: Likewise.
12559         * pt.c: Likewise.
12560         * repo.c: Likewise.
12561         * rtti.c: Likewise.
12562         * search.c: Likewise.
12563         * semantics.c: Likewise.
12564         * spew.c: Likewise.
12565         * tree.c: Likewise.
12566         * typeck.c: Likewise.
12567         * typeck2.c: Likewise.
12568         * xref.c: Likewise.
12569
12570 2000-01-25  Richard Henderson  <rth@cygnus.com>
12571
12572         * typeck.c (build_binary_op_nodefault): Remove UNNE_EXPR.
12573
12574 2000-01-25  Mark Mitchell  <mark@codesourcery.com>
12575
12576         * cp-tree.h (vcall_offset_in_vtable_p): New macro.
12577         * class.c (build_vbase_offset_vtbl_entries): Fix typo in commment.
12578         (struct vcall_offset_data_s): New type.
12579         (dfs_vcall_offset_queue_p): New function.
12580         (dfs_build_vcall_offset_vtbl_entries): Likewise.
12581         (build_vcall_offset_vtbl_entries): Likewise.
12582         (layout_vtable_decl): Likewise.
12583         (num_vfun_entries): Likewise.
12584         (num_extra_vtbl_entries): Add the entries for vcall offsets.
12585         (build_vtbl_initializer): Likewise.
12586         (dfs_finish_vtabls): Use layout_vtable_decl.
12587         (modify_one_vtables): Always duplicate vtables under the new ABI.
12588         (finish_struct_1): Use layout_vtable_decl.
12589
12590 2000-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12591
12592         * decl.c (member_function_or_else): Change third arg from a format
12593         specifier to an `enum overload_flags'.  Callers changed.
12594
12595 2000-01-25  Gabriel Dos Reis  <gdr@codesourcery.com>
12596
12597         * typeck.c (composite_pointer_type, c_sizeof, expr_sizeof,
12598         build_binary_op_nodefault, build_unary_op, build_reinterpret_cast,
12599         build_const_cast, get_delta_difference, check_return_expr): Avoid
12600         ANSI string concatenation usage.
12601
12602 2000-01-24  Mark Mitchell  <mark@codesourcery.com>
12603
12604         * class.c (layout_class_type): Put the fields required to make a
12605         class non-empty at the end, not the beginning, of the TYPE_FIELDs
12606         list.
12607
12608 2000-01-24  Jason Merrill  <jason@casey.cygnus.com>
12609
12610         * pt.c (maybe_fold_nontype_arg): Do nothing if we're not in a
12611         template.
12612
12613         * decl2.c (mark_used): Do instantiate inlines that have been
12614         explicitly instantiated.
12615
12616 2000-01-24  Richard Henderson  <rth@cygnus.com>
12617
12618         * call.c (build_over_call): Use expand_tree_builtin.
12619         * typeck.c (build_function_call_real): Likewise.
12620         (build_binary_op_nodefault): Handle unordered compares.
12621
12622 2000-01-24  Nathan Sidwell  <sidwell@codesourcery.com>
12623
12624         * cp-tree.h (CPTI_BAD_CAST, CPTI_BAD_TYPEID, CPTI_DCAST): New
12625         cp_tree_index values.
12626         (throw_bad_cast_node, throw_bad_typeid_node, dynamic_cast_node):
12627         New global node #defines for them.
12628         * rtti.c (call_void_fn): Replace with ...
12629         (build_runtime_decl): ... new static function.
12630         (throw_bad_cast): Use throw_bad_cast_node and build_runtime_decl.
12631         (throw_bad_typeid): Use throw_bad_typeid_node and build_runtime_decl.
12632         (build_dynamic_cast_1): Always produce correctly typed result.
12633         Explicitly produce type_info addresses. Use dynamic_cast_node.
12634         * exception.cc (__throw_bad_cast): Return `void *'.
12635         (__throw_bad_typeid): Return `const type_info &'.
12636
12637 2000-01-24  Nathan Sidwell  <sidwell@codesourcery.com>
12638
12639         * cp-tree.h (get_vtable_decl): Prototype new function.
12640         * class.c (get_vtable_decl): New function. Broken out from ...
12641         (build_vtable): ... here. Use it.
12642         * decl2.c (finish_vtable_vardecl): Ignore dummy vtables created
12643         by get_vtable_decl.
12644
12645 2000-01-24  Nathan Sidwell  <sidwell@codesourcery.com>
12646
12647         * cp-tree.h (CPTI_TP_DESC_TYPE, CPTI_ACCESS_MODE_TYPE,
12648         CPTI_USER_DESC_TYPE, CPTI_CLASS_DESC_TYPE, CPTI_ATTR_DESC_TYPE,
12649         CPTI_PTMF_DESC_TYPE): Remove cp_tree_index enumerations.
12650         (CPTI_TI_DESC_TYPE, CPTI_REF_DESC_TYPE, CPTI_ARY_DESC_TYPE,
12651         CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE, CPTI_SI_CLASS_DESC_TYPE,
12652         CPTI_VMI_CLASS_DESC_TYPE, CPTI_BASE_DESC_TYPE): New enumerations.
12653         (CPTI_TINFO_FN_ID, CPTI_TINFO_FN_TYPE): Rename to ...
12654         (CPTI_TINFO_DECL_ID, CPTI_TINFO_DECL_TYPE): ... here.
12655         (CPTI_TINFO_VAR_ID): New enumeration.
12656         (__tp_desc_type_node, __access_mode_type_node,
12657         __bltn_desc_type_node, __user_desc_type_node,
12658         __class_desc_type_node, __ptr_desc_type_node,
12659         __attr_desc_type_node, __func_desc_type_node,
12660         __ptmf_desc_type_node, __ptmd_desc_type_node): Remove #defines.
12661         (ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
12662         ref_desc_type_node, ary_desc_type_node, func_desc_type_node,
12663         enum_desc_type_node, class_desc_type_node,
12664         si_class_desc_type_node, vmi_class_desc_type_node,
12665         ptmd_desc_type_node, base_desc_type_node): New #defines.
12666         (tinfo_fn_id, tinfo_fn_type): Rename to ...
12667         (tinfo_decl_id, tinfo_decl_type): ... here. Adjust.
12668         (tinfo_var_id): New enumeration.
12669         (DECL_TINFO_FN_P): Augment comment.
12670         * decl.c (cp_global_trees): Adjust documentation.
12671         * rtti.c (init_rtti_processing): Adjust for tinfo_decl_id,
12672         tinfo_decl_type and tinfo_var_id.
12673         (get_tinfo_decl_dynamic): Adjust for tinfo_decl_type.
12674         (build_typeid): Remove unused variable.
12675         (get_tinfo_var): Use tinfo_var_id.
12676         (tinfo_name): New static function.
12677         (get_tinfo_decl): Adjust for tinfo_decl_id and tinfo_decl_type.
12678         (tinfo_from_decl): Likewise.
12679         (get_base_offset): New static function, broken out of
12680         expand_class_desc.
12681         (expand_si_desc): Use tinfo_name.
12682         (expand_class_desc): Likewise. Lose local static variable.
12683         Use base_desc_type_node. Use get_base_offset.
12684         (expand_ptr_desc): Use tinfo_name.
12685         (expand_attr_desc): Likewise.
12686         (expand_generic_desc): Likewise.
12687
12688         * tinfo.cc (__GXX_ABI_VERSION): Test value and existence.
12689         * tinfo.h (__GXX_ABI_VERSION): Test value and existence.
12690
12691 2000-01-23  Mark Mitchell  <mark@codesourcery.com>
12692
12693         * cp-tree.h (__eprintf): Remove declaration.
12694         * tree.c (__eprintf): Remove definition.
12695
12696 2000-01-23  Zack Weinberg  <zack@rabi.columbia.edu>
12697             Mark Mitchell  <mark@codesourcery.com>
12698
12699         * cp-tree.h (CLASSTYPE_MARKED_N, SET_CLASSTYPE_MARKED_N,
12700         CLEAR_CLASSTYPE_MARKED_N): Avoid signed vs. unsigned warnings.
12701
12702 2000-01-23  Brad Lucier  <lucier@math.purdue.edu>
12703
12704         * class.c (dump_class_hierarchy): Print HOST_WIDE_INT properly.
12705
12706 2000-01-23  Mark Mitchell  <mark@codesourcery.com>
12707
12708         * cp-tree.h (register_dtor_fn): New function.
12709         * decl.c (destroy_local_static): Rename to ...
12710         (register_dtor_fn): ... this.  Give it external linkage.
12711         (expand_static_init): Use it.
12712         * decl2.c (do_static_initialization): Likewise, if using
12713         __cxa_atexit.
12714         (do_static_destruction): Check that __cxa_atexit is not in use.
12715         (finish_file): Don't call do_static_destruction if using
12716         __cxa_atexit.
12717
12718         * typeck.c (convert_arguments): Restore two-message error
12719         reporting.
12720
12721 2000-01-20  Nathan Sidwell  <sidwell@codesourcery.com>
12722
12723         Remap dynamic cast hint values to be consistent across ABIs.
12724         * search.c (dynamic_cast_base_recurse): Remap generated value.
12725         (get_dynamic_cast_base_type): Adjust documentation.
12726         * tinfo.h (__user_type_info::dyncast): Likewise.
12727         (__user_type_info::find_public_subobj): Remap BOFF meaning.
12728         * tinfo.cc (__si_type_info::do_dyncast): Remap BOFF meaning.
12729         (__class_type_info::do_dyncast): Likewise.
12730         (__class_type_info::do_find_public_subobj): Likewise.
12731         * tinfo2.cc (__dynamic_cast): Remap BOFF parameter.
12732
12733 2000-01-19  Gabriel Dos Reis  <gdr@codesourcery.com>
12734
12735         * typeck.c (build_unary_op): Use cp_pedwarn, not pedwarn.
12736
12737         * typeck2.c (incomplete_type_error): Restore previous
12738         cp_error and cp_error_at call sequence.
12739
12740 2000-01-20  Brad Lucier  <lucier@math.purdue.edu>
12741
12742         * class.c (dump_class_hierarchy): Make format agree with argument;
12743         cast pointer to unsigned long and print with %lx.
12744
12745 2000-01-19  Gabriel Dos Reis  <gdr@codesourcery.com>
12746
12747         * decl2.c (lang_decode_option): Set default line-wrap length to 72.
12748
12749         * typeck.c (composite_pointer_type, common_type,
12750         comp_target_parms, c_sizeof, expr_sizeof, build_array_ref,
12751         build_function_call_real, convert_arguments,
12752         build_binary_op_nodefault, pointer_int_sum, pointer_diff,
12753         build_unary_op, mark_addressable, build_compound_expr,
12754         build_static_cast, build_reinterpret_cast, build_const_cast,
12755         build_c_cast, build_modify_expr, get_delta_difference,
12756         build_ptrmemfunc, check_return_expr): Replace 'ANSI C++' with
12757         'ISO C++'.  Fusion consecutive calls to diagnostic message routines
12758         into a single one.
12759         * typeck2.c (readonly_error, abstract_virtuals_error,
12760         process_init_constructor, check_for_new_type): Likewise.
12761
12762 2000-01-19  Mark Mitchell  <mark@codesourcery.com>
12763
12764         * tree.c (bot_manip): Set DECL_CONTEXT for newly created
12765         VAR_DECLs.
12766
12767 2000-01-18  Nathan Sidwell  <sidwell@codesourcery.com>
12768
12769         * cp-tree.h (get_tinfo_fn_dynamic): Remove prototype.
12770         (build_x_typeid): Likewise.
12771         (get_tinfo_fn): Likewise.
12772         (get_tinfo_fn_unused): Rename to ...
12773         (get_tinfo_decl): ... here.
12774         * rtti.c (build_headof): Replace logic error with assertion.
12775         (get_tinfo_fn_dynamic): Rename to ...
12776         (get_tinfo_decl_dynamic): ... here. Make static. Use
12777         complete_type_or_else.
12778         (build_x_typeid): Move into ...
12779         (build_typeid): ... here. Adjust call to
12780         get_tinfo_decl_dynamic. Use tinfo_from_decl. Simplify
12781         throw_bad_typeid expression.
12782         (get_tinfo_fn_unused): Rename to ...
12783         (get_tinfo_decl): ... here. Adjust comment.
12784         (get_tinfo_fn): Delete.
12785         (tinfo_from_decl): New static function.
12786         (get_typeid_1): Call get_tinfo_decl and tinfo_from_decl.
12787         (get_typeid): Use complete_type_or_else.
12788         (build_dynamic_cast_1): Adjust calls to
12789         get_tinfo_decl_dynamic. Simplify throw_bad_cast expression.
12790         * parse.y (primary): Adjust call to build_typeid.
12791         * except.c (build_eh_type_type_ref): Adjust call to
12792         get_tinfo_decl. Mark as used.
12793         * class.c (set_rtti_entry): Adjust call to get_tinfo_decl.
12794         * decl2.c (build_expr_from_tree): Adjust call to build_typeid.
12795         * parse.c: Regenerated.
12796
12797 2000-01-17  Mark Mitchell  <mark@codesourcery.com>
12798
12799         * class.c (fixed_type_or_null): Don't clear NONNULL.  Document
12800         calling convention.
12801         (resolves_to_fixed_type_p): Document calling convention.
12802         * rtti.c (build_x_typeid): Initialize NONNULL.
12803
12804         * cp-tree.h (build_shared_int_cst): New function.
12805         * call.c (build_over_call): Use DECL_VIRTUAL_CONTEXT, for clarity.
12806         * class.c (modify_vtable_entry): Likewise.
12807         (add_virtual_function): Split out code to generated shared
12808         INTEGER_CSTs to build_share_int_cst.
12809         (modify_all_vtables): Handle all the overridden functions here.
12810         Add overridden functions from non-primary virtual bases to the
12811         primary vtable.
12812         (finish_struct_1): Adjust call to modify_all_vtables.  Add
12813         overridden functions from non-primary bases to the vtable.
12814         * tree.c (build_shared_int_cst): New function.
12815
12816         * cp-tree.h (scratchalloc): Remove.
12817         (build_scratch_list): Likewise.
12818         * call.c (convert_class_to_reference): Replace build_scratch_list
12819         and build_expr_list with build_tree_list.
12820         (add_candidate): Replace scratchalloc with expralloc.  Note memory
12821         leak.
12822         (build_user_type_conversion_1):  Replace build_scratch_list
12823         and build_expr_list with build_tree_list.
12824         (build_new_op): Likewise.
12825         (build_op_delete_call): Likewise.
12826         (convert_like): Likewise.
12827         * cvt.c (ocp_convert): Likewise.
12828         * decl.c (start_decl): Likewise.
12829         (start_function): Likewise.
12830         (finish_destructor_body): Likewise.
12831         (maybe_build_cleanup_1): Likewise.
12832         * decl2.c (reparse_decl_as_expr): Likewise.
12833         * init.c (perform_member_init): Likewise.
12834         (expand_cleanup_for_base): Likewise.
12835         (build_builtin_delete_call): Likewise.
12836         (build_new_1): Likewise.
12837         (build_delete): Likewise.
12838         * method.c (do_build_assign_ref): Likewise.
12839         * parse.y (already_scoped_stmt): Likewise.
12840         (nontrivial_exprlist): Likewise.
12841         (net_initializer): Likewise.
12842         (initlist): Likewise.
12843         * parse.c: Regenerated.
12844         * rtti.c (build_x_typeid): Likewise.
12845         (build_dynamic_cast_1): Likewise.
12846         * typeck.c (build_x_compound_expr): Likewise.
12847         (build_static_cast): Likewise.
12848         (build_modify_expr): Likewise.
12849
12850         * cp-tree.h (DECL_VINDEX): Add documentation.
12851         * class.c (build_vtable_entry): Likewise.
12852         (start_vtable): Add comment.
12853         (add_virtual_function): Replace pending_hard_virtuals with
12854         overridden_virtuals and pending_virtuals with new_virtuals.
12855         Replace redundant assignments with assertions.
12856         (check_for_override): Add comment.
12857         (check_bases_and_members): Replace pending_hard_virtuals with
12858         overridden_virtuals and pending_virtuals with new_virtuals.
12859         (create_vtbl_ptr): Likewise.
12860         (layout_class_type): Likewise.
12861         (finish_struct_1): Likewise.  Add comments.
12862
12863 2000-01-16  Mark Mitchell  <mark@codesourcery.com>
12864
12865         * class.c (finish_struct_1): Replace redundant code with
12866         assertions.
12867
12868         * cp-tree.h (flag_new_abi): Move.
12869         (flag_use_cxa_atexit): Likewise.
12870         (flag_honor_std): Likewise.
12871         (flag_rtti): Likewise.
12872         (vbase_offsets_in_vtable_p): Define.
12873         (vptrs_present_everywhere_p): Likewise.
12874         (TYPE_CONTAINS_VPTR_P): Likewise.
12875         (dfs_walk_real): Declare.
12876         * class.c (build_vbase_pointer_fields): Check
12877         vbase_offsets_in_vtable_p.
12878         (dfs_build_vbase_offset_vtbl_entries): Record the vbase indices in
12879         BINFO_VPTR_FIELD.
12880         (build_vbase_offset_vtbl_entries): Simplify.
12881         (build_vbase_offset_vtbl_entries): Adjust.
12882         (build_vbase_pointer): Add ability to look up vbase offsets in
12883         vtable.
12884         (start_vtable): New function.
12885         (add_virtual_function): Use it.
12886         (determine_primary_base): Use TYPE_CONTAINS_VPTR_P.
12887         (num_extra_vtbl_entries): Use vbase_offsets_in_vtable_p.
12888         (build_vtbl_initializer): Take the type of the complete object as
12889         input.  Use it to correctly calculate vbase offsets.
12890         (dfs_finish_vtbls): Pass the complete type to
12891         build_vtbl_initializer.
12892         (check_bases_and_members): Use TYPE_CONTAINS_VPTR_P.
12893         (create_vtable_ptr): Create a vtable even if there are no
12894         new virtual functions, under the new ABI.
12895         (finish_struct_1): Likewise.
12896         (get_vfield_name): Use TYPE_CONTAINS_VPTR_P.
12897         * decl.c (exapnd_static_init): Remove call to
12898         preserve_initializer.
12899         * decl2.c (mark_vtable_entries): Tweak to handle vbase offsets in
12900         vtables.
12901         * init.c (initialize_vtbl_ptrs): Initialize them in pre-order.
12902         (expand_virtual_init): Use vbase_offsets_in_vtable_p.
12903         (construct_virtual_bases): Don't initialize virtual base pointers
12904         under the new ABI.
12905         (build_aggr_init): Clean up comment.
12906         (expand_aggr_init_1): Likewise.
12907         * rtti.c (expand_class_desc): Store the virtual function table
12908         index where the vbase offset lives in the offset field.
12909         * search.c (dfs_walk_real): Make it global.
12910         (dfs_debug_mark): Use TYPE_CONTAINS_VPTR_P.
12911         * tree.c (make_binfo): Don't clear BINFO_VPTR_FIELD.
12912
12913         * tinfo.h (USItype): Make it signed under the new ABI.
12914         * tinfo.cc (convert_to_base): New function.  Encapsulate base
12915         conversion logic here.
12916         (__class_type_info::do_upcast): Use it.
12917         (__class_type_info::do_dyncast): Likewise.
12918         (__class_type_info::do_find_public_subobj): Likewise.
12919
12920         * init.c (construct_virtual_bases): Don't look up the addresses of
12921         virtual bases at run-time.
12922
12923         * class.c (build_vbase_pointer): Relocate.
12924         (build_vbase_pointer_fields): Likewise.
12925         (dfs_build_vbase_offset_vtbl_entries): Likewise.
12926         (build_vbase_offset_vtbl_entries): Likewise.
12927
12928         * decl.c (init_decl_processing): Complain if -fnew-abi
12929         -fno-vtable-thunks is used.
12930
12931         * decl2.c (lang_decode_option): Don't couple flag_honor_std to
12932         flag_new_abi.
12933
12934 2000-01-15  Mark Mitchell  <mark@codesourcery.com>
12935
12936         * cp-tree.h (num_extra_vtbl_entries): New function.
12937         (size_extra_vtbl_entries): Likewise.
12938         (dfs_vtable_path_unmark): Likewise.
12939         (dfs_vtable_path_unmarked_real_bases_queue_p): Likewise.
12940         (dfs_vtable_path_marked_real_bases_queue_p): Likewise.
12941         * class.c (num_extra_vtbl_entries): New function.
12942         (size_extra_vtbl_entries): Likewise.
12943         (dfs_build_vbase_offset_vtbl_entries): New function.
12944         (build_vbase_offset_vtbl_entries): Likewise.
12945         (build_vtbl_initializer): Use it.
12946         (finish_struct_1): Adjust vtable sizes (using
12947         num_extra_vtbl_entries).
12948         * expr.c (cplus_expand_expr): Assert that the DECL_RTL for a
12949         THUNK_DECL is non-NULL before expanding it.
12950         * init.c (expand_virtual_init): Adjust the vtable pointer by
12951         size_extra_vtbl_entries before storing it.
12952         * search.c (get_shared_vase_if_not_primary): Adjust prototype.
12953         Handle TREE_LIST parameters here, not in the dfs_* functions.
12954         (dfs_unmarked_real_bases_queue_p): Adjust.
12955         (dfs_marked_real_bases_queue_p): Likewise.
12956         (dfs_vtable_path_unmarked_real_bases_queue_p): New function.
12957         (dfs_vtable_path_marked_real_bases_queue_p): New function.
12958         (dfs_vtable_path_unmark): Likewise.
12959
12960 2000-01-14  Mark Mitchell  <mark@codesourcery.com>
12961
12962         * optimize.c (copy_body_r): Clear the operand three of a
12963         TARGET_EXPR when copying it.
12964
12965 2000-01-14  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
12966
12967         * method.c (build_decl_overload_real): Check whether we are in ::
12968         before returning __builtin_new/delete.
12969
12970 2000-01-13  Mark Mitchell  <mark@codesourcery.com>
12971
12972         * pt.c (tsubst_friend_function): Improve comment.
12973         (instantiate_decl): Avoid crashing when a "nested" function is
12974         instantiated from the top level.
12975
12976         * dump.c (dqeueue_and_dump): Dump
12977         DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION.
12978
12979 2000-01-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12980
12981         * call.c: If GATHER_STATISTICS, declare `n_build_method_call'.
12982
12983 2000-01-13  Nathan Sidwell  <sidwell@codesourcery.com>
12984
12985         * g++spec.c (lang_specific_driver): Add -fnew-abi if
12986         ENABLE_NEW_GXX_ABI defined.
12987         * Make-lang.in (tinfo.o, tinfo2.o, exception.o, new.o,
12988         opnew.o, opnewnt.o, opvnew.o, opvnewnt.o, opdel.o, opdelnt.o,
12989         opvdel.o, opvdelnt.o): Use GXX_ABI_FLAG switch.
12990
12991 2000-01-12  Mark Mitchell  <mark@codesourcery.com>
12992
12993         * decl.c (start_cleanup_fn): Call pushdecl.
12994
12995         * call.c (convert_class_to_reference): Fix typos.
12996         (build_conditional_expr): Handle errors gracefully.
12997         * class.c (push_nested_class): Likewise.
12998         * cp-tree.h (VAR_FUNCTION_OR_PARM_DECL_CHECK): New macro.
12999         (DECL_THIS_EXTERN): Use it.
13000         (DECL_THIS_STATIC): Likewise.
13001         * cvt.c (convert_to_void): Handle errors gracefully.
13002         (build_expr_type_conversion): Likewise.
13003         * decl.c (maybe_push_decl): Likewise.
13004         (start_decl_1): Likewise.
13005         (require_complete_types_for_parms): Likewise.
13006         * parse.y (structsp): Likewise.
13007         (base_class): Likewise.
13008         * parse.c: Regenerated.
13009         * pt.c (finish_member_template_decl): Likewise.
13010         * typeck.c (decay_conversion): Likewise.
13011
13012         * cp-tree.h (dfs_skip_vbases): New function.
13013         (find_vbase_instance): Likewise.
13014         * class.c (determine_primary_base): Allow a nearly empty base to
13015         serve as a primary base class under the new ABI.
13016         (get_class_offset_1): Rename to ...
13017         (dfs_get_class_offset): ... this.  Simplify.  Don't issue error
13018         messages here.
13019         (get_class_offset): Use it.  Issue error messages here.
13020         (dfs_modify_vtables): Rely on dfs_unmarked_real_bases_queue_p to
13021         find the right copies of virtual bases.
13022         (fixup_vtable_deltas1): Rename to ...
13023         (dfs_fixup_vtable_deltas): ... this.  Adjust to handle virtual
13024         bases as primary bases.
13025         (fixup_vtable_deltas): Remove.
13026         (override_one_vtable): Handle virtual bases as primary bases.
13027         (merge_overrides): Likewise.
13028         (finish_struct_1): Likewise.
13029         (dump_class_hierarchy): Dump primary-ness of bases as well.
13030         * search.c (mark_primary_bases): Use a pre-order traversal to
13031         handle primary virtual bases.
13032         (dfs_skip_vbases): New fiunction.
13033         (expand_upcast_fixups): Adjust to handle primary virtual bases.
13034         (fixup_virtual_upcast_offsets): Likewise.
13035         (fixup_all_virtual_upcast_offsets): Likewise.
13036         (dfs_find_vbase_instances): New function.
13037         (find_vbase_instance): Likewise.
13038
13039 2000-01-11  Mumit Khan  <khan@xraylith.wisc.edu>
13040
13041         * lex.c (DIR_SEPARATOR): Delete macro.
13042
13043 2000-01-12  Gabriel Dos Reis  <gdr@codesourcery.com>
13044
13045        * decl2.c (lang_decode_option): Handle automatic line wrapping
13046        option.
13047
13048 2000-01-11  Mark Mitchell  <mark@codesourcery.com>
13049
13050         * friend.c (do_friend): Don't resolve scopes when processing
13051         template declarations, even if the qualifying scope doesn't
13052         involve template parameters.
13053
13054 2000-01-10  Mark Mitchell  <mitchell@dumbledore.codesourcery.com>
13055
13056         * class.c (dfs_modify_vtables_queue_p): Remove.
13057         (modify_all_vtables): Use dfs_unmarked_real_bases_queue_p
13058         and dfs_marked_real_bases_queue_p instead of
13059         dfs_modify_vtables_queue_p.
13060
13061         * class.c (build_vbase_path): Simplify.
13062         (dfs_propagate_binfo_offsets): New function.
13063         (propagate_binfo_offsets): Use it.
13064         (remove_base_field): Simplify.
13065         (dfs_set_offset_for_vbases): Remove.
13066         (dfs_set_offset_for_shared_vbases): New function.
13067         (dfs_set_offset_for_unshared_vbases): Likewise.
13068         (layout_virtual_bases): Use them.
13069         (layout_basetypes): Don't call propagate_binfo_offsets.
13070         * search.c (dfs_get_vbase_types): Clone completely fresh binfos
13071         for the vbases.
13072
13073         * class.c (build_base_field): New function, split out from ...
13074         (build_base_fields): ... here.  Use it.  Allocate primary bases
13075         first, under the new ABI.
13076         (get_vtable_entry): Remove.
13077         (remove_base_field): New function, split out from ...
13078         (remove_base_fields): ... here.  Adjust since primary bases come
13079         first under the new ABI.
13080
13081         * cp-tree.h (expand_direct_vtbls_init): Remove declaration.
13082         (initialize_vtbl_ptrs): New function.
13083         (expand_indirect_vtbls_init): Change prototype.
13084         (convert_pointer_to_vbase): Declare.
13085         * init.c (expand_direct_vtbls_init): Remove.
13086         (dfs_initialize_vtbl_ptrs): New function.
13087         (initialize_vtbl_ptrs): Likewise.
13088         (emit_base_init): Use initialize_vtbl_ptrs.
13089         * search.c (convert_pointer_to_vbase): Make it global.
13090         (expand_indirect_vtbls_init): Remove vtable initialization code.
13091         * semantics.c (setup_vtbl_ptr): Use initialize_vtbl_ptrs.
13092
13093         * class.c (dfs_finish_vtbls): New function.
13094         (finish_vtbls): Use it.
13095         (dump_class_hierarchy): New function.
13096
13097         * cp-tree.h (BINFO_PRIMARY_MARKED_P): Change definition.
13098         (BINFO_VBASE_PRIMARY_P): New macro.
13099         (BINFO_VIRTUALS): Add to documentation.
13100         (SET_BINFO_PRIMARY_MARKED_P): Remove.
13101         (CLEAR_BINFO_PRIMARY_MARKED_P): Likewise.
13102         (dfs_mark_primary_bases_queue_p): Likewise.
13103         (dfs_unmarked_real_bases_queue_p): New function.
13104         (dfs_marked_real_bases_queue_p): Likewise.
13105         * search.c (dfs_mark_primary_bases): Adjust.
13106         (mark_primary_bases): Likewise.
13107         (get_shared_vbase_if_not_primary): New function.
13108         (dfs_unmarked_real_bases_queue_p): Likewise.
13109         (dfs_marked_real_bases_queue_p): Likewise.
13110         (dfs_get_pure_virtuals): Simplify.
13111         (get_pure_virtuals): Likewise.
13112
13113 2000-01-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13114
13115         * lex.c: Include tm_p.h.
13116
13117 2000-01-07  Nathan Sidwell  <sidwell@codesourcery.com>
13118
13119         * lang-specs.h (__GXX_ABI_VERSION): New preprocessor macro.
13120
13121 2000-01-06  Jason Merrill  <jason@casey.cygnus.com>
13122
13123         * decl2.c (comdat_linkage): Don't set DECL_DEFER_OUTPUT.
13124         * pt.c (instantiate_decl): Defer comdat templates that might not be
13125         needed.
13126
13127         * cp-tree.h (DECL_NEEDED_P): Also true if !DECL_COMDAT.
13128         * decl2.c (finish_vtable_vardecl): Don't check !DECL_COMDAT.
13129         (finish_file): Likewise.
13130
13131         * decl2.c (import_export_class): Undo 12/14 change.
13132
13133         * error.c (dump_decl): operator new, not operatornew.
13134
13135         * class.c (field_decl_cmp): A nontype is "greater" than a type.
13136         * search.c (lookup_field_1): Look for the last field with the
13137         desired name.
13138
13139 2000-01-05  Nathan Sidwell  <nathan@acm.org>
13140
13141         * decl2.c (lookup_arg_dependent): Deal with FNS not being a
13142         FUNCTION_DECL.
13143
13144 2000-01-05  Nathan Sidwell  <nathan@acm.org>
13145
13146         * typeck.c (build_static_cast): Don't strip target qualifiers
13147         when casting from a class.
13148
13149 2000-01-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13150
13151         * class.c (warn_hidden): Initialize variable `fndecl'.
13152
13153 2000-01-03  Ulrich Drepper  <drepper@cygnus.com>
13154
13155         * decl.c (flag_isoc9x): New variable to be able to use code in
13156         c-common.c.  For now always zero.
13157
13158 2000-01-03  Mark Mitchell  <mark@codesourcery.com>
13159
13160         * cp-tree.h (CLASSTYPE_VBASECLASSES): Improve documentation.
13161         * class.c (layout_basetypes): Don't set BINFO_INHERITANCE_CHAIN
13162         or unshare_base_binfos for virtual bases here.
13163         * search.c (dfs_get_vbase_types): Do it here.
13164         (get_vbase_types): Adjust.
13165
13166 2000-01-02  Mark Mitchell  <mark@codesourcery.com>
13167
13168         * cp-tree.h (CLASSTYPE_VFIELDS): Move definition.
13169         (BINFO_PRIMARY_MARKED_P): Use flag 5.
13170         (SET_BINFO_PRIMARY_MARKED_P): Likewise.
13171         (CLEAR_BINFO_PRIMARY_MARKED_P): Likewise.
13172         (unmark_primary_bases): Remove declaration.
13173         (unmarkedp): Declare.
13174         (dfs_vbase_unmark): Likewise.
13175         * class.c (determine_primary_base): Return immediately if there
13176         are no base classes.  Call mark_primary_bases here.
13177         (modify_all_direct_vtables): Remove.
13178         (modify_all_indirect_vtables): Remove.
13179         (dfs_modify_vtables_queue_p): New function.
13180         (dfs_modify_vtables): New function.
13181         (modify_all_vtables): Use them.
13182         (build_base_fields): Build FIELD_DECLs for primary virtual base
13183         classes.
13184         (create_vtable_ptr): Don't call determine_primary_base here.
13185         (dfs_mark_primary_bases_and_set_vbase_offsets): Rename to ...
13186         (dfs_set_offset_for_vbases): ... this.
13187         (layout_virtual_bases): Use it.
13188         (layout_class_type): Call determine_primary_base here.
13189         * search.c (unmarkedp): Make it global.
13190         (shared_marked_p): Simplify.
13191         (shared_unmarked_p): Likewise.
13192         (dfs_primary_bases_queue_p): Remove.
13193         (dfs_unmark_primary_bases): Likewise.
13194         (unmark_primary_bases): Likewise.
13195         (mark_primary_bases): Simplify.
13196         (get_pure_virtuals): Don't call mark_primary_bases here.
13197         (dfs_vbase_unmark): New function.
13198         (get_vbase_types): Simplify.
13199
13200         * class.c (struct base_info): Remove.
13201         (determine_primary_base): Take has_virtual_p rather than a
13202         base_info as input.  Don't calculate max_has_virtual.
13203         (finish_struct_bits): Remove max_has_virtual argument.
13204         (create_vtable_ptr): Remove max_has_virtual_p argument.
13205         (layout_virtual_bases): Remove max argument.
13206         (layout_basetypes): Likewise.
13207         (layout_class_type): Remove max_has_virtual_p argument.
13208         (finish_struct_1): Remove max_has_virtual.
13209
13210         * cp-tree.h (dfs_mark_primary_bases_queue_p): New function.
13211         (layout_basetypes): Remove.
13212         * class.c (propagate_binfo_offsets): Moved here from tree.c.
13213         Update to handle primary virtual bases.
13214         (remove_base_fields): New function, split out from
13215         layout_basetypes.
13216         (dfs_mark_primary_bases_and_set_vbase_offsets): New function.
13217         (layout_virtual_bases): New function, split out from
13218         layout_basetypes.  Update to handle primary virtual bases.
13219         (layout_basetypes): Moved here from tree.c.  Use
13220         remove_base_fields and layout_virtual_bases.
13221         * search.c (dfs_mark_primary_bases_queue_p): New function.
13222         (mark_primary_bases): Use it.
13223         * tree.c (CEIL): Remove.
13224         (propagate_binfo_offsets): Remove.
13225         (layout_basetypes): Remove.
13226
13227 2000-01-01  Mark Mitchell  <mark@codesourcery.com>
13228
13229         * cp-tree.h (CLASSTYPE_N_BASECLASSES): Use BINFO_N_BASETYPES.
13230         (BINFO_PRIMARY_MARKED_P): New macro.
13231         (SET_BINFO_PRIMARY_MARKED_P): Likewise.
13232         (CLEAR_BINFO_PRIMARY_MARKED_P): Likewise.
13233         (mark_primary_bases): New function.
13234         (unmark_primary_bases): Likewise.
13235         * search.c (get_abstract_virtuals_1): Remove.
13236         (dfs_mark_primary_bases): New function.
13237         (mark_primary_bases): Likewise.
13238         (dfs_unmark_primary_bases): Likewise.
13239         (unmark_primary_bases): Likewise.
13240         (dfs_get_pure_virtuals): Likewise.
13241
13242 2000-01-01  Mark Mitchell  <mark@codesourcery.com>
13243
13244         * cp-tree.h (skip_rtti_stuff): Adjust prototype.
13245         * class.c (skip_rtti_stuff): Reorganize parameters and return value.
13246         (modify_one_vtable): Adjust.
13247         (fixup_vtable_deltas1): Likewise.
13248         (override_one_vtable): Likewise.
13249         * search.c (get_abstract_virtuals_1): Likewise.
13250         (get_pure_virtuals): Likewise.
13251         (expand_upcast_fixups): Likewise.
13252         * tree.c (debug_binfo): Likewise.
13253
13254         * class.c (build_vtable): Don't return a value.  Don't rebuild
13255         vtables for bases that have already been handled.
13256         (prepare_fresh_vtable): Don't rebuild vtables for bases that have
13257         already been handled.
13258         (modify_one_vtable): Adjust accordingly.
13259         (fixup_vtable_deltas1): Likewise.
13260         (finish_struct_1): Likewise.
13261
13262 2000-01-01  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
13263
13264         * call.c (build_new_method_call): Also check destructors.