OSDN Git Service

cp:
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
1 2001-06-14  Nathan Sidwell  <nathan@codesourcery.com>
2
3         * class.c (dfs_accumulate_vtbl_inits): For case 2 & 3, make sure
4         we've not emerged from the hierarchy of RTTI_BINFO on reaching
5         a non-virtual base.
6
7 2001-06-13  Mark Mitchell  <mark@codesourcery.com>
8
9         * NEWS: Update release number.
10
11 2001-06-12  Nathan Sidwell  <nathan@codesourcery.com>
12
13         PR c++/3130, c++/3131, c++/3132
14         * cp-tree.h (BINFO_UNSHARED_MARKED): New #define.
15         * class.c (force_canonical_binfo_r): Move
16         BINFO_UNSHARED_MARKED, BINFO_LOST_PRIMARY_P. Don't move
17         virtual bases unless they're primary and what they're primary
18         too has been moved.
19         (dfs_unshared_virtual_bases): Use BINFO_UNSHARED_MARKED. Cope
20         with morally virtual bases. Duplicate BINFO_LOST_PRIMARY_P and
21         BINFO_PRIMARY_BASE_OF. Clear BINFO_VTABLE for all but the most
22         derived binfo.
23         (mark_primary_bases): Use BINFO_UNSHARED_MARKED.
24         (layout_nonempty_base_or_field): Add most derived type
25         parameter. Adjust.
26         (layout_empty_base): Likewise.
27         (build_base_field): Likewise.
28         (build_base_fields): Likewise.
29         (propagate_binfo_offsets): Add most derived type
30         parameter. Skip non canonical virtual bases too.
31         (dfs_set_offset_for_unshared_vbases): Don't skip primary
32         bases. Do skip canonical bases.
33         (layout_virtual_bases): Adjust.
34         (layout_class_type): Adjust.
35         (dfs_get_primary_binfo): Build list of virtual primary base
36         candidates.
37         (get_primary_binfo): Check that the shared virtual primary
38         base candidate was found first.
39         (accumulate_vtbl_inits): Don't do anything for non-vptr
40         containing binfos. For case 1 primary virtual bases, keep
41         checking that we've not emerged from the hierarchy of RTTI_BINFO.
42
43 2001-06-12  Nathan Sidwell  <nathan@codesourcery.com>
44
45         PR c++/3089
46         * class.c (dfs_accumulate_vtbl_inits): Always walk down the
47         hierarchy looking for primary bases for a ctor
48         vtable. Recursively call oneself, if we meet our primary via
49         this route and haven't met it yet via inheritance graph order.
50
51 2001-06-11  Mark Mitchell  <mark@codesourcery.com>
52
53         * lang-options.h: Emit documentation for -fno-honor-std, not
54         -fhonor-std.
55
56 2001-06-10  Alexandre Oliva  <aoliva@redhat.com>
57
58         * typeck.c (get_member_function_from_ptrfunc) [vbit_in_delta]:
59         Don't clobber delta.
60         (expand_ptrmemfunc_cst) [ptrmemfunc_vbit_in_delta]: Adjust pfn.
61
62 2001-06-10  Mark Mitchell <mark@codesourcery.com>
63             Gabriel Dos Reis  <gdr@codesourcery.com>
64
65         * Make-lang.in (cp/call.o): Depend on diagnostic.h
66         (cp/typeck.o): Depend on diagnostic.h
67         (cp/typeck2.o): Depend on diagnostic.h
68         (cp/repo.o): Depend on dignostic.h      
69         * typeck.c: #include diagnostic.h
70         (convert_for_initialization): Remove extern declaration for
71         warningcount and errorcount.
72
73         * call.c: #include diagnostic.h
74         (convert_like_real): Remove extern declaration for warnincount and
75         errorcount. 
76
77         * repo.c: #include diagnostic.h
78         * typeck2.c: #include diagnostic.h
79
80 2001-06-08  Nathan Sidwell  <nathan@codesourcery.com>
81
82         * decl.c (duplicate_decls): Fix DECL_TEMPLATE_RESULT thinko
83         in previous change.
84
85 2001-06-08  Nathan Sidwell  <nathan@codesourcery.com>
86
87         PR c++/2929
88         * friend.c (do_friend): Use push_decl_namespace for classes at
89         namespace scope.
90
91 2001-06-08  Nathan Sidwell  <nathan@codesourcery.com>
92             Jason Merrill <jason_merrill@redhat.com>
93
94         PR c++/3061
95         * class.c (build_secondary_vtable): Use assert, rather than an error
96         message.
97         (dfs_fixup_binfo_vtbls): BINFO_VTABLE might be NULL.
98         (dfs_accumulate_vtbl_inits): A lost primary virtual base may
99         be between ORIG_BINFO and RTTI_BINFO, but neither of them.
100         Don't set BINFO_VTABLE for a primary virtual base.
101
102 2001-06-07  Mark Mitchell  <mark@codesourcery.com>
103
104         * decl.c (duplicate_decls): Update source position information
105         when a template function is defined.
106
107 2001-06-07  Phil Edwards  <pme@sources.redhat.com>
108
109         * lang-specs.h:  Move -D_GNU_SOURCE to config/linux.h.
110
111 2001-06-07  Nathan Sidwell  <nathan@codesourcery.com>
112
113         PR c++/2914
114         * decl.c (pushtag): Don't push into a complete type's scope.
115
116 2001-06-06  Jason Merrill  <jason_merrill@redhat.com>
117
118         * cp-tree.h (THUNK_GENERATE_WITH_VTABLE_P): Lose.
119         (struct lang_decl_flags): Lose generate_with_vtable_p.
120         (BV_GENERATE_THUNK_WITH_VTABLE_P): Lose.
121         * class.c (copy_virtuals): Adjust.
122         * decl2.c (mark_vtable_entries): Adjust.
123         * method.c (make_thunk, build_vtable_entry): Adjust.
124         * class.c (update_vtable_entry_for_fn): Only look as far as the
125         first defining class.
126         (build_vtbl_initializer): Put nothing in the slot for a function only 
127         defined in a lost primary virtual base.
128         (add_vcall_offset_vtbl_entries_1): Use the same code for 
129         the lost primary case and the normal case.
130         (dfs_unshared_virtual_bases): Don't lose a non-virtual primary base.
131         (get_vfield_offset, get_derived_offset): Lose.
132         (dfs_find_final_overrider): Use look_for_overrides_here.
133         (get_matching_virtual): New fn.
134         * semantics.c (emit_associated_thunks): Check BV_USE_VCALL_INDEX_P,
135         not BV_VCALL_INDEX.
136         * search.c (look_for_overrides_here): Split out from...
137         (look_for_overrides_r): Here.
138
139         * class.c (find_final_overrider): Return error_mark_node on error.
140
141         * decl2.c (key_method): #if 0 accidental change.
142
143 2001-06-06  John David Anglin  <dave@hiauly1.hia.nrc.ca>
144
145         * call.c (convert_default_arg): Use INTEGRAL_TYPE_P.
146         (build_over_call): Likewise.
147         * decl.c (grokparms): Likewise.
148         * pt.c (tsubst_decl): Likewise.
149         * typeck.c (convert_arguments): Likewise.
150
151 2001-06-05  Mark Mitchell  <mark@codesourcery.com>
152
153         * semantics.c (begin_class_definition): Robustify.
154
155         * pt.c (instantiate_decl): Tell the repository code about the
156         clones, not the cloned functions.
157         * repo.c (repo_template_used): Explicitly instantiate the cloned
158         function, not the clones.
159
160 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
161
162         * call.c (build_user_type_conversion_1): Set ICS_USER_FLAG and
163         ICS_BAD_FLAG on created conversion.
164         (compare_ics): Break out rank.
165
166 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
167
168         * decl.c (xref_tag): Remove extraneous %s on dependent name
169         lookup warning.
170
171 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
172
173         * class.c (layout_vtable_decl): Fix off by one error on
174         build_index_type.
175         (build_vtt): Likewise.
176         (build_ctor_vtbl_group): Likewise.
177
178 2001-06-05  Nathan Sidwell  <nathan@codesourcery.com>
179
180         * class.c (maybe_indent_hierarchy): New function.
181         (dump_class_hierarchy_r): Add flags. Dump extra binfo
182         information, if enabled. Use maybe_indent_hierarchy. Adjust
183         output format.
184         (dump_class_hierarchy): Adjust prototype. Adjust output format.
185         (dump_array, dump_vtable, dump_vtt): New functions.
186         (finish_struct_1): Adjust hierarchy dumping.
187         (initialize_vtable): Call dump_vtable.
188         (build_vtt): Call dump_vtt.
189         (build_ctor_vtbl_group): Call dump_vtable.
190         * decl2.c (flag_dump_class_layout): Remove.
191         (cxx_decode_option): Remove dump translation unit
192         and dump class hierarchy check. Call dump_switch_p.
193         (finish_file): Adjust dumping.
194         (dump.c): Only dump base classes if not TDF_SLIM.
195         Only dump namespace members if not TDF_SLIM.
196         * optimize.c (dump_function): New function.
197         (optimize_function): Call dump_function.
198         * semantics.c (expand_body): Use dump_enabled_p.
199
200 2001-06-01  Nathan Sidwell  <nathan@codesourcery.com>
201
202         PR g++/2936
203         Part missed from first commit
204         * decl2.c (finish_anon_union): Copy context.
205
206 2001-05-30  Nathan Sidwell  <nathan@codesourcery.com>
207
208         PR g++/2936
209         * optimize.c (remap_decl): Remap anonymous aggregate members too.
210
211 2001-05-26  Nathan Sidwell  <nathan@codesourcery.com>
212
213         PR g++/2823
214         * semantics.c (expand_body): Don't optimize thunks.
215
216 2001-05-25  Sam TH  <sam@uchicago.edu>
217
218         * cp-tree.h lex.h: Fix header include guards.
219
220 2001-05-25  Mark Mitchell <mark@codesourcery.com>
221
222         * decl.c (init_decl_processing): Tweak.
223
224 2001-05-24  Mark Mitchell  <mark@codesourcery.com>
225
226         * decl.c (duplicate_decls): Tidy.
227         (init_decl_processing): Always set flag_no_builtin.
228
229 2001-05-24  Nathan Sidwell  <nathan@codesourcery.com>
230
231         PR c++/2184
232         * decl2.c (do_local_using_decl): Push the decls, even in a
233         template.
234
235 2001-05-22  Mark Mitchell  <mark@codesourcery.com>
236
237         * optimize.c (initialize_inlined_parameters): Don't set
238         TREE_READONLY for a VAR_DECL taking the place of an inlined
239         PARM_DECL.
240
241 2001-05-22  Jason Merrill  <jason_merrill@redhat.com>
242
243         * class.c, cp-tree.h, rtti.c: Remove com_interface attribute support.
244         * tree.c (cp_valid_lang_attribute): Warn about use of com_interface
245         attribute.
246
247 2001-05-22  Joseph S. Myers  <jsm28@cam.ac.uk>
248
249         * parse.y: Refer to compound literals as such, not as
250         constructor-expressions.
251
252 2001-05-21  Mark Mitchell  <mark@codesourcery.com>
253
254         * call.c (build_op_delete_call): Ignore exception-specifications
255         when looking for matching delete operators.
256         * init.c (build_new_1): Compute whether or not the allocation
257         function used is a placement allocation function or not, and
258         communicate this information to build_op_delete_call.
259
260 2001-05-21  Jason Merrill  <jason_merrill@redhat.com>
261
262         * class.c (build_vtable_entry_ref): Lose vtbl parm.  Fix for new abi.
263         (build_vtbl_ref): Adjust.
264         (dfs_accumulate_vtbl_inits): Set TREE_CONSTANT on the vtable address.
265         * decl2.c (lang_f_options): Remove huge-objects, vtable-thunks.
266         Re-add vtable-gc.
267         (unsupported_options): Correspondingly.
268
269         * decl2.c (maybe_make_one_only): Check flag_weak, not
270         supports_one_only().
271
272         * cp-tree.def (START_CATCH_STMT): Lose.
273         * dump.c (cp_dump_tree): Don't dump it.  Do dump HANDLER_PARMS.
274         * tree.c (cp_statement_code_p): Don't case it.
275         * semantics.c (cp_expand_stmt): Likewise.
276         * cp-tree.h (START_CATCH_TYPE): Lose.
277         (HANDLER_TYPE): New.
278         * except.c (expand_start_catch_block): Don't start any blocks.
279         Return the type.
280         (expand_end_catch_block): Don't end any blocks.
281         * parse.y (handler): Don't pass anything from finish_handler_parms
282         to finish_handler.
283         * pt.c (tsubst_expr): Likewise.
284         * semantics.c (begin_handler): Call note_level_for_catch here.
285         (finish_handler_parms): Don't return anything.
286         (genrtl_catch_block, begin_catch_block): Lose.
287         (genrtl_handler): Call expand_start_catch here.
288
289 2001-05-18  Jason Merrill  <jason_merrill@redhat.com>
290
291         * class.c (build_vtable): Set DECL_ASSEMBLER_NAME for vtables here.
292         (get_vtable_decl, build_vtt): Not here.
293
294 2001-05-20  Nathan Sidwell  <nathan@codesourcery.com>
295
296         PR c++/2781
297         * optimize.c (update_cloned_parm): Copy addressability and other
298         flags.
299
300 2001-05-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
301
302         * pt.c (determine_specialization): Ignore artificial functions.
303
304 2001-05-20  Neil Booth  <neil@daikokuya.demon.co.uk>
305
306         * cp-tree.h (struct lang_identifier, C_RID_YYCODE): Update.
307         (C_RID_CODE): Remove.
308         * lex.c (cxx_init_options): Call set_identifier_size.  Update.
309         (init_parse): Don't do it here.
310
311 2001-05-18  Diego Novillo  <dnovillo@redhat.com>
312
313         * decl2.c (finish_objects): Use the original SYMBOL_REF from the
314         function declaration to avoid stripping the symbol's attributes.
315
316 2001-05-18  Nathan Sidwell  <nathan@codesourcery.com>
317
318         * decl.c (pushdecl): Adjust error string.
319         (xref_tag): Adjust friend class injection warning. Remove the
320         inherited name from the class shadowed scope.
321
322 2001-05-17  Mark Mitchell  <mark@codesourcery.com>
323
324         * except.c (cp_protect_cleanup_actions): New function.
325         (init_exception_processing): Don't set protect_cleanup_actions 
326         here.  Do set lang_protect_cleanup_actions.
327
328 2001-05-16  Nathan Sidwell  <nathan@codesourcery.com>
329
330         * spew.c (read_token): Call yyerror on all unexpected tokens.
331
332 2001-05-16  Nathan Sidwell  <nathan@codesourcery.com>
333
334         * init.c (member_init_ok_or_else): Take a tree rather than
335         string for name.
336         (expand_member_init): Adjust.
337
338 2001-05-14  Nick Clifton  <nickc@cambridge.redhat.com>
339
340         * decl.c (duplicate_decls): Suppress warning about duplicate
341         decls if the first decl is a friend.
342
343 2001-05-12  Zack Weinberg  <zackw@stanford.edu>
344
345         * except.c (choose_personality_routine): Export.  Add
346         explanatory comment.  Take an enum languages, not a boolean.
347         (initialize_handler_parm): Adjust to match.
348         * cp-tree.h: Prototype choose_personality_routine.
349         * lex.c (handle_pragma_java_exceptions): New function.
350         (init_cp_pragma): Register #pragma GCC java_exceptions.
351
352 2001-05-12  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
353
354         * method.c (build_mangled_C99_name): Remove unused prototype.
355
356 2001-05-12  Alexandre Oliva  <aoliva@redhat.com>
357
358         * cp-tree.h (ptrmemfunc_vbit_where_t): Declare type.
359         * typeck.c (get_member_function_from_ptrfunc,
360         build_ptrmemfunc, expand_ptrmemfunc_cst): Take
361         TARGET_PTRMEMFUNC_VBIT_LOCATION into account.
362
363         Reverted Geoff Keating's 2001-05-03's patch.
364
365 2001-05-11  Ira Ruben   <ira@apple.com>
366
367         * cp/cp-tree.h (C_EXP_ORIGINAL_CODE): Delete; declared in c-common.h.
368
369 2001-05-11  Neil Booth  <neil@daikokuya.demon.co.uk>
370
371         * cp-tree.h (finish_label_expr, lookup_label): Delete.
372         * parse.y: Update for '&&'; don't issue warning here.
373         * semantics.c (finish_label_expr): Delete.
374
375 2001-05-07  Mark Mitchell  <mark@codesourcery.com>
376
377         * splay-tree.h (splay_tree_max): New function.
378         (splay_tree_min): Likewise.
379
380 2001-05-03  Geoffrey Keating  <geoffk@redhat.com>
381
382         * cp-tree.h (enum cp_tree_index): Add CPTI_PFN_VFLAG_IDENTIFIER.
383         (pfn_vflag_identifier): Define.
384         Update comment about layout of pointer functions.
385         (build_ptrmemfunc1): Update prototype.
386         (expand_ptrmemfunc_cst): Update prototype.
387         * decl.c (initialize_predefined_identifiers): Initialize
388         pfn_vflag_identifier.
389         (build_ptrmemfunc_type): When FUNCTION_BOUNDARY < 16, add
390         an extra field to the type.
391         * expr.c (cplus_expand_constant): Pass 'flag' between 
392         expand_ptrmemfunc_cst and build_ptrmemfunc1.
393         * typeck.c (get_member_function_from_ptrfunc): When
394         FUNCTION_BOUNDARY < 16, look at additional field to determine
395         if a pointer-to-member is a real pointer or a vtable offset.
396         (build_ptrmemfunc1): Add new parameter to contain extra field.
397         (build_ptrmemfunc): Pass the extra field around.
398         (expand_ptrmemfunc_cst): Add new parameter to return extra field.
399         (pfn_from_ptrmemfunc): Ignore the extra field.
400
401 2001-05-03  Mark Mitchell  <mark@codesourcery.com>
402
403         * cp-tree.h (flag_inline_trees): Update documentation.
404         * decl.c (init_decl_processing): Adjust handling of
405         flag_inline_functions and flag_inline_trees to support -O3.
406         (grokfndecl): Set DECL_INLINE on all functions if that's what
407         the user requested.
408         (save_function_data): Clear DECL_INLINE in
409         current_function_cannot_inline is non-NULL.
410         * decl2.c (flag_inline_trees): Update documentation.
411
412 2001-05-03  Nathan Sidwell  <nathan@codesourcery.com>
413
414         * dump.c (cp_dump_tree, USING_STMT case): New case.
415         * tree.c (cp_statement_code_p): Add USING_STMT.
416         * decl2.c (do_using_directive): Add the using directive statement.
417
418         * tree.c (walk_tree): Reformat an if block.
419
420 2001-05-02  Mark Mitchell  <mark@codesourcery.com>
421
422         * decl.c (compute_array_index_type): Don't try to do anything with
423         the indices when processing a template.
424
425 2001-05-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
426
427         * call.c: NULL_PTR -> NULL.
428         * class.c: Likewise.
429         * cvt.c: Likewise.
430         * decl.c: Likewise.
431         * decl2.c: Likewise.
432         * except.c: Likewise.
433         * init.c: Likewise.
434         * rtti.c: Likewise.
435         * search.c: Likewise.
436         * tree.c: Likewise.
437         * typeck.c: Likewise.
438         * typeck2.c: Likewise.
439
440 2001-05-02  Mark Mitchell  <mark@codesourcery.com>
441
442         * decl2.c (do_using_directive): Revert previous patch.
443
444 2001-05-01  Nathan Sidwell  <nathan@codesourcery.com>
445
446         * cp-tree.def (USING_STMT): New statement node.
447         * cp-tree.h (USING_STMT_NAMESPACE): New macro.
448         * decl2.c (do_using_directive): Add USING_STMT to statement
449         tree. Don't emit errors when processing template decl.
450         * pt.c (tsubst_expr, USING_STMT case): New case.
451         * semantics.c (cp_expand_stmt, USING_STMT case): New case.
452
453 2001-05-01  Nathan Sidwell  <nathan@codesourcery.com>
454
455         * call.c (build_new_op): Convert args from reference here.
456         (build_conditional_expr): Don't convert here.
457
458 2001-05-01  Nathan Sidwell  <nathan@codesourcery.com>
459
460         * spew.c (last_token_id): New static variable.
461         (read_token): Set it here.
462         (yyerror): Use it here.
463
464 2001-04-30  Richard Henderson  <rth@redhat.com>
465
466         * cvt.c: Downcase C_PROMOTING_INTEGER_TYPE_P invocations.
467         * decl.c: Likewise.
468
469 2001-04-30  Mark Mitchell  <mark@codesourcery.com>
470
471         * gxxint.texi: Remove.
472         * Make-lang.in: Remove all traces of gxxint.texi.
473
474 Mon Apr 30 16:14:10 2001  Mark P Mitchell  <mark@codesourcery.com>
475
476         * decl2.c (start_static_initialization_or_destruction): Correct
477         logic to handle the -fno-use-cxa-atexit case.
478
479 2001-04-30  Mark Mitchell  <mark@codesourcery.com>
480
481         * optimize.c (update_cloned_parm): New function.
482         (maybe_clone_body): Use it.  Update the `this' parameter too.
483
484 2001-04-29  Joseph S. Myers  <jsm28@cam.ac.uk>
485
486         * decl2.c (unsupported_options): Add new-abi.
487         * lang-options.h: Remove no longer supported options.
488
489 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
490
491         * except.c (can_convert_eh): Don't check template parms,
492         typename types etc.
493
494 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
495
496         * optimize.c (maybe_clone_body): Copy parameter names and locations.
497
498 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
499
500         * cp-tree.h (adjust_clone_args): Prototype new function.
501         * class.c (adjust_clone_args): New function.
502         * decl.c (start_function): Call it for in charge ctors.
503
504 2001-04-26  Mark Mitchell  <mark@codesourcery.com>
505
506         * method.c (use_thunk): Make sure that thunks really are emitted
507         when requested.
508
509 2001-04-26  Nathan Sidwell <nathan@codesourcery.com>
510
511         * mangle.c (write_chars): New macro.
512         (hwint_to_ascii): New function
513         (write_number): Use it.
514         (write_integer_cst): Deal with really big numbers.
515
516 2001-04-25  Mark Mitchell  <mark@codesourcery.com>
517
518         * optimize.c (maybe_clone_body): Copy TREE_PUBLIC before emitting
519         the clone.
520
521 2001-04-25  Nathan Sidwell  <nathan@codesourcery.com>
522
523         * decl.c (grokdeclarator): Set context of namespace scope
524         TYPE_DECLS.
525
526 2001-04-24  Zack Weinberg  <zackw@stanford.edu>
527
528         * cp/optimize.c: Include hashtab.h.
529         (struct inline_data): Add tree_pruner.
530         (expand_call_inline, expand_calls_inline): Use it when calling
531         walk_tree.
532         (optimize_function): Initialize and free tree_pruner.
533
534 2001-04-24  Nathan Sidwell <nathan@codesourcery.com>
535
536         Lazy __FUNCTION__ generation.
537         * cp-tree.def (FUNCTION_NAME): Remove.
538         * cp-tree.h (function_name_declared_p): Remove.
539         (cp_fname_init): Prototype.
540         * decl.c (init_decl_processing): Don't generate __FUNCTION__ et al ids,
541         don't call declare_function_name. Call start_fname_decls.
542         (cp_make_fname_decl): Adjust parameters. Generate the name. Don't
543         clobber the line number.
544         (cp_fname_init): New function.
545         (start_function): Call start_fname_decls.
546         (finish_function): Call finish_fname_decls.
547         * lex.c (reswords): Add slots for __FUNCTION__ et al.
548         (rid_to_yy): Add mappings for __FUNCTION__ et al.
549         * optimize.c (maybe_clone_body): Remove function_name_declared_p.
550         * parse.y (VAR_FUNC_NAME): New token.
551         (primary): Add VAR_FUNC_NAME.
552         * pt.c (tsubst_decl): Adjust a DECL_PRETTY_FUNCTION_P's
553         generation.
554         (tsubst, FUNCTION_NAME case): Remove.
555         (tsubst_copy, FUNCTION_NAME case): Remove.
556         (tsubst_expr, DECL_STMT case): Be careful with a
557         DECL_PRETTY_FUNCTION_P.
558         (instantiate_decl): Remove function_name_declared_p.
559         * semantics.c (begin_compound_statement): Don't call
560         declare_function_name here.
561         (setup_vtbl_ptr). Don't save & restore function_name_declared_p.
562         (finish_translation_unit): Call finish_fname_decls.
563         (expand_body): Remove function_name_declared_p.
564         * typeck2.c (digest_init): Allow any ERROR_MARK.
565
566 2001-04-24  Nathan Sidwell  <nathan@codesourcery.com>
567
568         * pt.c (tsubst_decl): Use VOID_TYPE_P.
569         * semantics.c: Fix some typos.
570
571 2001-04-23  Phil Edwards  <pme@sources.redhat.com>
572
573         * cp/decl2.c (flag_honor_std):  Always initialize to 1.
574
575 2001-04-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
576
577         * xref.c (GNU_xref_file): Use concat in lieu of xmalloc/sprintf.
578
579 2001-04-23  Jason Merrill  <jason_merrill@redhat.com>
580
581         * except.c (build_throw): Wrap the initialization of the exception
582         object in a MUST_NOT_THROW_EXPR.
583         (do_free_exception): #if 0.
584
585 2001-04-20  Mark Mitchell  <mark@codesourcery.com>
586
587         * cp-tree.h (finish_enum): Change prototype.
588         * decl.c (finish_enum): Reorganize.
589         * parse.y (structsp): Adjust calls to finish_enum.
590
591 2001-04-20  Nathan Sidwell  <nathan@codesourcery.com>
592
593         * tree.c (cp_tree_equal): Adjust final switch formatting. Add
594         't' case.
595
596 2001-04-20  Nathan Sidwell  <nathan@codesourcery.com>
597
598         * class.c (dfs_unshared_virtual_bases): Add ATTRIBUTE_UNUSED.
599         (layout_empty_base): Return at end flag.
600         (build_base_field): Likewise.
601         (build_base_fields): Likewise.
602         (layout_virtual_bases): Don't add 1 to eoc value.
603         (end_of_class): Use full size for empty bases.
604         (layout_class_type): Clear CLASSNEARLY_EMPTY_P if we appended
605         empty bases. Don't add 1 to eoc value. Only add trailing padding
606         if we're an empty class with no empty bases.
607         (dump_class_hierarchy): Dump size and alignment.
608
609 2001-04-20  Jakub Jelinek  <jakub@redhat.com>
610
611         * call.c (maybe_handle_ref_bind): Copy ICS_USER_FLAG and
612         ICS_BAD_FLAG.
613
614 2001-04-20  Jakub Jelinek  <jakub@redhat.com>
615
616         * search.c (lookup_field_r): If looking for type and non-TYPE_DECL
617         is found, look first if name does not match the structure name.
618
619 2001-04-19  Mark Mitchell  <mark@codesourcery.com>
620
621         * cp-tree.h (DECL_LANGUAGE): Don't assume DECL_LANG_SPECIFIC is
622         set.
623         (SET_DECL_LANGUAGE): New macro.
624         * decl.c (duplicate_decls): Use SET_DECL_LANGUAGE.
625         (pushdecl): Likewise.
626         (build_library_fn_1): Likewise.
627         (build_cp_library_fn): Likewise.
628         (grokfndecl): Likewise.
629         (grokvardecl): Mark `extern "C"' variables as having C linkage.
630         * decl2.c (grokclassfn): Use SET_DECL_LANGUAGE.
631         * lex.c (retrofit_lang_decl): Likewise.
632         * mangle.c (mangle_decl_string): Don't mangle the names of
633         variables declared with C language linkage.
634         * semantics.c (finish_member_declaration): Use SET_DECL_LANGUAGE.
635
636 2001-04-18  John David Anglin  <dave@hiauly1.hia.nrc.ca>
637
638         * semantics.c (simplify_aggr_init_exprs_r): Don't restore
639         flag_access_control from uninitialized storage.
640
641 2001-04-15  Mark Mitchell  <mark@codesourcery.com>
642
643         * cp-tree.h (TYPE_PTRMEM_CLASS_TYPE): Improve documentation.
644         * mangle.c (write_pointer_to_member_type): Fix mangling of
645         pointers to cv-qualified member function types.
646
647         * init.c (build_delete): Create a SAVE_EXPR for the address if
648         we're going to use it more than once.
649
650 2001-04-13  Mark Mitchell  <mark@codesourcery.com>
651
652         * cp-tree.h (DELTA2_FROM_PTRMEMFUNC): Remove.
653         (expand_ptremfunc_cst): Change prototype.
654         (delta2_from_ptrmemfunc): Remove.
655         * expr.c (cplus_expand_constant): Adjust call to
656         expand_ptrmemfunc_cst.
657         * typeck.c (build_ptrmemfunc1): Simplify.
658         (build_ptrmemfunc): Make sure that casting a PTRMEM_CST still
659         results in a constant.
660         (expand_ptrmemfunc_cst): Remove idx and delta2 parameters.
661         (delta2_from_ptrmemfunc): Remove.
662         (pfn_from_ptrmemfunc): Adjust call to expand_ptrmemfunc_cst.
663
664 2001-04-12  Jason Merrill  <jason_merrill@redhat.com>
665
666         * cp-tree.h (decl_namespace_list): New macro.
667         (struct saved_scope): Add decl_ns_list.
668         * decl.c (mark_saved_scope): Mark it.
669         * decl2.c: Lose static decl_namespace_list.
670         (init_decl2): Don't save it.
671
672 2001-04-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
673
674         * cp-tree.h (warn_return_type, yylex): Delete redundant
675         declarations.
676
677         * decl.c (current_class_depth, global_namespace): Likewise.
678
679         * decl2.c (current_class_depth, flag_gnu_xref): Likewise
680
681         * repo.c (flag_use_repository): Likewise.
682
683 2001-04-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
684
685         * cp-tree.h (pedantic, convert, global_bindings_p, insert_block,
686         set_block, pushdecl, getdecls, gettags, init_decl_processing,
687         maybe_build_cleanup, copy_lang_decl, prep_stmt, lvalue_p,
688         lvalue_or_else, print_lang_statistics, comp_target_types,
689         unsigned_type, signed_type, signed_or_unsigned_type,
690         build_function_call, mark_addressable, incomplete_type_error):
691         Delete redundant declarations.
692
693 2001-04-11  Jason Merrill  <jason_merrill@redhat.com>
694
695         * cp-tree.h (TYPE_LINKAGE_IDENTIFIER): New macro.
696         (TYPE_ANONYMOUS_P): New macro.
697         (TAGGED_TYPE_P): New macro.
698         * decl.c (check_tag_decl): Use TYPE_ANONYMOUS_P.
699         (grokfndecl, grokvardecl, grokdeclarator): Likewise.
700         * tree.c (no_linkage_helper): Likewise.
701         * semantics.c (begin_class_definition): Likewise.
702         * pt.c (convert_template_argument): Likewise.
703         * lex.c (check_for_missing_semicolon): Likewise.
704
705 2001-04-12  Nathan Sidwell  <nathan@codesourcery.com>
706
707         * class.c (dfs_unshared_virtual_bases): New function.
708         (mark_primary_bases): Call it.
709         (check_bases): Ignore virtual bases when determining
710         nearly-emptiness.
711
712 2001-04-12  Nathan Sidwell  <nathan@codesourcery.com>
713
714         * method.c (make_thunk): Clear DECL_CLONED_FUNCTION.
715
716 2001-04-11  Mark Mitchell  <mark@codesourcery.com>
717
718         * optimize.c (maybe_clone_body): Copy DECL_NUM_STMTS from the
719         cloned function to the clone.
720
721 2001-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
722
723         * Make-lang.in (cp/semantics.o): Depend on $(EXPR_H).
724
725         * semantics.c: Include expr.h.
726
727 2001-04-11  Nathan Sidwell  <nathan@codesourcery.com>
728
729         * method.c (implicitly_declare_fn): Commonize code for copy ctor
730         and assignment op. Set TREE_USED for parameter.
731
732 2001-04-10  Mark Mitchell  <mark@codesourcery.com>
733
734         * class.c (find_final_overrider_data): Add `candidates'.
735         (dfs_find_final_overrider): Don't issue error messages
736         prematurely.
737         (find_final_overrider): Issue error messages here.
738         (build_base_field): Don't warn about amgibuous direct bases here.
739         (warn_about_ambiguous_direct_bases): New function.
740         (layout_class_type): Use it.
741
742 2001-04-10  Richard Henderson  <rth@redhat.com>
743
744         * typeck.c (build_array_ref): Push the array reference inside
745         COMPOUND_EXPR and COND_EXPR.
746
747 2001-04-05  Mark Mitchell  <mark@codesourcery.com>
748
749         * cp-tree.h (DECL_THIS_INLINE): Rename to DECL_DECLARED_INLINE_P.
750         * decl.c (duplicate_decls): Adjust accordingly.
751         (maybe_commonize_var): Likewise.
752         (grokfndecl): Likewise.
753         (start_function): Likewise.
754         (start_method): Likewise.
755         * decl2.c (key_method): Likewise.
756         (import_export_decl): Likewise.
757         * method.c (implicitly_declare_fn): Likewise.
758         * optimize.c (maybe_clone_body): Likewise.
759
760 2001-04-05  Benjamin Kosnik  <bkoz@redhat.com>
761
762         * lang-specs.h: Add __DEPRECATED.
763
764 Thu Apr  5 16:54:29 2001  J"orn Rennecke <amylaar@redhat.com>
765
766         * search.c (get_dynamic_cast_base_type): When building a new
767         constant, set its type to ssizetype.
768
769 2001-04-04  Jakub Jelinek  <jakub@redhat.com>
770
771         * optimize.c (expand_call_inline): Only add newly inlined statements
772         into inlined_stmts.
773
774 2001-04-03  Mark Mitchell  <mark@codesourcery.com>
775
776         * cp-tree.h (OPERATOR_ASSIGN_FORMAT): Remove.
777         (OPERATOR_FORMAT): Likewise.
778         (OPERATOR_TYPENAME_FORMAT): Likewise.
779         * operators.def: Remove old name-mangling information.
780         * decl.c (grok_op_properties): Adjust accordingly.
781         * lex.c (init_operators): Likewise.
782         * rtti.c (get_tinfo_decl): Issue error messages about types that
783         have variable size.
784
785 2001-04-03  Mark Mitchell  <mark@codesourcery.com>
786
787         * decl2.c (import_export_decl): Don't call import_export_class
788         when processing an inline member function.
789         * semantics.c (expand_body): Call import_export_decl before
790         emitting inline functions.
791
792 2001-03-28  Richard Henderson  <rth@redhat.com>
793
794         IA-64 ABI Exception Handling:
795         * cp-tree.def (EH_SPEC_BLOCK): New.
796         (MUST_NOT_THROW_EXPR): New.
797         * cp-tree.h: Update changed function declarations.
798         (CPTI_PUSH_EXCEPTION_IDENTIFIER): Remove.
799         (CPTI_CALL_UNEXPECTED): New.
800         (struct cp_language_function): Rename x_eh_spec_try_block
801         to x_eh_spec_block.
802         (EH_SPEC_STMTS, EH_SPEC_RAISES): New.
803         * decl.c (current_binding_level): If no current function
804         bindings, revert to scope_chain.
805         (initialize_predefined_identifiers): Remove __cp_push_exception.
806         (store_parm_decls): Use begin_eh_spec_block.
807         (finish_function): Use finish_eh_spec_block.
808         (mark_lang_function): Update for name changes.
809         * decl2.c (finish_file): No mark_all_runtime_matches.
810         * dump.c (cp_dump_tree): Handle new tree codes.
811         * error.c (dump_expr) [BIND_EXPR]: Fix typo.
812         * except.c (catch_language_init, catch_language): Remove.
813         (init_exception_processing): Don't set language code.
814         Initialize call_unexpected_node, protect_cleanup_actions,
815         eh_personality_libfunc, lang_eh_runtime_type.
816         (call_eh_info, push_eh_info, get_eh_info, get_eh_value): Remove.
817         (get_eh_type, get_eh_caught, get_eh_handlers): Remove.
818         (prepare_eh_type): Split out type canonicalizations ...
819         (build_eh_type_type): ... from here.
820         (build_eh_type_type_ref): Remove.
821         (mark_all_runtime_matches): Remove.
822         (build_exc_ptr): New.
823         (do_begin_catch, do_end_catch): New.
824         (do_pop_exception): Remove.
825         (build_terminate_handler): Remove.
826         (choose_personality_routine): Split out language choice from ...
827         (initialize_handler_parm): ... here.
828         Use MUST_NOT_THROW_EXPR.
829         (expand_start_catch_block): Use do_begin_catch.  Simplify Java
830         exception object handling.
831         (expand_start_eh_spec, expand_end_eh_spec): Remove.
832         (expand_exception_blocks, alloc_eh_object): Remove.
833         (begin_eh_spec_block, finish_eh_spec_block): New.
834         (do_allocate_exception, do_free_exception): New.
835         (expand_throw): Merge into ...
836         (build_throw): ... here.  Update for abi.
837         * expr.c (cplus_expand_expr): No expand_internal_throw.
838         Handle MUST_NOT_THROW_EXPR.
839         * pt.c (tsubst_expr): Handle EH_SPEC_BLOCK.
840         * semantics.c (*) Update for except.h name changes.
841         (genrtl_try_block): No protect_with_terminate.
842         (genrtl_eh_spec_block): New.
843         (genrtl_handler): Don't emit the goto here.
844         (cp_expand_stmt): Handle EH_SPEC_BLOCK.
845         (genrtl_finish_function): Don't expand_exception_blocks.
846         * tree.c (cp_statement_code_p): Handle EH_SPEC_BLOCK.
847
848 2001-03-28  Richard Henderson  <rth@redhat.com>
849
850         * decl.c (struct named_label_list): Rename eh_region to
851         in_try_scope, add in_catch_scope.
852         (struct binding_level): Rename eh_region to is_try_scope,
853         add is_catch_scope.
854         (note_level_for_try): Rename from note_level_for_eh.
855         (note_level_for_catch): New.
856         (poplevel): Copy both is_try_scope and is_catch_scope to
857         the named_label_list struct.
858         (check_previous_goto_1): Don't check for catch block via
859         DECL_ARTIFICIAL; use in_try_scope instead.
860         (check_goto): Likewise.
861         * cp-tree.h (note_level_for_try, note_level_for_catch): Declare.
862         * except.c (expand_start_catch_block): Call note_level_for_catch.
863         * semantics.c (begin_compound_stmt): Update for note_level_for_try.
864
865 2001-03-27  Richard Henderson  <rth@redhat.com>
866
867         * except.c: Use USING_SJLJ_EXCEPTIONS instead of
868         exceptions_via_longjmp.
869
870 2001-03-27  Phil Edwards  <pme@sources.redhat.com>
871
872         * pt.c (check_default_tmpl_args):  Make error messages clearer.
873
874 2001-03-26  Phil Edwards  <pme@sources.redhat.com>
875
876         * error.c:  Also undefine 'A' macro used for cp_printers definition.
877
878 2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
879
880         * Make-lang.in: Depend on $(SYSTEM_H), not system.h.
881
882 2001-03-26  Mike Yang <yang@research.att.com>
883             Mark Mitchell  <mark@codesourcery.com>
884
885         * dump.c (dump_access): New function.
886         (cp_dump_tree): Use it.  Dump basetype information for class
887         types.
888
889 2001-03-26  Mark Mitchell  <mark@codesourcery.com>
890
891         * Makefile.in (optimize.o): Depend on params.h.
892         (duplicate_decls): Copy DECL_NUM_STMTS, not DECL_FRAME_SIZE.
893         (init_decl_processing): Set flag_no_inline when doing
894         inlining-on-trees.
895         * optimize.c: Include params.h.
896         (struct inline_data): Improve documentation of FNS.  Add
897         FIRST_INLINED_FN, INLINED_STMTS, and CLONING_P.
898         (INSNS_PER_STMT): New macro.
899         (remap_block): Use CLONING_P.
900         (inlinable_function_p): Don't inline big functions.
901         (expand_call_inline): Keep track of how much inlining we've done.
902         (optimize_function): Set FIRST_INLINED_FN.
903         (maybe_clone_body): Set CLONING_P.
904         * semantics.c (simplify_aggr_init_exprs_r): Fix typing problems in
905         tree nodes.
906         (genrtl_finish_function): Clear DECL_DEFER_OUTPUT before calling
907         rest_of_compilation.  Clear DECL_RTL for local variables
908         afterwards.
909         (clear_decl_rtl): New function.
910
911 2001-03-26  Nathan Sidwell  <nathan@codesourcery.com>
912
913         Implement DR 209
914         * cp-tree.h (skip_type_access_control,
915         reset_type_access_control): Prototype.
916         * decl.c (grokdeclarator): Access of friends is not checked.
917         * parse.y (component_decl_list): Reset type access control.
918         * semantics.c (decl_type_access_control): Clear
919         current_type_lookups.
920         (save_type_access_control): Don't save if not deferring.
921         (skip_type_access_control, reset_type_access_control): New
922         functions.
923         (begin_class_definition): Do type access control for basetypes.
924         Start deferred access control.
925         (finish_class_definition): Resume immediate access control if
926         this is a local class.
927
928 2001-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
929
930         * class.c (add_method): Use memcpy/memmove, not bcopy.
931
932         * decl.c (duplicate_decls): Likewise.
933
934 2001-03-23  Jakub Jelinek  <jakub@redhat.com>
935
936         * mangle.c (write_discriminator): Use `_0' for discriminator 1,
937         not `_'.
938
939 2001-03-23  Jakub Jelinek  <jakub@redhat.com>
940
941         * decl.c (local_names): Define.
942         (push_local_name): New.
943         (grok_reference_init): Return init if initializing static reference
944         variable with non-constant instead of emitting it.
945         Move expand_static_init call to cp_finish_decl.
946         (layout_var_decl): Call push_local_name.
947         (maybe_commonize_var): Allow inlining functions even if they have
948         static local variables, use comdat_linkage for them if flag_weak.
949         (check_initializer): Call obscure_complex_init if
950         grok_reference_init returned non-zero.
951         (save_function_data): Clear x_local_names.
952         (pop_cp_function_context): Free x_local_names.
953         (mark_inlined_fns): Remove.
954         (mark_lang_function): Mark x_local_names.
955         (lang_mark_tree): Don't mark DECL_ACCESS for DECL_DISCRIMINATOR_P.
956         Mark inlined_fns as tree, remove call to mark_inlined_fns.
957         * class.c (alter_access): Ensure DECL_ACCESS is never set if
958         DECL_DISCRIMINATOR_P.
959         * cp-tree.h (cp_language_function): Add x_local_names.
960         (lang_decl_flags): Add discriminator into u2.
961         (lang_decl_inlined_fns): Remove.
962         (lang_decl): inlined_fns is now a TREE_VEC.
963         (DECL_DISCRIMINATOR_P, DECL_DISCRIMINATOR): Define.
964         * optimize.c (inlinable_function_p): DECL_INLINED_FNS is now a
965         TREE_VEC, not a custom structure.
966         (optimize_function): Likewise.
967         * mangle.c (discriminator_for_local_entity): Discriminate among
968         VAR_DECL local entities.
969         * search.c (dfs_access_in_type): If DECL_DISCRIMINATOR_P, DECL_ACCESS
970         is not valid.
971
972 2001-03-22  Bryce McKinlay  <bryce@albatross.co.nz>
973
974         Add support for Java interface method calls.
975         * cp-tree.h (struct lang_type): Add java_interface flag.
976         (TYPE_JAVA_INTERFACE): New macro.
977         * tree.c (cp_valid_lang_attribute): Handle "java_interface" attribute
978         by setting TYPE_JAVA_INTERFACE.
979         * call.c (java_iface_lookup_fn): New static.
980         (build_over_call): If calling a method declared in a
981         TYPE_JAVA_INTERFACE, call build_java_interface_fn_ref to generate the
982         expression which resolves the function address.
983         (build_java_interface_fn_ref): New function.
984
985 2001-03-22  Richard Henderson  <rth@redhat.com>
986
987         * Make-lang.in (cp/except.o): Don't depend on insn-flags.h.
988         * except.c: Don't include it.
989
990 2001-03-22  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
991             based on an idea from Joe Buck <jbuck@synopsys.com>
992
993         * parse.y (bad_decl, template_arg_list_ignore, arg_list_ignore):
994         New nonterminals.
995         (data_def, component_decl): Add reductions to bad_decl.
996
997 2001-03-22  Jakub Jelinek  <jakub@redhat.com>
998
999         * method.c (do_build_assign_ref): Don't use build_modify_expr for
1000         anonymous aggregates, since they don't have assignment operator
1001         method.
1002         * decl.c (fixup_anonymous_aggr): Disallow ctors, dtors and copy
1003         assignment operators for anonymous structure fields.
1004
1005 2001-03-21  Jason Merrill  <jason@redhat.com>
1006
1007         * pt.c (instantiate_decl): Abort if we see a member constant
1008         instantiation that doesn't already have its initializer.
1009         Downgrade explicit instantiation without definition to pedwarn.
1010
1011         * cp-tree.h (DECL_TINFO_FN_P, SET_DECL_TINFO_FN_P): Remove.
1012         * class.c (build_vtable_entry): Don't check DECL_TINFO_FN_P.
1013         (import_export_decl): Check tinfo_decl_p, not DECL_TINFO_FN_P.
1014
1015         * cp-tree.h (CLASSTYPE_VTABLE_NEEDS_WRITING): Remove.
1016         (pending_vtables): Remove.
1017         * decl2.c (pending_vtables): Remove.
1018         (import_export_vtable): Use CLASSTYPE_INTERFACE_ONLY, not
1019         CLASSTYPE_VTABLE_NEEDS_WRITING.
1020         (import_export_class): Likewise.
1021         (init_decl2): Don't mark pending_vtables.
1022         * lex.c (handle_pragma_vtable): Just sorry.
1023         * pt.c (instantiate_class_template): Don't mess with
1024         CLASSTYPE_VTABLE_NEEDS_WRITING.
1025         (mark_class_instantiated): Likewise.
1026         * ptree.c (print_lang_type): Don't print it.
1027         * semantics.c (begin_class_definition): Don't set it.
1028
1029         * pt.c (template_tail): Replace with last_pending_template.
1030         (maybe_templates, maybe_template_tail): Remove.
1031         (add_pending_template): Adjust.
1032         (instantiate_pending_templates): Adjust.
1033
1034         * cp-tree.h (struct saved_scope): Remove lang_stack field.
1035         (current_lang_stack): Remove.
1036         * decl.c (maybe_push_to_top_level): Don't initialize it.
1037         (duplicate_decls): Use current_lang_depth.
1038         (xref_basetypes): Likewise.
1039         * class.c (current_lang_depth): New fn.
1040         (push_lang_context): Use more varray functionality.
1041         (pop_lang_context): Likewise.
1042
1043         * error.c (GLOBAL_THING): Always use '__'.
1044
1045 2001-03-21  Mark Mitchell  <mark@codesourcery.com>
1046
1047         * class.c (build_clone): Clear DECL_ASSEMBLER_NAME.
1048
1049         * mangle.c (mangle_decl_string): Mangle the names of overloaded
1050         operators, even when they have `extern "C"' linkage.
1051
1052 2001-03-19  Mark Mitchell  <mark@codesourcery.com>
1053
1054         * class.c (get_vtable_decl): Use SET_DECL_ASSEMBLER_NAME,
1055         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
1056         where it's not necessary.
1057         (add_method): Remove optimization involving comparison of
1058         DECL_ASSEMBLER_NAME.
1059         (build_vtbl_or_vbase_field): Use SET_DECL_ASSEMBLER_NAME,
1060         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
1061         where it's not necessary.
1062         (check_methods): Likewise.
1063         (build_clone): Likewise.
1064         (built_vtt): Likewise.
1065         * cp-tree.h (DECL_NEEDED_P): Likewise.
1066         * decl.c (pushtag): Likewise.
1067         (duplicate_decls): Likewise.
1068         (pushdecl): Likewise.
1069         (builtin_function): Likewise.
1070         (build_library_fn_1): Set DECL_LANGUAGE for library functions.
1071         (build_cp_library_fn): Likewise.
1072         (maybe_commonize_var): Use SET_DECL_ASSEMBLER_NAME,
1073         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
1074         where it's not necessary.
1075         (make_rtl_for_nonlocal_decl): Likewise.
1076         (cp_finish_decl): Likewise.
1077         (grokfndecl): Likewise.
1078         (grokvardecl): Likewise.
1079         (grokdeclarator): Likewise.
1080         (start_function): Likewise.
1081         (cp_missing_return_ok_p): Likewise.
1082         * decl2.c (grokclassfn): Likewise.
1083         (check_classfn): Likewise.
1084         (finish_static_data_member_decl): Likewise.
1085         (grokfield): Likewise.
1086         * error.c (GLOBAL_IORD_P): Remove.
1087         (dump_global_iord): Improve output.
1088         (dump_decl): Avoid using DECL_ASSEMBLER_NAME.
1089         * except.c (nothrow_libfn_p): Summarily reject any function not in
1090         namespace-scope.
1091         * init.c (build_java_class_ref): Don't explicitly set
1092         DECL_ASSEMBLER_NAME after calling mangle_decl.
1093         * mangle.c (mangle_decl_string): Handle extern "C" functions.
1094         (mangle_decl): Set the DECL_ASSEMBLER_NAME for the decl.
1095         * method.c (set_mangled_name_for_decl): Don't explicitly set
1096         DECL_ASSEMBLER_NAME after calling mangle_decl.
1097         (make_thunk): Explicitly set the DECL_ASSEMBLER_NAME and
1098         IDENTIFIER_GLOBAL_VALUE for the thunk.
1099         * pt.c (set_mangled_name_for_template_decl): Remove.
1100         (check_explicit_specialization): Don't use it.
1101         (looup_template_class): Don't set DECL_ASSEMBLER_NAME.
1102         (tsubst_friend_function): Likewise.
1103         (tsubst_decl): Likewise.
1104         (regenerate_decl_from_template): Use COPY_DECL_ASSEMBLER_NAME.
1105         * rtti.c (get_tinfo_decl): Use SET_DECL_ASSEMBLER_NAME,
1106         COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
1107         where it's not necessary.
1108         (tinfo_base_init): Likewise.
1109         (create_real_tinfo_var): Likewise.
1110         * search.c (looup_field_1): Likewise.
1111         * semantics.c (finish_named_return_value): Likewise.
1112         * tree.c (init_tree): Set lang_set_decl_assembler_name.
1113
1114 2001-03-15  Gabriel Dos Reis  <gdr@codesourcery.com>
1115
1116         Correct semantics restrictions checking in throw-expression.
1117         * except.c (is_admissible_throw_operand): New function.
1118         (build_throw): Use it.
1119
1120 2001-03-14  Mark Mitchell  <mark@codesourcery.com>
1121
1122         * decl.c (cp_make_fnname_decl): Set DECL_IGNORED_P on __FUNCTION__
1123         and its ilk.
1124
1125 2001-03-14  Mark Mitchell  <mark@codesourcery.com>
1126
1127         * class.c (build_clone): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
1128         * cp-tree.h (DECL_IN_MEMORY_P): Likewise.
1129         * decl.c (duplicate_decls): Likewise.
1130         (builtin_function): Likewise.
1131         (build_library_fn): Likewise.
1132         (build_cp_library_fn): Likewise.
1133         (check_initializer): Likewise.
1134         (cp_finish_decl): Likewise.
1135         * decl2.c (grokfield): Likewise.
1136         (grok_function_init): Remove #if 0'd code.
1137         (finish_anon_union): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
1138         * friend.c (do_friend): Likewise.
1139         * init.c (get_temp_regvar): Likewise.
1140         * method.c (make_thunk): Likewise.
1141         * pt.c (tsubst_friend_function): Likewise.
1142         (tsubst_decl): Likewise.
1143         (regenerate_decl_from_template): Likewise.
1144         * semantics.c (genrtl_named_return_value): Likewise.
1145         (expand_body): Likewise.
1146         (genrtl_finish_function): Likewise.
1147         * tree.c (cp_tree_equal): Likewise.
1148
1149 2001-03-12  Nathan Sidwell  <nathan@codesourcery.com>
1150
1151         * call.c (convert_like_real): Add extra semantics to INNER
1152         parameter. Don't convert to temporary if a user conversion
1153         gives us an lvalue that we're about to bind to a reference.
1154         Set INNER to indicate pending reference binding on recursive
1155         calls.
1156
1157 2001-03-10  Neil Booth  <neil@daikokuya.demon.co.uk>
1158
1159         * cp/lex.c: Delete duplicate pending_lang_change.
1160
1161 2001-03-10  Neil Booth  <neil@daikokuya.demon.co.uk>
1162
1163         * cp/lex.c (handle_pragma_interface, handle_pragma_implementation):
1164         Similarly.
1165         * cp/repo.c (get_base_filename, open_repo_file): Similarly.
1166         * cp/cp-tree.h: Remove file_name_nondirectory prototype.
1167
1168 2001-03-09  Zack Weinberg  <zackw@stanford.edu>
1169
1170         * Make-lang.in: Add dependencies on $(TM_P_H) as appropriate.
1171
1172 2001-03-08  Stan Shebs  <shebs@apple.com>
1173
1174         * cp-tree.h (set_identifier_local_value): Remove unused decl.
1175
1176 2001-03-06  Zack Weinberg  <zackw@stanford.edu>
1177
1178         * spew.c: Remove references to CPP_OSTRING.
1179
1180 2001-03-06  Andrew Haley  <aph@redhat.com>
1181
1182         * typeck.c (convert_arguments): Check that we have an fndecl.
1183
1184 2001-03-05  Andrew Haley  <aph@redhat.com>
1185
1186         * typeck.c (convert_arguments): Don't do ellipsis conversion for
1187         __built_in_constant_p.
1188
1189 2001-03-02  Nathan Sidwell  <nathan@codesourcery.com>
1190
1191         * typeck.c (build_static_cast): Allow enum to enum conversions
1192         as per DR 128.
1193
1194 2001-03-02  Nathan Sidwell  <nathan@codesourcery.com>
1195
1196         * class.c (check_field_decls): Pointers to member do not a
1197         non-pod struct make, as per DR 148.
1198
1199 2001-03-02  Nathan Sidwell  <nathan@codesourcery.com>
1200
1201         * call.c (joust): cp_pedwarn when using gnu extension concerning
1202         worst conversion sequences.
1203
1204 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
1205
1206         * decl.c: Replace all uses of 'boolean' with 'bool'.
1207
1208 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
1209
1210         * lang-specs.h: Add zero initializer for cpp_spec field to
1211         all array elements that need one.  Don't put an #ifdef inside
1212         the initializer list; set a default for CPLUSPLUS_CPP_SPEC and
1213         use it.
1214
1215 2001-03-01  Nathan Sidwell  <nathan@codesourcery.com>
1216
1217         Implement using decls inside template functions.
1218         * decl2.c (validate_nonmember_using_decl): Don't special case
1219         fake_std_node in the global namespace. Don't reject early when
1220         processing a template.
1221         (do_local_using_decl): Add to statement tree. Don't do further
1222         processing when building a template.
1223         * pt.c (tsubst_expr, DECL_STMT case): Deal with USING_DECLs.
1224
1225 2001-03-01  Nathan Sidwell  <nathan@codesourcery.com>
1226
1227         * decl2.c (do_nonmember_using_decl): Don't complain if we find
1228         same function. Do complain about ambiguating extern "C"
1229         declarations.
1230
1231 2001-02-28  Nathan Sidwell  <nathan@codesourcery.com>
1232
1233         Remove floating point and complex type template constant parms.
1234         * pt.c (convert_nontype_argument): Remove REAL_TYPE and
1235         COMPLEX_TYPE extensions.
1236         (invalid_nontype_parm_type_p): Likewise.
1237
1238 2001-02-27  Jeffrey Oldham  <oldham@codesourcery.com>
1239
1240         * except.c (call_eh_info): Revert "match_function"'s type.
1241
1242 2001-02-27  Nathan Sidwell  <nathan@codesourcery.com>
1243
1244         Fix ctor vtable vcall offsets.
1245         * class.c (struct vtbl_init_data_s): Add rtti_binfo member.
1246         (build_rtt_vtbl_entries): Lose RTTI_BINFO parameter.
1247         (get_matching_base): Remove.
1248         (get_original_base): New function.
1249         (build_vtbl_initializer): Initialize vid.rtti_binfo.
1250         Use a virtual thunk for a ctor vtable with an index
1251         (add_vcall_offset_vtbl_entries_1): Check if binfo has lost a
1252         primary base within a constructor vtable. Only set
1253         BV_VCALL_INDEX when not a constructor vtable. Adjust vcall offset
1254         when primary base has been lost.
1255         * cp-tree.h (BINFO_VIRTUALS): Remove ambiguity from comment.
1256
1257 2001-02-26  Jeffrey Oldham  <oldham@codesourcery.com>
1258
1259         * call.c (joust): Ensure more_specialized()'s argument length
1260         parameter has correct value for constructors.
1261
1262 2001-02-26  Nathan Sidwell  <nathan@codesourcery.com>
1263
1264         * except.c (call_eh_info): Cleanup generation of cp_eh_info struct.
1265
1266         * decl.c (mark_inlined_fns): Prototype.
1267
1268 2001-02-22  Mark Mitchell  <mark@codesourcery.com>
1269
1270         * spew.c (yylex): Correct handling of friends.
1271
1272 2001-02-22  Mark Mitchell  <mark@codesourcery.com>
1273
1274         * mangle.c (write_encoding): Pass write_function_type the
1275         FUNCTION_DECL for the function being encoded.
1276         (write_function_type): Pass it along to write_bare_function_type.
1277         (write_bare_function_type): Pass it along to write_method_parms.
1278         (write_method_parms): Don't mangle the compiler-generated
1279         parameters to a constructor or destructor.
1280
1281 2001-02-22  Andreas Jaeger  <aj@suse.de>
1282
1283         * optimize.c: Include toplev.h for
1284         note_deferral_of_defined_inline_function prototype.
1285
1286 2001-02-22  Jakub Jelinek  <jakub@redhat.com>
1287
1288         * cp-tree.h (struct lang_decl_inlined_fns): New.
1289         (struct lang_decls): Add inlined_fns.
1290         (DECL_INLINED_FNS): New macro.
1291         * optimize.c (struct inline_data): Add inlined_fns.
1292         (declare_return_variable): Use VARRAY_ACTIVE_SIZE macro.
1293         (inlinable_function_p): Likewise, fix typo in comment,
1294         function is not inlinable if it already inlined function currently
1295         being optimized.
1296         (expand_call_inline): Add fn to inlined_fns if neccessary.
1297         (optimize_function): Initialize inlined_fns.
1298         Save inlined_fns into DECL_INLINED_FNS after expanding inlines.
1299         * decl.c (mark_inlined_fns): New function.
1300         (lang_mark_tree): Call it.
1301
1302 2001-02-21  Jason Merrill  <jason@redhat.com>
1303
1304         * cp-tree.h (struct lang_decl_flags): Remove uninlinable flag.
1305         (DECL_UNINLINABLE): Move to middle-end.
1306
1307         * class.c (clone_function_decl): Set DECL_ABSTRACT on original fn.
1308         * decl.c (duplicate_decls): Preserve DECL_ABSTRACT.
1309         * class.c (build_clone): Set DECL_ABSTRACT_ORIGIN for the clone.
1310         * optimize.c (maybe_clone_body): Set DECL_ABSTRACT_ORIGIN for the
1311         parms and outer BLOCK.  note_deferral_of_defined_inline_function.
1312
1313         * method.c (implicitly_declare_fn): Don't set DECL_ARTIFICIAL on
1314         second parm of op=.
1315
1316 2001-02-19  Mark Mitchell  <mark@codesourcery.com>
1317
1318         * decl2.c (set_decl_namespace): Allow explicit instantiations in
1319         any namespace.
1320
1321 2001-02-18  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1322
1323         * optimize.c (expand_call_inline): Don't walk subtrees of type
1324         nodes.
1325
1326 2001-02-18  Mark Mitchell  <mark@codesourcery.com>
1327
1328         * class.c (add_vcall_offset_vtbl_entries_1): Only add one entry
1329         for a destructor.
1330
1331 2001-02-18  Jason Merrill  <jason@redhat.com>
1332
1333         Do put the VTT parameter in DECL_ARGUMENTS.
1334         * cp-tree.h (struct cp_language_function): Add x_vtt_parm.
1335         (current_vtt_parm): New macro.
1336         (struct lang_decl_flags): Add has_vtt_parm_p, remove vtt_parm.
1337         (DECL_HAS_VTT_PARM_P): New macro.
1338         (DECL_VTT_PARM): Remove.
1339         (FUNCTION_FIRST_USER_PARMTYPE, FUNCTION_FIRST_USER_PARM): New macros.
1340         * decl.c (duplicate_decls): Only copy the operator code if
1341         appropriate.
1342         (start_function): Set current_vtt_parm.
1343         (lang_mark_tree): Don't mark vtt_parm.
1344         * decl2.c (maybe_retrofit_in_chrg): Do add the VTT parm to
1345         DECL_ARGUMENTS.  Set DECL_HAS_VTT_PARM_P.
1346         * class.c (build_clone): Maybe remove the VTT parm.
1347         * optimize.c (maybe_clone_body): Set up the VTT parm.
1348         * pt.c (copy_default_args_to_explicit_spec): Preserve the VTT parm.
1349         * call.c (build_over_call): Just allow the VTT arg.
1350         * method.c (make_thunk): Don't set DECL_VTT_PARM.
1351         (do_build_copy_constructor): Use FUNCTION_FIRST_USER_PARM.
1352         (synthesize_method): Use FUNCTION_FIRST_USER_PARMTYPE.
1353         * decl.c (grokdeclarator, copy_args_p, grok_ctor_properties): Likewise.
1354         * error.c (dump_function_decl): Likewise.
1355         * call.c (build_user_type_conversion_1, convert_like_real): Abort
1356         if we try to call a constructor with in-charge or VTT parms.
1357         * method.c (skip_artificial_parms_for): New fn.
1358         * call.c (add_function_candidate, build_over_call): Call it.
1359         * call.c (build_new_method_call): Use current_vtt_parm.
1360         * init.c (expand_virtual_init): Likewise.
1361         * class.c (same_signature_p): No longer static.
1362         * cp-tree.h: Declare it.
1363         * search.c (look_for_overrides_r): Use it.
1364
1365 2001-02-17  Mark Mitchell  <mark@codesourcery.com>
1366
1367         * cp-tree.h (new_abi_rtti_p): Remove.
1368         (name_mangling_version): Likewise.
1369         (flag_do_squangling): Likewise.
1370         * class.c (build_rtti_vtbl_entries): Remove old ABI support.
1371         * decl.c (grokfndecl): Likewise.
1372         * decl2.c (name_mangling_version): Remove.
1373         (flag_do_squangling): Likewise.
1374         (lang_f_options): Remove `squangle'.
1375         (unsupported_options): Add `squangle'.
1376         (cxx_decode_option): Issue a warning about uses of
1377         -fname-mangling-version.
1378         (finish_file): Remove old ABI support.
1379         * pt.c (check_explicit_specialization): Likewise.
1380         (tsubst_decl): Likewise.
1381         * rtti.c (init_rtti_processing): Likewise.
1382         (build_headof): Likewise.
1383         (get_tinfo_decl_dynamic): Likewise.
1384         (tinfo_from_decl): Likewise.
1385         (build_dynamic_cast_1): Likewise.
1386         (synthesize_tinfo_var): Likewise.
1387         * init.c (build_new): Allow enumeration types for the array-bounds
1388         in a direct-new-declarator.
1389
1390         * semantics.c (finish_typeof): Resolve OFFSET_REFs.
1391
1392         * pt.c (check_explicit_specialization): Copy TREE_PRIVATE and
1393         TREE_PROTECTED from the template being specialized.
1394
1395 2001-02-17  Jason Merrill  <jason@redhat.com>
1396
1397         * decl2.c (build_artificial_parm): Set TREE_READONLY.
1398
1399         * decl.c (bad_specifiers): Allow throw specs on things with
1400         pointer-to-function or -member-function type.
1401         * init.c (build_default_init): Don't use a CONSTRUCTOR to initialize
1402         a pmf.
1403
1404 2001-02-17  Mark Mitchell  <mark@codesourcery.com>
1405
1406         * call.c (check_dtor_name): Handle template names correctly.
1407
1408 2001-02-16  Jason Merrill  <jason@redhat.com>
1409
1410         * cp-tree.h (DECL_USE_VTT_PARM): Remove.
1411         * decl2.c (maybe_retrofit_in_chrg): Don't create it.
1412         * optimize.c (maybe_clone_body): Don't substitute it.
1413         * call.c (build_new_method_call): Check in_chrg instead.
1414         * init.c (expand_virtual_init): Likewise.
1415
1416 2001-02-16  Gabriel Dos Reis  <gdr@codesourcery.com>
1417
1418         * decl.c (check_tag_decl): Make sure a typedef for an anonymous
1419         class-type introduces at least a type-name.
1420
1421 2001-02-16  Jakub Jelinek  <jakub@redhat.com>
1422
1423         * call.c (convert_like_real): Create a temporary for non-lvalue.
1424
1425 2001-02-16  Jeffrey Oldham  <oldham@codesourcery.com>
1426
1427         * cp-tree.h: Fix typos in comments.
1428
1429 2001-02-16  Jason Merrill  <jason@redhat.com>
1430
1431         * optimize.c (remap_block): If we're compiling a clone, pass the
1432         new block to insert_block.
1433
1434 2001-02-16  Mark Mitchell  <mark@codesourcery.com>
1435
1436         * semantics.c (finish_asm_stmt): Robustify.
1437
1438 2001-02-15  Mark Mitchell  <mark@codesourcery.com>
1439
1440         * pt.c (push_template_decl_real): Don't remangle the name of a
1441         class template.
1442
1443 2001-02-15  Jim Meyering  <meyering@lucent.com>
1444
1445         * Make-lang.in (c++.install-common): Depend on installdirs.
1446         (c++.install-info): Likewise.
1447         (c++.install-man): Likewise.
1448
1449 2001-02-15  Mark Mitchell  <mark@codesourcery.com>
1450
1451         * typeck2.c (build_m_component_ref): Robustify.
1452
1453 2001-02-15  Alexandre Oliva  <aoliva@redhat.com>
1454
1455         * friend.c (do_friend): Don't take the nested [template] class
1456         into account when deciding whether to warn about the friend
1457         function not referring to a template function.
1458
1459 2001-02-14  Jakub Jelinek  <jakub@redhat.com>
1460
1461         * typeck.c (build_unary_op): Clarify error message.
1462
1463 2001-02-08  Aldy Hernandez  <aldyh@redhat.com>
1464
1465         * parse.y (component_constructor_declarator): allow optional
1466         parentheses around constructor class name.
1467
1468 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
1469
1470         * cp-tree.h (setup_vtbl_ptr): Move prototype to semantics.c
1471         section.
1472         * init.c (emit_base_init): Remove incorrect comment about
1473         virtual bases.
1474         * method.c (make_thunk): Fix comment alignment.
1475
1476 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
1477
1478         Kill remnants of this is variable.
1479         * cp-tree.h (flag_this_is_variable): Remove.
1480         * decl2.c (flag_this_is_variable): Remove.
1481         * class.c (fixed_type_or_null): Add cdtor parm. Adjust.
1482         (build_vbase_path): The path is non-static, even in a cdtor.
1483         (resolves_to_fixed_type_p): Add additional return value.
1484         * search.c (init_vbase_pointers): Adjust.
1485         * tree.c (lvalue_p_1): Adjust.
1486         * typeck.c (mark_addressable): Adjust.
1487
1488 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
1489
1490         * pt.c (unify): Don't check cv quals of array types.
1491
1492 2001-02-14  Nathan Sidwell  <nathan@codesourcery.com>
1493
1494         * tree.c (cp_build_qualified_type_real): Use CP_TYPE_QUALS to
1495         check whether we already have the type.
1496
1497 2001-02-13  Mark Mitchell  <mark@codesourcery.com>
1498
1499         * cp-tree.h (CLASSTYPE_DESTRUCTORS): Fix typo in comment.
1500         * call.c (build_op_delete_call): Simplify to remove duplicate
1501         code.
1502         * class.c (clone_function_decl): Don't build the deleting variant
1503         of a non-virtual destructor.
1504         * decl.c (finish_destructor_body): Don't call delete if this is a
1505         non-virtual destructor.
1506         * init.c (build_delete): Explicitly call `operator delete' when
1507         deleting an object with a non-virtual destructor.
1508
1509 2001-02-13  Jason Merrill  <jason@redhat.com>
1510
1511         * lang-specs.h: Add more __EXCEPTIONS.
1512
1513 2001-02-12  Nathan Sidwell  <nathan@codesourcery.com>
1514
1515         * typeck2.c (process_init_constructor): Check
1516         TREE_HAS_CONSTRUCTOR before issuing missing init warning.
1517
1518 2001-02-12  Nathan Sidwell  <nathan@codesourcery.com>
1519
1520         * pt.c (maybe_adjust_types_for_deduction, DEDUCE_ORDER case):
1521         Remove spurious information in comment. Allow further
1522         adjustments of REFERENCE_TYPE args.
1523
1524 2001-02-12  Nathan Sidwell  <nathan@codesourcery.com>
1525
1526         * errfn.c (cp_deprecated): Tweak diagnostic text.
1527         * parse.y (new_initializer): Deprecate initializer lists
1528         extension.
1529
1530 2001-02-12  Mark Mitchell  <mark@codesourcery.com>
1531
1532         Remove old ABI support.
1533
1534 2001-02-11  Mark Mitchell  <mark@codesourcery.com>
1535
1536         * decl2.c (flag_vtable_thunks): Always set it to 1.
1537         (flag_new_abi): Likewise.
1538         * lang-specs.h: Remove conditional on ENABLE_NEW_GXX_ABI.
1539
1540         * Makefile.in (g++spec.o): Fix typo.
1541
1542 2001-02-09  Jason Merrill  <jason@redhat.com>
1543
1544         * lang-specs.h: Restore definition of __EXCEPTIONS.
1545
1546 2001-02-08  Jason Merrill  <jason@redhat.com>
1547
1548         * search.c (shared_member_p): New function.
1549         (lookup_field_r): Use it.
1550         * cp-tree.h (SHARED_MEMBER_P): Remove.
1551
1552         * method.c (process_overload_item): Handle template-dependent array
1553         bounds.
1554         * pt.c (type_unification_real): If we end up with undeduced nontype
1555         parms, try again.
1556
1557         * decl.c (lookup_name_real): Tweak warning to refer to decls, not
1558         types.
1559
1560         * typeck2.c (friendly_abort): Don't say anything if we have
1561         earlier errors or sorries.
1562
1563         * decl.c (check_tag_decl): Notice attempts to redefine bool and
1564         wchar_t.  Ignore if in_system_header.
1565
1566         * decl.c (maybe_push_cleanup_level): New fn...
1567         (start_decl_1): ...split out from here.
1568         * cvt.c (build_up_reference): Use it.
1569         * cp-tree.h: Declare it.
1570
1571 2001-02-07  Mark Mitchell  <mark@codesourcery.com>
1572
1573         * lang-specs.h: Use CPLUSPLUS_CPP_SPEC for the preprocessor
1574         spec.
1575
1576 2001-02-06  Nathan Sidwell  <nathan@codesourcery.com>
1577
1578         * pt.c (lookup_template_class): Make sure it's a primary
1579         template or template_template_parm when called from the parser.
1580         (instantiate_template_class): Add assertion.
1581
1582 2001-02-05  Alexandre Oliva  <aoliva@redhat.com>
1583
1584         * method.c (build_mangled_name) [old abi]: Protect flush_repeats()
1585         from error_mark_node.
1586
1587 2001-02-05  Nathan Sidwell  <nathan@codesourcery.com>
1588
1589         Fix specification and implementation bugs in V3 ABI
1590         construction vtables.
1591         * cp-tree.h (flag_dump_class_layout): New flag.
1592         (BINFO_OVERRIDE_ALONG_VIRTUAL_PATH_P): Remove.
1593         (BINFO_LOST_PRIMARY_P): New flag.
1594         (SET_BINFO_NEW_VTABLE_MARKED): Adjust asserts.
1595         (BINFO_PRIMARY_MARKED_P): Rename to ...
1596         (BINFO_PRIMARY_P): ... here.
1597         (binfo_via_virtual): New prototype.
1598         * decl2.c (flag_dump_class_layout): New flag.
1599         (cxx_decode_option): Set it. Adjust -fdump-translation-unit to
1600         use `=' as a file name separator.
1601         * init.c (dfs_initialize_vtbl_ptrs): Walk into virtual primary
1602         bases.
1603         (build_vtbl_address): If this is a virtual primary base, then
1604         get the vtbl of what it is ultimately primary for.
1605         * search.c (dfs_skip_nonprimary_vbases_unmarkedp): Adjust
1606         for BINFO_PRIMARY_P.
1607         (dfs_skip_nonprimary_vbases_markedp): Likewise.
1608         (get_shared_vbase_if_not_primary): Likewise.
1609         (dfs_get_pure_virtuals): Likewise.
1610         (expand_upcast_fixups): Likewise.
1611         (fixup_virtual_upcast_offsets): Likewise.
1612         (dfs_find_vbase_instance): Likewise.
1613         (find_vbase_instance): Likewise.
1614         (binfo_from_vbase): Adjust comment to reflect reality.
1615         (binfo_via_virtual): New function.
1616         * class.c (VTT_TOP_LEVEL_P, VTT_MARKED_BINFO_P): New macros
1617         for binfo walking during VTT construction.
1618         (dfs_mark_primary_bases): Remove.
1619         (force_canonical_binfo_r): New function.
1620         (force_canonical_binfo): New function.
1621         (mark_primary_virtual_base): New function.
1622         (mark_primary_bases): Walk in inheritance graph order, use
1623         mark_primary_virtual_base.
1624         (determine_primary_base): Use some more intermediate variables.
1625         (dfs_find_final_overrider): Don't check for overriding along a
1626         virtual path.
1627         (dfs_modify_vtables): Walk into primary virtual bases too.
1628         (walk_subobject_offsets): Adjust for BINFO_PRIMARY_P.
1629         (build_base_fields): Likewise.
1630         (dfs_set_offset_for_unshared_vbases): Likewise.
1631         (layout_virtual_bases): Likewise.
1632         (end_of_class): Likewise.
1633         (finish_struct_1): Call dump_class_hierarchy, if requested.
1634         (dfs_get_primary_binfo): Use BINFO_TYPE for binfos.
1635         (dump_class_hierarchy_r): Add stream parameter. Emit more information.
1636         (dump_class_hierarchy): Add file parameter. Append to file, if
1637         required.
1638         (finish_vtbls): Adjust accumulate_vtbl_inits call.
1639         Use canonical base for virtual bases.
1640         (build_vtt): Add more comments. Adjust build_vtt_inits call.
1641         (build_vtt_inits): Remove VIRTUAL_VTTS_P parm.
1642         Only set BINFO_VPTR_INDEX on top level. Use VTT_TOP_LEVEL_P,
1643         VTT_MARKED_BINFO_P for binfo walking. Use canonical vbase for
1644         virtual VTTs.
1645         (dfs_build_secondary_vptr_vtt_inits): Extract VTT_TOP_LEVEL_P
1646         from DATA.  We want virtual primary bases and all bases via virtual.
1647         Only set BINFO_VPTR_INDEX for top level. Look up from a primary
1648         virtual base when not a construction vtable.
1649         (dfs_ctor_vtable_bases_queue_p): New DFS predicate.
1650         (build_ctor_vtbl_group): Adjust accumulate_vtbl_inits call.
1651         Use canonical bases when processing virtual bases.
1652         (accumulate_vtbl_inits): We're interested in any base via a
1653         virtual path.
1654         (dfs_accumulate_vtbl_inits): If this is a primary virtual base
1655         within a construction vtable, determine what is being overridden.
1656         (build_vtbl_initializer): Add more comments
1657         (add_vcall_offset_vtbl_entries_1): Adjust comment.
1658         (build_rtti_vtbl_entries): Check if the base has lost its
1659         primary.
1660
1661 2001-02-05  Mark Mitchell  <mark@codesourcery.com>
1662
1663         * Makefile.in (g++spec.o): Adjust use of DRIVER_DEFINES.
1664
1665 Sun Feb  4 15:52:44 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1666
1667         * decl.c (pushdecl): Call abort instead of fatal.
1668         * except.c (decl_is_java_type): Call fatal_error instead of fatal.
1669         * init.c (build_new_1): Likewise.
1670         (build_java_class_ref): Call internal_error and fatal_error, not fatal.
1671         * decl.c (build_typename_type): hash_table_init now returns void.
1672         decl.c (init_decl_processing): Make an error non-fatal.
1673
1674 2001-02-04  Mark Mitchell  <mark@codesourcery.com>
1675
1676         * cp-tree.h (CLASSTYPE_INTERFACE_UNKNOWN): Fix formatting.
1677         Document.
1678         (CLASSTYPE_INTERFACE_KNOWN): Likewise.
1679         (SET_CLASSTYPE_INTERFACE_UNKNOWN_X): Likewise.
1680         (SET_CLASSTYPE_INTERFACE_UNKNOWN): Likewise.
1681         (SET_CLASSTYPE_INTERFACE_KNOWN): Likewise.
1682         * decl.c (maybe_commonize_var): Use the new name-mangling where
1683         appropriate.
1684         * decl2.c (comdat_linkage): Enhance comments.  Make all
1685         compiler-generated things static, if COMDAT is not available.
1686         (get_tinfo_decl): Do not make typeinfo objects that belong in the
1687         library COMDAT.
1688         (tinfo_base_init): Use the correct mangled name for typeinfo
1689         strings, and push them into the global scope.
1690         (typeinfo_in_lib_p): New function.
1691         (synthesize_tinfo_var): Use it.
1692         (create_real_tinfo_var): Likewise.
1693
1694 2001-02-03  Jakub Jelinek  <jakub@redhat.com>
1695
1696         * decl.c (push_class_binding): Use context_for_name_lookup instead
1697         of CP_DECL_CONTEXT.
1698         * search.c (context_for_name_lookup): Remove static.  Check for NULL
1699         context in the loop.
1700         * cp-tree.h (context_for_name_lookup): Add prototype.
1701
1702 2001-02-02  Jakub Jelinek  <jakub@redhat.com>
1703
1704         * cp-tree.h (build_expr_ptr_wrapper, can_free): Remove.
1705         * tree.c (build_expr_ptr_wrapper, can_free, permanent_obstack):
1706         Remove.
1707         * call.c (convert_class_to_reference, build_user_type_conversion_1,
1708         add_warning): Change build_expr_ptr_wrapper to build_ptr_wrapper.
1709
1710 2001-02-02  Mark Mitchell  <mark@codesourcery.com>
1711
1712         * Make-lang.in (g++spec.o): Add DRIVER_DEFINES to the list
1713         of macros used when compiling g++spec.c.
1714         * g++spec.c (lang_specific_driver): Link with the shared
1715         libgcc by default.
1716
1717 2001-01-29  Joseph S. Myers  <jsm28@cam.ac.uk>
1718
1719         * decl2.c (build_expr_from_tree), lex.c (make_pointer_declarator,
1720         make_reference_declarator, make_call_declarator), method.c
1721         (implicitly_declare_fn), parse.y (namespace_using_decl,
1722         notype_unqualified_id, expr_or_declarator, new_type_id,
1723         after_type_declarator, direct_after_type_declarator,
1724         notype_declarator, complex_notype_declarator,
1725         complex_direct_notype_declarator, qualified_id,
1726         notype_qualified_id, overqualified_id, direct_new_declarator,
1727         absdcl, direct_abstract_declarator, conversion_declarator), pt.c
1728         (tsubst), semantics.c (begin_constructor_declarator): Use build_nt
1729         instead of build_parse_node.
1730
1731 2001-01-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1732
1733         * cp-tree.h (cp_tree_index): Delete CPTI_MINUS_ONE.
1734         (minus_one_node): Moved to top level gcc directory.  Renamed
1735         to integer_minus_one_node.
1736
1737         * init.c (init_init_processing): Don't set minus_one_node.
1738         (build_vec_init): Use integer_minus_one_node.
1739
1740         * rtti.c (get_tinfo_decl_dynamic): Likewise.
1741
1742 2001-01-28  Jakub Jelinek  <jakub@redhat.com>
1743
1744         * optimize.c (copy_body_r): If MODIFY_EXPR has both arguments
1745         identical and they would be replaced with constant, remove
1746         MODIFY_EXPR from the tree.
1747
1748 2001-01-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1749
1750         * Make-lang.in: Remove all dependencies on defaults.h.
1751         * call.c: Don't include defaults.h.
1752         * decl.c: Likewise.
1753         * decl2.c: Likewise.
1754         * except.c: Likewise.
1755         * pt.c: Likewise.
1756         * rtti.c: Likewise.
1757         * tree.c: Likewise.
1758         * typeck.c: Likewise.
1759
1760 2001-01-25  Jakub Jelinek  <jakub@redhat.com>
1761
1762         * mangle.c (write_mangled_name, write_encoding): Mangle overloaded
1763         operators even in "C" linkage.
1764         * method.c (set_mangled_name_for_decl): Likewise.
1765         * decl.c (grokfndecl): Call set_mangled_name_for_decl even for
1766         overloaded operators in "C" linkage.
1767
1768 2001-01-24  Nathan Sidwell  <nathan@codesourcery.com>
1769
1770         * pt.c (tsubst_decl): Remove IN_DECL parameter.
1771         (tsubst_arg_types): Check parameter is not void.
1772         (tsubst): Adjust tsubst_decl call.
1773
1774 2001-01-24  Nathan Sidwell  <nathan@codesourcery.com>
1775
1776         * call.c (add_builtin_candidate): Quote std properly, from
1777         previous change.
1778
1779 2001-01-23  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1780
1781         * pt.c (check_explicit_specialization): Clone constructors and
1782         destructors.
1783
1784 2001-01-23  Nathan Sidwell  <nathan@codesourcery.com>
1785
1786         * decl.c (grokdeclarator): Don't presume DECL_LANG_SPECIFIC
1787         indicates anything special about template depth. Make sure we
1788         only count the user visible template classes.
1789
1790 2001-01-23  Nathan Sidwell  <nathan@codesourcery.com>
1791
1792         * call.c (build_conv): Typo in comment.
1793         (add_builtin_candidate): Add more explanation.
1794         Remove extra test for ENUMERAL_TYPE in {PRE,POST}INCREMENT_EXPR.
1795         Allow ENUMERAL_TYPEs for relops and eqops. Add both candidates
1796         when we have enumeral types.
1797         (add_builtin_candidates): Add more explanation. Add ENUMERAL_TYPE
1798         candidates for relops and eqops.
1799         (joust): Simplify control flow. Allow a non-template user
1800         function to hide a builtin.
1801
1802 2001-01-22  Nathan Sidwell  <nathan@codesourcery.com>
1803
1804         * cp-tree.h (unification_kind_t): Add DEDUCE_ORDER.
1805         (more_specialized): Add deduction parameter.
1806         * call.c (joust): Adjust more_specialized call.
1807         * pt.c (UNIFY_ALLOW_OUTER_MORE_CV_QUAL,
1808         UNIFY_ALLOW_OUTER_LESS_CV_QUAL): New unify flags.
1809         (get_bindings_order): Remove.
1810         (get_bindings_real): Add DEDUCE parameter.
1811         (maybe_adjust_types_for_deduction): Return extra unify flags. Do
1812         REFERENCE_TYPE jig for DEDUCE_ORDER.
1813         (type_unification_real): Deal with DEDUCE_ORDER. Use result of
1814         maybe_adjust_types_for_deduction.
1815         (more_specialized): Add DEDUCE parameter. Call get_bindings_real
1816         directly.
1817         (try_one_overload): Use result of maybe_adjust_types_for_deduction.
1818         (check_cv_quals_for_unify): Use new unify qualifier flags.
1819         (unify): Clear new unify qualifier flags.
1820         (get_bindings_real): Add DEDUCE parameter.
1821         (get_bindings): Adjust call to get_bindings_real.
1822         (get_bindings_overload): Likewise.
1823         (most_specialized_instantiation): Adjust call to
1824         more_specialized.
1825
1826 2001-01-19  Jason Merrill  <jason@redhat.com>
1827
1828         * decl2.c (flag_vtable_thunks): Also depend on ENABLE_NEW_GXX_ABI.
1829
1830         * decl.c (init_decl_processing): Just force -fvtable-thunks on if
1831         -fnew-abi.
1832
1833 2001-01-19  Ute Pelkmann  <scope.muc@t-online.de>
1834
1835         * decl2.c (arg_assoc_class): Fix double iteration logic.
1836
1837 2001-01-19  Jason Merrill  <jason@redhat.com>
1838
1839         * init.c (build_delete): Always call convert_force to strip cv-quals.
1840
1841         * decl2.c (flag_new_abi): Depend on ENABLE_NEW_GXX_ABI.
1842         * lang-specs.h: Default ABI depends on ENABLE_NEW_GXX_ABI.
1843         * g++spec.c: Don't look at ENABLE_NEW_GXX_ABI.
1844
1845 2001-01-19  Nathan Sidwell  <nathan@codesourcery.com>
1846
1847         * search.c (get_vbase_1): Count only virtual bases.
1848
1849 2001-01-19  Nathan Sidwell  <nathan@codesourcery.com>
1850
1851         * class.c (duplicate_tag_error): Robustify flag clearing.
1852
1853 2001-01-19  Nathan Sidwell  <nathan@codesourcery.com>
1854
1855         * cp-tree.h (lookup_template_class): Add complain parm.
1856         * decl.c (lookup_namespace_name): Adjust call to
1857         lookup_template_class.
1858         (make_typename_type): Likewise.
1859         * semantics.c (finish_template_type): Likewise.
1860         * pt.c (lookup_template_class): Add complain parm. Adjust.
1861         (tsubst_aggr_type): Pass COMPLAIN down to lookup_template_class.
1862         (tsubst): Likewise.
1863
1864 2001-01-19  Nathan Sidwell  <nathan@codesourcery.com>
1865
1866         * pt.c (copy_default_args_to_explicit_spec): Preserve
1867         object's CV quals. Reorganize.
1868
1869 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
1870
1871         * typeck.c (build_modify_expr): Say `initialization' for
1872         INIT_EXPRs.
1873         * init.c (build_default_init): Convert to enumeral type, if
1874         needed.
1875
1876 2001-01-18  Jakub Jelinek  <jakub@redhat.com>
1877
1878         * parse.y (nomods_initdcl0): Properly set things up for
1879         initdcl0_innards.
1880
1881 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
1882
1883         * pt.c (UNIFY_ALLOW_OUTER_LEVEL): New unify flag.
1884         (type_unification_real): Set it.
1885         (unify): Use it.
1886
1887 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
1888
1889         * decl.c (finish_destructor_body): Convert to vbase pointer here.
1890
1891 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
1892
1893         * semantics.c (begin_class_definition): Check we're not inside a
1894         template parm list.
1895
1896 2001-01-18  Nathan Sidwell  <nathan@codesourcery.com>
1897
1898         * tree.c (walk_tree, TREE_LIST): Don't walk the TREE_PURPOSE of
1899         BASELINK_P.
1900
1901 2001-01-16  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
1902
1903         * typeck.c (build_function_call_real): Call fold on the CALL_EXPR.
1904         * call.c (build_over_call): Add comment.
1905
1906 2001-01-16 Daniel Berlin <dberlin@redhat.com>
1907
1908         * cvt.c (ocp_convert): Handle vector type conversion
1909         * typeck2.c (digest_init): Handle vector type initializations
1910
1911 2001-01-16  Phil Edwards  <pme@sources.redhat.com>
1912
1913         * g++spec.c:  Don't add libraries needlessly if -fsyntax-only
1914           was given.
1915
1916 2001-01-15  Nathan Sidwell  <nathan@codesourcery.com>
1917
1918         * pt.c (check_nontype_parm): Rename to ...
1919         (invalid_nontype_parm_type_p): ... here.
1920         (process_template_parm): Adjust.
1921         (convert_template_argument): Adjust.
1922
1923 2001-01-15  Nathan Sidwell  <nathan@codesourcery.com>
1924
1925         * pt.c (check_nontype_parm): New function.
1926         (process_template_parm): Use it.
1927         (convert_template_argument): Use it.
1928         (convert_nontype_argument, RECORD_TYPE): Assert it's a ptr to
1929         member.
1930
1931 2001-01-14  Jeffrey Oldham  <oldham@codesourcery.com>
1932
1933         * tree.c: Add defaults.h
1934         (cp_valid_lang_attribute): Incorporate SUPPORTS_INIT_PRIORITY.
1935         * Make-lang.in (cp/tree.o): Add defaults.h.
1936
1937 2001-01-13  Joseph S. Myers  <jsm28@cam.ac.uk>
1938
1939         * Make-lang.in (CXX_C_OBJS): Add c-format.o.
1940
1941 2001-01-13  Joseph S. Myers  <jsm28@cam.ac.uk>
1942
1943         * g++.1: Change to be ".so man1/gcc.1".
1944
1945 2001-01-13  Joseph S. Myers  <jsm28@cam.ac.uk>
1946
1947         * Make-lang.in (c++.info, c++.install-info): Build and install g++
1948         internals info.
1949         (c++.uninstall, c++.maintainer-clean): Remove g++ internals info.
1950         ($(srcdir)/cp/g++int.info): New target.
1951         * gxxint.texi: Add info directory entry.  Use @@ in email address.
1952         * .cvsignore: Update.
1953
1954 2001-01-12  Nathan Sidwell  <nathan@codesourcery.com>
1955
1956         * typeck.c (build_c_cast): Do template processing earlier.
1957         Always pedwarn on array casts.
1958
1959 2001-01-12  Nathan Sidwell  <nathan@codesourcery.com>
1960
1961         * friend.c (make_friend_class): Make sure a templated class is
1962         actually a template.
1963
1964 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
1965
1966         * decl2.c (get_guard): Set linkage from guarded decl.
1967
1968 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
1969
1970         * call.c (convert_default_arg): Check for unprocessed
1971         DEFAULT_ARG.
1972         * cp-tree.h (replace_defarg): Move to spew.c.
1973         (maybe_snarf_defarg, add_defarg_fn, do_pending_defargs): Move to
1974         spew.c, which is where they really are.
1975         (done_pending_defargs): Declare.
1976         (unprocessed_defarg_fn): Declare.
1977         * decl.c (replace_defarg): Move to spew.c
1978         * parse.y (structsp): Call done_pending_defargs.
1979         * spew.c (defarg_fns): Rearrange list structure.
1980         (defarg_fnsdone): New static variable.
1981         (defarg_depfns): New static variable.
1982         (init_spew): Adjust.
1983         (add_defarg_fn): Store the type in TREE_TYPE.
1984         (do_pending_defargs): Detect and deal with ordering constraints
1985         and circularity.
1986         (done_pending_defargs): New function.
1987         (unprocessed_defarg_fn): New function.
1988         (replace_defarg): Moved from decl.c. Robustify. Don't save
1989         if circularity detected.
1990
1991 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
1992
1993         * pt.c (unify): Check array has a domain, before checking
1994         whether it is variable sized.
1995
1996 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
1997
1998         * decl.c (grokparms): Unobfuscate and get correct diagnostic for
1999         parameters with pointers to arrays of unknown bound.
2000
2001 2001-01-11  Nathan Sidwell  <nathan@codesourcery.com>
2002
2003         * parse.y (template_parm_header, template_spec_header): New
2004         reductions. Split out from ...
2005         (template_header): ... here. Use them.
2006         (template_template_parm): Use template_parm_header.
2007         * semantics.c (finish_template_template_parm): Add assert.
2008
2009 2001-01-10  Mark Mitchell  <mark@codesourcery.com>
2010
2011         * mangle.c (write_builtin_type): Fix thinko.
2012
2013         * pt.c (copy_default_args_to_explicit_spec_1): New function.
2014         (copy_default_args_to_explicit_spec): Likewise.
2015         (check_explicit_specialization): Use it.
2016
2017         * class.c (finish_struct_1):  Remove last argument in call to
2018         make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
2019         * decl.c (builtin_function): Likewise.
2020         (build_cp_library_fn): Likewise.
2021         (check_initializer): Likewise.
2022         (make_rtl_for_nonlocal_decl): Likewise.
2023         (cp_finish_decl): Likewise.
2024         (start_function): Likewise.
2025         * decl2.c (finish_anon_union): Likewise.
2026         * friend.c (do_friend): Likewise.
2027         * init.c (build_java_class_ref): Likewise.
2028         * method.c (make_thunk): Likewise.
2029         * pt.c (tsubst_friend_function): Likewise.
2030         * semantics.c (expand_body): Likewise.
2031
2032 2001-01-10  Mark Mitchell  <mark@codesourcery.com>
2033
2034         * cp-tree.h (DECL_CLONED_FUNCTION_P): Avoid wild reads by not
2035         looking at DECL_CLONED_FUNCTION for non-functions.
2036
2037 2001-01-10  Nathan Sidwell  <nathan@codesourcery.com>
2038
2039         * error.c (dump_template_parameter): Use parm to determine how
2040         to print default value.
2041
2042 2001-01-10  Nathan Sidwell  <nathan@codesourcery.com>
2043
2044         * class.c (duplicate_tag_error): Clear more flags.
2045
2046 2001-01-10  Nathan Sidwell  <nathan@codesourcery.com>
2047
2048         * call.c (build_new_method_call): Use binfo_for_vbase.
2049
2050 2001-01-10  Joseph S. Myers  <jsm28@cam.ac.uk>
2051
2052         * cp-tree.h (flag_cond_mismatch): Don't declare.
2053         * decl2.c (flag_cond_mismatch): Don't define.
2054         (lang_f_options): Remove cond-mismatch.
2055         (unsupported_options): Add cond-mismatch.
2056
2057 2001-01-09  Nathan Sidwell  <nathan@codesourcery.com>
2058
2059         * class.c (handle_using_decl): Reject using of constructor name
2060         of sourcing class. Allow injecting of a method with same name as
2061         nested class. Fixup error messages.
2062
2063 2001-01-09  Joseph S. Myers  <jsm28@cam.ac.uk>
2064
2065         * decl2.c (lang_decode_option): Handle -Wformat=2.
2066
2067 2001-01-08  Nathan Sidwell  <nathan@codesourcery.com>
2068
2069         * cp-tree.h (lang_decl_flags): Rename defined_in_class to
2070         initialized_in_class.
2071         (DECL_DEFINED_IN_CLASS_P): Rename to ...
2072         (DECL_INITIALIZED_IN_CLASS_P): ... here, to reflect true meaning.
2073         * decl.c (duplicate_decls): Preseve DECL_INITIALIZED_IN_CLASS_P.
2074         (cp_finish_decl): Adjust for DECL_INITIALIZED_IN_CLASS_P.
2075         * pt.c (check_default_tmpl_args): Adjust for
2076         DECL_INITIALIZED_IN_CLASS_P.
2077         (instantiate_class_template): Likewise.
2078         (instantiate_decl): Check DECL_INITIALIZED_IN_CLASS_P.
2079
2080         * class.c (finish_struct): Constify saved_filename.
2081
2082 2001-01-08  Nathan Sidwell  <nathan@codesourcery.com>
2083
2084         * class.c (duplicate_tag_error): Adjust diagnostic.
2085         (finish_struct): Locally set location to start of struct.
2086         * decl.c (fixup_anonymous_aggr): Use cp_error_at.
2087
2088 2001-01-08  Nathan Sidwell  <nathan@codesourcery.com>
2089
2090         * decl.c (struct binding_level): Adjust class_shadowed comments
2091         to reflect reality.
2092         (push_class_level_binding): Ajust comments to reflect reality.
2093         Set IDENTIFIER_CLASS_VALUE when replacing an existing binding.
2094         Don't set TREE_VALUE on the class_shadowed list.
2095
2096 2001-01-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2097
2098         * decl2.c (acceptable_java_type): Allow references too.
2099         * init.c (build_java_class_ref): When using the new ABI, search
2100         `class$' and have it mangled with `mangle_decl.'
2101         * mangle.c (write_java_integer_type_codes): New function.
2102         (write_builtin_type): Detect and mangle Java integer and real
2103         types.
2104
2105 2001-01-07  Mark Mitchell  <mark@codesourcery.com>
2106
2107         * decl2.c (grokfield): Don't accept `asm' specifiers for
2108         non-static data members.
2109
2110 2001-01-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2111
2112         * expr.c (cplus_expand_expr): Don't reset `target'.
2113
2114 2001-01-07  Neil Booth  <neil@daikokuya.demon.co.uk>
2115
2116         * cp/decl2.c (cxx_post_options): Call cpp_post_options.
2117
2118 2001-01-05  Nathan Sidwell  <nathan@codesourcery.com>
2119
2120         * parse.y (template_datadef): Check for error_mark_node.
2121
2122 2001-01-05  Nathan Sidwell  <nathan@codesourcery.com>
2123
2124         * cp-tree.def (DEFAULT_ARG): Make `x' class.
2125
2126 2001-01-04  Joseph S. Myers  <jsm28@cam.ac.uk>
2127
2128         * decl.c (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE): Don't define.
2129         (record_builtin_type): Make non-static.
2130         (flag_short_double): Don't declare.
2131         (init_decl_processing): Remove the creation of many tree nodes now
2132         in c_common_nodes_and_builtins.
2133         (build_void_list_node): New function.
2134         * decl2.c (flag_short_double, flag_short_wchar): Don't define.
2135         * cp-tree.h (flag_short_wchar): Don't declare.
2136
2137 2001-01-04  Mark Mitchell  <mark@codesourcery.com>
2138
2139         * call.c (build_conv): Don't use build1 for USER_CONV.
2140         * pt.c (tsubst_copy): Or for PREINCREMENT_EXPR and similar nodes.
2141
2142 2001-01-03  Joseph S. Myers  <jsm28@cam.ac.uk>
2143
2144         * lex.c (lang_init): Call c_common_lang_init.
2145
2146 2001-01-03  Nathan Sidwell  <nathan@codesourcery.com>
2147
2148         * search.c (lookup_fnfields_here): Remove.
2149         (look_for_overrides_r): Use lookup_fnfields_1.
2150         Ignore functions from using declarations.
2151
2152 2001-01-03  Nathan Sidwell  <nathan@codesourcery.com>
2153
2154         Implement exceptions specifiers for implicit member functions.
2155         * cp-tree.h (merge_exceptions_specifiers): Declare new function.
2156         * method.c (synthesize_exception_spec): New function.
2157         (locate_dtor, locate_ctor, locate_copy): New functions.
2158         (implicitly_declare_fn): Generate the exception spec too.
2159         * search.c (check_final_overrider): Check artificial functions
2160         too.
2161         * typeck2.c (merge_exception_specifiers): New function.
2162
2163 2001-01-03  Jason Merrill  <jason@redhat.com>
2164
2165         * init.c (build_default_init): New fn.
2166         (perform_member_init): Split out from here.
2167         (build_new_1): Use it.  Simplify initialization logic.
2168         (build_vec_init): Take an array, rather than a pointer and maxindex.
2169         Speed up simple initializations.  Don't clean up if we're assigning.
2170         * cp-tree.h: Adjust.
2171         * decl2.c (do_static_initialization): Remove TREE_VEC case.
2172         * parse.y (new_initializer): Return void_zero_node for ().
2173         * typeck.c (build_modify_expr): Handle getting a CONSTRUCTOR.
2174         * typeck2.c (digest_init): Only complain about user-written
2175         CONSTRUCTORs.
2176
2177 2000-12-22  Mike Stump  <mrs@wrs.com>
2178
2179         * decl2.c: (max_tinst_depth): Increase to 50.
2180
2181 2001-01-02  Mark Mitchell  <mark@codesourcery.com>
2182
2183         * class.c (invalidate_class_lookup_cache): Zero the
2184         previous_class_values.
2185         * cp-tree.h (TMPL_PARMS_DEPTH): Use TREE_INT_CST_LOW, not
2186         TREE_INT_CST_HIGH.
2187         (CLASSTYPE_TEMPLATE_LEVEL): Likewise.
2188         * decl.c (free_bindings): New variable.
2189         (push_binding): Don't create a new binding if we have one on the
2190         free list.
2191         (pop_binding): Put old bindings on the free list.
2192         (init_decl_processing): Use size_int, not build_int_2.
2193         Register free_bindings as a GC root.
2194         (cp_make_fname_decl): Use size_int, not build_int_2.
2195         (push_inline_template_parms_recursive): Likewise.
2196         (end_template_parm_list): Likewise.
2197         (for_each_tempalte_parm): Do not use walk_tree_without_duplicates.
2198         (tsubst_template_parms): Use size_int, not build_int_2.
2199         (tsubst): Likewise.
2200         * rtti.c (get_vmi_pseudo_type_info): Likewise.
2201
2202 2001-01-02  Richard Henderson  <rth@redhat.com>
2203
2204         * parse.y (asm): Set ASM_INPUT_P.
2205
2206 2001-01-02  Jason Merrill  <jason@redhat.com>
2207
2208         * tree.c (cp_valid_lang_attribute): Don't set CLASSTYPE_COM_INTERFACE
2209         for v3 ABI.
2210
2211         * typeck.c (cp_truthvalue_conversion): New fn.
2212         * cvt.c (ocp_convert): Use it.
2213
2214         * cp-tree.h: Lose c-common.c decls.
2215
2216         * typeck.c (build_unary_op): Restore old &a.f diagnostic code.
2217         * cvt.c (convert_to_void): Use type_unknown_p.
2218
2219         * typeck.c (strip_all_pointer_quals): Also strip quals from
2220         pointer-to-member types.
2221
2222         * Make-lang.in (cp/TAGS): Use --no-globals.  Ignore parse.c, and treat
2223         parse.y as C.
2224
2225         * call.c (build_new_method_call): Do evaluate the object parameter
2226         when accessing a static member.
2227         * typeck.c (build_component_ref): Likewise.
2228
2229 2001-01-02  Andreas Jaeger  <aj@suse.de>
2230
2231         * decl.c (cp_missing_noreturn_ok_p): New.
2232         (init_decl_processing): Set lang_missing_noreturn_ok_p.
2233
2234 2000-12-29  Jakub Jelinek  <jakub@redhat.com>
2235
2236         * decl.c (init_decl_processing): Fix sign of wchar_type_node.
2237
2238 2000-12-29  Mark Mitchell  <mark@codesourcery.com>
2239
2240         * class.c (pushclass): Remove #if 0'd code.
2241         * cp-tree.h (overload_template_name): Remove.
2242         * decl.c (store_bindings): Simplify.
2243         (pop_from_top_level): Likewise.
2244         * pt.c (overload_template_name): Remove.
2245         (instantiate_decl): Don't call push_to_top_level if it's not
2246         needed.
2247
2248 2000-12-28  Mark Mitchell  <mark@codesourcery.com>
2249
2250         * pt.c (register_local_specialization): Don't return a value.
2251         (lookup_template_class): Use move-to-front heuristic when looking
2252         up template instantiations.
2253         (instantiate_decl): Only push_to_top_level when we're actually
2254         going to instantiate the template.
2255
2256 2000-12-29  Hans-Peter Nilsson  <hp@bitrange.com>
2257
2258         * search.c (binfo_for_vtable): Return least derived class, not
2259         most.  Handle secondary vtables.
2260
2261 2000-12-22  Jason Merrill  <jason@redhat.com>
2262
2263         * pt.c (more_specialized): Don't optimize len==0.
2264         (fn_type_unification): If we're adding the return type, increase len.
2265
2266         * typeck.c (build_binary_op): Fix pmf comparison logic.
2267
2268         * call.c (joust): Use DECL_NONSTATIC_MEMBER_FUNCTION_P, not
2269         DECL_STATIC_FUNCTION_P.
2270
2271         * semantics.c (genrtl_finish_function): Don't try to jump to
2272         return_label unless it exists.
2273
2274         In partial ordering for a call, ignore parms for which we don't have
2275         a real argument.
2276         * call.c (joust): Pass len to more_specialized.
2277         (add_template_candidate_real): Strip 'this', pass len.
2278         * pt.c (more_specialized): Pass len down.  Lose explicit_args parm.
2279         (get_bindings_order): New fn.  Pass len down.
2280         (get_bindings_real): Strip 'this', pass len.
2281         (fn_type_unification): Likewise.
2282         (type_unification_real): Succeed after checking 'len' args.
2283         (most_specialized_instantiation): Lose explicit_args parm.
2284         * class.c (resolve_address_of_overloaded_function): Strip 'this',
2285         pass len.
2286
2287 2000-12-21  Jason Merrill  <jason@redhat.com>
2288
2289         * pt.c (tsubst_decl): A FUNCTION_DECL has DECL_RESULT, not
2290         DECL_TEMPLATE_RESULT.
2291
2292         * search.c (lookup_field_r): Call lookup_fnfields_1, not
2293         lookup_fnfields_here.
2294
2295         * parse.y (typename_sub2): Return the TYPE_DECL, not the type.
2296
2297         * call.c (build_object_call): Also allow conversions that return
2298         reference to pointer to function.
2299         (add_conv_candidate): Handle totype being ref to ptr to fn.
2300         (build_field_call): Also allow members of type reference to function.
2301         Lose support for calling pointer to METHOD_TYPE fields.
2302
2303         * error.c (dump_expr): Handle *_CAST_EXPR.
2304
2305         * typeck2.c (build_scoped_ref): Always convert to the naming class.
2306
2307         * tree.c (break_out_cleanups): Lose.
2308         * cp-tree.h: Remove prototype.
2309         * typeck.c (build_component_ref): Don't break_out_cleanups.
2310         (build_compound_expr): Likewise.
2311         * semantics.c (finish_expr_stmt): Likewise.
2312
2313 2000-12-20  Richard Henderson  <rth@redhat.com>
2314
2315         * cp-tree.h: Update declarations.
2316         * decl.c (finish_case_label): Return the new stmt node.
2317         * semantics.c (finish_goto_stmt): Likewise.
2318         (finish_expr_stmt, finish_return_stmt): Likewise.
2319         (finish_break_stmt, finish_continue_stmt): Likewise.
2320         (finish_asm_stmt): Likewise.
2321         * parse.y (already_scoped_stmt): Set STMT_LINENO.
2322         (compstmt, implicitly_scoped_stmt, stmt): Likewise.
2323         (simple_if, simple_stmt): Return the new stmt node.
2324         (save_lineno): New.
2325
2326 2000-12-18  Joseph S. Myers  <jsm28@cam.ac.uk>
2327
2328         * cp-tree.h: Don't declare warn_long_long.
2329
2330 2000-12-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2331
2332         * tree.c (no_linkage_helper): Use CLASS_TYPE_P instead of
2333         IS_AGGR_TYPE.
2334
2335 2000-12-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2336
2337         * pt.c (unify): Handle when both ARG and PARM are
2338         BOUND_TEMPLATE_TEMPLATE_PARM.
2339
2340 2000-12-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2341
2342         * pt.c (reduce_template_parm_level): Set DECL_ARTIFICIAL and
2343         DECL_TEMPLATE_PARM_P.
2344
2345 2000-12-15  Jason Merrill  <jason@redhat.com>
2346
2347         * init.c (build_new_1): Reorganize.  Now with 100% fewer SAVE_EXPRs!
2348
2349         * init.c (build_new_1): Don't strip quals from type.
2350
2351         * decl.c (pushdecl): Don't check for linkage on a non-decl.
2352
2353         * call.c (build_op_delete_call): See through ARRAY_TYPEs.
2354
2355         * call.c (build_new_function_call): Lose space before paren in
2356         error message.
2357         (build_new_method_call): Likewise.
2358
2359         * typeck2.c (build_m_component_ref): Propagate quals from datum.
2360
2361 2000-12-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2362
2363         * pt.c (check_explicit_specialization): Propagate default
2364         function arguments to explicit specializations.
2365
2366 2000-12-13  DJ Delorie  <dj@redhat.com>
2367
2368         * typeck.c (build_binary_op): Do signed/unsigned warnings for >?
2369         and <? operators.
2370
2371 2000-12-08  Jason Merrill  <jason@redhat.com>
2372
2373         * error.c (dump_function_name): Don't let the user see __comp_ctor.
2374
2375         Clean up copy-initialization in overloading code.
2376         * call.c (build_user_type_conversion_1): Die if we are asked to
2377         convert to the same or a base type.
2378         (implicit_conversion): Avoid doing so.  Lose reference binding code.
2379         (convert_like_real): Treat BASE_CONV and RVALUE_CONV as implicit
2380         direct-initialization.  Also do direct-init part of copy-init.
2381         (build_user_type_conversion): Don't provide context to convert_like.
2382         * cvt.c (ocp_convert): build_user_type_conversion will now provide
2383         the constructor call for copy-init.
2384
2385         * pt.c (tsubst_decl): Call clone_function_decl here if this is an
2386         instantiation of a member template.
2387         (do_decl_instantiation): Not here.
2388
2389 2000-12-07  Nathan Sidwell  <nathan@codesourcery.com>
2390
2391         * class.c (check_field_decls): Don't special case anonymous
2392         fields in error messages.
2393         (note_name_declared_in_class): Use %D on diagnostic.
2394
2395         * tree.c (pod_type_p): Use strip_array_types.
2396         (cp_valid_lang_attribute): Likewise.
2397         * typeck.c (cp_type_quals): Strip arrays separately, to avoid
2398         multiple evaluations.
2399         (cp_has_mutable_p): Use strip_array_types.
2400
2401 2000-12-07  Nathan Sidwell  <nathan@codesourcery.com>
2402
2403         * cp-tree.h (sufficient_parms_p): Declare new function.
2404         * call.c (sufficient_parms_p): New function, broken out of ...
2405         (add_function_candidate): ... here. Use it.
2406         (add_conv_candidate): Use it.
2407         * decl.c (grok_ctor_properties): Use it.
2408
2409 2000-12-07  Jakub Jelinek  <jakub@redhat.com>
2410
2411         * optimize.c (copy_body_r): Set STMT_IS_FULL_EXPR_P on EXPR_STMT.
2412
2413 2000-12-07  Joseph S. Myers  <jsm28@cam.ac.uk>
2414
2415         * decl2.c (lang_decode_option): Handle -Wformat-security.
2416
2417 2000-12-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2418
2419         * pt.c (verify_class_unification): New function.
2420         (get_class_bindings): Use it.
2421         (try_class_unification): Tidy.
2422         (unify): Handle when argument of a template-id is not
2423         template parameter dependent.
2424         (template_args_equal): Handle when TREE_CODE's do not match.
2425
2426 2000-12-06  Alexandre Oliva  <aoliva@redhat.com>
2427
2428         * lang-specs.h (c++): When invoking the stand-alone preprocessor
2429         for -save-temps, pass all relevant -Defines to it, and then don't
2430         pass them to cc1plus.
2431
2432 2000-12-05  Will Cohen  <wcohen@redhat.com>
2433
2434         * decl.c (finish_case_label): Cleared
2435         more_cleanups_ok in surrounding function scopes.
2436         (define_label): Likewise.
2437
2438 2000-12-05  Nathan Sidwell  <nathan@codesourcery.com>
2439
2440         * cp-tree.h (IDENTIFIER_VIRTUAL_P): Document.
2441         (get_matching_virtual): Remove.
2442         (look_for_overrides): Declare new function.
2443         * decl.c (grokfndecl): Don't set IDENTIFIER_VIRTUAL_P or
2444         DECL_VINDEX here.
2445         * class.c (check_for_override): Move base class iteration code
2446         to look_for_overrides.
2447         * search.c (next_baselink): Remove.
2448         (get_virtuals_named_this): Remove.
2449         (get_virtual_destructor): Remove.
2450         (tree_has_any_destructors_p): Remove.
2451         (struct gvnt_info): Remove.
2452         (check_final_overrider): Remove `virtual' from error messages.
2453         (get_matching_virtuals): Remove. Move functionality to ...
2454         (look_for_overrides): ... here, and ...
2455         (look_for_overrides_r): ... here. Set DECL_VIRTUAL_P, if found
2456         to be overriding.
2457
2458 2000-12-05  Nathan Sidwell  <nathan@codesourcery.com>
2459
2460         * typeck.c (get_delta_difference): If via a virtual base,
2461         return zero.
2462         * cvt.c (cp_convert_to_pointer): If via a virtual base, do no
2463         adjustment.
2464
2465 2000-12-04  Richard Henderson  <rth@redhat.com>
2466
2467         * error.c (dump_tree): Use output_add_string not OB_PUTS.
2468
2469 2000-12-04  Jason Merrill  <jason@redhat.com>
2470
2471         * mangle.c (write_type): Mangle VECTOR_TYPE with "U8__vector".
2472         (write_builtin_type): Pass intSI_type_node and the like through
2473         type_for_mode.
2474         * method.c (process_overload_item): Mangle VECTOR_TYPEs with 'o'.
2475         Pass intSI_type_node and the like through type_for_mode.
2476         * decl2.c (arg_assoc_type): Handle VECTOR_TYPE like COMPLEX_TYPE.
2477         * pt.c (tsubst, unify): Likewise.
2478         * tree.c (walk_tree): Likewise.
2479         * error.c (dump_type): Likewise.
2480         (dump_type_prefix, dump_type_suffix): Don't bother with VECTOR_TYPE.
2481
2482         * Make-lang.in: Tweak top comment for emacs.
2483         (cp/TAGS): Restore.
2484
2485         * except.c (expand_throw): Use push_throw_library_fn for _Jv_Throw.
2486
2487         * class.c (clone_function_decl): Robustify.
2488
2489 2000-12-04  Michael Matz  <matzmich@cs.tu-berlin.de>
2490
2491         * decl.c (store_bindings): Only search in the non modified
2492         old_bindings for duplicates.
2493
2494 2000-12-04  Nathan Sidwell  <nathan@codesourcery.com>
2495
2496         * error.c (dump_function_decl): Use DECL_VIRTUAL_P, not
2497         TYPE_POLYMORPHIC_P.
2498
2499         * typeck.c (build_static_cast): Remove unused variable.
2500
2501 2000-12-01  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
2502
2503         * pt.c: Fix typo in comment.
2504
2505 2000-12-01  Joseph S. Myers  <jsm28@cam.ac.uk>
2506
2507         * decl2.c (warn_format): Remove definition.
2508         (lang_decode_option): Handle -Wformat-nonliteral,
2509         -Wno-format-extra-args and -Wno-format-y2k.  Use set_Wformat.
2510
2511 2000-12-01  Joseph S. Myers  <jsm28@cam.ac.uk>
2512
2513         * decl.c (WINT_TYPE, INTMAX_TYPE, UINTMAX_TYPE): Don't define.
2514         (init_decl_processing): Don't create string_type_node,
2515         const_string_type_node, wint_type_node, intmax_type_node,
2516         uintmax_type_node, default_function_type, ptrdiff_type_node and
2517         unsigned_ptrdiff_type_node.  Adjust position of call to
2518         c_common_nodes_and_builtins.
2519         (identifier_global_value): New function.
2520
2521 2000-12-01  Nathan Sidwell  <nathan@codesourcery.com>
2522
2523         * call.c (standard_conversion): Reject pointer to member
2524         conversions from ambiguous, inaccessible or virtual bases.
2525         * typeck.c (build_static_cast): Don't check pointers to members
2526         specially.
2527
2528 2000-11-30  Nathan Sidwell  <nathan@codesourcery.com>
2529
2530         * method.c (do_build_copy_constructor): Preserve cv
2531         qualifications when accessing source object members.
2532         (do_build_assign_ref): Likewise. Remove separate diagnostics for
2533         unnamed fields.
2534
2535 2000-11-30  Nathan Sidwell  <nathan@codesourcery.com>
2536
2537         * method.c (do_build_assign_ref): Construct appropriately
2538         CV-qualified base reference. Don't allow const casts in base
2539         conversion.
2540
2541 2000-11-30  Nathan Sidwell  <nathan@codesourcery.com>
2542
2543         * call.c (build_over_call): Use VOID_TYPE_P. Don't die on
2544         incomplete return type.
2545
2546 2000-11-28  Nathan Sidwell  <nathan@codesourcery.com>
2547
2548         * parse.y (base_class.1): Produce a _TYPE not a _DECL.
2549         * semantics.c (finish_base_specifier): Accept a _TYPE not a
2550         _DECL.
2551
2552 2000-11-28  Nathan Sidwell  <nathan@codesourcery.com>
2553
2554         * spew.c (yyerror): Cope if yylval.ttype is NULL.
2555
2556 2000-11-28  Nathan Sidwell  <nathan@codesourcery.com>
2557
2558         * decl.c (grokdeclarator): Diagnose undefined template contexts.
2559
2560 2000-11-28  Nathan Sidwell  <nathan@codesourcery.com>
2561
2562         * decl.c (grokdeclarator): Do type access control on friend
2563         class.
2564
2565 2000-11-27  Nathan Sidwell  <nathan@codesourcery.com>
2566
2567         * decl.c (grokfndecl): Undo COMPONENT_REF damage caused by
2568         bison parser ickiness.
2569         * pt.c (tsubst_friend_function): Enter namespace scope when
2570         tsubsting the function name.
2571         * cp-tree.h (DECL_TI_TEMPLATE): Update comment to reflect reality.
2572
2573 2000-11-27  Nathan Sidwell  <nathan@codesourcery.com>
2574
2575         * cp-tree.h (binfo_from_vbase): Return the virtual base's binfo.
2576         * cvt.c (cp_convert_to_pointer): Add force parameter.
2577         Allow conversions via virtual base if forced.
2578         (convert_to_pointer_force): Adjust call to cp_convert_to_pointer.
2579         (ocp_convert): Likewise.
2580         * search.c (binfo_from_vbase): Return the virtual base's binfo.
2581         * typeck.c (get_delta_difference): Adjust handling of virtual
2582         bases.
2583
2584 2000-11-26  Mark Mitchell  <mark@codesourcery.com>
2585
2586         * tree.c (struct list_hash): Remove.
2587         (list_hash_table): Make it be an htab.
2588         (struct list_proxy): New type.
2589         (list_hash_eq): New function.
2590         (list_hash_pieces): Renamed from ...
2591         (list_hash): ... this.
2592         (list_hash_lookup): Remove.
2593         (list_hash_add): Remove.
2594         (hash_tree_cons): Use the generic hashtable.
2595         (mark_list_hash): Remove.
2596         (init_tree): Create the hashtable.
2597
2598 2000-11-25  Joseph S. Myers  <jsm28@cam.ac.uk>
2599
2600         * method.c (build_mangled_C9x_name): Rename to
2601         build_mangled_C99_name.  Change C9X references in comments to
2602         refer to C99.
2603
2604 2000-11-24  Nathan Sidwell  <nathan@codesourcery.com>
2605
2606         * parse.y (unary_expr): Move VA_ARG from here ...
2607         (primary): ... to here.
2608
2609 2000-11-24  Nathan Sidwell  <nathan@codesourcery.com>
2610
2611         * semantics.c (finish_id_expr): If type is error_mark, return
2612         error_mark.
2613
2614 2000-11-23  Nathan Sidwell  <nathan@codesourcery.com>
2615
2616         * pt.c (lookup_template_class): Simplify loop exit constructs.
2617         Cope when there is no partial instantiation of a template
2618         template member.
2619
2620 Thu Nov 23 02:16:47 2000  J"orn Rennecke <amylaar@redhat.com>
2621
2622         * Make-lang.in (g++spec.o, cxxmain.o): Depend on $(CONFIG_H).
2623
2624 2000-11-22  Mark Mitchell  <mark@codesourcery.com>
2625
2626         * mangle.c (mangle_conv_op_name_for_type): Don't use `__op'
2627         prefix.
2628
2629         * pt.c (do_decl_instantiate): Explicitly clone constructors and
2630         destructors that haven't already been cloned.
2631
2632 2000-11-20  Richard Henderson  <rth@redhat.com>
2633
2634         * parse.y (yyparse_1): Rename the parser entry point.
2635
2636 2000-11-20  Alex Samuel  <samuel@codesourcery.com>
2637
2638         * mangle.c (write_name): Use <unscoped-name> for names directly in
2639         function scope.
2640         (write_unscoped_name): Accept names directly in function scope.
2641
2642 2000-11-20  Nathan Sidwell  <nathan@codesourcery.com>
2643
2644         * lex.c (rid_to_yy, RID_EXPORT): Make unique keyword.
2645         * parse.y (extdef): Add EXPORT reduction.
2646         * spew.c (yylex): Don't skip export here.
2647
2648 2000-11-19  Mark Mitchell  <mark@codesourcery.com>
2649
2650         * decl.c (init_decl_processing): Correct name of pure virtual
2651         function under the new ABI.
2652         * rtti.c (throw_bad_cast): Likewise, for bad cast function.
2653         (throw_bad_typeid): Likewise for bad typeid function.
2654
2655 2000-11-18  Mark Mitchell  <mark@codesourcery.com>
2656
2657         * decl.c (grokparms): Don't even function types of `void' type,
2658         either.
2659         * mangle.c (write_type): Don't crash when confronted with the
2660         error_mark_node.
2661
2662         * decl.c (grokparms): Don't create parameters of `void' type.
2663
2664 2000-11-17  Zack Weinberg  <zack@wolery.stanford.edu>
2665
2666         * lex.c (mark_impl_file_chain): Delete.
2667         (init_parse): Remove call to ggc_add_string_root.  No need to
2668         ggc_strdup a string constant.  Do not add impl_file_chain to GC
2669         roots.
2670         (handle_pragma_implementation): No need to ggc_strdup main_filename.
2671
2672 2000-11-17  Nathan Sidwell  <nathan@codesourcery.com>
2673
2674         * pt.c (tsubst_expr, DECL_STMT): Instantiate decl's type.
2675
2676 2000-11-17  Nathan Sidwell  <nathan@codesourcery.com>
2677
2678         * cp-tree.h (PARMLIST_ELLIPSIS_P): New macro.
2679         * decl.c (grokdeclarator): Don't reject void parms here.
2680         (require_complete_types_for_parms): Simplify, use
2681         complete_type_or_else.
2682         (grokparms): Remove bitrot. Remove funcdef parm.
2683         Deal with ellipsis parm lists here.
2684         * semantics.c (finish_parmlist): Don't append void_list_node
2685         here. Set PARMLIST_ELLIPSIS_P.
2686
2687 2000-11-17  Nathan Sidwell  <nathan@codesourcery.com>
2688
2689         * typeck2.c (incomplete_type_error): Reorganise to avoid
2690         excessive diagnostics.
2691
2692 2000-11-16  Zack Weinberg  <zack@wolery.stanford.edu>
2693
2694         * lex.c (struct impl_files, internal_filename): Constify a char *.
2695
2696 2000-11-16  Mark Mitchell  <mark@codesourcery.com>
2697
2698         * mangle.c (write_special_name_constructor): Don't generate
2699         assembler junk when confronted with an old-style constructor.
2700         (write_special_name_destructor): Likewise.
2701         (mangle_decl_string): Do it here instead.
2702
2703 2000-11-16  Nathan Sidwell  <nathan@codesourcery.com>
2704
2705         * call.c (op_error): Make error messages clearer.
2706
2707 2000-11-15  Mark Mitchell  <mark@codesourcery.com>
2708
2709         * decl.c (wrapup_globals_for_namespace): Don't mark things
2710         TREE_ASM_WRITTEN when they're not.
2711
2712 2000-11-15  Jason Merrill  <jason@redhat.com>
2713
2714         * typeck2.c (friendly_abort): Uncount the error before handing
2715         off to fancy_abort.
2716
2717 2000-11-15  Nathan Sidwell  <nathan@codesourcery.com>
2718
2719         * typeck.c (lookup_anon_field): Cope with qv qualifiers.
2720
2721 2000-11-14  Mark Mitchell  <mark@codesourcery.com>
2722
2723         * class.c (build_vtbl_initializer): Fix typo in comment.
2724         * typeck.c (expr_sizeof): Don't crash on errors.
2725
2726 2000-11-14  Jim Wilson  <wilson@redhat.com>
2727
2728         * lang-specs.h: Add %2 after %(cc1_options).
2729
2730 2000-11-14  Richard Henderson  <rth@redhat.com>
2731
2732         * typeck.c (c_sizeof): Be strict about casting result value
2733         back to c_size_type_node.
2734         (expr_sizeof, c_sizeof_nowarn, c_alignof): Likewise.
2735
2736 2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>
2737
2738         * typeck.c (build_unary_op): Use boolean_increment from
2739         c-common.c, moving the relevant code there.
2740
2741 2000-11-11  Jason Merrill  <jason@redhat.com>
2742
2743         * typeck.c (mark_addressable): Don't call put_var_into_stack.
2744
2745         * decl.c (maybe_commonize_var): Set DECL_UNINLINABLE for statics
2746         in inlines.
2747
2748 2000-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2749
2750         * decl.c (grokdeclarator, save_function_data): Use memcpy, not bcopy.
2751         * lex.c (copy_lang_decl): Likewise.
2752
2753 2000-11-09  Mark Mitchell  <mark@codesourcery.com>
2754
2755         * dump.c (cp_dump_tree): Don't dump function bodies here.
2756
2757         * Make-lang.in (CXX_C_OBJS): Add c-dump.o.
2758         (dump.o): Update dependency list.
2759         * cp-tree.h (DECL_MAYBE_TEMPLATE): Remove.
2760         (flag_dump_translation_unit): Likewise.
2761         (CP_TYPE_QUALS): Adjust definition.
2762         (DECL_C_BIT_FIELD): Remove.
2763         (SET_DECL_C_BIT_FIELD): Likewise.
2764         (CLEAR_DECL_C_BIT_FIELD): Likewise.
2765         (add_maybe_template): Likewise.
2766         (strip_array_types): Likewise.
2767         (dump_node_to_file): Likewise.
2768         (cp_dump_tree): New function.
2769         * decl.c (init_decl_processing): Set lang_dump_tree.
2770         * decl2.c (flag_dump_translation_unit): Remove.
2771         * dump.c: Move most of it to ../c-dump.c.
2772         (cp_dump_tree): New function.
2773         * pt.c (add_maybe_template): Remove.
2774         * typeck.c (strip_array_types): Likewise.
2775
2776 2000-11-07  Eric Christopher  <echristo@redhat.com>
2777
2778         * decl.c (init_decl_processing): Change definition of
2779         __wchar_t to wchar_t.  Remove artificial declaration of
2780         wchar_t.
2781         * lex.c: Change instances of __wchar_t to wchar_t.
2782
2783 2000-11-09  Nathan Sidwell  <nathan@codesourcery.com>
2784
2785         * lex.c (do_identifier): Don't lookup_name for operators.
2786         * parse.y (operator): Save looking_for_typename.
2787         (unoperator): Restore it.
2788         * spew.c (frob_opname): Use nth_token for lookahead.
2789
2790 2000-11-08  Nathan Sidwell  <nathan@codesourcery.com>
2791
2792         * decl.c (grok_op_properties): Always use coerce_new_type and
2793         coerce_delete_type.
2794         * decl2.c (coerce_new_type): Use c_size_type_node. Preserve
2795         exception specification. Tidy up.
2796         (coerce_delete_type): Preserve exception specification. Tidy up.
2797
2798 2000-11-07  Joseph S. Myers  <jsm28@cam.ac.uk>
2799
2800         * class.c (duplicate_tag_error, build_vtbl_initializer), decl.c
2801         (push_binding_level), error.c (cp_tree_printer), pt.c
2802         (process_partial_specialization, tsubst_template_arg_vector),
2803         search.c (lookup_member): Use memset () instead of bzero ().
2804
2805 2000-11-07  Nathan Sidwell  <nathan@codesourcery.com>
2806
2807         * decl.c (build_ptrmemfunc_type): Allow error_mark_node.
2808
2809 2000-11-05  Joseph S. Myers  <jsm28@cam.ac.uk>
2810
2811         * Make-lang.in (c++.distdir): Remove.
2812
2813 2000-11-04  Mark Mitchell  <mark@codesourcery.com>
2814
2815         * decl2.c (do_nonmember_using_decl): Allow `extern "C"'
2816         declarations from different namespaces to be combined.
2817
2818 2000-11-03  Zack Weinberg  <zack@wolery.stanford.edu>
2819
2820         * decl.c: Include tm_p.h.
2821
2822 2000-11-03  Joseph S. Myers  <jsm28@cam.ac.uk>
2823
2824         * tree.c (cp_tree_equal): Use memcmp () instead of bcmp ().
2825
2826 2000-11-02  Joseph S. Myers  <jsm28@cam.ac.uk>
2827
2828         * dump.c (dequeue_and_dump), lex.c (interface_strcmp), method.c
2829         (build_overload_value), repo.c (open_repo_file), xref.c
2830         (open_xref_file): Use strchr () and strrchr () instead of index ()
2831         and rindex ().
2832
2833 2000-11-01  Bernd Schmidt  <bernds@redhat.co.uk>
2834
2835         * call.c (build_over_call): Call fold on the CALL_EXPR.
2836
2837 2000-11-01  Gabriel Dos Reis  <gdr@codesourcery.com>
2838
2839         * error.c (dump_template_decl): Separate template hearders with
2840         space not comma.
2841
2842 2000-10-31  Gabriel Dos Reis  <gdr@codesourcery.com>
2843
2844         * error.c: Move TFF_ macros into cp-tree.h.  Throughout, replace
2845         TS_* flags with corresponding TFF_*.  Adjust prototypes of
2846         functions (which used to take a tree_string_flags) to take an int.
2847
2848         * cp-tree.h (enum tree_string_flags): Remove
2849         (TFF_PLAIN_IDENTIFIER, TFF_NAMESPACE_SCOPE, TFF_CLASS_SCOPE,
2850         TFF_CHASE_NAMESPACE_ALIAS, TFF_CHASE_TYPEDEF, TFF_DECL_SPECIFIERS,
2851         TFF_CLASS_KEY_OR_ENUM, TFF_RETURN_TYPE,
2852         TFF_FUNCTION_DEFAULT_ARGUMENTS, TFF_EXCEPTION_SPECIFICATION,
2853         TFF_TEMPLATE_HEADER, TFF_TEMPLATE_DEFAULT_ARGUMENTS,
2854         TFF_TEMPLATE_NAME, TFF_EXPR_IN_PARENS, TFF_SCOPE): New macros.
2855         (type_as_string, decl_as_string, expr_as_string,
2856         context_as_string): Adjust prototype.
2857
2858         * class.c (dump_class_hierarchy_r): Use TFF_PLAIN_IDENTIFIER
2859         instead of TS_PLAIN.
2860
2861         * pt.c (mangle_class_name_for_template): Use TFF_CHASE_TYPEDEF
2862         instead of TF_CHASE_TYPEDEFS. Use TFF_PLAIN_IDENTIFIER instead of
2863         plain `0'.
2864
2865 2000-10-30  Mark Mitchell  <mark@codesourcery.com>
2866
2867         * cp-tree.h (DECL_EXTERNAL_LINKAGE_P): New macro.
2868         (linkage_kind): New enumeration.
2869         (decl_linkage): New function.
2870         * decl2.c (comdat_linkage): Extend comment.
2871         * error.c (dump_function_decl): Print the arguments used to
2872         instantiate a template, even when not printing the type of the
2873         function.
2874         * pt.c (convert_nontype_argument): Use DECL_EXTERNAL_LINKAGE_P,
2875         not TREE_PUBLIC, to test for external linkage.
2876         * tree.c (decl_linkage): New function.
2877
2878 2000-10-28  Mark Mitchell  <mark@codesourcery.com>
2879
2880         * pt.c (instantiate_decl): Always instantiate static data members
2881         initialized in-class.
2882
2883 2000-10-27  Zack Weinberg  <zack@wolery.stanford.edu>
2884
2885         * Make-lang.in: Move all build rules here from Makefile.in,
2886         adapt to new context.  Wrap all rules that change the current
2887         directory in parentheses.  Expunge all references to $(P).
2888         When one command depends on another and they're run all at
2889         once, use && to separate them, not ;.  Add OUTPUT_OPTION to
2890         all object-file generation rules.  Delete obsolete variables.
2891
2892         * Makefile.in: Delete.
2893         * config-lang.in: Delete outputs= line.
2894
2895 2000-10-26  Gabriel Dos Reis  <gdr@codesourcery.com>
2896
2897         * error.c (dump_function_decl): Print no space between
2898         `ptr-operator' the `type-specifier' of the return type.
2899         (dump_type_prefix): Make sure we put space at the appropriate
2900         place.
2901
2902 2000-10-23  Jason Merrill  <jason@redhat.com>
2903
2904         * call.c (equal_functions): Also call decls_match for extern "C" fns.
2905
2906 2000-10-22  Jason Merrill  <jason@redhat.com>
2907
2908         * call.c (build_conditional_expr): Use ocp_convert to force
2909         rvalue conversion.
2910
2911 2000-10-22  Mark Mitchell  <mark@codesourcery.com>
2912
2913         * call.c (standard_conversion): Use RVALUE_CONVs for all
2914         expressions that satisfy lvalue_p, not just those that satisfy
2915         real_lvalue_p.
2916
2917         * optimize.c (copy_body_r): Don't treat CALL_EXPRs specially.
2918
2919         * typeck.c (c_sizeof): Return an expression of `size_t' type,
2920         not one with TYPE_IS_SIZETYPE set.
2921         (dubious_conversion_warnings): Remove special-case code.
2922
2923 2000-10-21  Geoffrey Keating  <geoffk@cygnus.com>
2924
2925         * decl2.c (arg_assoc_type): Handle VECTOR_TYPE.
2926         * error.c (dump_type): Handle VECTOR_TYPE like POINTER_TYPE.
2927         (dump_type_prefix): Print vector-of-int as 'int vector'.
2928         (dump_type_suffix): Handle VECTOR_TYPE like POINTER_TYPE.
2929         * tree.c (walk_tree): Handle VECTOR_TYPE.
2930
2931         * decl.c (init_decl_processing): Call MD_INIT_BUILTINS.
2932
2933 2000-10-21  Jason Merrill  <jason@redhat.com>
2934
2935         * parse.y (operator): Set got_object from got_scope.
2936         Set looking_for_typename.
2937         * decl.c (lookup_name_real): Clear val after setting from_obj.
2938         Reorganize diagnostic.
2939
2940 2000-10-20  Jason Merrill  <jason@redhat.com>
2941
2942         * tree.c (walk_tree): Don't walk into default args.
2943
2944         * error.c (dump_expr): Use host_integerp.
2945
2946 2000-10-20  David Edelsohn  <edelsohn@gnu.org>
2947
2948         * typeck2.c (abstract_virtuals_error): Use "because" instead of
2949         "since" in error message.
2950
2951 Fri Oct 20 13:54:59 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2952
2953         * typeck.c (dubious_conversion_warning): Suppress if TYPE_IS_SIZETYPE.
2954
2955 2000-10-20  Jeffrey Oldham  <oldham@codesourcery.com>
2956
2957         * decl.c (revert_static_member_fn): Fixed typo.
2958
2959 2000-10-19  Mark Mitchell  <mark@codesourcery.com>
2960
2961         * class.c (subobject_offset_fn): New type.
2962         (dfs_record_base_offsets): Remove.
2963         (record_base_offsets): Likewise.
2964         (dfs_search_base_offsets): Likewise.
2965         (record_subobject_offset): New function.
2966         (check_subobject_offset): Likewise.
2967         (walk_subobject_offsets): Likewise.
2968         (record_subobject_offsets): Likewise.
2969         (layout_conflict_p): Reimplement.
2970         (layout_nonempty_base_or_field): Correct handling of type
2971         conflicts during layout.
2972         (layout_empty_base): Likewise.
2973         (build_base_field): Adjust to handle new representation of empty
2974         base offset table.
2975         (build_base_fields): Likewise.
2976         (layout_virtual_bases): Likewise.
2977         (splay_tree_compare_integer_csts): New function.
2978         (layout_class_type): Use a splay_tree, rather than a varray, to
2979         represent the offsets of empty bases.
2980
2981         * cp-tree.h (DECL_ANTICIPATED): Don't require a FUNCTION_DECL.
2982         * decl.c (select_decl): Don't return declarations that are
2983         DECL_ANTICIPATED.
2984
2985 2000-10-18  Mark Mitchell  <mark@codesourcery.com>
2986
2987         * cp-tree.h (cp_tree_index): Add CPTI_FAKE_STD.
2988         (fake_std_node): New macro.
2989         * decl.c (in_std): Rename to ...
2990         (in_fake_std): ... this.
2991         (flag_no_builtin): Remove.
2992         (flag_no_nonansi_builtin): Likewise.
2993         (walk_namespaces_r): Use fake_std_node.
2994         (push_namespace): Use std_identifier.
2995         (pop_namespace): Use in_fake_std.
2996         (lookup_name_real): Use fake_std_node.
2997         (init_decl_processing): When -fhonor-std, create the `std'
2998         namespace.  Don't create a dummy fake_std_node in that case.
2999         Adjust call to c_common_nodes_and_builtins.  Use std_identifier.
3000         (builtin_function): Put builtins whose names don't begin
3001         with `_' in the std namespace.
3002         * decl2.c (flag_no_builtin): Remove.
3003         (flag_no_nonansi_builtin): Likewise.
3004         (set_decl_namespace): Use fake_std_node.
3005         (validate_nonmember_using_decl): Likewise.
3006         (do_using_directive): Likewise.
3007         (handle_class_head): Likewise.
3008         * dump.c (dequeue_and_dump): Likewise.
3009         * except.c (init_exception_processing): Use std_identifier.
3010         * init.c (build_member_call): Use fake_std_node.
3011         * rtti.c (init_rtti_processing): Use std_identifier.
3012
3013 2000-10-17  Mark Mitchell  <mark@codesourcery.com>
3014
3015         * cp-tree.h (back_end_hook): Remove declaration.
3016         * decl2.c (back_end_hook): Remove definition.
3017
3018         * dump.c (dequeue_and_dump): Dump TREE_USED.
3019
3020 Tue Oct 17 20:19:06 2000  Brad Lucier <lucier@math.purdue.edu>
3021
3022         * spew.c (snarf_defarg): Cast 2nd arg to obstack_blank to (int).
3023
3024 2000-10-17  Joseph S. Myers  <jsm28@cam.ac.uk>
3025
3026         * decl.c (WINT_TYPE): Define.
3027         (init_decl_processing): Create types unsigned_ptrdiff_type_node,
3028         c_size_type_node, signed_size_type_node and wint_type_node.
3029
3030 2000-10-17  Joseph S. Myers  <jsm28@cam.ac.uk>
3031
3032         * decl2.c (warn_missing_format_attribute): New variable.
3033         (lang_decode_option): Decode -Wmissing-format-attribute.
3034
3035 2000-10-16  Mark Mitchell  <mark@codesourcery.com>
3036
3037         * typeck.c (qualify_type): Remove.
3038         (composite_pointer_type): Fix handling of conversions to `cv void*'.
3039
3040 2000-10-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3041
3042         * Makefile.in (parse.c, parse.h): Fix think-o in last patch.
3043
3044 2000-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3045
3046         * Makefile.in (parse.c, parse.h): Create atomically.
3047
3048 2000-10-12  Mark Mitchell  <mark@codesourcery.com>
3049
3050         * class.c (current_obstack): Remove.
3051         * decl.c (ggc_p): Remove.
3052         (start_decl): Don't use decl_tree_cons.
3053         (grokdeclarator): Don't use build_decl_list.
3054         (start_function): Don't use decl_tree_cons.
3055         (finish_function): Don't mess with obstacks.
3056         * decl2.c (grok_x_components): Don't use build_decl_list.
3057         * lex.c (make_call_declarator): Don't call decl_tree_cons.
3058         (implicitly_declare_fn): Don't call build_decl_list.
3059         * parse.y (frob_specs): Don't call build_decl_list or
3060         decl_tree_cons.
3061         (expr_or_declarator_intern): Don't call decl_tree_cons.
3062         (primary): Don't call build_decl_list.
3063         (fcast_or_absdcl): Likewise.
3064         (typed_declspecs): Don't call decl_tree_cons.
3065         (reserved_declspecs): Don't call build_decl_list.
3066         (declmods): Likewise.
3067         (reserved_typespecquals): Likewise.
3068         (aggr): Likewise.
3069         (new_type_id): Likewise.
3070         (cv_qualifiers): Likewise.
3071         (after_type_declarator_intern): Likewise.
3072         (notype_declarator_intern): Likewise.
3073         (absdcl_intern): Likewise.
3074         (named_parm): Likewise.
3075         * pt.c (most_specialized_class): Likewise.
3076         * repo.c (temporary_obstack): Make it a structure, not a pointer.
3077         (init_repo): Initialize it.
3078         * search.c (current_obstack): Remove.
3079         * typeck2.c (add_exception_specifier): Don't call build_decl_list.
3080
3081 2000-10-09  Richard Henderson  <rth@cygnus.com>
3082
3083         * Make-lang.in (CXX_EXTRA_HEADERS): Remove.
3084         (c++ language support bits for libgcc): Remove.
3085         (c++.clean): Remove cplib2.txt cleanup.
3086         * config-lang.in (headers, lib2funcs): Remove.
3087
3088         * exception.cc, new.cc, new1.cc, new2.cc: Remove files.
3089         * tinfo.cc, tinfo.h, tinfo2.cc, vec.cc: Remove files.
3090         * inc/cxxabi.h, inc/exception, inc/new: Remove files.
3091         * inc/new.h, inc/typeinfo: Remove files.
3092
3093 2000-10-08  Joseph S. Myers  <jsm28@cam.ac.uk>
3094
3095         * decl.c (INTMAX_TYPE, UINTMAX_TYPE): Define if not already
3096         defined.
3097         (init_decl_processing): Initialize intmax_type_node and
3098         uintmax_type_node.
3099
3100 2000-10-06  Richard Henderson  <rth@cygnus.com>
3101
3102         * cp-tree.h (struct cp_language_function): Remove x_result_rtx.
3103         (original_result_rtx): Remove.
3104         * decl.c (save_function_data): Don't clear x_result_rtx.
3105         (mark_lang_function): Don't mark it either.
3106         * expr.c (fixup_result_decl): Remove.
3107         * semantics.c (genrtl_named_return_value): Frob the return decl
3108         before calling emit_local_var.
3109         (genrtl_finish_function): Don't call fixup_result_decl.
3110         Always emit the jump to return_label.
3111
3112 2000-10-06  Nathan Sidwell  <nathan@codesourcery.com>
3113
3114         * pt.c (lookup_template_class): Set current access for enum.
3115         (tsubst_enum): Set file & line for enum decl.
3116
3117         * spew.c (yylex): Remove unused variable.
3118
3119 2000-10-05  Richard Henderson  <rth@cygnus.com>
3120
3121         * semantics.c (genrtl_finish_function): Don't init or check
3122         can_reach_end; remove noreturn and return value checks.
3123
3124 2000-10-05  Tom Tromey  <tromey@cygnus.com>
3125
3126         * init.c (build_java_class_ref): Use `build_static_name' with a
3127         suffix, not a prefix, to build the class object's name.
3128
3129 2000-10-05  Nathan Sidwell  <nathan@codesourcery.com>
3130
3131         * cp-tree.h (access_kind): Fix comment typo.
3132         * decl2.c (grokfield): Fix diagnostic typo.
3133         * semantics.c (finish_template_type): Fix comment typo.
3134         (finish_qualified_object_call_expr): Likewise.
3135
3136 2000-10-05  Nathan Sidwell  <nathan@codesourcery.com>
3137
3138         * pt.c (tsubst_expr, DECL_STMT case): Don't process if
3139         tsubsting fails.
3140
3141 2000-10-05  Nathan Sidwell  <nathan@codesourcery.com>
3142
3143         * spew.c (frob_id): New static function.
3144         (frob_opname): Use it.
3145         (yylex): Use it.
3146
3147 2000-10-01  Mark Mitchell  <mark@codesourcery.com>
3148
3149         * decl.c (lang_mark_false_label_stack): Remove.
3150         * lex.c (cp_mang_lang_type): Use ggc_alloc_cleared.
3151
3152 2000-09-30  Joseph S. Myers  <jsm28@cam.ac.uk>
3153
3154         * gxxint.texi: Use @email for formatting email addresses.
3155
3156 2000-09-29  Gabriel Dos Reis  <gdr@codesourcery.com>
3157
3158         * error.c: Remove direct obstack manipulation.  Replace with
3159         output_buffer-based formatting.  Adjust calls to removed macros.
3160         (obstack_chunk_alloc, obstack_chunk_free): Remove.
3161         (OB_INIT, OB_PUTC, OB_PUTC2, OB_PUTS, OB_PUTID, OB_PUTCP,
3162         OB_FINISH, OB_PUTI, OB_END_TEMPLATE): Likewise.
3163
3164 2000-09-24  Mark Mitchell  <mark@codesourcery.com>
3165
3166         * ir.texi: Move to ../c-tree.texi.
3167
3168 2000-09-20  Jason Merrill  <jason@redhat.com>
3169
3170         * decl2.c (get_guard): Check DECL_FUNCTION_SCOPE_P.
3171
3172 2000-09-21  Andreas Jaeger  <aj@suse.de>
3173
3174         * errfn.c: Move declaration of cp_printer and cp_printers to ...
3175         * cp-tree.h: ... here.
3176
3177         * error.c: Remove declaration of cp_printer.
3178
3179 2000-09-20  Mark Mitchell  <mark@codesourcery.com>
3180
3181         * tree.c (mark_local_for_remap_r): Handle CASE_LABELs.
3182
3183 2000-09-20  Hans-Peter Nilsson  <hp@axis.com>
3184
3185         * except.c: Delete #if 0:d EXCEPTION_SECTION_ASM_OP-default and
3186         users.
3187
3188 2000-09-18  Mark Mitchell  <mark@codesourcery.com>
3189
3190         * decl.c (start_function): Robustify.
3191
3192 2000-09-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3193
3194         * cp-tree.h (check_function_format): Accept a `status' parameter.
3195
3196         * call.c, typeck.c: Updates calls to `check_function_format'.
3197
3198 2000-09-17  Geoffrey Keating  <geoffk@cygnus.com>
3199
3200         * decl2.c (handle_class_head): Always push some scope even
3201         in the error case.
3202
3203 2000-09-16  Mark Mitchell  <mark@codesourcery.com>
3204
3205         * cp-tree.h (struct cp_language_function): Remove
3206         x_scope_stmt_stack and name_declared.
3207         (current_scope_stmt_stack): Remove.
3208         (function_name_declared_p): New macro.
3209         (struct lang_decl_flags): Use c_lang_decl as a base class.
3210         (context): Remove.
3211         (struct lang_decl): Replace saved_tree with context.
3212         (DECL_FRIEND_CONTEXT): Adjust accordingly.
3213         (SET_DECL_FRIEND_CONTEXT): Likewise.
3214         (DECL_VIRTUAL_CONTEXT): Likewise.
3215         (DECL_SAVED_TREE): Remove.
3216         (C_DECLARED_LABEL_FLAG): Likewise.
3217         (cplus_expand_expr_stmt): Don't declare.
3218         (add_decl_stmt): Likewise.
3219         (add_scope_stmt): Likewise.
3220         * decl.c (mark_stmt_tree): Remove.
3221         (case_compare): Likewise.
3222         (finish_case_label): Use c_add_case_label.
3223         (init_decl_processing): Set more language-specific hooks.
3224         (build_enumerator): Fix typo in comment.
3225         (cplus_expand_expr_stmt): Remove.
3226         (mark_lang_function): Use mark_c_language_function.
3227         (lang_mark_tree): Use c_mark_lang_decl.
3228         * decl2.c: Change order of inclusion.
3229         * except.c: Likewise.
3230         * expr.c (cplus_expand_expr): Remove handling of STMT_EXPR.  Fall
3231         back on c_expand_expr.
3232         * friend.c: Include expr.h.
3233         * init.c: Change order of inclusion.
3234         * Makefile.in: Update dependencies.
3235         * lex.h (free_lang_decl_chain): Remove.
3236         * optimize.c (maybe_clone_body): Use function_name_declared_p.
3237         * pt.c (build_template_decl): Don't copy DECL_VIRTUAL_CONTEXT if
3238         it doesn't exist.
3239         (instantiate_decl): Use function_name_declared_p.
3240         * semantics.c (lang_expand_expr_stmt): Remove.
3241         (set_current_function_name_declared): Likewise.
3242         (current_function_name_declared): Likewise.
3243         (begin_compound_stmt): Use function_name_declared_p.
3244         (add_decl_stmt): Remove.
3245         (setup_vtbl_ptr): Use function_name_declared_p.
3246         (add_scope_stmt): Remove.
3247         (current_scope_stmt_stack): New function.
3248         (cp_expand_stmt): Don't handle SCOPE_STMTs.
3249         (expand_body): Use function_name_declared_p.
3250         * tree.c (cp_statement_code_p): Don't include SCOPE_STMT.
3251         * typeck.c: Change order of includes.
3252         (convert_sequence): Remove.
3253
3254 2000-09-14  Joseph S. Myers  <jsm28@cam.ac.uk>
3255
3256         * lex.c (reswords): Add _Complex.
3257
3258 Thu Sep 14 12:10:45 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3259
3260         * Make-lang.in (cplib2.txt): Depend on cp/Makefile.
3261
3262 2000-09-13  J. David Anglin  <dave@hiauly1.hia.nrc.ca>
3263
3264         * init.c (begin_init_stmts): Don't use // comments.
3265
3266 2000-09-12  Jason Merrill  <jason@redhat.com>
3267
3268         * decl.c (maybe_deduce_size_from_array_init): Set do_default for
3269         all non-extern arrays.
3270
3271         * decl.c (grokdeclarator): Complain about 'friend T' for implicit
3272         typenames, too.  Downgrade complaint to pedwarn.
3273         (xref_tag): Warn about surprising behavior of 'friend struct T'.
3274         * decl2.c (handle_class_head): Generate a TYPENAME_TYPE for
3275         'class This::Inherited'.
3276
3277 2000-09-12  Mark Mitchell  <mark@codesourcery.com>
3278
3279         * decl.c (finish_case_label): Given the LABEL_DECL a
3280         DECL_CONTEXT.
3281
3282 2000-09-12  Gabriel Dos Reis  <gdr@codesourcery.com>
3283
3284         * error.c (TFF_PLAIN_IDENTIFIER, TFF_NAMESPACE_SCOPE,
3285         TFF_CLASS_SCOPE, TFF_CHASE_NAMESPACE_ALIAS, TFF_CHASE_TYPDEF,
3286         TFF_DECL_SPECIFIERS, TFF_CLASS_KEY_OR_ENUM, TFF_RETURN_TYPE,
3287         TFF_FUNCTION_DEFAULT_ARGUMENTS, TFF_EXCEPTION_SPECIFICATION,
3288         TFF_TEMPLATE_HEADER, TFF_TEMPLATE_DEFAULT_ARGUMENTS, TFF_SCOPE):
3289         New macros.
3290         (sorry_for_unsupported_tree, print_scope_operator,
3291         print_left_paren, print_right_paren, print_left_bracket,
3292         print_right_bracket, print_whitespace): Likewise.
3293         (aggr_variety): Rename to class_key_or_enum.
3294         (print_type): Rename to print_type_id.
3295         (print_type_specifier_seq, print_simple_type_specifier,
3296         print_elaborated_type_specifier,
3297         print_rest_of_abstract_declarator,
3298         print_parameter_declaration_clause, print_exception_specification,
3299         print_nested_name_specifier, print_template_id,
3300         typedef_original_name,  print_template_argument_list_start,
3301         print_template_argument_list_end): New functions.
3302
3303 2000-09-11  Gabriel Dos Reis  <gdr@codesourcery.com>
3304
3305         * ir.texi: Add more documentation.
3306
3307 2000-09-11  Mark Mitchell  <mark@codesourcery.com>
3308
3309         * cp-tree.h (struct saved_scope): Remove x_function_parms.
3310         (current_function_parms): Don't define.
3311         (struct cp_language_function): Remove parms_stored.
3312         (current_function_just_assigned_this): Don't define.
3313         (current_function_parms_stored): Likewise.
3314         (static_ctors): Declare.
3315         (static_dtors): Likewise.
3316         (SF_EXPAND): Don't define.
3317         (expand_start_early_try_stmts): Remove declaration.
3318         (store_parm_decls): Likewise.
3319         * decl.c (static_ctors): Don't declare.
3320         (static_dtors): Likewise.
3321         (struct binding_level): Remove this_block.
3322         (poplevel): Remove dead code.
3323         (set_block): Likewise.
3324         (mark_binding_level): Don't mark this_block.
3325         (mark_saved_scope): Don't mark x_function_parms.
3326         (init_decl_processing): Don't add current_function_parms as a GC
3327         root.
3328         (check_function_type): Change prototype.
3329         (start_function): Remove RTL-generation code.
3330         (expand_start_early_try_stmts): Remove.
3331         (store_parm_decls): Give it internal linkage.  Remove
3332         RTL-generation code.
3333         (finish_function): Remove RTL-generation code.
3334         * decl2.c (static_ctors): Fix formatting.
3335         (static_dtors): Likewise.
3336         * method.c (use_thunk): Don't call store_parm_decls.
3337         (synthesize_method): Likewise.
3338         * optimize.c (maybe_clone_body): Likewise.
3339         * parse.y (fn.def2): Likewise.
3340         (.set_base_init): Likewise.
3341         (nodecls): Likewise.
3342         * pt.c (instantiate_decl): Likewise.
3343         * rtti.c (synthesize_tinfo_fn): Likewise.
3344         * semantics.c (genrtl_try_block): Simplify.
3345         (expand_body): Use genrtl_start_function and
3346         genrtl_finish_function.
3347         (genrtl_start_function): New function.
3348         (genrtl_finish_function): Likewise.
3349
3350 2000-09-11  Nathan Sidwell  <nathan@codesourcery.com>
3351
3352         * error.c (cp_tree_printer, case 'P'): Append break.
3353
3354 2000-09-11  Nathan Sidwell  <nathan@codesourcery.com>
3355
3356         * cp-tree.h (frob_opname): Declare.
3357         * parse.y (saved_scopes): New static variable.
3358         (cp_parse_init): Adjust.
3359         (do_id): If lastiddecl is NULL, do do_identifier.
3360         (operator): Save scope information.
3361         (unoperator): New reduction. Restore scope information.
3362         (operator_name): Append unoperator. Call frob_opname.
3363         * spew.c (frob_opname): Define.
3364
3365 2000-09-10  Zack Weinberg  <zack@wolery.cumb.org>
3366
3367         * decl.c, rtti.c: Include defaults.h if not already included.
3368         Don't define the *_TYPE_SIZE macros.
3369
3370 2000-09-09  Mark Mitchell  <mark@codesourcery.com>
3371
3372         * cp-tree.h (push_switch): Change prototype.
3373         (check_cp_case_value): Remove declaration.
3374         (decl_constant_value): Likewise.
3375         * decl.c (struct cp_switch): Add switch_stmt and cases.
3376         (case_compare): New function.
3377         (push_switch): Set switch_stmt.  Initialize cases.
3378         (pop_switch): Clean up cases.
3379         (define_case_label): Rename to ...
3380         (finish_case_label): ... this.  Do semantic analysis for case
3381         labels here.
3382         (start_function): Correct comment.
3383         * decl2.c (check_cp_case_value): Remove.
3384         * expr.c (do_case): Remove.
3385         * pt.c (tsubst_expr): Adjust call to finish_case_label.
3386         * semantics.c (genrtl_do_poplevel): Remove declaration.
3387         (RECHAIN_STMTS): Remove.
3388         (finish_break_stmt): Use build_break_stmt.
3389         (finish_continue_stmt): Use build_continue_stmt.
3390         (finish_switch_cond): Adjust condition here, rater than in
3391         c_expand_start_case.
3392         (finish_case_label): Remove.
3393         * typeck.c (c_expand_return): Remove.
3394         (c_expand_start_case): Likewise.
3395
3396 2000-09-07  Gabriel Dos Reis  <gdr@codesourcery.com>
3397
3398         * ir.texi: Document type nodes.
3399
3400 2000-09-06  Mark Mitchell  <mark@codesourcery.com>
3401
3402         * cp-tree.h (init_cp_semantics): Declare.
3403         (genrtl_try_block): Don't declare.
3404         (genrtl_handler): Likewise.
3405         (genrtl_catch_block): Likewise.
3406         (genrtl_ctor_stmt): Likewise.
3407         (genrtl_subobject): Likewise.
3408         (genrtl_do_poplevel): Likewise.
3409         (genrtl_named_return_value): Likewise.
3410         * lex.c (init_parse): Call init_cp_semantics.
3411         * semantics.c (genrtl_try_block): Give it internal linkage.
3412         (genrtl_handler): Likewise.
3413         (genrtl_catch_block): Likewise.
3414         (genrtl_ctor_stmt): Likewise.
3415         (genrtl_subobject): Likewise.
3416         (genrtl_do_poplevel): Likewise.
3417         (genrtl_named_return_value): Likewise.
3418         (lang_expand_stmt): Rename to ...
3419         (cp_expand_stmt): ... this.  Only handle C++-specific nodes.
3420         (init_cp_semantics): Define.
3421
3422         * decl.c (initialize_local_var): Remove RTL-generating code.
3423         * semantics.c (genrtl_try_block): Fix formatting.
3424
3425         Move statement-tree facilities from C++ to C front-end.
3426         * cp-tree.h (cp_tree_index): Remove CPTI_VOID_ZERO.
3427         (void_zero_node): Remove.
3428         (stmt_tree): Likewise.
3429         (scope_chain): Adjust.
3430         (language_function): Rename to cp_language_function.
3431         (cp_function_chain): Adjust.
3432         (current_stmt_tree): Remove.
3433         (last_tree): Likewise.
3434         (last_expr_type): Likewise.
3435         (struct lang_decl): Adjust.
3436         (STMT_IS_FULL_EXPR_P): Remove.
3437         (add_tree): Remove.
3438         (begin_stmt_tree): Likewise.
3439         (finish_stmt_tree): Likewise.
3440         (walk_tree_fn): Likewise.
3441         (walk_stmt_tree): Likewise.
3442         * class.c (finish_struct): Replace use of add_tree with add_stmt.
3443         * decl.c (mark_stmt_tree): Adjust type.
3444         (init_decl_processing): Don't build void_zero_node.
3445         (initialize_local_var): Adjust usage of current_stmt_tree.
3446         (finish_enum): Use add_stmt, not add_tree.
3447         (save_function_data): Adjust use of language_function.
3448         (finish_constructor_body): Use add_stmt, not add_tree.
3449         (finish_destructor_body): Likewise.
3450         (push_cp_function_context): Adjust use of language_function.
3451         (pop_cp_function_context): Likewise.
3452         (mark_lang_function): Likewise.
3453         (mark_cp_function_context): Likewise.
3454         * init.c (build_aggr_init): Adjust use of current_stmt_tree.
3455         (build_vec_init): Likewise.
3456         * semantics.c (SET_LAST_STMT): Remove.
3457         (RECHAIN_STMTS): Don't use it.
3458         (stmts_are_full_exprs_p): Adjust use of current_stmt_tree.
3459         (current_stmt_tree): Define.
3460         (add_tree): Remove.
3461         (finish_goto_stmt): Use add_stmt, not add_tree.
3462         (finish_expr_stmt): Likewise.
3463         (begin_if_stmt): Likewise.
3464         (finish_then_clause): Likewise.
3465         (begin_while_stmt): Likewise.
3466         (begin_do_stmt): Likewise.
3467         (finish_return_stmt): Likewise.
3468         (begin_for_stmt): Likewise.
3469         (finish_break_stmt): Likewise.
3470         (finish_continue_stmt): Likewise.
3471         (begin_switch_stmt): Likewise.
3472         (finish_case_label): Likewise.
3473         (begin_try_block): Likewise.
3474         (begin_function_try_block): Likewise.
3475         (begin_handler): Likewise.
3476         (begin_catch_block): Likewise.
3477         (begin_compound_stmt): Likewise.
3478         (begin_asm_stmt): Likewise.
3479         (finish_asm_stmt): Likewise.
3480         (finish_label_stmt): Likewise.
3481         (add_decl_stmt): Likewise.
3482         (finish_subobject): Likewise.
3483         (finish_decl_cleanup): Likewise.
3484         (finish_named_return_value): Likewise.
3485         (setup_vtbl_ptr): Likewise.
3486         (add_scope_stmt): Likewise.
3487         (finish_stmt_expr): Likewise.
3488         (prune_unused_decls): Remove.
3489         (begin_stmt_tree): Likewise.
3490         (finish_stmt_tree): Likewise.
3491         (prep_stmt): Adjust use of current_stmt_tree.
3492         (lang_expand_stmt): Likewise.
3493         * tree.c (statement_code_p): Remove.
3494         (cp_statement_code_p): New function.
3495         (walk_stmt_tree): Remove.
3496         (init_tree): Set lang_statement_code_p.
3497
3498 2000-09-06  Zack Weinberg  <zack@wolery.cumb.org>
3499
3500         Integrated preprocessor.
3501
3502         * Make-lang.in, Makefile.in: Remove all references to input.c,
3503         gxx.gperf, and hash.h.  Add ../c-lex.o to C_OBJS.
3504         * gxx.gperf, hash.h, input.c: Delete.
3505         * lang-specs.h: Pass -lang-c++ to cc1plus so cpplib is
3506         initialized properly.
3507
3508         * class.c (fixup_pending_inline): Take a tree, not a
3509         struct pending_inline *.  All callers changed.
3510         (init_class_processing): Set RID_PUBLIC, RID_PRIVATE,
3511         RID_PROTECTED entries in ridpointers[] array here.
3512         * decl.c (duplicate_decls): Do not refer to struct
3513         pending_inline.
3514         (record_builtin_type, init_decl_processing): Use RID_MAX not
3515         CP_RID_MAX.
3516         (grokdeclarator): Use C_IS_RESERVED_WORD.
3517         * decl2.c (lang_decode_option): Ignore -lang-c++ for sake of
3518         cpplib.
3519         (grok_x_components): Do not inspect pending_inlines chain.
3520
3521         * cp-tree.h (struct lang_identifier): Add rid_code entry.
3522         (C_IS_RESERVED_WORD, C_RID_CODE, C_RID_YYCODE): New.
3523         (flag_no_gnu_keywords, flag_operator_names, rid_to_yy): Declare.
3524         (DEFARG_LENGTH, struct pending_inline, TIME_IDENTIFIER_TIME,
3525         TIME_IDENTIFIER_FILEINFO): Kill.
3526         Update prototypes.
3527         * lex.h: Expunge cp_rid.  Rewrite RIDBIT macros to use just a
3528         single 32-bit word.
3529         * parse.y: Call do_pending_inlines unconditionally.
3530         reinit_parse_for_method is now snarf_method.  fn.defpen is no
3531         longer necessary.  Remove unnecessary <itype> annotation on
3532         SCOPE.  Do not refer to end_of_file or struct pending_inline.
3533         * semantics.c (begin_inline_definitions): Call
3534         do_pending_inlines unconditionally.
3535
3536         * lex.c: Remove all code now shared with C front end.
3537         Initialize cpplib properly if USE_CPPLIB.  Put reserved words
3538         into the get_identifier table.  Rewrite pragma handling to
3539         work with the registry.  Move code to save tokens for later
3540         processing to spew.c.
3541
3542         * spew.c: Rewrite everything in terms of token streams instead
3543         of text.  Move routines here from lex.c / input.c as
3544         appropriate.  GC-mark trees hanging off the pending inlines
3545         chain.
3546
3547 2000-09-06  Mark Mitchell  <mark@codesourcery.com>
3548
3549         * NEWS: Mention that the named return value extension has been
3550         deprecated.
3551         * cp-tree.h (original_result_rtx): Define.
3552         (TREE_REFERENCE_EXPR): Remove.
3553         (DECL_VPARENT): Likewise.
3554         (pushdecl_nonclass_level): Likewise.
3555         (store_return_init): Likewise.
3556         (reinit_lang_specific): Likewise.
3557         (genrtl_named_return_value): Change prototype.
3558         * decl.c (original_result_rtx): Remove.
3559         (cp_finish_decl): Don't build DECL_STMTs for RESULT_DECLs.
3560         Do not generate RTL for local variables here.
3561         (store_return_init): Remove.
3562         * semantics.c (genrtl_named_return_value): Simplify.  Fold in
3563         store_return_init.
3564         (finish_named_return_value): Adjust accordingly.  Warn that this
3565         extension is deprecated.
3566         (lang_expand_stmt): Adjust call to genrtl_named_return_value.
3567
3568 2000-09-06  Nathan Sidwell  <nathan@codesourcery.com>
3569
3570         * pt.c (type_unification_real): Replace switch with if.
3571         (unify): Tsubst non-type parms before comparing.
3572
3573 2000-09-06  Nathan Sidwell  <nathan@codesourcery.com>
3574
3575         * error.c (dump_typename): New function, broken out of ...
3576         (dump_type): ... here. Use it.
3577         * typeck.c (same_type_p): Use cp_tree_equal for TYPENAME_TYPE.
3578
3579 2000-09-06  Nathan Sidwell  <nathan@codesourcery.com>
3580
3581         * init.c (build_offset_ref): Deal with namespace scoped
3582         TEMPLATE_ID_EXPRs.
3583
3584 2000-09-06  Nathan Sidwell  <nathan@codesourcery.com>
3585
3586         * class.c (resolve_address_of_overloaded_function): Add
3587         explanation message.
3588         * decl.c (define_case_label): Reformat explanation.
3589         * decl2.c (finish_static_data_member_decl): Likewise.
3590         (grokfield): Likewise.
3591         * friend.c (do_friend): Likewise.
3592
3593 2000-09-05  Zack Weinberg  <zack@wolery.cumb.org>
3594
3595         * tree.c (walk_tree): Expose tail recursion.
3596         (walk_stmt_tree): New function.
3597         * cp-tree.h: Prototype walk_stmt_tree.
3598         * semantics.c (prune_unused_decls): Operate on SCOPE_STMTs not
3599         the BLOCKs directly.  If a BLOCK has no variables after
3600         pruning, discard it.
3601         (finish_stmt_tree): Use walk_stmt_tree.  No need to save and
3602         restore the line number.
3603
3604 2000-09-05  Mark Mitchell  <mark@codesourcery.com>
3605
3606         * Makefile.in (CXX_TREE_H): Add dependency on HTAB_H.
3607         (pt.o): Remove dependency on HTAB_H.
3608         * cp-tree.h: Include hashtab.h.
3609         (walk_tree): Change prototype.
3610         (walk_tree_without_duplicates): New function.
3611         * decl.c (check_default_argument): Use it.
3612         * optimize.c (remap_decl): Adjust calls to walk_tree.
3613         (copy_body): Likewise.
3614         (expand_calls_inline): Likewise.
3615         (calls_setjmp_p): Use walk_tree_without_duplicates.
3616         * pt.c: Don't include hashtab.h.
3617         (for_each_template_parm): Use walk_tree_without_duplicates.
3618         * semantics.c (finish-stmt_tree): Likewise.
3619         (expand_body): Likewise.
3620         * tree.c (walk_tree): Add additional parameter.
3621         (walk_tree_without_duplicates): New function.
3622         (count_trees): Use it.
3623         (verify_stmt_tree): Adjust call to walk_tree.
3624         (find_tree): Use walk_tree_without_duplicates.
3625         (no_linkage_check): Likewise.
3626         (break_out_target_exprs): Adjust call to walk_tree.
3627         (cp_unsave): Likewise.
3628
3629 2000-09-04  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
3630
3631         * cp-tree.def (BOUND_TEMPLATE_TEMPLATE_PARM): New tree code.
3632         (TEMPLATE_TEMPLATE_PARM): Adjust comment.
3633         * cp-tree.h (TYPE_BINFO): Adjust comment.
3634         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Likewise.
3635         (TEMPLATE_TYPE_PARM_INDEX): Likewise.
3636         (IS_AGGR_TYPE): Use BOUND_TEMPLATE_TEMPLATE_PARM instead.
3637         (TYPE_TEMPLATE_INFO): Likewise.
3638         (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): Likewise.
3639         * class.c (push_nested_class): Likewise.
3640         * decl.c (lookup_name_real): Likewise.
3641         (grokdeclarator): Likewise.
3642         (grok_op_properties): Likewise.
3643         (xref_tag): Likewise.
3644         (xref_basetypes): Likewise.
3645         * decl2.c (constructor_name_full): Likewise.
3646         (arg_assoc_template_arg): Add TEMPLATE_TEMPLATE_PARM case.
3647         (arg_assoc_type): Use BOUND_TEMPLATE_TEMPLATE_PARM instead.
3648         * error.c (dump_type): Split TEMPLATE_TEMPLATE_PARM case.
3649         (dump_type_prefix): Add BOUND_TEMPLATE_TEMPLATE_PARM.
3650         (dump_type_suffix): Likewise.
3651         * init.c (is_aggr_type): Use BOUND_TEMPLATE_TEMPLATE_PARM
3652         instead.
3653         (get_aggr_from_typedef): Likewise.
3654         * mangle.c (write_type): Split TEMPLATE_TEMPLATE_PARM case.
3655         (write_expression): Add BOUND_TEMPLATE_TEMPLATE_PARM.
3656         (write_template_parm): Likewise.
3657         (write_template_template_parm): Check tree code instead of
3658         using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
3659         * method.c (build_overload_nested_name): Add
3660         BOUND_TEMPLATE_TEMPLATE_PARM.
3661         (process_overload_item): Split TEMPLATE_TEMPLATE_PARM case.
3662         * parse.y (bad_parm): Add BOUND_TEMPLATE_TEMPLATE_PARM.
3663         * pt.c (convert_template_argument): Check tree code instead of
3664         using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
3665         (for_each_template_parm_r): Split TEMPLATE_TEMPLATE_PARM case.
3666         (for_each_template_parm): Adjust comment.
3667         (tsubst): Add BOUND_TEMPLATE_TEMPLATE_PARM.  Reorganize.
3668         (tsubst_copy): Add BOUND_TEMPLATE_TEMPLATE_PARM.
3669         (unify): Add BOUND_TEMPLATE_TEMPLATE_PARM.  Reorganize.  Use
3670         template_args_equal to compare template template parameter cases.
3671         * ptree.c (print_lang_type): Add BOUND_TEMPLATE_TEMPLATE_PARM.
3672         * search.c (lookup_field_1): Use BOUND_TEMPLATE_TEMPLATE_PARM
3673         instead.
3674         * tree.c (copy_template_template_parm): Decide whether to create
3675         a TEMPLATE_TEMPLATE_PARM or BOUND_TEMPLATE_TEMPLATE_PARM node.
3676         (walk_tree): Add BOUND_TEMPLATE_TEMPLATE_PARM.
3677         (copy_tree_r): Likewise.
3678         * typeck.c (comptypes): Likewise.  Check tree code instead of
3679         using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
3680
3681 2000-09-04  Mark Elbrecht  <snowball3@bigfoot.com>
3682
3683         * decl.c (finish_function): Move the code for handling functions
3684         marked with the constructor and destructor attributes inside the
3685         expand_p block.
3686
3687 2000-09-04  Nathan Sidwell  <nathan@codesourcery.com>
3688
3689         * init.c (resolve_offset_ref): Deal with TEMPLATE_ID_EXPR.
3690
3691 2000-09-04  Nathan Sidwell  <nathan@codesourcery.com>
3692
3693         * pt.c (lookup_template_class): Remove abort.
3694         * tree.c (get_type_decl): Allow error_mark_node.
3695
3696 2000-09-04  Nathan Sidwell  <nathan@codesourcery.com>
3697
3698         * decl2.c (arg_assoc): Deal with COMPONENT_REFs inside
3699         TEMPLATE_ID_EXPRs.
3700
3701 2000-09-03  Mark Mitchell  <mark@codesourcery.com>
3702
3703         * operators.def (ALIGNOF_EXPR, MAX_EXPR, MIN_EXPR): Change
3704         new ABI mangling.
3705
3706 2000-09-01  Nathan Sidwell  <nathan@codesourcery.com>
3707
3708         * parse.y (named_class_head): Check for TYPENAME_TYPE. Simplify
3709         union tag mismatch error reporting.
3710
3711 2000-09-01  Nathan Sidwell  <nathan@codesourcery.com>
3712
3713         * call.c (build_scoped_method_call): Check it is not a namespace.
3714
3715 2000-08-30  Jason Merrill  <jason@redhat.com>
3716
3717         * cp-tree.h (LOCAL_CLASS_P): Use decl_function_context.
3718
3719         * tree.c (bot_manip): Check TREE_CONSTANT rather than
3720         !TREE_SIDE_EFFECTS.  Call break_out_target_exprs and
3721         build_target_expr_with_type for the non-AGGR_INIT_EXPR case.
3722
3723         * decl.c (start_function): Always call make_function_rtl.
3724
3725 2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>
3726
3727         * semantics.c (prune_unused_decls): New function.
3728         (finish_stmt_tree): Call it via walk_tree.
3729
3730 2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>
3731
3732         * class.c (build_secondary_vtable): Constify a char *.
3733         * decl.c (init_decl_processing): Initialize function_id_node,
3734         pretty_function_id_node, and func_id_node.
3735         * input.c (struct input_source): Constify 'str'.
3736         (feed_input): Constify first argument.
3737         * mangle.c (write_identifier): Constify argument.
3738         * pt.c (mangle_class_name_for_template): Constify argument.
3739
3740 2000-08-29  Mark Mitchell  <mark@codesourcery.com>
3741
3742         * typeck.c (mark_addressable): Remove code that pokes around in
3743         RTL.
3744
3745 2000-08-28  Jason Merrill  <jason@redhat.com>
3746
3747         * lex.c (file_name_nondirectory): Move to toplev.c.
3748
3749         * cp-tree.h (LOCAL_CLASS_P): New macro.
3750         * class.c (finish_struct_1): Use it.
3751
3752 2000-08-27  Alex Samuel  <samuel@codesourcery.com>
3753
3754         * mangle.c (CLASSTYPE_TEMPLATE_ID_P): Remove unexplained voodoo.
3755         (write_encoding): Pass another argument to write_name.
3756         (write_name): Add ignore_local_scope parameter.  Fix handling of
3757         local names.
3758         (write_nested_name): Use write_unqualified_name.
3759         (write_prefix): Likewise.  Skip out on FUNCTION_DECLs.
3760         (write_template_prefix): Use write_unqualified_name.
3761         (write_component): Remove.
3762         (write_local_name): Add parameter.  Use direct local entity to
3763         discriminator calculation.
3764         (write_class_enum_type): Pass another argument to write_name.
3765         (write_template_template_arg): Likewise.
3766         (make_guard_variable): Likewise.
3767
3768 2000-08-27  Jason Merrill  <jason@redhat.com>
3769
3770         * decl.c (pushdecl): Matching decls for local externs are found in
3771         the current level.  Propagate linkage information from previous
3772         declarations.
3773
3774 2000-08-26  Gabriel Dos Reis  <gdr@codesourcery.com>
3775
3776         * ir.texi (Expressions): Fix typo.
3777
3778 2000-08-25  Greg McGary  <greg@mcgary.org>
3779
3780         * tree.c (init_tree): Use ARRAY_SIZE.
3781
3782 2000-08-25  Gabriel Dos Reis  <gdr@codesourcery.com>
3783
3784         * error.c (cp_tree_printer): Rework.
3785
3786 2000-08-25  Mark Mitchell  <mark@codesourcery.com>
3787
3788         * Make-lang.in (CXX_LIB2FUNCS): Remove cp-demangle.o and
3789         dyn-string.o.
3790         (CXX_LIB2SRCS): Remove cp-demangle.c and dyn-string.c.
3791         (cp-demangle.o): Remove target.
3792         (dyn-string.o): Likewise.
3793
3794         * decl.c (grokfndecl): Require that `main' return an `int'.
3795         * mangle.c (write_encoding): Don't mangle return types for
3796         conversion functions.
3797
3798 2000-08-25  Gabriel Dos Reis  <gdr@codesourcery.com>
3799
3800         * error.c (tree_formatting_info): New data type.
3801         (tree_being_formatted): New macro.
3802         (tree_formatting_flags): Likewise.
3803         (put_whitespace): Likewise.
3804         (print_tree_identifier): Likewise.
3805         (print_identifier): Likewise.
3806         (cp_tree_printer, print_function_argument_list, print_declaration,
3807         print_expression, print_function_declaration,
3808         print_function_parameter, print_type, print_cv_qualifier): New
3809         functions.
3810         (init_error): Initialize lang_printer.
3811
3812 2000-08-24  Jason Merrill  <jason@redhat.com>
3813
3814         * typeck.c (build_ptrmemfunc): Just reinterpret if there's no
3815         adjustment necessary.
3816
3817 2000-08-24  Greg McGary  <greg@mcgary.org>
3818
3819         * cp-tree.h (MAIN_NAME_P): Remove macro.
3820
3821 2000-08-24  Gabriel Dos Reis  <gdr@codesourcery.com>
3822
3823         * error.c (print_instantiation_context): Don't forget to flush the
3824         buffer.
3825
3826 2000-08-23  Jason Merrill  <jason@redhat.com>
3827
3828         * typeck.c (build_ptrmemfunc): Save the input pmf.
3829
3830         * method.c (process_modifiers): Use same_type_p.
3831
3832 2000-08-23  Mark Mitchell  <mark@codesourcery.com>
3833
3834         * cp-tree.h (DECL_CLONED_FUNCTION_P): Check DECL_LANG_SPECIFIC.
3835         * mangle.c (write_function_type): Change prototype.
3836         (write_encoding): Don't mangle return types for
3837         constructors or destructors.
3838         (write_type): Adjust call to write_function_type.
3839         * pt.c (instantiate_template): Instantiate alternate entry points
3840         when instantiating the main function.
3841
3842 2000-08-23  Gabriel Dos Reis  <gdr@codesourcery.com>
3843
3844         * error.c (cp_print_error_function): Don't use embedded '\n' in
3845         output_printf.
3846
3847 2000-08-23  Gabriel Dos Reis  <gdr@codesourcery.com>
3848
3849         * decl.c (init_decl_processing): Remove bogus initialization.
3850         * error.c (lang_print_error_function): Restore here.
3851         (init_error): Initialize print_error_function.
3852
3853 2000-08-22  Theodore Papadopoulo  <Theodore.Papadopoulo@sophia.inria.fr>
3854
3855         * decl2.c (arg_assoc): Revert my 2000-08-11 change.
3856
3857 2000-08-22  Gabriel Dos Reis  <gdr@codesourcery.com>
3858
3859         * Makefile.in (error.o): Depends on diagnostic.h
3860
3861         * cp-tree.h (problematic_instantiation_changed,
3862         record_last_problematic_instantiation, current_instantiation,
3863         print_instantiation_context): Declare.
3864         (maybe_print_template_context): Remove.
3865
3866         * decl.c (init_decl_processing): Set print_error_function to NULL.
3867         (lang_print_error_function): Remove, since we're using a new
3868         machinery.
3869
3870         * error.c: #include diagnostic.h
3871         (function_category): New function.
3872         (cp_diagnostic_starter): Likewise.
3873         (cp_diagnostic_finalizer): Likewise.
3874         (cp_print_error_function): Likewise.
3875         (maybe_print_instantiation_context): Likewise.
3876         (print_instantiation_full_context): Likewise.
3877         (print_instantiation_partial_context): Likewise.
3878         (print_instantiation_context): Define.
3879         (init_error): Initialize diagnostic pager and finalizer.
3880
3881         * pt.c (problematic_instantiation_changed): Define.
3882         (record_last_problematic_instantiation): Likewise.
3883         (current_instantiation): Likewise.
3884         (maybe_print_template_context): Remove.
3885         (print_template_context): Likewise.
3886         (current_tinst_level): Make static to reflect Brendan Kehoe's
3887         change of 1995-04-13.
3888         (push_tinst_level): Call print_instantiation_context.
3889
3890 2000-08-21  Nix  <nix@esperi.demon.co.uk>
3891
3892         * lang-specs.h: Do not process -o or run the assembler if
3893         -fsyntax-only.
3894
3895 2000-08-21  Joseph S. Myers  <jsm28@cam.ac.uk>
3896
3897         * decl.c (flag_hosted, flag_noniso_default_format_attributes): New
3898         variables.
3899         * decl2.c (lang_decode_option): Disable gettext attributes for
3900         -ansi.
3901
3902 2000-08-21  Gabriel Dos Reis  <gdr@codesourcery.com>
3903
3904         * lex.c (lang_init_options): Default diagnostic message maximum
3905         length to 80, when line-wrapping.
3906
3907 2000-08-20  Mark Mitchell  <mark@codesourcery.com>
3908
3909         * class.c (build_vtbl_initializer): Clear the entire
3910         vtbl_init_data.  Start keeping track of the functions for which we
3911         have created vcall offsets here.
3912         (dfs_build_vcall_offset_vtbl_entries): Remove.
3913         (build_vcall_offset_vtbl_entries): Reimplement.
3914         (add_vcall_offset_vtbl_entries_r): New function.
3915         (add_vcall_offset_vtbl_entries_1): Likewise.  Tweak logic for
3916         computing when vcall offsets are necessary.
3917
3918 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
3919
3920         * decl.c (member_function_or_else): Use cp_error ... %T.
3921         (grokdeclarator): Likewise.
3922         (start_method): Likewise.
3923         * friend.c (make_friend_class): Use cp_pedwarn ... %T.
3924
3925 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
3926
3927         * decl2.c (grokfield): Set CLASSTYPE_GOT_SEMICOLON on class
3928         TYPE_DECLs.
3929
3930 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
3931
3932         * cp-tree.h (PTRMEM_OK_P): New macro.
3933         (itf_ptrmem_ok): New enumeration value.
3934         * class.c (resolve_address_of_overloaded_function): Add PTRMEM
3935         argument. Diagnose implicit pointer to member.
3936         (instantiate_type): Don't diagnose implicit pointer to member
3937         here. Pass itf_ptrmem_ok if ok. Adjust calls to
3938         resolve_address_of_overloaded_function.
3939         * init.c (build_offset_ref): Set PTRMEM_OK_P.
3940         (resolve_offset_ref): Don't diagnose implicit pointer to member here.
3941         * semantics.c (finish_parenthesized_expr): Clear OFFSET_REFs here.
3942         * typeck.c (build_x_unary_op): Calculate PTRMEM_OK_P.
3943         (build_unary_op): Deal with single non-static member in
3944         microsoft-land.
3945
3946 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
3947
3948         * decl2.c (arg_assoc_type): Cope with TYPENAME_TYPE.
3949
3950 2000-08-18  Nathan Sidwell  <nathan@codesourcery.com>
3951
3952         * cp-tree.h (enum_name_string): Remove prototype.
3953         (report_case_error): Remove prototype.
3954         * cp/typeck2.c (enum_name_string): Remove.
3955         (report_case_error): Remove.
3956         * error.c (dump_expr): Deal with enum values directly.
3957         Correctly negate integer constant.
3958
3959 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
3960
3961         * inc/cxxabi.h (__cxa_vec_new2, __cxa_vec_new3): Declare.
3962         (__cxa_vec_delete2, __cxa_vec_delete3): Declare.
3963         * vec.cc (__cxa_vec_new2, __cxa_vec_new3): Implement.
3964         (__cxa_vec_delete2, __cxa_vec_delete3): Implement.
3965         (__cxa_vec_new): Use __cxa_vec_new2.
3966         (__cxa_vec_delete): Use __cxa_vec_delete2.
3967
3968 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
3969
3970         * vec.cc (__cxa_vec_new): Set "C" linkage.
3971         (__cxa_vec_ctor): Likewise.
3972         (__cxa_vec_cctor): Likewise.
3973         (__cxa_vec_dtor): Likewise.
3974         (__cxa_vec_delete): Likewise.
3975         * inc/cxxabi.h (__cxa_vec_new): Set "C" linkage.
3976         (__cxa_vec_ctor): Likewise.
3977         (__cxa_vec_cctor): Likewise.
3978         (__cxa_vec_dtor): Likewise.
3979         (__cxa_vec_delete): Likewise.
3980
3981 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
3982
3983         * class.c (instantiate_type): Reinstate local variable
3984         deleted in previous change.
3985
3986         * cvt.c (cp_convert_to_pointer): Pass itf_complain, not
3987         itf_no_attributes.
3988
3989 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
3990
3991         * cp-tree.h (instantiate_type_flags): New enumeration.
3992         (instantiate_type): Change parameter.
3993         * class.c (instantiate_type): Adjust prototype. Adjust.
3994         * call.c (standard_conversion): Adjust instantiate_type call.
3995         (reference_binding): Likewise.
3996         (build_op_delete_call): Likewise.
3997         (convert_like_real): Likewise.
3998         * cvt.c (cp_convert_to_pointer): Likewise.
3999         (convert_to_reference): Likewise.
4000         * pt.c (convert_nontype_argument): Likewise.
4001         * typeck.c (build_binary_op): Likewise.
4002         (build_ptrmemfunc): Likewise.
4003         (convert_for_assignment): Likewise.
4004
4005 2000-08-17  Nathan Sidwell  <nathan@codesourcery.com>
4006
4007         * cp-tree.h (CPTR_AGGR_TAG): New global tree node.
4008         (current_aggr): Define.
4009         * decl.c (grokdeclarator): Make sure a friend class is an
4010         elaborated type specifier.
4011         * parse.y (current_aggr): Remove static definition.
4012         (cp_parse_init): Adjust.
4013         (structsp): Clear and restore current_aggr.
4014         (component_decl_list): Clear current_aggr.
4015
4016         * error.c (dump_type, case TYPENAME_TYPE): Don't emit the
4017         aggregate tag on the typename's context.
4018
4019         * pt.c (tsubst_friend_class): Return error_mark_node, if
4020         parms becomes NULL.
4021         (instantiate_class_template): Ignore error_mark_node friend types.
4022
4023 2000-08-14  Nathan Sidwell  <nathan@codesourcery.com>
4024
4025         * cvt.c (warn_ref_binding): New static function, broken out of ...
4026         (convert_to_reference): ... here. Use it.
4027
4028 2000-08-11  Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu>
4029
4030         * parse.y (template_arg): Add rule for template qualified with
4031         global scope.
4032
4033 2000-08-11  Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
4034
4035         * decl2.c (add_function): Reorganize.
4036         (arg_assoc): Do not consider function template decls.
4037
4038 2000-08-11  Jason Merrill  <jason@redhat.com>
4039
4040         * decl.c (lookup_name_real): Don't forget the TYPENAME_TYPE we're
4041         looking inside.
4042
4043 2000-08-11  Nathan Sidwell  <nathan@codesourcery.com>
4044
4045         * cp-tree.h (resolve_scope_to_name): Remove unused prototype.
4046         (lookup_nested_tag): Likewise.
4047
4048         * decl2.c (grokfield): Fix comment to reflect many types of _DECLs
4049         can be produced.
4050
4051 2000-08-11  Nathan Sidwell  <nathan@codesourcery.com>
4052
4053         * parse.y (named_complex_class_head_sans_basetype): Remove
4054         always true if.
4055
4056 2000-08-11  Nathan Sidwell  <nathan@codesourcery.com>
4057
4058         * decl2.c (build_expr_from_tree, case METHOD_CALL_EXPR): Build
4059         explicit TEMPLATE_ID_EXPR args.
4060         (build_expr_from_tree, case CALL_EXPR): Likewise.
4061
4062 2000-08-11  Nathan Sidwell  <nathan@codesourcery.com>
4063
4064         * decl.c (check_tag_decl): Diagnose typename's which don't
4065         declare anything.
4066
4067 2000-08-10  Nathan Sidwell  <nathan@codesourcery.com>
4068
4069         * init.c (build_aggr_init): Reject bogus array initializers
4070         early.
4071
4072 2000-08-09  Nathan Sidwell  <nathan@codesourcery.com>
4073
4074         * rtti.c (build_dynamic_cast_1): Set "C" linkage for new abi
4075         runtime.
4076         * cp/tinfo.cc (__dynamic_cast): Likewise.
4077         * cp/inc/cxxabi.h (__dynamic_cast): Likewise.
4078
4079 2000-08-09  Nathan Sidwell  <nathan@codesourcery.com>
4080
4081         * cvt.c (convert_to_pointer_force): Fix error message when
4082         attempting to cast from ambiguous base.
4083
4084 2000-08-08  Jason Merrill  <jason@redhat.com>
4085
4086         * pt.c (tsubst_aggr_type): Bail if creating the argvec fails.
4087         (tsubst_template_arg_vector): Likewise.
4088
4089         * decl2.c (build_anon_union_vars): Choose the largest field; don't
4090         assume that one will be as large as the union.
4091
4092 2000-08-07  Kazu Hirata  <kazu@hxi.com>
4093
4094         * cp-tree.h (CLASSTYPE_HAS_PRIMARY_BASE_P): Fix a comment typo.
4095         * decl.c (pop_labels): Likewise.
4096
4097 2000-08-04  Jeffrey Oldham  <oldham@codesourcery.com>
4098
4099         * inc/cxxabi.h (__pbase_type_info): Changed member names to match
4100         specifications.
4101         (__pointer_to_member_type_info): Likewise.
4102         (__base_class_info): Likewise.
4103         (__class_type_info): Likewise.
4104         (__si_class_type_info): Likewise.
4105         (__vmi_class_type_info): Likewise.
4106         * tinfo.cc (__si_class_type_info::__do_find_public_src):
4107         Changed member names to match specifications.
4108         (__vmi_class_type_info::__do_find_public_src): Likewise.
4109         (__si_class_type_info::__do_dyncast): Likewise.
4110         (__vmi_class_type_info::__do_dyncast): Likewise.
4111         (__si_class_type_info::__do_upcast): Likewise.
4112         (__vmi_class_type_info::__do_upcast): Likewise.
4113         * tinfo2.cc (__pbase_type_info::__do_catch): Likewise.
4114         (__pbase_type_info::__pointer_catch): Likewise.
4115         (__pointer_type_info::__pointer_catch): Likewise.
4116         (__pointer_to_member_type_info::__pointer_catch): Likewise.
4117
4118 2000-08-04  Zack Weinberg  <zack@wolery.cumb.org>
4119
4120         * Make-lang.in (cc1plus): Depend on $(BACKEND), not stamp-objlist.
4121         * Makefile.in: Add C_OBJS, BACKEND; delete OBJS, OBJDEPS.
4122         (cc1plus): Link with $(BACKEND) and $(C_OBJS).
4123
4124 2000-08-04  Mark Mitchell  <mark@codesourcery.com>
4125
4126         * cp-tree.h (add_method): Change prototype.
4127         * class.c (add_method): Remove FIELDS parameter.  Add ERROR_P.
4128         Don't double the size of the method vector in the error case.
4129         (handle_using_decl): Adjust call to add_method.
4130         (add_implicitly_declared_members): Likewise.
4131         (clone_function_decl): Likewise.
4132         * decl2.c (check_classfn): Likewise.
4133         * semantics.c (finish_member_declaration): Likewise.
4134
4135 2000-08-04  Joseph S. Myers  <jsm28@cam.ac.uk>
4136
4137         * decl.c (flag_isoc94): New variable.
4138
4139 2000-08-02  Jason Merrill  <jason@redhat.com>
4140
4141         * pt.c (do_type_instantiation): Add complain parm; don't complain
4142         if called recursively.
4143         * cp-tree.h, parse.y: Adjust.
4144
4145 2000-08-02  Zack Weinberg  <zack@wolery.cumb.org>
4146
4147         * decl2.c: Silently ignore -Wstrict-prototypes; warn about
4148         -Wno-strict-prototypes.
4149
4150         * g++spec.c: Adjust type of second argument to
4151         lang_specific_driver, and update code as necessary.
4152
4153         * cp-tree.h: Don't prototype min_precision here.
4154         (my_friendly_assert): Cast expression to void.
4155         * semantics.c (do_poplevel): Initialize scope_stmts.
4156
4157 2000-08-02  Mark Mitchell  <mark@codesourcery.com>
4158
4159         * cp-tree.h (DECL_NEEDED_P): Tweak.
4160
4161 2000-07-28  Jason Merrill  <jason@redhat.com>
4162
4163         * lang-specs.h: Use %i in rule for .ii files.
4164
4165 2000-07-31  Zack Weinberg  <zack@wolery.cumb.org>
4166
4167         * lang-specs.h: Rename cpp to cpp0 and/or tradcpp to tradcpp0.
4168
4169 2000-07-30  Mark Mitchell  <mark@codesourcery.com>
4170
4171         Allow indirect primary bases.
4172         * cp-tree.h (struct lang_type): Remove vfield_parent.  Add
4173         primary_base.
4174         (CLASSTYPE_VFIELD_PARENT): Remove.
4175         (CLASSTYPE_PRIMARY_BINFO): Reimplement.
4176         (BINFO_PRIMARY_BINFO): Remove.
4177         (CLASSTYPE_HAS_PRIMARY_BASE_P): Reimplement.
4178         (BINFO_VBASE_PRIMARY_P): Likewise.
4179         (BINFO_PRIMARY_BASE_OF): New macro.
4180         (BINFO_INDIRECT_PRIMARY_P): Likewise.
4181         (get_primary_binfo): New function.
4182         * decl.c (lang_mark_tree): Make lang_type::primary_base.
4183         * class.c (vcall_offset_data_s): Rename to ...
4184         (vtbl_init_data_s): ... this.  Rename primary_p to primary_vtbl_p,
4185         and add ctor_vtbl_p.
4186         (get_derived_offset): Use get_primary_binfo.
4187         (dfs_mark_primary_bases): Adjust handling of virtual primary
4188         bases.
4189         (mark_primary_bases): Likewise.
4190         (set_primary_base): Take a binfo, not an integer, as a
4191         representation of the primary base.
4192         (indirect_primary_base_p): Remove.
4193         (determine_primary_base): Adjust for indirect primary bases.
4194         (dfs_find_final_overrider): Fix typo in coment.
4195         (update_vtable_entry_for_fn): Use get_primary_binfo.
4196         (layout_nonempty_base_or_field): Tweak.
4197         (build_base_fields): Adjust for new primary base semantics.
4198         (dfs_propagate_binfo_offsets): Remove.
4199         (propagate_binfo_offsets): Rewrite.
4200         (dfs_set_offset_for_shared_vbases): Remove.
4201         (layout_virtual_bases): Don't use it.
4202         (layout_class_type): Set CLASSTYPE_SIZE correctly under the new
4203         ABI.
4204         (finish_struct_1): Set CLASSTYPE_PRIMARY_BINFO, not
4205         CLASSTYPE_VFIELD_PARENT.
4206         (dfs_get_primary_binfo): New function.
4207         (get_primary_binfo): Likewise.
4208         (dump_class_hierarchy_r): Tweak printing of primary bases.
4209         (build_vtbl_initializer): Fix typo in comments.  Use
4210         vtbl_init_data.
4211         (build_vcall_and_vbase_vtbl_entries): Likewise.
4212         (build_vbaes_offset_vtbl_entries): Likewise.
4213         (dfs_build_vcall_offset_vtbl_entries): Adjust setting of
4214         BV_VCALL_INDEX to handle indirect primary bases.
4215         (build_vcall_offset_vtbl_entries): Use vtbl_init_data.
4216         (build_rtti_vtbl_entries): Likewise.
4217         * search.c (get_shared_vbase_if_not_primary): Tweak.
4218         (find_vbase_instance): Likewise.
4219         (binfo_for_vtable): Simplify.
4220         * tree.c (unshare_base_binfos): Clear BINFO_PRIMARY_BASE_OF.
4221         (make_binfo): Make it have 11 entries.
4222
4223 2000-07-30  Alex Samuel  <samuel@codesourcery.com>
4224
4225         * mangle.c (DECL_TEMPLATE_ID_P): Remove.
4226         (CLASSTYEP_TEMPLATE_ID_P): Check template info, and context when
4227         ascertaining primaryness.
4228         (G): Remove template_args.
4229         (decl_is_template_id): New function.
4230         (write_encoding): Use decl_is_template_id.
4231         (write_name): Likewise.  Handle type_decls.  Get main variant of
4232         type decls.
4233         (write_nested_name): Likewise.
4234         (write_prefix): Likewise.
4235         (write_template_prefix): Likewise.
4236         (write_special_name_constructor): Remove defunct production from
4237         comment.
4238         (write_bare_function_type): Remove comment about absent parameter.
4239         (write_template_template_arg): Add missing grammar production to
4240         comment.
4241
4242 2000-07-27  Jason Merrill  <jason@redhat.com>
4243
4244         * decl.c (duplicate_decls): If common_type produces a non-typedef
4245         type for a typedef, just use the old type.
4246
4247 2000-07-27  Mark Mitchell  <mark@codesourcery.com>
4248
4249         * cp-tree.h (function_depth): Declare.
4250         (verify_stmt_tree): Likewise.
4251         (find_tree): Likewise.
4252         * decl.c (function_depth): Give it external linkage.
4253         * optimize.c (optimize_function): Increment and decrement it.
4254         * tree.c (verify_stmt_tree_r): New function.
4255         (verify_stmt_tree): Likewise.
4256         (find_tree_r): Likewise.
4257         (find_tree): Likewise.
4258
4259 2000-07-27  Jason Merrill  <jason@redhat.com>
4260
4261         * pt.c (for_each_template_parm_r, case RECORD_TYPE): Use
4262         TYPE_PTRMEMFUNC_P.
4263         * cp-tree.h (TYPE_TEMPLATE_INFO): Check for TYPE_LANG_SPECIFIC.
4264
4265 2000-07-26  Mark Mitchell  <mark@codesourcery.com>
4266
4267         * decl.c (start_cleanup_fn): Mark the function as `inline'.
4268         * decl2.c (get_guard): Call cp_finish_decl, not
4269         rest_of_decl_compilation, for local guards.
4270         * lex.c (do_identifier): Remove unused variable.
4271
4272 Wed Jul 26 15:05:51 CEST 2000   Marc Espie <espie@cvs.openbsd.org>
4273
4274         * parse.y:  Add missing ';'.
4275
4276 2000-07-26  Mark Mitchell  <mark@codesourcery.com>
4277
4278         * parse.y (empty_parms): Use `()', not `(...)', when in the scope
4279         of `extern "C++"'.
4280
4281 2000-07-25  Nathan Sidwell  <nathan@codesourcery.com>
4282
4283         Kill strict_prototype. Backwards compatibility only for
4284         non NO_IMPLICIT_EXTERN_C systems.
4285         * cp-tree.h (flag_strict_prototype): Remove.
4286         (strict_prototype): Remove.
4287         (strict_prototypes_lang_c, strict_prototypes_lang_cplusplus): Remove.
4288         * decl.c (maybe_push_to_top_level): Adjust.
4289         (pop_from_top_level): Adjust.
4290         (decls_match): Only allow sloppy parm matching for ancient
4291         system headers.
4292         (init_decl_processing): Adjust.
4293         (grokdeclarator): Adjust.
4294         * decl2.c (flag_strict_prototype): Remove.
4295         (strict_prototype): Remove.
4296         (strict_prototypes_lang_c, strict_prototypes_lang_cplusplus): Remove.
4297         (lang_f_options): Remove "strict-prototype".
4298         (unsupported-options): Add "strict-prototype".
4299         * lex.c (do_identifier): Adjust.
4300         (do_scoped_id): Adjust.
4301         * parse.y (empty_parms): Adjust.
4302         * class.c (push_lang_context): Adjust.
4303         (pop_lang_context): Adjust.
4304         * typeck.c (comp_target_parms): Adjust.
4305
4306 2000-07-25  Nathan Sidwell  <nathan@codesourcery.com>
4307
4308         * decl.c (poplevel): Deal with anonymous variables at for scope.
4309         (maybe_inject_for_scope_var): Likewise.
4310
4311 2000-07-25  Zack Weinberg  <zack@wolery.cumb.org>
4312
4313         * decl.c: Remove all signal handling code, now done in toplev.c.
4314
4315 2000-07-23  Mark Mitchell  <mark@codesourcery.com>
4316
4317         * decl.c (make_rtl_for_nonlocal_decl): Rework.
4318
4319         * pt.c (lookup_template_class): Ensure that TYPE_CONTEXT is set
4320         correctly.
4321
4322 2000-07-20  Zack Weinberg  <zack@wolery.cumb.org>
4323
4324         * cp-tree.h: Use __FUNCTION__ not __PRETTY_FUNCTION__.
4325         Define my_friendly_assert and my_friendly_abort as macros
4326         which may call friendly_abort.  Prototype friendly abort, not
4327         my_friendly_abort or my_friendly_assert.
4328         * decl.c (signal_catch): Report the signal caught in the error
4329         message.  Call fatal directly.
4330         * typeck2.c (ack, my_friendly_assert): Delete.
4331         (my_friendly_abort): Rename to friendly_abort.  Expect file,
4332         line, and function parameters.  Report the abort code, then
4333         call fancy_abort.  Do not mask an abort if errors have
4334         already occurred.
4335
4336 2000-07-18  Nathan Sidwell  <nathan@codesourcery.com>
4337
4338         * typeck.c (comp_target_parms): Remove obsolete parameter.
4339         (comp_target_types): Adjust.
4340
4341 2000-07-17  Jason Merrill  <jason@redhat.com>
4342
4343         * typeck.c (mark_addressable): Never set TREE_USED.
4344         * call.c (build_call): Don't abort on calls to library functions
4345         that have been declared normally.
4346
4347         * typeck.c (build_binary_op): Fix grammar in warning.
4348
4349         * exception.cc (__eh_free): Fix prototype.
4350
4351         * decl2.c (finish_decl_parsing): Handle TEMPLATE_ID_EXPR.
4352
4353         * decl.c (pushdecl): Handle seeing an OVERLOAD in
4354         IDENTIFIER_NAMESPACE_VALUE.
4355
4356 2000-07-16  Mark Mitchell  <mark@codesourcery.com>
4357
4358         * cp-tree.h (THUNK_VCALL_OFFSET): Update documentation.
4359         * method.c (use_thunk): Correct handling of vcall offsets.
4360
4361 2000-07-14  Zack Weinberg  <zack@wolery.cumb.org>
4362
4363         * .cvsignore: parse.h and parse.c have no cp- prefix.
4364
4365 2000-07-13  Mark Mitchell  <mark@codesourcery.com>
4366
4367         * .cvsignore: New file.
4368
4369 2000-07-13  Zack Weinberg  <zack@wolery.cumb.org>
4370
4371         * lang-specs.h: Use the new named specs.  Remove unnecessary braces.
4372
4373 2000-07-12  Mark Mitchell  <mark@codesourcery.com>
4374
4375         * Makefile.in ($(PARSE_H)): Depend directly on parse.y.
4376         * parse.c: Remove.
4377         * parse.h: Likewise.
4378
4379 2000-07-11  Mark Mitchell  <mark@codesourcery.com>
4380
4381         * class.c (layout_class_type): Add pointers to virtual bases after
4382         base classes under the old ABI.
4383
4384 2000-07-10  Benjamin Chelf  <chelf@codesourcery.com>
4385
4386         * semantics.c (finish_for_stmt): Remove call to emit_line_note.
4387         (finish_continue_stmt): Likewise.
4388         (begin_for_stmt): Remove call to note_level_for_for.
4389         (finish_goto_stmt): Change call from build_min_nt
4390         to build_stmt.
4391         (finish_expr_stmt): Likewise.
4392         (begin_if_stmt): Likewise.
4393         (begin_while_stmt): Likewise.
4394         (finish_while_stmt): Likewise.
4395         (finish_return_stmt): Likewise.
4396         (begin_for_stmt): Likewise.
4397         (finish_for_stmt): Likewise.
4398         (finish_break_stmt): Likewise.
4399         (begin_switch_stmt): Likewise.
4400         (finish_case_label): Likewise.
4401         (genrtl_try_block): Likewise.
4402         (begin_try_block): Likewise.
4403         (begin_handler): Likewise.
4404         (begin_compound_stmt): Likewise.
4405         (finish_asm_stmt): Likewise.
4406         (finish_label_stmt): Likewise.
4407         (add_decl_stmt): Likewise.
4408         (finish_subobject): Likewise.
4409         (finish_decl_cleanup): Likewise.
4410         (finish_named_return_value): Likewise.
4411         (setup_vtbl_ptr): Likewise.
4412         (add_scope_stmt): Likewise.
4413         * decl.c (finish_constructor_body): Likewise.
4414         (finish_destructor_body): Likewise.
4415         * optimize.c (copy_body_r): Likewise.
4416         (initialize_inlined_parameters): Likewise.
4417         (declare_return_variable): Likewise.
4418         (expand_call_inline): Likewise.
4419
4420 2000-07-10  Jakub Jelinek  <jakub@redhat.com>
4421
4422         * semantics.c (expand_body): Sync interface information
4423         at the end of function body expansion.
4424
4425 2000-07-09  Jason Merrill  <jason@redhat.com>
4426
4427         * init.c (build_new_1): Bail early if the call to new fails.
4428
4429         * decl.c (compute_array_index_type): Check specifically for
4430         an INTEGER_CST, not just TREE_CONSTANT.
4431
4432         * decl.c (duplicate_decls): Don't call duplicate_decls on
4433         the DECL_TEMPLATE_RESULT.
4434         (decls_match): Return 0 if the DECL_TEMPLATE_RESULTs have different
4435         codes.
4436
4437         * error.c (dump_template_bindings): Don't crash if we had an
4438         invalid argument list.
4439
4440         * typeck.c (c_expand_start_case): Do narrowing here.
4441         * semantics.c (finish_switch_cond): Not here.
4442
4443 2000-07-09  Hidvegi Zoli  <hzoli@austin.ibm.com>
4444
4445         * parse.y (asm_clobbers): Do string concatenation.
4446
4447 2000-07-09  Mark Mitchell  <mark@codesourcery.com>
4448
4449         * decl.c (pushtag): Don't put local classes in template functions
4450         on the local_classes list.
4451
4452 2000-07-04  Scott Snyder  <snyder@fnal.gov>
4453
4454         * decl2.c (get_guard): Add missing return for old ABI local
4455         variable case.
4456
4457 2000-07-09  Mark Mitchell  <mark@codesourcery.com>
4458
4459         * cp-tree.h (char_type_p): New function.
4460         * decl.c (init_decl_processing): Don't initialize
4461         signed_wchar_type_node or unsigned_wchar_type_node.
4462         (complete_array_type): Handle brace-enclosed string-constants.
4463         * rtti.c (emit_support_tinfos): Remove #if 0'd code.
4464         * tree.c (char_type_p): New function.
4465         * typeck2.c (digest_init): Use char_type_p.
4466
4467 2000-07-06  Nathan Sidwell  <nathan@codesourcery.com>
4468
4469         * pt.c (tsubst): Don't layout type, if it's error_mark.
4470
4471 2000-07-06  Nathan Sidwell  <nathan@codesourcery.com>
4472
4473         * pt.c (instantiate_pending_templates): Reset template level.
4474
4475 2000-07-05  Jason Merrill  <jason@redhat.com>
4476
4477         * call.c (joust): Don't complain about `operator char *()' beating
4478         `operator const char *() const'.
4479
4480 2000-07-04  scott snyder  <snyder@fnal.gov>
4481             Jason Merrill  <jason@redhat.com>
4482
4483         * repo.c (repo_get_id): Handle the case where a class with virtual
4484         bases has a null TYPE_BINFO_VTABLE.
4485
4486 2000-07-04  Kevin Buhr  <buhr@stat.wisc.edu>
4487             Jason Merrill  <jason@redhat.com>
4488
4489         * parse.y (member_init): Just pass in the type.
4490         * init.c (expand_member_init): Handle getting a type.
4491
4492 2000-07-04  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
4493             Jason Merrill  <jason@redhat.com>
4494
4495         * decl.c (finish_function): Warn if a function has no return
4496         statement.
4497         Suggested by Andrew Koenig.
4498         * typeck.c (check_return_expr): Do set current_function_returns_value
4499         if we got an error_mark_node.
4500
4501 2000-07-03  Nathan Sidwell  <nathan@codesourcery.com>
4502
4503         * decl2.c (push_decl_namespace): Push the original namespace.
4504
4505 2000-07-03  Nathan Sidwell  <nathan@codesourcery.com>
4506
4507         * pt.c (instantiate_class_template): Set CLASSTYPE_VBASECLASSES.
4508         * semantics.c (begin_class_definition): Clear it.
4509
4510 2000-07-02  Benjamin Chelf  <chelf@codesourcery.com>
4511
4512         * cp-tree.h (genrtl_goto_stmt): Remove declaration.
4513         (genrtl_expr_stmt): Likewise.
4514         (genrtl_decl_stmt): Likewise.
4515         (genrtl_if_stmt): Likewise.
4516         (genrtl_while_stmt): Likewise.
4517         (genrtl_do_stmt): Likewise.
4518         (genrtl_return_stmt): Likewise.
4519         (genrtl_for_stmt): Likewise.
4520         (genrtl_break_stmt): Likewise.
4521         (genrtl_continue_stmt): Likewise.
4522         (genrtl_scope_stmt): Likewise.
4523         (genrtl_switch_stmt): Likewise.
4524         (genrtl_case_label): Likewise.
4525         (genrtl_begin_compound_stmt): Likewise.
4526         (genrtl_finish_compound_stmt): Likewise.
4527         (genrtl_compound_stmt): Likewise.
4528         (genrtl_asm_stmt): Likewise.
4529
4530         * init.c (begin_init_stmts): Remove call to
4531         genrtl_begin_compound_stmt.
4532         (finish_init_stmts): Remove call to genrtl_finish_compound_stmt.
4533
4534         * semantics.c (lang_expand_stmt): Changed call to
4535         genrtl_compound_stmt to ignore return value.
4536
4537 2000-07-02  Mark Mitchell  <mark@codesourcery.com>
4538
4539         * mangle.c (canonicalize_for_substitution): Return the canonical
4540         variant of a type.
4541
4542         * decl.c (duplicate_decls): Preserve DECL_ORIGINAL_TYPE for a
4543         TYPE_DECL.
4544         * typeck.c (commonparms): Remove obstack manipulations.
4545
4546 2000-07-01  Benjamin Chelf  <chelf@codesourcery.com>
4547
4548         * Make-lang.in (cc1plus$(exeext)): Added c-semantics.o.
4549
4550         * Makefile.in (OBJS): Added ../c-semantics.o.
4551         (OBJDEPS): Likewise.
4552
4553         * cp-tree.h (TREE_LANG_FLAG_?): Moved common documentation to
4554         ../c-common.h.
4555         (struct stmt_tree): Added comment.
4556         (current_function_name_declared): Removed.
4557         (stmts_are_full_exprs_p): Likewise.
4558         (genrtl_do_pushlevel): Likewise.
4559         (genrtl_clear_out_block): Likewise.
4560         (COMPOUND_STMT_NO_SCOPE): Moved to ../c-common.h.
4561         (DECL_ANON_UNION_ELEMS): Likewise.
4562         (emit_local_var): Likewise.
4563         (make_rtl_for_local_static): Likewise.
4564         (do_case): Likewise.
4565         (expand_stmt): Likewise.
4566         (genrtl_decl_cleanup): Likewise.
4567         (c_expand_asm_operands): Likewise.
4568         (c_expand_return): Likewise.
4569         (c_expand_start_case): Likewise.
4570
4571         * decl.c (make_rtl_for_local_static): Moved to c-semantics.c.
4572         (emit_local_var): Likewise.
4573         (initialize_local_var): Change reference to
4574         stmts_are_full_exprs_p to call to stmts_are_full_exprs_p().
4575         Change reference to stmts_are_full_exprs_p to
4576         current_stmt_tree->stmts_are_full_exprs_p.
4577         (push_cp_function_context): Likewise.
4578
4579         * expect.c (expand_throw): Change reference to
4580         stmts_are_full_exprs_p.
4581
4582         * init.c (build_aggr_init): Change reference to
4583         stmts_are_full_exprs_p.
4584         (build_vec_init): Likewise.
4585
4586         * optimize.c (maybe_clone_body): Change reference to
4587         current_function_name_declared to
4588         cp_function_chain->name_declared.
4589
4590         * pt.c (instantiate_decl): Change reference to
4591         current_function_name_declared to
4592         cp_function_chain->name_declared.
4593
4594         * semantics.c (expand_cond): Moved declaration to c-common.h.
4595         (genrtl_do_pushlevel): Moved to c-semantics.c.
4596         (genrtl_clear_out_block): Likewise.
4597         (genrtl_goto_stmt): Likewise.
4598         (genrtl_expr_stmt): Likewise.
4599         (genrtl_decl_stmt): Likewise.
4600         (gerntl_if_stmt): Likewise.
4601         (genrtl_while_stmt): Likewise.
4602         (genrtl_do_stmt): Likewise.
4603         (genrtl_return_stmt): Likewise.
4604         (genrtl_for_stmt): Likewise.
4605         (genrtl_break_stmt): Likewise.
4606         (genrtl_continue_stmt): Likewise.
4607         (genrtl_scope_stmt): Likewise.
4608         (genrtl_switch_stmt): Likewise.
4609         (genrtl_case_label): Likewise.
4610         (genrtl_begin_compound_stmt): Likewise.
4611         (genrtl_finish_compound_stmt): Likewise.
4612         (genrtl_compound_stmt): Likewise.
4613         (genrtl_asm_stmt): Likewise.
4614         (genrtl_decl_cleanup): Likewise.
4615         (expand_cond): Likewise.
4616         (expand_stmt): Renamed to ...
4617         (lang_expand_stmt): ... this.
4618         (lang_expand_expr_stmt): Initialize.
4619         (set_current_function_name_declared): Likewise.
4620         (stmts_are_full_exprs_p): Likewise.
4621         (current_function_name_declared): Likewise.
4622         (anon_aggr_type_p): Likewise.
4623         (do_poplevel): Change reference to
4624         stmts_are_full_exprs_p to call to stmts_are_full_exprs_p().
4625         Change reference to stmts_are_full_exprs_p to
4626         current_stmt_tree->stmts_are_full_exprs_p.
4627         (add_tree): Likewise.
4628         (finish_expr_stmt): Likewise.
4629         (prep_stmt): Likewise.
4630         (lang_expand_stmt): Likewise.
4631         (begin_compound_stmt): Change reference to
4632         current_function_name_declared to
4633         cp_function_chain->name_declared and call to
4634         current_function_name_declared().
4635         (setup_vtbl_ptr): Likewise.
4636         (genrtl_do_poplevel): Removed.
4637
4638 2000-06-30  Jason Merrill  <jason@redhat.com>
4639
4640         * init.c (init_init_processing): Go back to aligning like
4641         double_type_node for old ABI.
4642         (get_cookie_size): Make cookie larger if we get a type that needs
4643         more alignment.
4644         (build_vec_delete): Call it.
4645
4646         * typeck.c (qualify_type_recursive): New fn.
4647         (composite_pointer_type): Use it.
4648         (build_binary_op): Use composite_pointer_type.
4649
4650 2000-06-24  Carlos O'Ryan  <coryan@cs.wustl.edu>
4651             Jason Merrill  <jason@redhat.com>
4652
4653         * typeck.c (check_return_expr): Don't complain about returning
4654         NULL from operator new if -fcheck-new.
4655         * cp-tree.h: Declare flag_check_new here.
4656         * init.c: Not here.
4657
4658 2000-06-28  Alex Samuel  <samuel@codesourcery.com>
4659
4660         * mangle.c (find_substitution): Use same_type_p.
4661         (write_encoding): Don't check for substitutions.
4662
4663 2000-06-30  Nathan Sidwell  <nathan@codesourcery.com>
4664
4665         * parse.y (expr_no_comma_rangle): New non-terminal.
4666         (template_parm): Use it for default parameter case.
4667         (template_arg): Use it.
4668         (expr_no_commas): Remove commented out undefined extensions.
4669         * Makefile.in (CONFLICTS): Adjust to 33 s/r & 48 r/r.
4670         * parse.h, parse.c: Rebuilt.
4671
4672 2000-06-30  Mark Mitchell  <mark@codesourcery.com>
4673
4674         * semantics.c (genrtl_asm_stmt): Don't decay input operands here.
4675         (finish_asm_stmt): Do it here, instead.
4676
4677         * cp-tree.h (ridpointers): Don't declare.
4678         * decl.c (record_builtin_type): Use CP_RID_MAX instead of RID_MAX.
4679         (record_builtin_java_type): Likewise.
4680         (init_decl_processing): Likewise.
4681         * lex.c: Move inclusion of lex.h.
4682         (ridpointers): Don't define.
4683         (init_parse): Initialize ripdointers.  Use CP_RID_MAX instead of
4684         RID_MAX.
4685         * lex.h (enum rid): Rename to ...
4686         (enum cp_rid): ... this.
4687         (ridpointers): Don't declare.
4688         * parse.y: Move inclusion of lex.h.
4689         * parse.c: Regenerated.
4690         * spew.c: Move inclusion of lex.h.
4691
4692         * cp-tree.h (struct language_function): Remove temp_name_counter.
4693         (temp_name_counter): Remove.
4694         (get_temp_name): Change prototype.
4695         (get_guard): New function.
4696         (get_guard_cond): Likewise.
4697         (set_guard): Likewise.
4698         * cvt.c (build_up_reference): Adjust call to get_temp_name.
4699         * decl.c (expand_static_init): Use get_guard and friends to
4700         implement guard variables.
4701         * decl2.c (get_temp_name): Assume that the variables created are
4702         always static.
4703         (get_sentry): Rename to ...
4704         (get_guard): ... this.  Implement new ABI guard variables.
4705         (get_guard_bits): New function.
4706         (get_guard_cond): Likewise.
4707         (set_guard): Likewise.
4708         (start_static_initialization_or_destruction): Use them.
4709         (do_static_initialization): Replace sentry with guard throughout.
4710         (do_static_destruction): Likewise.
4711         * init.c (create_temporary_var): Add comment.
4712
4713 2000-06-28  Alex Samuel  <samuel@codesourcery.com>
4714
4715         * mangle.c (find_substitution): Use same_type_p.
4716         (write_encoding): Don't check for substitutions.
4717
4718 2000-06-30  Nathan Sidwell  <nathan@codesourcery.com>
4719
4720         * parse.y (expr_no_comma_rangle): New non-terminal.
4721         (template_parm): Use it for default parameter case.
4722         (template_arg): Use it.
4723         (expr_no_commas): Remove commented out undefined extensions.
4724         * Makefile.in (CONFLICTS): Adjust to 33 s/r & 48 r/r.
4725         * parse.h, parse.c: Rebuilt.
4726
4727 2000-06-29  Mark Mitchell  <mark@codesourcery.com>
4728
4729         * cp-tree.h (flag_const_strings): Remove.
4730         (warn_parentheses): Likewise.
4731         (warn_format): Likewise.
4732         (common_type): Likewise.
4733         (default_conversion): Likewise.
4734         (build_binary_op): Likewise.
4735         (cp_build_binary_op): New macro.
4736         * call.c (build_new_op): Use cp_build_binary_op instead of
4737         build_binary_op.
4738         * class.c (build_vtable_entry_ref): Likewise.
4739         * decl.c (expand_static_init): Likewise.
4740         (compute_array_index_type): Likewise.
4741         (build_enumerator): Likewise.
4742         * decl2.c (delete_sanity): Likewise.
4743         (start_static_initialization_or_destruction): Likewise.
4744         * error.c (dump_type_suffix): Likewise.
4745         * init.c (resolve_offset_ref): Likewise.
4746         (build_new): Likewise.
4747         (build_new_1): Likewise.
4748         (build_vec_delete_1): Likewise.
4749         (build_vec_init): Likewise.
4750         (build_delete): Likewise.
4751         * rtti.c (synthesize_tinfo_fn): Likewise.
4752         (synthesize_tinfo_var): Likewise.
4753         * search.c (expand_upcast_fixups): Likewise.
4754         (fixup_all_virtual_upcast_offsets): Likewise.
4755         * typeck.c (build_array_ref): Likewise.
4756         (get_member_function_from_ptrfunc): Likewise.
4757         (build_binary_op): Add parameter.
4758         (pointer_int_sum): Use cp_build_binary_op.
4759         (pointer_diff): Likewise.
4760         (build_modify_expr): Likewise.
4761         (get_delta_difference): Likewise.
4762         (build_ptrmemfunc): Likewise.
4763
4764 2000-06-29  Nathan Sidwell  <nathan@codesourcery.com>
4765
4766         * cp-tree.h (SET_DECL_ARTIFICIAL): Remove.
4767         * decl.c (create_implicit_typedef): Adjust.
4768         * decl2.c (build_artificial_parm): Adjust.
4769         * method.c (implicitly_declare_fn): Adjust.
4770         * pt.c (push_inline_template_parms_recursive): Adjust.
4771         (process_template_parm): Adjust.
4772         (overloaded_template_name): Adjust.
4773         * semantics.c (finish_template_template_parm): Adjust.
4774
4775 2000-06-28  Mark Mitchell  <mark@codesourcery.com>
4776
4777         * cp-tree.h (CLEAR_BINFO_NEW_VTABLE_MARKED): Remove.
4778         * class.c (update_vtable_entry_for_fn): Correct logic for deciding
4779         where to emit thunks.
4780         (build_vtt): Adjust call to build_vtt_inits.
4781         (build_vtt_inits): Add parameter to indicate whether or not
4782         sub-VTTs for virtual bases should be included.  Adjust handling of
4783         construction vtables.
4784         (get_matching_base): New function.
4785         (dfs_build_vtt_inits): Rename to ...
4786         (dfs_build_secondary_vptr_vtt_inits): Adjust handling of
4787         construction vtables.
4788         (dfs_fixup_binfo_vtbls): Likewise.
4789         (build_ctor_vtbl_groups): Build construction vtables for virtual
4790         bases, too.
4791         (accumulate_vtbl_inits): Tweak logic for deciding whether or not
4792         to build construction vtbls.
4793         (dfs_accumulate_vtbl_inits): Adjust handling of
4794         construction vtables.
4795
4796         * pt.c (tsubst, case TEMPLATE_TEMPLATE_PARM): Handle cv-qualified
4797         types correctly.
4798
4799 2000-06-27  Mark Mitchell  <mark@codesourcery.com>
4800
4801         * decl.c (grokfndecl): Set DECL_CONTEXT for static functions too.
4802
4803 2000-06-26  Nathan Sidwell  <nathan@codesourcery.com>
4804
4805         * search.c (hides): Remove.
4806         (is_subobject_of_p): Add most_derived parameter. Use
4807         CANONICAL_BINFO.
4808         (lookup_field_queue_p): Adjust.
4809         (lookup_field_r): Adjust.
4810
4811 2000-06-26  Nathan Sidwell  <nathan@codesourcery.com>
4812
4813         * decl2.c (handle_class_head): Bash typedefs to the type's main
4814         decl.
4815
4816 2000-06-25  Mark Mitchell  <mark@codesourcery.com>
4817
4818         * cp-tree.h (genrtl_begin_stmt_expr): Rename to ...
4819         (begin_global_stmt_expr): ... this.
4820         (genrtl_finish_stmt_expr): Rename to ...
4821         (finish_global_stmt_expr): ... this.
4822         * init.c (begin_init_stmts): Adjust calls.
4823         (finish_init_stmts): Likewise.
4824         * semantics.c (genrtl_begin_stmt_expr): Rename to ...
4825         (begin_global_stmt_expr): ... this.
4826         (genrtl_finish_stmt_expr): Rename to ...
4827         (finish_global_stmt_expr): ... this.
4828
4829 2000-06-25 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
4830
4831         * search.c (lookup_member): Fix typo in comment.
4832
4833 2000-06-24  Jason Merrill  <jason@redhat.com>
4834
4835         * decl.c (pushdecl): Don't set DECL_CONTEXT from current_namespace.
4836         (push_namespace): Set DECL_CONTEXT for a new NAMESPACE_DECL.
4837
4838 2000-06-24  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
4839
4840         * parse.y (complex_direct_notype_declarator): Support global_scope.
4841         * Makefile.in: Adjust conflict count.
4842
4843 2000-06-23  Kriang Lerdsuwanakij <lerdsuwa@scf.usc.edu>
4844
4845         * parse.y (template_arg): Convert TEMPLATE_DECL
4846         that is a template template paramter to
4847         TEMPLATE_TEMPLATE_PARM here.
4848
4849         * cp-tree.def (TEMPLATE_TEMPLATE_PARM): Adjust comment.
4850         * cp-tree.h (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): New macro.
4851         (copy_template_template_parm): Adjust prototype.
4852         * decl.c (grokdeclarator): Remove dead code.
4853         * pt.c (process_template_parm): Tidy.
4854         (lookup_template_class): Construct nodes in
4855         copy_template_template_parm.
4856         (tsubst): Pass TEMPLATE_DECL rather than IDENTIFIER_NODE to
4857         lookup_template_class.  Use TYPE_TI_TEMPLATE.
4858         * tree.c (copy_template_template_parm): Add NEWARGS
4859         parameter.
4860         (mapcar): Adjust call to copy_template_template_parm.
4861         * typeck.c (comptypes): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL.
4862         * method.c (build_template_template_parm_names): Change error
4863         code to avoid compilation warning.
4864
4865         * gxxint.texi: Document template template parameter
4866         name mangling.
4867
4868 2000-06-21  Alex Samuel  <samuel@codesourcery.com>
4869
4870         * Make-lang.in (CXX_LIB2FUNCS): Add cp-demangle.o and dyn-string.o.
4871         (CXX_LIB2SRCS): Add cp-demangle.c and dyn-string.c.
4872         (cp-demangle.o): New rule.
4873         (dyn-string.o): Likewise.
4874         * inc/cxxabi.h (__cxa_demangle): New declaration.
4875
4876 2000-06-22  Mark Mitchell  <mark@codesourcery.com>
4877
4878         * cp-tree.h (BV_USE_VCALL_INDEX_P): New macro.
4879         (BV_GENERATE_THUNK_WITH_VTABLE_P): Likewise.
4880         (lang_decl_flags): Add generate_with_vtable_p.  Make vcall_offset
4881         a tree, not an int.
4882         (THUNK_GENERATE_WITH_VTABLE_P): New macro.
4883         (make_thunk): Change prototype.
4884         (emit_thunk): Rename to use_thunk.
4885         (mangle_thunk): Change prototype.
4886         * class.c (get_derived_offset): Simplify.
4887         (copy_virtuals): Clear BV_USE_VCALL_INDEX_P and
4888         BV_GENERATE_THUNK_WITH_VTABLE_P.
4889         (build_primary_vtable): Simplify.
4890         (add_virtual_function): Use BV_FN, rather than TREE_VALUE.
4891         (dfs_find_base): Remove.
4892         (update_vtable_entry_for_fn): Correct bug in finding the base
4893         where a virtual function was first declared.  Figure out whether
4894         or not to emit a vcall-thunk with the vtables in which it appears.
4895         Correct logic for deciding whether to use an ordinary thunk, or a
4896         vcall thunk.
4897         (finish_struct_1): Remove unnecssary code.
4898         (build_vtbl_initializer): Use ssize_int for the running counter of
4899         negative indices.
4900         (build_vtbl_initializer): Only use vcall thunks where necessary.
4901         Mark thunks as needing to be emitted with their vtables, or not.
4902         (build_vbase_offset_vtbl_entries): Adjust for use of ssize_int in
4903         indices.  Use size_binop.
4904         (dfs_build_vcall_offset_vtbl_entries): Don't rely on
4905         BINFO_PRIMARY_MARKED_P here.  Use BV_FN consistently.  Use
4906         size_binop.
4907         (build_rtti_vtbl_entries): Adjust call to build_vtable_entry.
4908         (build_vtable_entry): Mark thunks as needing to be emitted with
4909         their vtables, or not.
4910         * decl.c (lang_mark_tree): Mark the vcall_offset in a thunk.
4911         * decl2.c (mark_vtable_entries): Use use_thunk instead of
4912         emit_thunk.
4913         * dump.c (dequeue_and_dump): Remove dead code.  Dump new thunk
4914         information.
4915         * error.c (dump_expr): Use BV_FN.
4916         * mangle.c (mangle_thunk): Adjust now that vcall_offset is a tree,
4917         not an int.
4918         * method.c (make_thunk): Likewise.
4919         (emit_thunk): Rename to use_thunk.  Allow callers to decide
4920         whether or not to actually emit the thunk.  Adjust for changes in
4921         representation of vcall offsets.
4922         * search.c (dfs_get_pure_virtuals): Use BV_FN.
4923         * semantics.c (emit_associated_thunks): New function.
4924         (expand_body): Use it.
4925         * ir.texi: Adjust decriptions of thunks.
4926
4927 2000-06-22  Jason Merrill  <jason@redhat.com>
4928
4929         * pt.c (tsubst_decl, case FUNCTION_DECL): Clear DECL_SAVED_TREE.
4930         (tsubst_friend_function): Copy it here.
4931
4932         * decl.c (grok_op_properties): Fix typo.
4933
4934         * decl2.c (delete_sanity): Clarify warning, avoid failure on
4935         deleting void*.
4936
4937         * pt.c (check_explicit_specialization): Clarify error.
4938
4939         * decl.c (pushdecl): Also pull out one of the FUNCTION_DECLs from
4940         an old OVERLOAD when we're declaring a non-function.
4941         (pushdecl, destroy_local_var): Check for error_mark_node.
4942         (warn_extern_redeclared_static): Also bail early if
4943         we're a CONST_DECL.
4944         (push_overloaded_decl): Ignore an old error_mark_node.
4945
4946 2000-06-22  Nathan Sidwell  <nathan@codesourcery.com>
4947
4948         * call.c (build_x_va_arg): Check if in a template decl.
4949         * pt.c (tsubst_copy, case VA_ARG_EXPR): Use build_x_va_arg.
4950
4951 2000-06-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4952
4953         * class.c (push_lang_context): TYPE_NAME gets you to the Java
4954         types DECLs.
4955         * decl.c (check_goto): Computed gotos assumed OK.
4956
4957 2000-06-20  Jason Merrill  <jason@redhat.com>
4958
4959         * pt.c (tsubst_decl, case TYPE_DECL): Fix test for TYPE_DECLs
4960         for which we don't need to look for instantiations.
4961
4962 2000-06-21  Nathan Sidwell  <nathan@codesourcery.com>
4963
4964         * parse.y (program): Always call finish_translation_unit.
4965         * parse.c, parse.h: Rebuilt.
4966
4967 2000-06-20  Zack Weinberg  <zack@wolery.cumb.org>
4968
4969         * method.c: Don't include hard-reg-set.h.
4970
4971 2000-06-20  Nathan Sidwell  <nathan@codesourcery.com>
4972
4973         * rtti.c (get_base_offset): Cope when vbase field is in a base.
4974
4975 2000-06-20  Nathan Sidwell  <nathan@codesourcery.com>
4976
4977         * call.c (build_conditional_expr): Use VOID_TYPE_P.
4978         * cvt.c (cp_convert_to_pointer): Likewise.
4979         (convert_to_void): Likewise.
4980         * error.c (dump_expr): Likewise.
4981         * except.c (complete_ptr_ref_or_void_ptr_p): Likewise.
4982         * init.c (build_delete): Likewise.
4983         * method.c (emit_thunk): Likewise.
4984         * optmize.c (declare_return_variable): Likewise.
4985         * rtti.c (get_tinfo_decl_dynamic): Likewise.
4986         (get_typeid): Likewise.
4987         (build_dynamic_cast_1): Likewise.
4988         * typeck.c (composite_pointer_type): Likewise.
4989         (common_type): Likewise.
4990         (build_indirect_ref): Likewise.
4991         (build_binary_op): Likewise.
4992         (build_x_compound_expr): Likewise.
4993         (check_return_expr): Likewise.
4994         * typeck2.c (add_exception_specifier): Likewise.
4995
4996         * mangle.c (write_method_parms): Use direct comparison for end
4997         of parmlist.
4998
4999 2000-06-19  Benjamin Chelf  <chelf@codesourcery.com>
5000
5001         * cp-tree.h (genrtl_try_block): Declare function.
5002         (genrtl_handler): Likewise.
5003         (genrtl_catch_block): Likewise.
5004         (genrtl_ctor_stmt): Likewise.
5005         (genrtl_subobject): Likewise.
5006         (genrtl_decl_cleanup): Likewise.
5007         (genrtl_do_poplevel): Likewise.
5008         (genrtl_do_pushlevel): Likewise.
5009         (genrtl_clear_out_block): Likewise.
5010         (genrtl_goto_stmt): Likewise.
5011         (genrtl_expr_stmt): Likewise.
5012         (genrtl_decl_stmt): Likewise.
5013         (genrtl_if_stmt): Likewise.
5014         (genrtl_while_stmt): Likewise.
5015         (genrtl_do_stmt): Likewise.
5016         (genrtl_return_stmt): Likewise.
5017         (genrtl_for_stmt): Likewise.
5018         (genrtl_break_stmt): Likewise.
5019         (genrtl_continue_stmt): Likewise.
5020         (genrtl_scope_stmt): Likewise.
5021         (genrtl_switch_stmt): Likewise.
5022         (genrtl_case_label): Likewise.
5023         (genrtl_begin_compound_stmt): Likewise.
5024         (genrtl_finish_compound_stmt): Likewise.
5025         (genrtl_compound_stmt): Likewise.
5026         (genrtl_asm_stmt): Likewise.
5027         (genrtl_named_return_value): Likewise.
5028         (genrtl_begin_stmt_expr): Likewise.
5029         (genrtl_finish_stmt_expr): Likewise.
5030         (finish_for_stmt): Removed first argument.
5031         (finish_switch_stmt): Likewise.
5032
5033         * semantics.c (genrtl_try_block): Define function.
5034         (genrtl_handler): Likewise.
5035         (genrtl_catch_block): Likewise.
5036         (genrtl_ctor_stmt): Likewise.
5037         (genrtl_subobject): Likewise.
5038         (genrtl_decl_cleanup): Likewise.
5039         (genrtl_do_poplevel): Likewise.
5040         (genrtl_do_pushlevel): Likewise.
5041         (genrtl_clear_out_block): Likewise.
5042         (genrtl_goto_stmt): Likewise.
5043         (genrtl_expr_stmt): Likewise.
5044         (genrtl_decl_stmt): Likewise.
5045         (genrtl_if_stmt): Likewise.
5046         (genrtl_while_stmt): Likewise.
5047         (genrtl_do_stmt): Likewise.
5048         (genrtl_return_stmt): Likewise.
5049         (genrtl_for_stmt): Likewise.
5050         (genrtl_break_stmt): Likewise.
5051         (genrtl_continue_stmt): Likewise.
5052         (genrtl_scope_stmt): Likewise.
5053         (genrtl_switch_stmt): Likewise.
5054         (genrtl_case_label): Likewise.
5055         (genrtl_begin_compound_stmt): Likewise.
5056         (genrtl_finish_compound_stmt): Likewise.
5057         (genrtl_compound_stmt): Likewise.
5058         (genrtl_asm_stmt): Likewise.
5059         (genrtl_named_return_value): Likewise.
5060         (genrtl_begin_stmt_expr): Likewise.
5061         (genrtl_finish_stmt_expr): Likewise.
5062         (finish_for_stmt): Removed first argument and generate rtl
5063         specific code.
5064         (finish_switch_stmt): Likewise.
5065         (do_poplevel): Removed generate rtl specific code.
5066         (do_pushlevel): Likewise.
5067         (add_tree): Likewise.
5068         (finish_goto_stmt): Likewise.
5069         (finish_expr_stmt): Likewise.
5070         (begin_if_stmt): Likewise.
5071         (finish_if_stmt_cond): Likewise.
5072         (finish_then_clause): Likewise.
5073         (begin_else_clause): Likewise.
5074         (finish_else_clause): Likewise.
5075         (finish_if_stmt): Likewise.
5076         (clear_out_block): Likewise.
5077         (begin_while_stmt): Likewise.
5078         (finish_while_stmt_cond): Likewise.
5079         (finish_while_stmt): Likewise.
5080         (begin_do_stmt): Likewise.
5081         (finish_do_body): Likewise.
5082         (finish_do_stmt): Likewise.
5083         (finish_return_stmt): Likewise.
5084         (begin_for_stmt): Likewise.
5085         (finish_for_init_stmt): Likewise.
5086         (finish_for_cond): Likewise.
5087         (finish_for_expr): Likewise.
5088         (finish_break_stmt): Likewise.
5089         (finish_continue_stmt): Likewise.
5090         (begin_switch_stmt): Likewise.
5091         (finish_switch_cond): Likewise.
5092         (finish_case_label): Likewise.
5093         (begin_try_block): Likewise.
5094         (begin_function_try_block): Likewise.
5095         (finish_try_block): Likewise.
5096         (finish_cleanup_try_block): Likewise.
5097         (finish_cleanup): Likewise.
5098         (finish_function_try_block): Likewise.
5099         (finish_handler_sequence): Likewise.
5100         (finish_function_handler_sequence): Likewise.
5101         (begin_handler): Likewise.
5102         (finish_handler_parms): Likewise.
5103         (begin_catch_block): Likewise.
5104         (finish_handler): Likewise.
5105         (begin_compound_stmt): Likewise.
5106         (finish_compound_stmt): Likewise.
5107         (finish_asm_stmt): Likewise.
5108         (finish_label_stmt): Likewise.
5109         (finish_label_decl): Likewise.
5110         (finish_subobject): Likewise.
5111         (finish_decl_cleanup): Likewise.
5112         (finish_named_return_value): Likewise.
5113         (begin_stmt_expr): Likewise.
5114         (finish_stmt_expr): Likewise.
5115
5116         * decl.c (initialize_local_var): Changed call to finish_expr_stmt
5117         to call genrtl_expr_stmt when appropriate.
5118
5119         * init.c (begin_init_stmts): Changed calls to begin_stmt_expr and
5120         begin_compound_expr to call genrtl_begin_stmt_expr and
5121         genrtl_begin_compound_expr when appropriate.
5122         (finish_init_stmts): Changed calls to finish_compound_expr and
5123         finish_stmt_expr to call genrtl_finish_compound_expr and
5124         genrtl_finish_stmt_expr when appropriate.
5125         (expand_default_init): Changed call to finish_expr_stmt to call
5126         genrtl_expr_stmt when appropriate.
5127         (build_vec_init): Likewise.
5128
5129         * parse.y (simple_stmt): Removed first argument from call to
5130         finish_for_stmt. Removed first argument from call to
5131         finish_switch_stmt.
5132
5133         * parse.c: Regenerated.
5134
5135         * pt.c (tsubst_expr): Removed first argument from call to
5136         finish_for_stmt. Removed first argument from call to
5137         finish_switch_stmt.
5138
5139 2000-06-16  Benjamin Chelf  <chelf@codesourcery.com>
5140
5141         * cp-tree.h (enum cplus_tree_code): Changed __DUMMY to
5142         CP_DUMMY_TREE_CODE. Remove #include "c-common.def".
5143
5144         * lex.c (cplus_tree_code_type[]): Removed #include "c-common.def".
5145         (cplus_tree_code_length[]): Likewise.
5146         (cplus_tree_code_name[]): Likewise.
5147         (init_parse): Added call to add_c_tree_codes. Changed
5148         LAST_AND_UNUSED_TREE_CODE to LAST_C_TREE_CODE.
5149
5150 2000-06-16  Mark Mitchell  <mark@codesourcery.com>
5151
5152         * cp-tree.h (finish_mem_initializers): Declare.
5153         (count_trees): Likewise.
5154         * parse.y (base_init): Use finish_mem_initializers.
5155         * semantics.c (finish_mem_initializers): New function.
5156
5157         * tree.c (count_trees_r): Prototype.  Use DATA parameter to store
5158         the number of trees.
5159         (n_trees): Remove.
5160         (count_trees): Don't use it.
5161
5162 2000-06-15  Jason Merrill  <jason@redhat.com>
5163
5164         * tree.c (count_trees): New debugging function.
5165
5166         * typeck.c (build_x_function_call): Use DECL_FUNCTION_TEMPLATE_P.
5167         * init.c (build_member_call): Pull out the name of a DECL.
5168
5169         * Makefile.in (semantics.o, pt.o): Depend on TIMEVAR_H.
5170         * semantics.c (expand_body): Push to TV_INTEGRATION here.
5171         * optimize.c (optimize_function): Not here.
5172         * pt.c (instantiate_decl): Push to TV_PARSE.
5173
5174 2000-06-15  Mark Mitchell  <mark@codesourcery.com>
5175
5176         * cp-tree.h (struct language_function): Remove x_base_init_list
5177         and x_member_init_list.
5178         (current_base_init_list): Remove.
5179         (current_member_init_list): Likewise.
5180         (setup_vtbl_ptr): Change prototype.
5181         (emit_base_init): Likewise.
5182         (expand_member_init): Likewise.
5183         (reinit_parse_for_function): Remove.
5184         * decl.c (save_function_data): Don't clear x_base_init_list and
5185         x_member_init_list.
5186         (mark_language_function): Don't mark them.
5187         * init.c (perform_member_init): Tweak comment.
5188         (sort_member_init): Take the list of initializers as an argument.
5189         (sort_base_init): Likewise.
5190         (emit_base_init): Likewise.
5191         (expand_member_init): Return the initializer.  Don't use global
5192         variables.
5193         * lex.c (reinit_parse_for_function): Remove.
5194         * method.c (build_template_parm_names): Correct substitution.
5195         (do_build_copy_constructor): Don't use current_member_init_list
5196         and current_base_init_list.
5197         (synthesize_method): Likewise.
5198         * parse.y (base_init): Split mem-initializers into
5199         base-initializers and field-initializers.
5200         (member_init_list): Build up the list here.
5201         (member_init): Return the initializer.
5202         (fn.depfn): Don't use reinit_parse_for_function.
5203         * parse.c: Regenerated.
5204         * pt.c (convert_nontype_argument): Don't make an ADDR_EXPR of the
5205         ERROR_MARK.
5206         (tsubst_expr): Don't use current_member_init_list
5207         and current_base_init_list.
5208         (tsubst_expr_values): Rename to ...
5209         (tsubst_initializer_list): ... this.  Use convert_from_reference.
5210         * semantics.c (setup_vtbl_ptr): Don't use current_member_init_list
5211         and current_base_init_list.
5212         (begin_function_definition): Don't call reinit_parse_for_function.
5213
5214         * dump.c (dequeue_and_dump): Use TREE_VEC_LENGTH with vectors.
5215
5216         * error.c (dump_expr): Handle ADDR_EXPRs with REFERENCE_TYPE
5217         correctly.
5218
5219         * cp-tree.h (DECL_PENDING_INLINE_P): Relax checking.
5220
5221 2000-06-14  Benjamin Chelf  <chelf@codesourcery.com>
5222
5223         * cp-tree.h (IF_COND): Move to c-common.h.
5224         (THEN_CLAUSE): Likewise.
5225         (ELSE_CLAUSE): Likewise.
5226         (WHILE_COND): Likewise.
5227         (WHILE_BODY): Likewise.
5228         (DO_COND): Likewise.
5229         (DO_BODY): Likewise.
5230         (RETURN_EXPR): Likewise.
5231         (EXPR_STMT_EXPR): Likewise.
5232         (FOR_INIT_STMT): Likewise.
5233         (FOR_COND): Likewise.
5234         (FOR_EXPR): Likewise.
5235         (FOR_BODY): Likewise.
5236         (SWITCH_COND): Likewise.
5237         (SWITCH_BODY): Likewise.
5238         (CASE_LOW): Likewise.
5239         (CASE_HIGH): Likewise.
5240         (GOTO_DESTINATION): Likewise.
5241         (COMPOUND_BODY): Likewise.
5242         (ASM_CV_QUAL): Likewise.
5243         (ASM_STRING): Likewise.
5244         (ASM_OUTPUTS): Likewise.
5245         (ASM_INPUTS): Likewise.
5246         (ASM_CLOBBERS): Likewise.
5247         (DECL_STMT_DECL): Likewise.
5248         (STMT_EXPR_STMT): Likewise.
5249         (LABEL_STMT_LABEL): Likewise.
5250         (SCOPE_BEGIN_P): Likewise.
5251         (SCOPE_END_P): Likewise.
5252         (SCOPE_STMT_BLOCK): Likewise.
5253         (SCOPE_NULLIFIED_P): Likewise.
5254         (SCOPE_NO_CLEANUPS_P): Likewise.
5255         (SCOPE_PARTIAL_P): Likewise.
5256         (ASM_VOLATILE_P): Likewise.
5257         (STMT_LINENO): Likewise.
5258         (STMT_LINENO_FOR_FN_P): Likewise.
5259
5260         * cp-tree.def: Removed SRCLOC, SIZEOF_EXPR, ARROW_EXPR,
5261         ALIGNOF_EXPR, EXPR_STMT, COMPOUND_STMT, DECL_STMT, IF_STMT,
5262         FOR_STMT, WHILE_STMT, DO_STMT, RETURN_STMT, BREAK_STMT,
5263         CONTINUE_STMT, SWITCH_STMT, GOTO_STMT, LABEL_STMT, ASM_STMT,
5264         SCOPE_STMT, CASE_LABEL, STMT_EXPR.
5265
5266         * Makefile.in (CXX_TREE_H): Added $(srcdir)/../c-common.def.
5267
5268         * Make-lang.in (CXX_SRCS): Added $(srcdir)/c-common.def.
5269         (cc1plus$(exeext)): Added $(srcdir)/c-common.def.
5270
5271         * lex.c (cplus_tree_code_type[]): Added '#include "c-common.def"'.
5272         (cplus_tree_code_length[]): Added '#include "c-common.def"'.
5273         (cplus_tree_code_name[]): Added '#include "c-common.def"'.
5274
5275 2000-06-14  Mark Mitchell  <mark@codesourcery.com>
5276
5277         * cp-tree.h (BINFO_OVERRIDE_ALONG_VIRTUAL_PATH): New macro.
5278         * class.c (dfs_find_final_overrider): Set it appropriately.
5279         (dfs_built_vtt_inits): Check BINFO_OVERRIDE_ALONG_VIRTUAL_PATH to
5280         avoid unneeded secondary vptrs.
5281
5282 2000-06-13  Jakub Jelinek  <jakub@redhat.com>
5283
5284         * class.c (build_secondary_vtable): Set DECL_USER_ALIGN.
5285         (check_bitfield_decl, check_field_decl): Likewise.
5286         (build_vtbl_or_vbase_field, build_base_field): Likewise.
5287         (layout_class_type): Set DECL_USER_ALIGN resp. CLASSTYPE_USER_ALIGN.
5288         * decl.c (record_unknown_type): Set TYPE_USER_ALIGN.
5289         (xfer_tag, finish_enum): Likewise.
5290         * decl2.c (finish_builtin_type): Likewise.
5291         * init.c (init_init_processing): Likewise.
5292         * pt.c (instantiate_class_template): Likewise.
5293         * rtti.c (get_tinfo_decl, synthesize_tinfo_fn): Set DECL_USER_ALIGN.
5294         * cp-tree.h (struct lang_type): Add user_align member.
5295         (CLASSTYPE_USER_ALIGN): Define.
5296
5297 Tue Jun 13 15:48:03 2000  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>
5298
5299         * Make-lang.in (c++.install-common): Install g++-cross in
5300         $(gcc_tooldir)/bin as g++ and c++; g++ in $(bindir) as
5301         $(target_alias)-g++ and $(target_alias)-c++.
5302
5303 2000-06-12  Mark Mitchell  <mark@codesourcery.com>
5304
5305         * class.c (vcall_offset_data_s): Add last_init and fns.
5306         (overrides): Rename to same_signature_p.
5307         (dfs_find_final_overrider): Adjust accordingly.
5308         (mark_overriders): Likewise.
5309         (warn_hidden): Likewise.
5310         (build_vtbl_initializer): Reorganize machinery for building things
5311         at negative offsets.
5312         (build_vcall_and_vbase_vtbl_entries): Likewise.
5313         (build_vbase_offset_vtbl_entries): Likewise.
5314         (dfs_build_vcall_offset_vtbl_entries): Correct order of vcall
5315         offset entries.  Do not create two entries for functions with the
5316         same signature.
5317         (build_vcall_offset_vtbl_entries): Initialize vod->fns.
5318         (build_rtti_vtbl_entries): Reorganize machinery for building things
5319         at negative offsets.
5320
5321         * optimize.c (expand_call_inline): Don't recurse into the code
5322         used to initialize the parameters more than once.
5323
5324 2000-06-11  Mark Mitchell <mark@codesourcery.com>
5325
5326         * mangle.c (NESTED_TEMPLATE_MATCH): Fix typo in comment.
5327         (is_std_substitution): Don't check CLASSTYPE_USE_TEMPLATE here.
5328         (find_substitution): Only use the `Sa' substitution for
5329         std::allocator, not instantiations of it.
5330         (write_template_prefix): Move comment.  Only use a TREE_LIST to
5331         represent substitutions for a member template.
5332         (write_array_type): Mangle array dimensions correctly.
5333         * optimize.c (maybe_clone_body): Copy more information from the
5334         cloned function.
5335         * pt.c (regenerate_decl_from_template): Preserve DECL_USE_TEMPLATE
5336         on the regenerated declaration.
5337
5338 2000-06-11  Chip Salzenberg  <chip@valinux.com>
5339             Mark Mitchell <mark@codesourcery.com>
5340
5341         * class.c (build_vtable): Clarify comment.
5342         (build_ctor_vtbl_group): Pass the most derived type to
5343         build_vtable.
5344
5345 2000-06-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5346
5347         * decl2.c (compare_options): Don't needlessly cast away const-ness.
5348
5349 2000-06-10  Mark Mitchell  <mark@codesourcery.com>
5350
5351         * decl.c (add_binding): Handle duplicate declarations of external
5352         variables.
5353
5354 2000-06-09  Chip Salzenberg  <chip@valinux.com>
5355             Mark Mitchell <mark@codesourcery.com>
5356
5357         * mangle.c (write_number): Take an unsigned HOST_WIDE_INT as an
5358         argument.
5359         (write_signed_number): New macro.
5360         (write_unsigned_number): Likewise.
5361         (write_source_name): Use them.
5362         (write_number): Handle signed and unsigned values.
5363         (write_integer_cst): Use tree_int_cst_sgn, and use
5364         write_unsigned_number or write_signed_number as appropriate.
5365         (write_discriminator): Use write_unsigned_number or
5366         write_signed_number as appropriate.
5367         (write_template_arg_literal): Likewise.
5368         (write_array_type): Use tree_low_cst.
5369         (write_template_parm):  Use write_unsigned_number or
5370         write_signed_number as appropriate.
5371         (write_substitution): Adjust call to write_number.
5372         (write_type): Get the TYPE_MAIN_VARIANT before mangling it.
5373         (write_expression): Handle non-type template arguments of
5374         reference type correctly.
5375         (mangle_thunk): Use write_signed_number.
5376
5377 2000-06-09  Chip Salzenberg  <chip@valinux.com>
5378
5379         * mangle.c (find_substition): Don't mangle objects with typename
5380         substitutions (e.g. "cin" as "Si").
5381
5382 2000-06-09  Zack Weinberg  <zack@wolery.cumb.org>
5383
5384         * call.c (add_candidate): Use ggc_alloc_cleared.
5385         * decl.c (lookup_label): Likewise.
5386         * lex.c (retrofit_lang_decl): Likewise.
5387
5388 2000-06-09  Jason Merrill  <jason@casey.soma.redhat.com>
5389
5390         * semantics.c (expand_body): Push to TV_EXPAND.
5391         * optimize.c (optimize_function): Push to TV_INTEGRATION.
5392         * decl.c (start_function): Always call announce_function.
5393
5394         * tinfo2.cc: Just declare abort.
5395
5396 2000-06-09  Gabriel Dos Reis  <gdr@codesourcery.com>
5397
5398         * lex.c (DEF_OPERATOR): Say `operator@' -not- `operator @'
5399         whenever @ is a symbolic name.
5400
5401 2000-06-08  Jakub Jelinek  <jakub@redhat.com>
5402
5403         * method.c (make_thunk): Clear DECL_VTT_PARM in thunk.
5404
5405 2000-06-07  Mark Mitchell  <mark@codesourcery.com>
5406
5407         * decl.c (pushdecl): Look up functions by DECL_NAME, not
5408         DECL_ASSEMBLER_NAME.
5409
5410 2000-06-06  Mark Mitchell  <mark@codesourcery.com>
5411
5412         * decl2.c (c_language): Define.
5413
5414 2000-06-06  Gabriel Dos Reis  <gdr@codesourcery.com>
5415
5416         * lex.c (lang_init_options): Tweak.
5417
5418         * decl2.c: Remove #inclusion of diagnostic.h
5419         (lang_decode_option): Move diagnostic formatting options to
5420         toplevel.
5421
5422         * lang-options.h: Remove documentation for diagnostic options.
5423
5424         * Makefile.in (lex.o): Depends upon diagnostic.h
5425
5426 2000-06-06  Mark Mitchell  <mark@codesourcery.com>
5427
5428         * decl.c (redeclaration_error_message): If two TEMPLATE_DECLs have
5429         the same DECL_RESULT, it's not a redefinition.
5430         * pt.c (tsubst_decl): Remove code to handle illegal
5431         specializations.
5432
5433 2000-06-06  Nathan Sidwell  <nathan@codesourcery.com>
5434
5435         * exception.cc: (__eh_alloc, __eh_free): Moved to libgcc2.c
5436
5437 2000-06-05  Jason Merrill  <jason@casey.soma.redhat.com>
5438
5439         * search.c (maybe_suppress_debug_info): Don't check
5440         CLASSTYPE_INTERFACE_ONLY if CLASSTYPE_INTERFACE_KNOWN isn't set.
5441
5442         * pt.c (mark_decl_instantiated): Do SET_DECL_EXPLICIT_INSTANTIATION
5443         here if extern_p.
5444
5445         Remember instantiation context in deferred instantiations.
5446         * cp-tree.h (struct tinst_level): Remove.
5447         (TINST_DECL, TINST_LINE, TINST_FILE): New macros.
5448         * pt.c (current_tinst_level): Now a tree.
5449         (print_template_context, push_tinst_level, pop_tinst_level,
5450         tinst_for_decl): Adjust.
5451         (reopen_tinst_level): New fn.
5452         (init_pt): Register current_tinst_level as a root.
5453         (add_pending_template): Put current_tinst_level in TREE_PURPOSE
5454         of the pending templates list.
5455         (instantiate_pending_templates): Adjust.  Call reopen_tinst_level.
5456         * lex.c (extract_interface_info): Adjust.
5457         * decl2.c (warn_if_unknown_interface): Adjust.
5458
5459 2000-06-05  Mark Mitchell  <mark@codesourcery.com>
5460
5461         * class.c (indirect_primary_base_p): New function.
5462         (determine_primary_base): Use it.
5463
5464 2000-06-05  Nathan Sidwell  <nathan@codesourcery.com>
5465
5466         Update new-abi dynamic cast algorithm.
5467         * tinfo.cc (__class_type_info::__dyncast_result): Add
5468         whole_details. Adjust constructor.
5469         (__vmi_class_type_info::__do_dyncast): Adjust for vmi_flags.
5470         Avoid unnecessary searching.
5471         (__dynamic_cast): Adjust for __dyncast_result::whole_details.
5472
5473 Mon Jun  5 06:48:55 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
5474
5475         * decl.c (init_decl_processing): Don't call record_component_aliases.
5476         * tree.c (build_cplus_array_type_1): Likewise.
5477
5478 2000-06-04  Mark Mitchell  <mark@codesourcery.com>
5479
5480         * ir.texi: Correct typo.
5481         * mangle.c (write_expression): Handle non-type template arguments
5482         with reference type.
5483         * method.c (build_overload_value): Likewise.
5484         * pt.c (convert_nontype_argument): Explicitly represent conversion
5485         to a reference with an ADDR_EXPR.
5486         (unify): Always unify arguments in left-to-right order.
5487
5488 2000-06-03  Alex Samuel    <samuel@codesourcery.com>
5489             Mark Mitchell  <mark@codesourcery.com>
5490
5491         * Make-lang.in (CXX_SRCS): Add mangle.c.
5492         * Makefile.in (CXX_OBJS): Add mangle.o.
5493         (mangle.o): New rule.
5494
5495         * class.c (local_classes): New variable.
5496         * class.c (get_vtable_name): Use mangle_vtable_for_type for new ABI.
5497         (get_vtt_name): Use mangle_vtt_name for new ABI.
5498         (init_class_processing): Initialize local_classes.
5499         (build_ctor_vtbl_group): Use mangle_ctor_vtbl_for_type for new ABI.
5500         * cp-tree.h (cp_tree_index): Add CPTI_STD_IDENTIFIER.
5501         (std_identifier): New macro.
5502         (DECL_VOLATILE_MEMFUNC_P): New macro.
5503         (DECL_NAMESPACE_STD_P): Likewise.
5504         (local_classes): Declare.
5505         (get_mostly_instantiated_function_type): Declare.
5506         (init_mangle): Declare.
5507         (mangle_decl): Likewise.
5508         (mangle_type_string): Likewise.
5509         (mangle_type): Likewise.
5510         (mangle_typeinfo_for_type): Likewise.
5511         (mangle_typeinfo_string_for_type): Likewise.
5512         (mangle_vtbl_for_type): Likewise.
5513         (mangle_vtt_for_type): Likewise.
5514         (mangle_ctor_vtbl_for_type): Likewise.
5515         (mangle_thunk): Likewise.
5516         (mangle_conv_op_name_for_type): Likewise.
5517         (mangle_guard_variable): Likewise.
5518         * decl.c (pushtag): Keep track of local classes.
5519         (initialize_predefined_identifiers): Initialize std_identifier.
5520         (init_decl_processing): Use std_identifier.
5521         (start_decl): Don't treat instantiations as specializations.
5522         (grokdeclarator): Likewise.
5523         (grokvardecl): Call mangle_decl for new ABI.  Only set mangled
5524         name for fully-instantiated templates.
5525         * decl2.c (grokclassfn): Use set_mangled_name_for_decl for
5526         destructors with the new ABI.
5527         (finish_static_data_member_decl): Use mangle_decl under the new ABI.
5528         (grokfield): Use mangle_type for new ABI.
5529         (grokoptypename): Use mangle_conv_op_for_type for new ABI.
5530         (get_sentry): Use mangle_guard_variable for new ABI.
5531         (start_static_initialization_or_destruction): Likewise.
5532         * expr.c (extract_aggr_init): Remove.
5533         (extract_scalar_init): Likewise.
5534         (extract_init): Remove #if 0'd code.
5535         * mangle.c: New function.
5536         * method.c (build_mangled_name): Assert not flag_new_abi.
5537         (build_static_name): Likewise.
5538         (build_decl_overload_real): Likewise.
5539         (build_typename_overload): Likewise.
5540         (build_overload_with_type): Likewise.
5541         (build_overload_name): Likewise.
5542         (get_ctor_vtbl_name): Likewise.
5543         (start_squangling): Likewise.
5544         (get_id_2): Likewise.
5545         (set_mangled_name_for_decl): Call mangle_decl for new ABI.
5546         (init_method): Call init_mangle for new ABI.
5547         (make_thunk): Call mangle_thunk for new ABI.
5548         * operators.def: Correct new ABI manglings for the `%' operator.
5549         Add `::' operator.
5550         * pt.c (build_template_decl): Copy DECL_OVERLOADED_OPERATOR_P and
5551         DECL_ASSIGNMENT_OPERATOR_P to the TEMPLATE_DECL.
5552         (lookup_template_class): Call mangle_decl for new ABI.
5553         (get_mostly_instantiated_function_type): New function.
5554         (set_mangled_name_for_template_decl): Use it.
5555         (tsubst_decl): Use set_mangled_name_for_decl for destructors with
5556         the new ABI.  Use mangle_conv_op_name_for_type for instantiated
5557         conversion op names.
5558         * rtti.c (tinfo_name): Call mangle_type_string for new ABI.
5559         (get_tinfo_decl): Call mangle_typeinfo_for_type for new ABI.
5560         (tinfo_base_init):  Likewise.  Mangle typeinfo string name with
5561         mangle_typeinfo_string_for_type.
5562
5563 2000-06-03  Mark Mitchell  <mark@codesourcery.com>
5564
5565         * cp-tree.h (TMPL_ARGS_LEVEL): Clarify comment.
5566         (INNERMOST_TEMPLATE_ARGS): New macro.
5567         (innermost_args): Remove.
5568         (get_innermost_template_args): New function.
5569         * decl2.c (arg_assoc_class): Use INNERMOST_TEMPLATE_ARGS.
5570         * error.c (dump_function_decl): Be caution when using
5571         most_general_template.
5572         * method.c (build_template_parm_names):  Use
5573         INNERMOST_TEMPLATE_ARGS.
5574         * pt.c (add_to_template_args): Tidy comment
5575         (get_innermost_template_args): New function.
5576         (check_explicit_specialization): Clear DECL_INITIAL for a new
5577         specialization.
5578         (process_partial_specialization): Use INNERMOST_TEMPLATE_ARGS.
5579         Tidy.
5580         (push_template_decl): Always register specializations of the most
5581         general template.
5582         (convert_template_argument): Use INNERMOST_TEMPLATE_ARGS.
5583         (coerce_template_parms): Likewise.
5584         (lookup_template_class): Likewise.
5585         (innermost_args): Remove.
5586         (tsubst_decl): Use INNERMOST_TEMPLATE_ARGS.
5587         (tsubst_decl): Handle tricky specializations.  Use
5588         get_innermost_template_args.
5589         (instantiate_template): Simplify handling of partial
5590         instantiations.
5591         (get_class_bindings): Use INNERMOST_TEMPLATE_ARGS.
5592         (most_general_template): Reimplement, in a more straightforward
5593         manner.
5594         (regenerate_decl_from_template): Tweak formatting.  Use
5595         TMPL_ARGS_DEPTH for clarity.
5596         (set_mangled_name_for_template_decl): Use INNERMOST_ARGS.
5597
5598         * dump.c (dequeue_and_dump): Dump information about thunks.
5599
5600 2000-06-01  Richard Henderson  <rth@cygnus.com>
5601
5602         * decl.c (init_decl_processing): Set lang_get_alias_set first thing.
5603
5604 2000-06-01  Richard Henderson  <rth@cygnus.com>
5605
5606         * decl2.c (unsupported_options): Fix typo, make const.
5607         (lang_decode_option): Fix bsearch argument order.
5608
5609 2000-06-01  Mark Mitchell  <mark@codesourcery.com>
5610
5611         * init.c (resolve_offset_ref): Remove check for TREE_ADDRESSABLE
5612         on FIELD_DECLs.
5613
5614 Wed May 31 14:09:00 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
5615
5616         * cp-tree.h (c_get_alias_set): Deleted.
5617         * Makefile.in (decl.o): Include ../expr.h.
5618         * decl.c (expr.h): Include.
5619         (init_decl_processing): Call record_component_aliases for arrays.
5620         (grokdeclarator): Likewise.
5621         Set TREE_ADDRESSABLE for fields that aren't bitfields.
5622         * tree.c (build_cplus_array_type_1): Call record_component_aliases.
5623
5624 2000-05-31  Mark Mitchell  <mark@codesourcery.com>
5625
5626         Remove guiding declaration support.
5627         * cp/cp-tree.h (flag_dump_translation_unit): Make it const.
5628         (flag_guiding_decls): Remove.
5629         * call.c (build_user_type_conversion_1): Remove support for
5630         guiding decls.
5631         (build_new_function_call): Likewise.
5632         (build_new_op): Likewise.
5633         (build_new_method_call): Likewise.
5634         * decl.c (start_function): Likewise.
5635         * friend.c (is_friend): Likewise.
5636         (do_friend): Likewise.
5637         * decl2.c ((flag_dump_translation_unit): Make it const.
5638         (flag_guiding_decls): Remove.
5639         (unsupported_options): New variable
5640         (compare_options): New function.
5641         (lang_decode_option): Use them.
5642
5643         * decl.c (build_cp_library_fn): Set DECL_CONTEXT.
5644
5645         * method.c (mangle_expression): Adjust test for legal expression
5646         operators.
5647
5648         * pt.c (instantiate_decl): Save and restore the local
5649         specializations list.
5650
5651 2000-05-30  Jason Merrill  <jason@decepticon.cygnus.com>
5652
5653         * decl.c (grok_reference_init): Pass LOOKUP_ONLYCONVERTING.
5654
5655 2000-05-30  Mark Mitchell  <mark@codesourcery.com>
5656
5657         * call.c (add_template_candidate_real): Handle member template
5658         constructors for classes with virtual bases.
5659         (build_user_type_conversion_1): Use in_charge_arg_for_name.
5660         (build_new_method_call): Use DECL_NONSTATIC_MEMBER_FUNCTION_P.
5661
5662         * ir.texi: Update thunk documentation.
5663
5664         * call.c (joust): Fix handling of overloaded builtin operators.
5665
5666 2000-05-30  Zack Weinberg  <zack@wolery.cumb.org>
5667
5668         * cp-tree.h (DECL_ANTICIPATED): New macro.
5669         Document new use of DECL_LANG_FLAG_7.
5670         * decl.c (builtin_function): Set DECL_ANTICIPATED on builtins
5671         in the user namespace.
5672         * lex.c (do_identifier): If the identifier's declaration has
5673         DECL_ANTICIPATED on, it has not yet been declared.  But do not
5674         replace it with an ordinary implicit declaration.
5675
5676         * tinfo2.cc: Include stdlib.h.
5677
5678 2000-05-29  Mark Mitchell  <mark@codesourcery.com>
5679
5680         * cp-tree.h (CLASSTYPE_ALIGN_UNIT): New macro.
5681         * class.c (layout_empty_base): Use CLASSTYPE_ALIGN_UNIT, not
5682         CLASSTYPE_ALIGN.
5683
5684 2000-05-28  Gabriel Dos Reis  <gdr@codesourcery.com>
5685
5686         * decl2.c (lang_decode_option): Use skip_leading_substring instead
5687         of plain strncmp.
5688
5689 2000-05-28  Alexandre Oliva  <aoliva@cygnus.com>
5690
5691         * operators.def (<?): Duplicated, should have been...
5692         (>?): this.  Fixed.
5693
5694 2000-05-27  Alex Samuel    <samuel@codesourcery.com>
5695             Mark Mitchell  <mark@codesourcery.com>
5696
5697         * cp-tree.h (ansi_opname): Make it a macro.
5698         (ansi_assopname): Likewise.
5699         (struct lang_decl_flags): Add assignment_operator_p.
5700         (struct lang_decl): Add operator_code.
5701         (DECL_VTT_PARM): Adjust.
5702         (DECL_OVERLOADED_OPERATOR_P): Return the operator_code for an
5703         overloaded operator.
5704         (SET_OVERLOADED_OPERATOR_CODE): New macro.
5705         (DECL_ASSIGNMENT_OPERATOR_P): New macro.
5706         (DECL_ARRAY_DELETE_OPERATOR_P): Adjust.
5707         (opname_tab): Remove.
5708         (assignop_tab): Likewise.
5709         (operator_name_info_t): New type.
5710         (operator_name_info): New variable.
5711         (assignment_operator_name_info): Likewise.
5712         (build_cp_library_fn): Remove declaration.
5713         (push_cp_library_fn): Likewise.
5714         (operator_name_string): Likewise.
5715         (build_decl_overload): Likewise.
5716         * call.c (print_z_candidates): Simplify.
5717         (build_object_call): Adjust usage of ansi_opname.  Use
5718         DECL_OVERLOADED_OPERATOR_P.
5719         (op_error): Adjust operator name lookup.
5720         (build_conditional_expr): Adjust usage of ansi_opname.
5721         (build_new_op): Likewise.
5722         (build_op_delete_call): Likewise.
5723         (build_over_call): Likewise.
5724         (joust): Use DECL_OVERLOADED_OPERATOR_P.
5725         * decl.c (duplicate_decls): Copy operator_code.
5726         (init_decl_processing): Adjust parameters to push_cp_library_fn.
5727         (builtin_function): Adjust parameters to build_library_fn_1.
5728         (build_library_fn_1): Accept an overloaded operator code.
5729         (build_library_fn): Pass ERROR_MARK.
5730         (build_cp_library_fn): Accept an overloaded operator code.
5731         (push_cp_library_fn): Likewise.
5732         (grokfndecl): Tweak.
5733         (grokdeclarator): Simplify code to compute names of overloaded
5734         operators.  Adjust use of ansi_opname.
5735         (ambi_op_p): Work on tree_codes, not identifiers.
5736         (unary_op_p): Likewise.
5737         (grok_op_properties): Likewise.
5738         (start_function): Use DECL_OVERLOADED_OPERATOR_P.
5739         (lang_mark_tree): Don't try to mark the operator_code.
5740         * decl2.c (grok_function_init): Use DECL_OVERLOADED_OPERATOR_P.
5741         * error.c (dump_decl): Remove special handling for operator
5742         names.
5743         (dump_function_name): Likewise.
5744         (dump_expr): Adjust name lookup of operators.
5745         (op_to_string): Simplify.
5746         (assop_to_string): Likewise.
5747         * init.c (build_new_1): Adjust use of ansi_opname.
5748         * lex.c (opname_tab): Remove.
5749         (assignop_tab): Likewise.
5750         (ansi_opname): Likewise.
5751         (ansi_assopname): Likewise.
5752         (operator_name_string): Likewise.
5753         (reinit_lang_specific): Likewise.
5754         (operator_name_info): New variable.
5755         (assignment_operator_name_info): Likewise.
5756         (init_operators): New function.
5757         (init_parse): Use it.
5758         (do_identifier): Adjust use of ansi_opname.
5759         * method.c (mangle_expression): Don't use ansi_opname for
5760         mangling.
5761         (build_decl_overload_real): Use DECL_OVERLOADED_OPERATOR_P.
5762         (build_decl_overload): Remove.
5763         (build_typename_overload): Use OPERATOR_TYPENAME_FORMAT directly.
5764         (do_build_assign_ref): Adjust use of ansi_opname.
5765         (synthesize_method): Likewise.
5766         (implicitly_declare_fn): Likewise.
5767         * operators.def: New file.
5768         * parse.y (operator): Adjust use of ansi_opname.
5769         * pt.c (tsubst_decl): Use IDENTIFIER_OPNAME_P.
5770         (set_mangled_name_for_template_decl): Don't play games with
5771         current_namespace.
5772         (special_function_p): Adjust use of ansi_opname.
5773         * typeck.c (check_return_expr): Likewise.
5774         * Make-lang.in (cc1plus): Depend on operators.def.
5775         * Makefile.in (lex.o): Likewise.
5776         (decl.o): Likewise.
5777
5778 2000-05-27  Zack Weinberg  <zack@wolery.cumb.org>
5779
5780         * Make-lang.in (cplib2.ready): Eradicate.
5781
5782 Sat May 27 11:25:46 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
5783
5784         * method.c (mangle_expression): Use TREE_CODE_LENGTH.
5785         * tree.c (break_out_calls, build_min_nt): Use TREE_CODE_LENGTH.
5786         (built_min, cp_tree_equal): Likewise.
5787
5788 2000-05-26  Mark Mitchell  <mark@codesourcery.com>
5789
5790         * class.c (layout_nonempty_base_or_field): Replace
5791         `record_layout_info' with `record_layout_info_s'.
5792
5793 2000-05-26  Jason Merrill  <jason@casey.soma.redhat.com>
5794
5795         Fix goto checking.
5796         * cp-tree.h (struct language_function): x_named_labels is now
5797         a struct named_label_list*.
5798         * decl.c (struct named_label_use_list): Renamed from...
5799         (struct named_label_list): ...this.  New struct.
5800         (push_binding_level): Don't set eh_region.
5801         (note_level_for_eh): New fn.
5802         (pop_label): Take label and old value directly.
5803         (pop_labels): Adjust for new named_labels format.
5804         (lookup_label): Likewise.
5805         (poplevel): Note characteristics of a binding level containing a
5806         named label.  Mess with named label lists earlier.
5807         (mark_named_label_lists): New fn.
5808         (mark_lang_function): Call it.
5809         (use_label): New fn, split out from...
5810         (make_label_decl): ...here.  Don't call it.
5811         (decl_jump_unsafe, check_previous_goto, check_previous_goto_1,
5812         check_previous_gotos): New fns, split out from...
5813         (define_label): ...here.
5814         (check_switch_goto): New fn.
5815         (define_case_label): Call it.
5816         (check_goto): New fn.
5817         * semantics.c (finish_goto_stmt): Call it and use_label.
5818         (begin_compound_stmt): If we're a try block, call note_level_for_eh.
5819         (expand_stmt): Never pass 1 as DONT_JUMP_IN to expand_end_bindings.
5820
5821 2000-05-26  Mark Mitchell  <mark@codesourcery.com>
5822
5823         * class.c (build_vtable_entry_ref): Correct usage of
5824         get_vtbl_decl_for_binfo.
5825
5826         * decl2.c (grokclassfn): Set DECL_LANGUAGE here.
5827         * method.c (implicitly_declare_fn): Not here.
5828
5829 2000-05-26  Nathan Sidwell  <nathan@codesourcery.com>
5830
5831         * cp-tree.h (CPTI_PTMD_DESC_TYPE): Rename to ...
5832         (CPTI_PTMD_DESC_TYPE): ... here.
5833         (ptmd_desc_type_node): Rename to ...
5834         (ptm_desc_type_node): ... here.
5835         * decl.c: Likewise.
5836         * rtti.c (ptmd_initializer): Rename to ...
5837         (ptm_initializer): ... here.
5838         (sythesize_tinfo_var): Adjust. Deal with pointer to member
5839         function.
5840         (create_tinfo_types): Adjust.
5841
5842 2000-05-25  Mark Mitchell  <mark@codesourcery.com>
5843
5844         Finish implementation of VTTs.
5845         * cp-tree.h (cp_tree_index): Add CPTI_VTT_PARM_TYPE and
5846         CPTI_VTT_PARM_IDENTIFIER.
5847         (vtt_parm_identifier): New macro.
5848         (vtt_parm_type): Likewise.
5849         (BINFO_SUBVTT_INDEX): Likewise.
5850         (BINFO_VPTR_INDEX): Likewise.
5851         (struct lang_decl): Add vtt_parm.
5852         (DECL_VTT_PARM): New macro.
5853         (DECL_USE_VTT_PARM): Likewise.
5854         (DECL_NEEDS_VTT_PARM_P): Likewise.
5855         (get_vtt_name): Declare.
5856         (build_artifical_parm): Likewise.
5857         (fixup_all_virtual_upcast_offsets): Likewise.
5858         (expand_indirect_vtbls_init): Remove.
5859         * call.c (build_new_method_call): Pass the vtt to subobject
5860         constructors and destructors.
5861         * class.c (get_vtt_name): Give it external linkage.
5862         (build_clone): Handle the magic VTT parameters for clones.
5863         (clone_function_decl): Fix typo in comment.
5864         (build_vtt): Keep track of the indices in the VTTs where various
5865         entities are stored.
5866         (build_vtt_inits): Likewise.
5867         (dfs_build_vtt_inits): Likewise.
5868         (build_ctor_vtbl_group): Tweak type of construction vtables.
5869         (dfs_accumulate_vtbl_inits): Build vtables for all bases, even
5870         primary bases, when building construction vtables.
5871         * decl.c (duplicate_decls): Handle DECL_VTT_PARM.
5872         (initialize_predefined_identifiers): Add vtt_parm_identifier.
5873         (init_decl_processing): Initialize vtt_parm_type.
5874         (grokfndecl): Use DECL_OVERLOADED_OPERATOR_P.
5875         (lang_mark_tree): Make vtt_parm.
5876         * decl2.c (build_artificial_parm): New function.
5877         (maybe_retrofit_in_chrg): Use it.  Add VTT parameters.
5878         (grokclassfn): Use build_artificial_parm.
5879         * init.c (initialize_vtbl_ptrs): Call
5880         fixup_all_virtual_upcast_offsets directly.
5881         (perform_member_init): Use the complete subobject destructor for
5882         member cleanups.
5883         (build_vtbl_address): New function.
5884         (expand_virtual_init): Handle VTTs.
5885         * optimize (maybe_clone_body): Likewise.
5886         * search.c (fixup_all_virtual_upcast_offsets): Give it external
5887         linkage.
5888         (expand_indirect_vtbls_init): Remove.
5889         * semantics.c (setup_vtbl_ptr): Fix typos in comment.
5890         * tree.c (make_binfo): Make them bigger.
5891
5892 2000-05-25  Nathan Sidwell  <nathan@codesourcery.com>
5893
5894         * inc/cxxabi.h (__pbase_type_info): Define, based on
5895         __pointer_type_info.
5896         (__pointer_type_info): Derive from __pbase_type_info. Adjust.
5897         (__pointer_to_member_type_info): Likewise.
5898         * tinfo2.cc (__pbase_type_info::~__pbase_type_info): Implement.
5899         (__pointer_to_member_type_info::__is_pointer_p): Remove.
5900         (__pointer_type_info::__do_catch): Rename to ...
5901         (__pbase_type_info::__do_catch): ... here. Adjust.
5902         (__pbase_type_info::__pointer_catch): Implement.
5903         (__pointer_type_info::__pointer_catch): Adjust.
5904         (__pointer_to_member_type_info::__pointer_catch): Adjust.
5905
5906 2000-05-25  Nathan Sidwell  <nathan@codesourcery.com>
5907
5908         * tinfo.h (__user_type_info::contained_virtual_p): New
5909         predicate.
5910         * tinfo.cc (__user_type_info::do_upcast): Fix bug with diamond
5911         shaped heirarchy.
5912         (__vmi_class_type_info::__do_upcast): Fix bug with NULL pointer to
5913         diamond shaped heirarchy. Add early out for mixed diamond and
5914         duplicate shaped heirarchy.
5915
5916 2000-05-24  Mark Mitchell  <mark@codesourcery.com>
5917
5918         * cp-tree.h (build_delete): Change prototype.
5919         (build_vec_delete): Likewise.
5920         * call.c (build_scoped_method_call): Use special_function_kind
5921         values to indicate the kind of destruction to be done.
5922         (build_method_call): Likewise.
5923         * decl.c (finish_destructor_body): Likewise.
5924         (maybe_build_cleanup_1): Likewise.  Rename to ...
5925         (maybe_build_cleanup): ... this.
5926         * decl2.c (delete_sanity): Use special_function_kind
5927         values to indicate the kind of destruction to be done.
5928         (build_cleanup): Likewise.
5929         * init.c (perform_member_init): Likewise.
5930         (build_vec_delete_1): Likewise.
5931         (build_dtor_call): Simplify.
5932         (build_delete): Use special_function_kind
5933         values to indicate the kind of destruction to be done.
5934         (build_vbase_delete): Likewise.
5935         (build_vec_delete): Likewise.
5936
5937         * init.c (sort_member_init): Fix typo in error message generation
5938         code.
5939
5940 Mon May 15 11:46:29 2000  Donald Lindsay  <dlindsay@cygnus.com>
5941
5942         * semantics.c (begin_class_definition): make the packed
5943         attribute be sensitive to the "-fpack-struct" command line flag
5944
5945 2000-05-24  Nathan Sidwell  <nathan@codesourcery.com>
5946
5947         Update new-abi upcast algorithm.
5948         * inc/cxxabi.h (__class_type_info::__do_upcast): Change
5949         prototype and meaning of return value.
5950         (__si_class_type_info::__do_upcast): Likewise.
5951         (__vmi_class_type_info::__do_upcast): Likewise.
5952         * tinfo.cc (__class_type_info::__upcast_result): Replace
5953         whole2dst with part2dst. Adjust ctor.
5954         (__class_type_info::__do_upcast): Adjust call of worker function.
5955         (__class_type_info::__do_upcast): Adjust.
5956         (__si_class_type_info::__do_upcast): Adjust. Use parent's
5957         __do_upcast.
5958         (__vmi_class_type_info::__do_upcast): Likewise. Fix private
5959         virtual base in diamond heirarchy bug.
5960
5961 2000-05-23  Mark Mitchell  <mark@codesourcery.com>
5962
5963         * cp-tree.h (lang_decl_flags): Rename mutable_flag to uninlinable
5964         and bitfield to tinfo_fn_p.
5965         (DECL_TINFO_FN_P): Adjust.
5966         (SET_DECL_TINFO_FN_P): Likewise.
5967         (DECL_MUTABLE_P): Likewise.
5968         (DECL_C_BIT_FIELD): Likewise.
5969         (SET_DECL_C_BIT_FIELD): Likewise.
5970         (CLEAR_DECL_C_BIT_FIELD): Likewise.
5971         (DECL_UNINLINABLE): Likewise.
5972         * class.c (alter_access): Call retrofit_lang_decl if ncessary.
5973         (handle_using_decl): Remove assertion.
5974         (build_vtbl_or_vbase_field): Use build_decl, not build_lang_decl,
5975         to build FIELD_DECLs.
5976         (build_base_field): Likewise.
5977         (layout_class_type): Likewise.
5978         * decl.c (init_decl_processing): Likewise.
5979         (build_ptrmemfunc_type): Likewise.
5980         (grokdeclarator): Likewise.
5981         * decl2.c (grok_x_components): Likewise.
5982         * except.c (call_eh_info): Likewise.
5983         * init.c (init_init_processing): Likewise.
5984         * rtti.c (expand_class_desc): Likewise.
5985         (create_pseudo_type_info): Likewise.
5986         (get_vmi_pseudo_type_info): Likewise.
5987         (create_tinfo_types): Likewise.
5988         * ptree.c (print_lang_decl): Adjust.
5989         * typeck.c (build_component_ref): Don't check DECL_LANG_SPECIFIC
5990         before checking DECL_MUTABLE_P.
5991
5992         * decl2.c (maybe_retrofit_in_chrg): Don't create in-charge
5993         parameters for template functions.
5994         * pt.c (tsubst_decl): Make sure we call maybe_retrofit_in_chrg for
5995         destructors as well as constructors.
5996
5997 2000-05-22  Mark Mitchell  <mark@codesourcery.com>
5998
5999         * class.c (build_ctor_vtbl_group): Set inits.
6000         * optimize.c (maybe_clone_body): Set DECL_INLINE and
6001         DECL_THIS_INLINE appropriately for clones.
6002
6003         * cp-tree.h (IDENTIFIER_TYPENAME_P): Use a flag, not strncmp.
6004         (DECL_CONV_FN_P): Simplify.
6005         (DECL_OPERATOR): Remove.
6006         (language_to_string): Declare.
6007         * decl.c (duplicate_decls): Fix typo in comment.
6008         (grokdeclarator): Adjust use of IDENTIFIER_TYPENAME_P.
6009         (grok_op_properties): Use DECL_CONV_FN_P instead of
6010         IDENTIFIER_TYPENAME_P.
6011         * dump.c (dequeue_and_dump): Dump the language linkage of
6012         declarations.
6013         * error.c (language_to_string): Give it external linkage.
6014         * method.c (build_typename_overload): Set IDENTIFIER_TYPENAME_P.
6015         (implicitly_declare_fn): Set DECL_LANGUAGE.
6016         * pt.c (check_explicit_specialization): Use DECL_CONV_FN_P, not
6017         IDENTIFIER_TYPENAME_P.
6018         (tsubst_decl): Likewise.
6019         (tsubst_copy): Adjust use of IDENTIFIER_TYPENAME_P.
6020         * semantics.c (finish_member_declaration): Don't mark members of
6021         classes declared in an extern "C" region as extern "C".
6022
6023 2000-05-22  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
6024
6025         * decl2.c (qualified_lookup_using_namespace): Look through
6026         namespace aliases.
6027
6028         * decl.c (push_using_decl): Return the old decl on namespace level.
6029
6030 2000-05-21  Mark Mitchell  <mark@codesourcery.com>
6031
6032         * cp-tree.h (SET_BINFO_NEW_VTABLE_MARKED): Add sanity checks.
6033         (VTT_NAME_PREFIX): New macro.
6034         (CTOR_VTBL_NAME_PREFIX): Likewise.
6035         (get_ctor_vtbl_name): New function.
6036         * class.c (get_vtable_name): Simplify.
6037         (get_vtt_name): New function.
6038         (get_vtable_decl): Don't set IDENTIFIER_GLOBAL_VALUE.
6039         (dfs_mark_primary_bases): Update the CLASSTYPE_VBASECLASSES list
6040         when a virtual base becomes primary.
6041         (finish_struct_1): Set CLASSTYPE_VFIELDS a little earlier.  Build
6042         VTTs.
6043         (finish_vtbls): Adjust calls to accumulate_vtbl_inits to pass in
6044         additional parameters.
6045         (dfs_finish_vtbls): Don't clear BINFO_NEW_VTABLE_MARKED.
6046         (initialize_array): New function.
6047         (build_vtt): Likewise.
6048         (build_vtt_inits): Likewise.
6049         (dfs_build_vtt_inits): Likewise.
6050         (dfs_fixup_binfo_vtbls): Likewise.
6051         (build_ctor_vtbl_group): Likewise.
6052         (initialize_vtable): Use initialize_array.
6053         (accumulate_vtbl_inits): Reimplement to handle construction
6054         vtables.
6055         (dfs_accumulate_vtbl_inits): Likewise.
6056         (bulid_vtbl_initializer): Adjust parameter name.
6057         * method.c (build_typename_overload): Remove #if 0'd code.
6058         (get_ctor_vtbl_name): New function.
6059         * search.c (dfs_walk_real): Use BINFO_N_BASETYPES.
6060         (init_vbase_pointers): Don't mess with the TREE_CHAIN of a binfo.
6061
6062         * cp-tree.h (struct lang_type): Remove search_slot.
6063         (CLASSTYPE_SEARCH_SLOT): Remove.
6064         (emit_base_init): Change prototype.
6065         (initialize_vtbl_ptrs): Likewise.
6066         (expand_indirect_vtbls_init): Likewise.
6067         (clear_search_slots): Remove.
6068         * decl.c (lang_mark_tree): Don't mark search_slot.
6069         * init.c (initialize_vtbl_ptrs): Simplify.
6070         (emit_base_init): Likewise.
6071         * search.c (struct vbase_info): Document decl_ptr.
6072         (convert_pointer_to_single_level): Remove.
6073         (dfs_find_vbases): Remove.
6074         (dfs_init_base_pointers): Simplify.
6075         (dfs_clear_vbase_slots): Remove.
6076         (dfs_vtable_path_unmark): New function.
6077         (init_vbase_pointers): Simplify.
6078         (expand_upcast_fixups): Don't rely on CLASSTYPE_SEARCH_SLOT.
6079         (expand_indirect_vtbls_init): Simplify.  Don't call
6080         mark_all_temps_used.
6081         * semantics.c (setup_vtbl_ptr): Adjust calls to emit_base_init and
6082         initialize_vtbl_ptrs.
6083
6084 2000-05-20  Zack Weinberg  <zack@wolery.cumb.org>
6085
6086         * except.c: Add static prototypes.
6087
6088 2000-05-20  H.J. Lu  <hjl@gnu.org>
6089
6090         * Make-lang.in (cplib2.ready): Also depend on cc1plus$(exeext).
6091
6092 2000-05-19  Mark Mitchell  <mark@codesourcery.com>
6093
6094         Don't create a separate copy of virtual bases for the
6095         CLASSTYPE_VBASECLASSES list.
6096         * cp-tree.h (CLASSTYPE_VBASECLASSES): Change documentation.
6097         (BINFO_FOR_VBASE): Remove.
6098         (CANONICAL_BINFO): Adjust.
6099         (binfo_for_vbase): New function.
6100         * class.c (build_vbase_pointer_fields): Use binfo_for_vbase
6101         instead of BINFO_FOR_VBASE.
6102         (build_vbase_pointer): Likewise.
6103         (build_secondary_vtable): Likewise.
6104         (dfs_mark_primary_bases): Likewise.
6105         (mark_primary_bases): Likewise.
6106         (layout_nonempty_base_or_field): Likewise.
6107         (dfs_set_offset_for_shared_vbases): Likewise.
6108         (dfs_set_offset_for_unshared_vbases): Likewise.
6109         (layout_virtual_bases): Likewise.  Adjust for changes to the
6110         CLASSTYPE_VBASECLASSES list.
6111         (dump_class_hierarchy_r): Use binfo_for_vbase
6112         instead of BINFO_FOR_VBASE.
6113         (dump_class_hierarchy): Likewise.
6114         (finish_vtbls): Likewise.
6115         (build_vtbl_initializer): Adjust for changes to the
6116         CLASSTYPE_VBASECLASSES list.
6117         (build_vbase_offset_vtbl_entries): Use binfo_for_vbase.
6118         * decl.c (finish_destructor_body): Adjust for changes to the
6119         CLASSTYPE_VBASECLASSES list.
6120         * init.c (sort_base_init): Use binfo_for_vbase.
6121         (construct_virtual_bases): Adjust for changes to the
6122         CLASSTYPE_VBASECLASSES list.
6123         (expand_member_init): Use binfo_for_vbase.
6124         (build_vbase_delete):  Adjust for changes to the
6125         CLASSTYPE_VBASECLASSES list.
6126         * method.c (do_build_copy_constructor): Likewise.
6127         * rtti.c (get_base_offset): Use binfo_for_vbase.
6128         (expand_class_desc): Remove #if 0'd code.
6129         * search.c (struct vbase_info): Remove vbase_types.
6130         (get_base_distance):  Use binfo_for_vbase.
6131         (lookup_field_queue_p): Use CANONICAL_BINFO.
6132         (get_shared_vbase_if_not_primary): Use binfo_for_vbase.
6133         (get_pure_virtuals): Adjust for changes to the
6134         CLASSTYPE_VBASECLASSES list.
6135         (dfs_find_vbases): Use binfo_for_vbase.
6136         (dfs_init_vbase_pointers): Likewise.
6137         (init_vbase_pointers): Don't initialize vi.vbase_types.
6138         (virtual_context): Use binfo_for_vbase.
6139         (fixup_all_virtual_upcast_offsets): Adjust for changes to the
6140         CLASSTYPE_VBASECLASSES list.
6141         (expand_indirect_vtbls_init): Simplify.
6142         (dfs_get_vbase_types): Don't replicate virtual bases.
6143         (find_vbase_instance): Use binfo_for_vbase.
6144         (binfo_for_vbase): New function.
6145         * typeck.c (get_delta_difference): Use binfo_for_vbase.
6146
6147 2000-05-17  Mark Mitchell  <mark@codesourcery.com>
6148
6149         * decl2.c (finish_anon_union): Generalize error messages to handle
6150         anonymous structures.
6151         * init.c (perform_member_init): Remove `name' parameter.
6152         (build_field_list): New function.
6153         (sort_member_init): Handle anonymous union initialization order
6154         correctly.  Check for multiple initializations of the same union.
6155         (emit_base_init): Don't look up fields by name here.
6156         (expand_member_init): Record the result of name lookup for future
6157         reference.
6158         * typeck.c (build_component_ref): Fix formatting.
6159
6160 Wed May 17 17:27:44 2000  Andrew Cagney  <cagney@b1.cygnus.com>
6161
6162         * decl.c (pop_label): Replace warn_unused with warn_unused_label.
6163         * typeck.c (build_x_compound_expr): Replace warn_unused with
6164         warn_unused_value.
6165
6166         * decl2.c (lang_decode_option): Update -Wall unused flags by
6167         calling set_Wunused.
6168
6169 2000-05-16  Mark Mitchell  <mark@codesourcery.com>
6170
6171         * cp-treeh (BINFO_NEW_VTABLE_MARKED): Update documentation.
6172         * init.c (dfs_vtable_path_unmark): Remove.
6173         * search.c (marked_new_vtable_p): Likewise.
6174         (unmarked_new_vtable_p): Likewise.
6175         (dfs_search_slot_nonempty_p): Likewise.
6176         (dfs_mark): Likewise.
6177         (dfs_vtable_path_unmark): Likewise.
6178         (dfs_find_vbases): Don't set BINFO_NEW_VTABLE_MARKED.
6179         (dfs_int_vbase_pointers): Don't clear BINFO_VTABLE_PATH_MARKED.
6180         (dfs_init_vbase_pointers): Remove special-case new ABI code.
6181         (dfs_clear_vbase_slots): Don't clear BINFO_NEW_VTABLE_MARKED.
6182         (init_vbase_pointers): Simplify.
6183         (expand_indirect_vtbls_init): Likewise.
6184
6185         * class.c (copy_virtuals): New function.
6186         (build_primary_table): Use it.
6187         (build_secondary_vtable): Likewise.
6188         (modify_vtable_entry): Use NULL_TREE, not integer_zero_node, to
6189         indicate that no vcall offset is required.
6190         (add_virtual_function): Likewise.
6191         (modify_all_vtables): Likewise.
6192         (dfs_finish_vtbls): Adjust call to build_vtbl_initializer.
6193         (dfs_accumulate_vtbl_inits): Likewise.
6194         (build_vtbl_initializer): Make changes to handle construction
6195         vtables.
6196         (dfs_build_vcall_offset_vtbl_entries): Likewise.
6197         (build_rtti_vtbl_entries): Likewise.
6198         (build_vtable_entries): Handle a NULL vcall_index.
6199
6200 2000-05-15  Gabriel Dos Reis  <gdr@codesourcery.com>
6201
6202         * decl2.c (lang_decode_option): Fix thinko.
6203
6204 2000-05-14  Jason Merrill  <jason@casey.cygnus.com>
6205
6206         * except.c (check_handlers): New fn.
6207         * cp-tree.h: Declare it.
6208         * semantics.c (finish_handler_sequence): Call it.
6209         (finish_function_handler_sequence): Likewise.
6210         (finish_handler_parms): Set TREE_TYPE on the handler.
6211         * cp-tree.h (PUBLICLY_UNIQUELY_DERIVED_P): New macro.
6212         * search.c (get_base_distance_recursive): If protect>1, ignore
6213         special access.
6214         (get_base_distance): Don't reduce watch_access.
6215
6216 2000-05-13  Gabriel Dos Reis <gdr@codesourcery.com>
6217
6218         * lex.c: #include diagnostic.h.
6219         (lang_init_options): Set default prefixing rules.
6220
6221         * lang-options.h: Add -fdiagnostics-show-location=.
6222
6223         * decl2.c: #include diagnostic.h.
6224         (lang_decode_option): Handle -fdiagnostics-show-location=.
6225
6226 2000-05-12  Nathan Sidwell  <nathan@codesourcery.com>
6227
6228         * tinfo.cc: Revert my 2000-05-08 and 2000-05-07 changes.
6229         * vec.cc: Revert my 2000-05-07 change.
6230
6231 2000-05-11  Jason Merrill  <jason@casey.cygnus.com>
6232
6233         * class.c (check_field_decls): Complain about non-static data
6234         members with same name as class in class with constructor.
6235
6236 2000-05-10  Jason Merrill  <jason@casey.cygnus.com>
6237
6238         * decl.c (grokdeclarator): Allow non-static data members with
6239         same name as class.
6240
6241 2000-05-09  Zack Weinberg  <zack@wolery.cumb.org>
6242
6243         * cp-tree.h: Constify tree_srcloc.filename, tinst_level.file,
6244         and pending_inline.filename.  Update prototypes.
6245         * decl.c (define_label): Constify filename parameter.
6246         * decl2.c (warn_if_unknown_interface): Constify local char *.
6247         * input.c Constify input_source.filename. Don't declare
6248         input_filename or lineno.  Constify filename parameter to feed_input.
6249         * lex.c (init_parse): Constify parameter and return value.
6250         (cp_pragma_interface, cp_pragma_implementation): Constify
6251         filename argument.
6252         (reinit_parse_for_method, reinit_parse_for_block,
6253         reinit_parse_for_expr, feed_defarg, handle_cp_pragma):
6254         Constify local char *.
6255         * pt.c: Don't declare lineno or input_filename.
6256         (print_template_context, tsubst_friend_function, tsubst_decl,
6257         tsubst, instantiate_decl): Constify local char *.
6258         * semantics.c (expand_body): Constify local char *.
6259         * tree.c (build_srcloc): Constify filename parameter.
6260         * typeck.c (c_expand_asm_operands): Constify filename
6261         parameter.
6262
6263 2000-05-08  Nathan Sidwell  <nathan@codesourcery.com>
6264
6265         * tinfo.cc (__dynamic_cast): Use a reinterpret_cast. Fix
6266         offsetof expansion.
6267
6268 2000-05-08  Branko Cibej  <branko.cibej@hermes.si>
6269
6270         * inc/cxxabi.h:  Fix typos in comment.
6271         (__base_class_info::__offset): Use a static_cast.
6272
6273 2000-05-07  Nathan Sidwell  <nathan@codesourcery.com>
6274
6275         * inc/cxxabi.h: Use __SIZE_TYPE_ and __PTRDIFF_TYPE__ in place
6276         of std::size_t and std::ptrdiff_t respectively.
6277         * tinfo.cc: Likewise.
6278         * vec.cc: Likewise.
6279
6280 2000-05-06  Richard Henderson  <rth@cygnus.com>
6281
6282         * typeck.c (build_c_cast): Don't warn integer->pointer size
6283         mismatch for constants.
6284
6285 2000-05-06  Nathan Sidwell  <nathan@codesourcery.com>
6286
6287         * rtti.c (ptmd_initializer): Set non-public, if class is
6288         incomplete.
6289
6290         * inc/cxxabi.h (__dynamic_cast): Explicitly say extern "C++".
6291         (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
6292         __cxa_vec_delete): Likewise.
6293         * tinfo.cc (__dynamic_cast): Likewise.
6294         * vec.cc (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
6295         __cxa_vec_delete): Likewise.
6296
6297 2000-05-04  Mark Mitchell  <mark@codesourcery.com>
6298
6299         * cp-tree.h (DELTA_FROM_VTABLE_ENTRY): Remove.
6300         (SET_FNADDR_FROM_VTABLE_ENTRY): Likewise.
6301         (lang_decl_flags): Add vcall_offset.
6302         (THUNK_VCALL_OFFSET): Use it.
6303         * decl.c (lang_mark_tree): Don't mark DECL_ACCESS for a thunk.
6304         * method.c (make_thunk): Create the lang_decl here, not in
6305         emit_thunk.
6306         (emit_thunk): Make generic thunks into ordinary functions once
6307         they have been fed to expand_body.
6308         * semantics.c (expand_body): Set current_function_is_thunk here.
6309
6310 2000-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6311
6312         * class.c (update_vtable_entry_for_fn): Prototype.
6313
6314         * pt.c (tsubst_decl): Initialize variables `argvec', `gen_tmpl'
6315         and `tmpl'.
6316
6317         * search.c (dfs_build_inheritance_graph_order): Prototype.
6318
6319 2000-05-04  Mark Mitchell  <mark@codesourcery.com>
6320
6321         * cp-tree.h (special_function_kind): Add various kinds of
6322         destructors.
6323         (special_function_p): New function.
6324         * class.c (overrides): Don't let one kind of destructor override
6325         another.
6326         * decl2.c (mark_used): Use DECL_NON_THUNK_FUNCTION_P when deciding
6327         whether or not to instantiate a template.
6328         * tree.c (special_function_p): Define.
6329
6330 2000-05-03  Mark Mitchell  <mark@codesourcery.com>
6331
6332         * cp-tree.def (THUNK_DECL): Remove.
6333         * cp-tree.h (DECL_THUNK_P): New macro.
6334         (DECL_NON_THUNK_FUNCTION_P): Likewise.
6335         (DECL_EXTERN_C_FUNCTION_P): Likewise.
6336         (SET_DECL_THUNK_P): Likewise.
6337         (DELTA_FROM_VTABLE_ENTRY): Use DECL_THUNK_P.
6338         (FNADDR_FROM_VTABLE_ENTRY): Likewise.
6339         (DECL_MAIN_P): Use DECL_EXTERN_C_FUNCTION_P.
6340         * decl.c (decls_match): Use DECL_EXTERN_C_P.
6341         (duplicate_decls): Likewise.
6342         (pushdecl): Likewise.  Adjust thunk handling.
6343         (grokfndecl): Use DECL_EXTERN_C_P.
6344         * decl2.c (mark_vtable_entries): Use DECL_THUNK_P.
6345         * dump.c (dequeue_and_dump): Remove THUNK_DECL handling.
6346         * except.c (nothrow_libfn_p): Use DECL_EXTERN_C_P.
6347         * expr.c (cplus_expand_expr): Remove THUNK_DECL handling.
6348         * method.c (make_thunk): Use SET_DECL_THUNK_P.  Set
6349         DECL_NO_STATIC_CHAIN.
6350         (emit_thunk): Don't play games with TREE_CODE on thunks.  Don't
6351         set DECL_DESTRUCTOR_P or DECL_CONSTRUCTOR_P on a thunk.
6352         * search.c (covariant_return_p): Remove THUNK_DECL handling.
6353         * ir.texi: Update.
6354
6355 2000-05-01  Jason Merrill  <jason@casey.cygnus.com>
6356
6357         * tree.c (walk_tree): Set lineno.
6358
6359 2000-05-01  Mark Mitchell  <mark@codesourcery.com>
6360
6361         * exception.cc: Update license notice.
6362         * new.cc: Likewise.
6363         * new1.cc: Likewise.
6364         * new2.cc: Likewise.
6365         * tinfo.cc: Likewise.
6366         * tinfo2.cc: Likewise.
6367         * vec.cc: Likewise.
6368         * inc/cxxabi.h: Likewise.
6369         * inc/exception: Likewise.
6370         * inc/new: Likewise.
6371         * inc/new.h: Likewise.
6372         * inc/typeinfo: Likewise.
6373
6374 2000-05-01  Jason Merrill  <jason@casey.cygnus.com>
6375
6376         * tree.c (build_target_expr_with_type): If we already have a
6377         TARGET_EXPR, just return it.
6378
6379         * optimize.c (initialize_inlined_parameters): Don't generate an
6380         EXPR_STMT if we can just use DECL_INITIAL.
6381         * decl.c (emit_local_var): Only make the initialization a
6382         full-expression if stmts_are_full_exprs_p.
6383
6384 2000-05-01  Mark Mitchell  <mark@codesourcery.com>
6385
6386         * cp-tree.h (same_type_ignoring_top_level_qualifiers_p): New
6387         macro.
6388         * call.c (standard_conversion): Use it.
6389         (direct_reference_binding): Likewise.
6390         (build_over_call): Likewise.
6391         (is_properly_derived_from): Likewise.
6392         (compare_ics): Likewise.
6393         * class.c (resolves_to_fixed_type_p): Likewise.
6394         * optimize.c (declare_return_variable): Likewise.
6395         * pt.c (is_specialization_of): Likewise.
6396         (unify): Likewise.
6397         * typeck.c (comp_target_parms): Likeiwse.
6398         (build_static_cast): Likewise.
6399         (build_reinterpret_cast): Likewise.
6400         (build_const_cast): Likewise.
6401         (comp_ptr_ttypes_real): Likewise.
6402         (comp_ptr_ttypes_const): Likewise.
6403         * typeck2.c (process_init_constructor): Likewise.
6404
6405 2000-04-30  Scott Snyder <snyder@fnal.gov>
6406
6407         * decl.c (finish_destructor_body): Use the base destructor when
6408         destroying virtual bases.
6409
6410 2000-04-30  Mark Mitchell  <mark@codesourcery.com>
6411
6412         * expr.c (cplus_expand_expr): Preserve temporaries when expanding
6413         STMT_EXPRs.
6414         * optimize.c (struct inline_data): Add target_exprs field.
6415         (declare_return_variable): When a function returns an aggregate,
6416         use the variable declared in the TARGET_EXPR as the remapped
6417         DECL_RESULT.
6418         (expand_call_inline): Update the pending target_exprs stack.
6419         (optimize_function): Initialize the stack.
6420
6421         * decl2.c (finish_file): Fix typo in comment.
6422
6423         * method.c (emit_thunk): Don't try to return a `void' value.
6424
6425         * optimize.c (initialize_inlined_parameters): If the parameter is
6426         addressable, we need to make a new VAR_DECL, even if the
6427         initializer is constant.
6428
6429 2000-04-28  Cosmin Truta  <cosmint@cs.ubbcluj.ro>
6430
6431         * decl.c (grok_op_properties): Add an extra check of argtypes.
6432
6433 2000-04-27  Mark Mitchell  <mark@codesourcery.com>
6434
6435         * optimize.c (copy_body_r): Use STRIP_TYPE_NOPS when copying
6436         variables.
6437         (initialize_inlined_parameters): Try to avoid creating new
6438         VAR_DECLs.
6439
6440 2000-04-27  Alex Samuel  <samuel@codesourcery.com>
6441
6442         * lex.c (my_get_run_time): Remove.
6443         (init_filename_times): Use get_run_time instead of my_get_run_time.
6444         (check_newline): Likewise.
6445         (dump_time_statistics): Likewise.
6446         * decl2.c (finish_file): Push and pop timevar TV_VARCONST instead
6447         of computing elapsed time explicitly.
6448
6449 2000-04-26  Mark Mitchell  <mark@codesourcery.com>
6450
6451         * cp-tree.h (TREE_READONLY_DECL_P): Use DECL_P.
6452         * init.c (decl_constant_value): Check TREE_READONLY_DECL_P.
6453         * call.c (convert_like_real): Don't test TREE_READONLY_DECL_P
6454         before calling decl_constant_value.
6455         * class.c (check_bitfield_decl): Likewise.
6456         * cvt.c (ocp_convert): Likewise.
6457         (convert): Likewise.
6458         * decl.c (compute_array_index_type): Likewise.
6459         (build_enumerator): Likewise.
6460         * decl2.c (check_cp_case_value): Likewise.
6461         * pt.c (convert_nontype_argument): Likewise.
6462         (tsubst): Likewise.
6463         * typeck.c (decay_conversion): Likewise.
6464         (build_compound_expr): Likewise.
6465         (build_reinterpret_cast): Likewise.
6466         (build_c_cast): Likewise.
6467         (convert_for_assignment): Likewise.
6468
6469 2000-04-26  Jason Merrill  <jason@casey.cygnus.com>
6470
6471         * decl.c (finish_function): Don't play games with DECL_INLINE.
6472
6473 2000-04-25  Gabriel Dos Reis  <dosreis@cmla.ens-cachan.fr>
6474
6475         * ir.texi: Correct typo.
6476
6477 2000-04-25  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
6478
6479         * decl.c (grokdeclarator): Reject VLAs as members.
6480
6481 2000-04-24  Gabriel Dos Reis  <gdr@codesourcery.com>
6482
6483         * call.c (standard_conversion): Accept conversion between
6484         COMPLEX_TYPEs.
6485
6486         * cvt.c (ocp_convert): Handle conversion to COMPLEX_TYPE.
6487
6488 2000-04-24  Zack Weinberg  <zack@wolery.cumb.org>
6489
6490         * decl2.c (finish_file): Remove double setup for accounting
6491         compile time.
6492
6493 2000-04-24  Robert Lipe <robertlipe@usa.net>
6494
6495         * cp-tree.h (lang_type): Member `language' now ENUM_BITFIELD.
6496
6497 2000-04-23  Benjamin Kosnik  <bkoz@cygnus.com>
6498
6499         * new.cc (set_new_handler): Needs to be in std::.
6500
6501 2000-04-23  Mark Mitchell  <mark@codesourcery.com>
6502
6503         * cp-tree.h (lang_decl): Remove pretty_function_p.
6504         (DECL_PRETTY_FUNCTION_P): Use TREE_LANG_FLAG_0, not a bit in the
6505         language-specific node.
6506         * decl.c (cp_make_fname_decl): Use build_decl, not
6507         build_lang_decl, to build the variables.
6508         (grokvardecl): Don't call build_lang_decl for local variables in
6509         templates.
6510         (grokdeclarator): Don't call build_lang_decl for local type
6511         declarations in templates.
6512         * lex.c (retrofit_lang_decl): Use ggc_alloc_obj to allocated
6513         zero'd memory, rather than calling memset.
6514         * pt.c: Include hashtab.h.
6515         (local_specializations): New variable.
6516         (retrieve_local_specialization): Use it.
6517         (register_local_specialization): Likewise.
6518         (tsubst_decl): Don't assume local variables have
6519         DECL_LANG_SPECIFIC.
6520         (instantiate_decl): Set up local_specializations.
6521         * Makefile.in (HTAB_H): New variable.
6522
6523 2000-04-23  Richard Henderson  <rth@cygnus.com>
6524
6525         * typeck.c (c_expand_asm_operands): Restore the original
6526         contents of the output list.
6527
6528 2000-04-22  Gabriel Dos Reis <gdr@codesourcery.com>
6529
6530         * ir.texi:  Document complex number representation.
6531
6532 2000-04-20  Nathan Sidwell  <nathan@codesourcery.com>
6533
6534         * rtti.c (init_rtti_processing): Set tinfo_var_id in new-abi.
6535         (target_incomplete_p): New function.
6536         (tinfo_base_init): Create comdat NTBS name variable.
6537         (ptr_initializer): Add non_public parameter. Calculate it.
6538         (ptmd_initializer): Likewise.
6539         (synthesize_tinfo_var): Adjust. Emit incomplete class tinfo.
6540         (create_real_tinfo_var): Add non_public parameter. Use it.
6541         Push proxy into global namespace.
6542         * inc/cxxabi.h (__pointer_type_info::incomplete_class_mask):
6543         New enumeration.
6544         * inc/typeinfo (type_info::before, type_info::operator==):
6545         Compare __name addresses.
6546
6547         * tinfo2.cc: Remove new-abi builtins comment.
6548
6549 2000-04-20  Jason Merrill  <jason@casey.cygnus.com>
6550
6551         * typeck.c (build_x_function_call): Resolve an OFFSET_REF.
6552
6553         * call.c (joust): Exit early if we get the same function, too.
6554
6555         * decl2.c (key_method): Return NULL_TREE for template classes.
6556         (import_export_class): Don't need to check for template classes.
6557
6558 2000-04-18  Zack Weinberg  <zack@wolery.cumb.org>
6559
6560         * lex.c: Remove references to cccp.c.
6561
6562 2000-04-18  Mark Mitchell  <mark@codesourcery.com>
6563
6564         * cp-tree.h (lang_decl_flags): Remove const_memfunc and
6565         volatile_memfunc.  Add destructor_attr.  Adjust dummy.
6566         (DECL_DESTRUCTOR_P): Use destructor_attr.
6567         (DECL_CONST_MEMFUNC_P): Reimplement.
6568         (DECL_VOLATILE_MEMFUNC_P): Remove.
6569         * class.c (finish_struct_methods): Use CLASSTYPE_DESTRUCTORS.
6570         (overrides): Use DECL_DESTRUCTOR_P.
6571         (check_for_override): Likewise.
6572         * decl.c (start_function): Likewise.
6573         * decl2.c (grokfclassfn): Likewise.
6574         (check_classfn): Likewise.
6575         (grok_function_init): Likewise.
6576
6577 2000-04-17  Mark Mitchell  <mark@codesourcery.com>
6578
6579         * decl2.c (grokfield): Issue error on illegal data member
6580         declaration.
6581
6582 Mon Apr 17 17:11:16 2000  Mark P Mitchell  <mark@codesourcery.com>
6583
6584         * method.c (make_thunk): Set DECL_CONTEXT for a THUNK_DECL.
6585
6586 2000-04-16  Mark Mitchell  <mark@codesourcery.com>
6587
6588         * class.c (build_vtable_entry): Don't build thunks for type-info
6589         functions.
6590
6591 2000-04-16  Jason Merrill  <jason@casey.cygnus.com>
6592
6593         * decl.c (decls_match): Allow a redeclaration of a builtin to
6594         specify args while the builtin did not.
6595
6596 2000-04-15  Mark Mitchell  <mark@codesourcery.com>
6597
6598         * cp-tree.def (THUNK_DECL): Add to documentation.
6599         * cp-tree.h (flag_huge_objects): Declare.
6600         * class.c (modify_vtable_entry): Tidy.
6601         (update_vtable_entry_for_fn): Split out from dfs_modify_vtables.
6602         Calculate delta appropriately for the new ABI.
6603         (dfs_modify_vtables): Use it.
6604         (modify_all_vtables): Fix thinko in code to add overriding copies
6605         of functions to primary vtables.
6606         (build_clone): Fix typo in comment.
6607         (clone_function_decl): Correct order of destructors in vtable.
6608         (build_vbase_offset_vtbl_entries): Adjust comment.
6609         (dfs_vcall_offset_queue_p): Remove.
6610         (dfs_build_vcall_offset_vtbl_entries): Update BV_VCALL_INDEX.
6611         (build_vcall_offset_vtbl_entries): Juse use dfs_skip_vbases.
6612         (build_vtable_entry): Correct check for pure virtual functions.
6613         Don't declare flag_huge_objects.
6614         * decl.c (flag_huge_objects): Remove declaration.
6615         * method.c (make_thunk): Tweak mangling for vcall offset thunks.
6616         Use int_size_in_bytes.
6617         (emit_thunk): Handle vcall offset thunks.
6618
6619 Sat Apr 15 16:00:01 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
6620
6621         * decl2.c (parse_time, varconst_time): Delete declarations.
6622         (finish_file): Delete LINENO declaration.
6623         START_TIME and THIS_TIME now long.
6624
6625 2000-04-13  Nathan Sidwell  <nathan@codesourcery.com>
6626
6627         * class.c (build_base_field): Reformat comment.
6628
6629         * inc/cxxabi.h (stddef.h): Comment inclusion.
6630         (__base_class_info::__offset): Comment shift.
6631
6632 2000-04-12  Mark Mitchell  <mark@codesourcery.com>
6633
6634         * cp-tree.h (IDENTIFIER_CTOR_OR_DTOR_P): New macro.
6635         (cp_tree_index): Add CPTI_PUSH_EXCEPTION_IDENTIFIER.
6636         (cp_push_exception_identifier): New macro.
6637         (DECL_COMPLETE_DESTRUCTOR_P): New macro.
6638         (DECL_BASE_DESTRUCTOR_P): Likewise.
6639         (DECL_DELETING_DESTRUCTOR_P): Likewise.
6640         (get_vtbl_decl_for_binfo): Fix formatting.
6641         (in_charge_arg_for_name): New macro.
6642         (maybe_build_cleanup_and_delete): Remove declaration.
6643         * call.c (build_field_call): Use IDENTIFIER_CTOR_OR_DTOR_P.
6644         (in_charge_arg_for_name): New function.
6645         (build_new_method_call): Use it.  Handle cloned destructors.
6646         (build_clone): Don't make the base constructor virtual.
6647         Automatically defer generated functions.
6648         (clone_function_decl): Handle destructors, too.
6649         (clone_constructors_and_destructors): Likewise.
6650         (create_vtable_ptr): Don't create a vtable entry for a cloned
6651         function.
6652         * decl.c (predefined_identifier): Add ctor_or_dtor_p.
6653         (initialize_predefined_identifiers): Update appropriately.
6654         (finish_destructor_body): Simplify.
6655         (maybe_build_cleanup_and_delete): Remove.
6656         * except.c (expand_throw): Handle new-ABI destructors.
6657         * init.c (expand_cleanup_for_base): Use base_dtor_identifier.
6658         (build_dtor_call): New function.
6659         (build_delete): Use it.  Simplify.
6660         * optimize.c (maybe_clone_body): Handle destructors.
6661         * search.c (lookup_field_queue_p): Use IDENTIFIER_CTOR_OR_DTOR_P.
6662
6663         * exception.cc (cleanup_fn): New typedef.
6664         (CALL_CLEANUP): New macro.
6665         (cp_eh_info): Use them.
6666         (__cp_push_exception): Likewise.
6667         (__cp_pop_exception): Likewise.
6668
6669 2000-04-11  Mark Mitchell  <mark@codesourcery.com>
6670
6671         * cp-tree.h (cp_tree_index): Add CPTI_DTOR_IDENTIFIER.
6672         (complete_dtor_identifier): New macro.
6673         (CLASSTYPE_FIRST_CONVERSION): Remove.
6674         (CLASSTYPE_CONSTRUCTOR_SLOT): New macro.
6675         (CLASSTYPE_DESTRUCTOR_SLOT): Likewise.
6676         (CLASSTYPE_FIRST_CONVERSION_SLOT): Likewise.
6677         (CLASSTYPE_CONSTRUCTORS): Likewise.
6678         (CLASSTYPE_DESTRUCTORS): Likewise.
6679         (lang_decl): Add cloned_function.
6680         (DECL_COMPLETE_CONSTRUCTOR_P): New macro.
6681         (DECL_BASE_CONSTRUCTOR_P): Likewise.
6682         (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P): Likewise.
6683         (DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P): Likewise.
6684         (DECL_CLONED_FUNCTION_P): Likewise.
6685         (DECL_CLONED_FUNCTION): Likewise.
6686         (clone_function_decl): Declare.
6687         (maybe_clone_body): Likewise.
6688         * call.c (build_user_type_conversion_1): Call complete object
6689         constructors in the new ABI.
6690         (build_new_method_call): Don't add in-charge parameters under the
6691         new ABI.
6692         * class.c (add_method): Use DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P,
6693         DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P, CLASSTYPE_CONSTRUCTOR_SLOT, and
6694         CLASSTYPE_DESTRUCTOR_SLOT.
6695         (build_clone): New function.
6696         (clone_function_decl): Likewise.
6697         (clone_constructors_and_destructors): Likewise.
6698         (check_bases_and_members): Use it.
6699         * decl.c (iniitialize_predefined_identifiers): Initialize
6700         complete_dtor_identifier.
6701         (finish_function): Don't add extra code to a clone.
6702         (lang_mark_tree): Mark cloned_function.
6703         * decl2.c (mark_used): Don't bother trying to instantiate things
6704         we synthesized.
6705         * dump.c (dequeue_and_dump): Don't dump CP_DECL_CONTEXT twice.
6706         * method.c (set_mangled_name_for_decl): Don't treat clones as
6707         constructors.
6708         (synthesize_method): Sythesize cloned functions, not the clones.
6709         * optimize.c (inline_data): Update comment on ret_label.
6710         (remap_block): Don't assume DECL_INITIAL exists.
6711         (copy_body_r): Allow ret_label to be NULL.
6712         (maybe_clone_body): Define.
6713         * pt.c (tsubst_decl): Handle clones.
6714         (instantiate_clone): New function.
6715         (instantiate_template): Use it.
6716         (set_mangled_name_for_template_decl): Don't treat clones as
6717         constructors.
6718         * search.c (lookup_fnfields_1): Use CLASSTYPE_CONSTRUCTOR_SLOT,
6719         CLASSTYPE_DESTRUCTOR_SLOT, and CLASSTYPE_FIRST_CONVERSION_SLOT.
6720         * semantics.c (expand_body): Clone function bodies as necessary.
6721
6722         * optimize.c (remap_decl): Avoid sharing structure for arrays
6723         whose size is only known at run-time.
6724         * tree.c (copy_tree_r): Don't copy PARM_DECLs.
6725
6726         * cp-tree.h (lang_decl_flags): Rename constructor_for_vbase_attr
6727         to has_in_charge_parm_p.
6728         (DECL_CONSTRUCTOR_FOR_VBASE_P): Rename to ...
6729         (DECL_HAS_IN_CHARGE_PARM_P): ... this.
6730         (DECL_COPY_CONSTRUCTOR_P): New macro.
6731         * call.c (add_function_candidate): Use DECL_HAS_IN_CHARGE_PARM_P.
6732         (build_user_type_conversion_1): Likewise.
6733         (convert_like_real): Likewise.
6734         (build_over_call): Likeiwse.  Use DECL_COPY_CONSTRUCTOR_P.
6735         * decl.c (grokdeclarator): Use DECL_HAS_IN_CHARGE_PARM_P.
6736         (copy_args_p): Likewise.
6737         (grok_ctor_properties): Likewise.
6738         (start_function): Likewise.
6739         * decl2.c (maybe_retrofit_in_charge): Likewise.  Set it.
6740         * error.c (dump_function_decl): Use DECL_HAS_IN_CHARGE_PARM_P.
6741         * init.c (emit_base_init): Use DECL_COPY_CONSTRUCTOR_P.
6742         * method.c (do_build_copy_constructor): Use
6743         DECL_HAS_IN_CHARGE_PARM_P.
6744         (synthesize_method): Likewise.
6745         * pt.c (instantiate_template): Remove goto.
6746         * tree.c (build_cplus_method_type): Remove mention of obstacks in
6747         comment.
6748
6749         * cp-tre.h (finish_function): Change prototype.
6750         * decl.c (end_cleanup_fn): Adjust caller.
6751         (finish_function): Take only one parameter.
6752         * decl2.c (finish_objects): Adjust caller.
6753         (finish_static_storage_duration_function): Likewise.
6754         * method.c (emit_thunk): Likewise.
6755         * parse.y: Likewise.
6756         * parse.c: Regenerated.
6757         * pt.c (instantiate_decl): Likewise.
6758         * rtti.c (synthesize_tinfo_fn): Likewise.
6759         * semantics.c (expand_body): Likewise.
6760
6761         * cp-tree.h (copy_decl): New function.
6762         * class.c (finish_struct_1): Use it.
6763         * lex.c (copy_decl): Define it.
6764         * pt.c (tsubst_decl): Likewise.
6765         * tree.c (copy_template_template_parm): Likewise.
6766
6767         * cp-tree.h (lang_type): Remove has_nonpublic_ctor and
6768         has_nonpublic_assign_ref.
6769         (TYPE_HAS_NONPUBLIC_CTOR): Don't declare.
6770         (TYPE_HAS_NONPUBLIC_ASSIGN_REF): Likewise.
6771         * class.c (finish_struct_methods): Don't set
6772         TYPE_HAS_NONPUBLIC_CTOR or TYPE_HAS_NONPUBLIC_ASSIGN_REF.
6773         (interface_only): Don't declare.
6774         (interface_unknown): Likewise.
6775
6776 2000-04-11  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
6777
6778         * tree.h (HAVE_TEMPLATES): Remove definition.
6779         * lang-options.h (-fthis-is-variable): Remove documentation.
6780
6781 2000-04-10  Jason Merrill  <jason@casey.cygnus.com>
6782
6783         * class.c (instantiate_type): Handle object-relative template-id.
6784
6785         * semantics.c (finish_expr_stmt): Call convert_to_void here.
6786         * decl.c (cplus_expand_expr_stmt): Not here.
6787
6788         * rtti.c (build_dynamic_cast_1): Call non_lvalue.
6789         Initialize exprtype earlier.
6790
6791         * parse.y (fn.def1): Check for defining types in return types.
6792
6793         * decl.c (check_tag_decl): Notice extra fundamental types.
6794         Diagnose empty decls in classes, too.
6795
6796         * decl.c (grokdeclarator): Don't override an anonymous name if no
6797         declarator was given.
6798
6799         * cvt.c (convert_to_void): Call resolve_offset_ref.
6800
6801         * typeck.c (build_x_function_call): Abort if we get an OFFSET_REF.
6802
6803         * decl2.c (decl_namespace): Handle getting a type.
6804
6805         * typeck.c (build_c_cast): Re-enable warning for cast between
6806         pointer and integer of different size.
6807
6808 2000-04-10  Nathan Sidwell  <nathan@codesourcery.com>
6809
6810         * inc/cxxabi.h (__pointer_type_info): Add restrict and
6811         incomplete flags.
6812         (__pointer_type_info::__pointer_catch): New virtual function.
6813         (__pointer_to_member_type_info): Derive from
6814         __pointer_type_info. Adjust.
6815         (__pointer_to_member_type_info::__do_catch): Remove.
6816         (__pointer_to_member_type_info::__is_pointer_p): Declare.
6817         (__pointer_to_member_type_info::__pointer_catch): Declare.
6818         * rtti.c (qualifier_flags): Add restrict flag.
6819         (ptmd_initializer): Reorder members.
6820         (create_tinfo_types): Expand comments. Reorder
6821         ptmd_desc_type_node members.
6822         * tinfo2.cc (__pointer_to_member_type_info::__is_pointer_p):
6823         Implement.
6824         (__pointer_type_info::__do_catch): Move specific code into
6825         __pointer_catch. Call it.
6826         (__pointer_type_info::__pointer_catch): Non-pointer-to-member
6827         specific catch checking. Fix void conversion check.
6828         (__pointer_to_member_type_info::__do_catch): Remove.
6829         (__pointer_to_member_type_info::__pointer_catch): Implement.
6830
6831 2000-04-10  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
6832
6833         * lex.c (init_parse): Remove traces of classof and headof.
6834         * decl2.c (flag_operator_names): Default to 1.
6835         (lang_decode_option): Do not set it for -ansi.
6836
6837 2000-04-09  Mark Mitchell  <mark@codesourcery.com>
6838
6839         * cp-tree.h (struct lang_decl): Remove main_decl_variant.
6840         (DECL_MAIN_VARIANT): Remove.
6841         * decl.c (duplicate_decls): Don't set it.
6842         (start_function): Likewise.
6843         (lang_mark_tree): Don't mark it.
6844         * decl2.c (defer_fn): Don't use it.
6845         * lex.c (retrofit_lang_decl): Don't set it.
6846         * pt.c (tsubst_decl): Likewise.
6847         * ptree.c (print_lang_decl): Don't print it.
6848         * typeck.c (mark_addressable): Don't use it.
6849
6850 2000-04-09  Nathan Sidwell  <nathan@codesourcery.com>
6851
6852         * vec.cc: Include <new> and <exception>.
6853         (__cxa_vec_ctor): Use __cxa_vec_dtor for cleanup.
6854         (__cxa_vec_dtor): Catch dtor exceptions, and rethrow or
6855         terminate.
6856         (__cxa_vec_delete): Catch dtor exceptions.
6857
6858 2000-04-09  Nathan Sidwell  <nathan@codesourcery.com>
6859
6860         Prepend __ to implementation defined names.
6861         * inc/typeinfo (type_info): Rename _name to __name.
6862         (type_info::type_info): Rename parameter.
6863         (type_info::operator==, type_info::operator!=,
6864         type_info::before): Likewise.
6865         (type_info::is_pointer_p, type_info::is_function_p,
6866         type_info::do_catch, type_info::do_upcast): Prepend __. Rename
6867         parameters.
6868         * inc/cxxabi.h
6869         (__fundamental_type_info::__fundamental_type_info) Rename parameters.
6870         (__pointer_type_info::__pointer_type_info): Likewise.
6871         (__pointer_type_info::is_pointer_p,
6872         __pointer_type_info::do_catch): Prepend __. Rename parameters.
6873         (__array_type_info::__array_type_info): Rename parameters.
6874         (__function_type_info::__function_type_info): Likewise.
6875         (__function_type_info::is_function_p): Prepend __.
6876         (__enum_type_info::__enum_type_info): Rename parameters.
6877         (__pointer_to_member_type_info::__pointer_to_member_type_info):
6878         Likewise.
6879         (__pointer_to_member_type_info::do_catch): Prepend __. Rename
6880         parameters.
6881         (__base_class_info::is_virtual_p, is_public_p, offset): Prepend __.
6882         (__class_type_info::__class_type_info): Rename parameters.
6883         (__class_type_info::sub_kind): Prepend __. Adjust member names.
6884         (__class_type_info::upcast_result,
6885         __class_type_info::dyncast_result): Prepend __. Move definition
6886         into tinfo.cc.
6887         (__class_type_info::do_upcast, __class_type_info::do_catch,
6888         __class_type_info::find_public_src,
6889         __class_type_info::do_dyncast,
6890         __class_type_info::do_find_public_src): Prepend __. Rename
6891         parameters.
6892         (__si_class_type_info::__si_class_type_info): Rename parameters.
6893         (__si_class_type_info::do_upcast, __si_class_type_info::do_dyncast,
6894         __si_class_type_info::do_find_public_src): Prepent __. Rename
6895         parameters.
6896         (__vmi_class_type_info::__vmi_class_type_info): Rename parameters.
6897         (__vmi_class_type_info::do_upcast, __vmi_class_type_info::do_dyncast,
6898         __vmi_class_type_info::do_find_public_src): Prepent __. Rename
6899         parameters.
6900         (__dynamic_cast): Rename parameters.
6901         * tinfo.cc (type_info::is_pointer_p, type_info::is_function_p,
6902         type_info::do_catch, type_info::do_upcast): Prepend __.
6903         (contained_p, public_p, virtual_p, contained_public_p,
6904         contained_nonpublic_p, contained_nonvirtual_p): Adjust.
6905         (__class_type_info::do_catch,
6906         __class_type_info::do_upcast): Prepend __. Adjust.
6907         (__class_type_info::__upcast_result,
6908         __class_type_info::__dyncast_result): Move from inc/cxxabi.h.
6909         Adjust.
6910         (__class_type_info::find_public_src): Prepend __. Adjust.
6911         (__class_type_info::do_find_public_src,
6912         __si_class_type_info::do_find_public_src,
6913         __vmi_class_type_info::do_find_public_src): Likewise.
6914         (__class_type_info::do_dyncast,
6915         __si_class_type_info::do_dyncast,
6916         __vmi_class_type_info::do_dyncast): Likewise.
6917         (__class_type_info::do_upcast,
6918         __si_class_type_info::do_upcast,
6919         __vmi_class_type_info::do_upcast): Likewise.
6920         (__dynamic_cast): Adjust.
6921         * tinfo2.cc (__pointer_type_info::is_pointer_p): Prepend __.
6922         (__function_type_info::is_function_p): Likewise.
6923         (__pointer_type_info::do_catch): Likewise. Adjust.
6924         (__pointer_to_member_type_info::do_catch): Likewise. Adjust.
6925         (__throw_type_match_rtti_2): Adjust.
6926         (__is_pointer): Adjust.
6927
6928 2000-04-08  Mark Mitchell  <mark@codesourcery.com>
6929
6930         * cp-tree.h (cp_tree_index): Add CPTI_COMPLETE_CTOR_IDENTIFIER.
6931         (complete_ctor_identifier): New macro.
6932         (special_function_kind): Add sfk_copy_constructor and
6933         sfk_assignment_operator.
6934         (LOOKUP_HAS_IN_CHARGE): Remove.
6935         (cons_up_default_function): Rename to ...
6936         (implicitly_declare_fn): ... this.
6937         * call.c (build_new_method_call): Add in-charge parameters for
6938         constructors here.
6939         * class.c (add_implicitly_declared_members): Change parameter name
6940         from cant_have_assignment to cant_have_const_assignment.
6941         Replace calls to cons_up_default_function to implicitly_declare_fn.
6942         * cvt.c (ocp_convert): Use complete_ctor_identifier.
6943         * decl.c (initialize_predefined_identifiers): Initialize it.
6944         (start_function): Use DECL_CONSTRUCTOR_FOR_VBASE_P instead of
6945         complex expression.
6946         * init.c (expand_default_init): Don't calculate the in-charge
6947         parameter here.
6948         (build_new_1): Likewise.
6949         * lex.c (cons_up_default_function): Move to method.c.
6950         * method.c (synthesize_method): Use DECL_DESTRUCTOR_P.
6951         (implicitly_declare_fn): New function.
6952         * typeck.c (build_static_cast): Use complete_ctor_identifier.
6953         (build_modify_expr): Likewise.
6954         * typeck2.c (build_functional_cast): Likewise.
6955
6956         Under the new ABI, constructors don't return `this'.
6957         * cp-tree.h (warn_reorder): Declare.
6958         (special_function_kind): New enum.
6959         (global_base_init_list): Remove declaration.
6960         (emit_base_init): Don't return a value.
6961         (check_base_init): Don't declare.
6962         (is_aggr_typedef): Likewise.
6963         * decl.c (check_special_function_return_type): New function.
6964         (return_types): Remove.
6965         (grokdeclarator): Use check_special_function_return_type.
6966         (start_function): Don't initialize ctor_label under the new ABI.
6967         (finish_construtor_body): Don't create a corresponding LABEL_STMT.
6968         * init.c (begin_init_stmts): Move to top of file.
6969         (finish_init_stmts): Likewise.
6970         (warn_reorder): Don't declare.
6971         (emit_base_init): Don't create a STMT_EXPR here.  Don't return a
6972         value.
6973         (check_base_init): Remove.
6974         (is_aggr_typedef): Likewise.
6975         (build_new_1): Don't use the return value of a constructor.
6976         * semantics.c (setup_vtbl_ptr): Don't use the return value
6977         of emit_base_init.
6978         * typeck.c (check_return_expr): Don't magically convert return
6979         statements into `return this' in constructors under the new ABI.
6980
6981         * cp-tree.h (cp_tree_index): Add CPTI_BASE_CTOR_IDENTIFIER,
6982         CPTI_BASE_DTOR_IDENTIFIER, and CPTI_DELETING_DTOR_IDENTIFIER.
6983         (base_ctor_identifier): New macro.
6984         (base_dtor_identifier): Likewise.
6985         (deleting_dtor_identifier): Likewise.
6986         * decl.c: Don't include obstack.h.
6987         (obstack_chunk_alloc): Don't define.
6988         (obstack_chunk_free): Likewise.
6989         (struct predefined_identifier): New type.
6990         (initialize_predefined_identifiers): New function.
6991         (init_decl_processing): Use it.
6992         (debug_temp_inits): Remove.
6993         (start_method): Don't call preserve_data.
6994         (hack_incomplete_structures): Update comment.
6995         * init.c (init_init_processing): Don't initialize
6996         nelts_identifier.
6997         (build_offset_rf): Remove dead code.
6998         (build_delete): Use CLASSTYPE_N_BASECLASSES.
6999         * search.c (init_search_processing): Don't initialize
7000         vptr_identifier.
7001
7002 2000-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7003
7004         * typeck.c (build_binary_op): Call `tree_expr_nonnegative_p' to elide
7005         some sign_compare warnings.
7006
7007 2000-04-07  Nathan Sidwell  <nathan@codesourcery.com>
7008
7009         Rename abi::__vmi_class_type_info members.
7010         * inc/cxxabi.h (__vmi_class_type_info): Rename details, n_bases,
7011         base_list, detail_masks members to vmi_flags, vmi_base_count,
7012         vmi_bases and vmi_flags_masks respectively.
7013         (__vmi_class_type_info::vmi_flags_masks): Rename
7014         details_unknown_mask to flags_unknown_mask.
7015         * tinfo.cc (__class_type_info::do_upcast): Adjust.
7016         (__vmi_class_type_info::do_find_public_src): Adjust.
7017         (__vmi_class_type_info::do_dyncast): Adjust.
7018         (__vmi_class_type_info::do_upcast): Adjust.
7019
7020 2000-04-07  Nathan Sidwell  <nathan@codesourcery.com>
7021
7022         * tinfo.cc (convert_to_base): New function.
7023         (get_vbase_offset): Remove. Move into convert_to_base.
7024         (__vmi_class_type_info::do_find_public_src): Adjust.
7025         (__vmi_class_type_info::do_dyncast): Adjust.
7026         (__vmi_class_type_info::do_upcast): Adjust.
7027
7028 2000-04-06  Jason Merrill  <jason@yorick.cygnus.com>
7029
7030         * tinfo.cc (operator=): Use __builtin_strcmp.
7031         * tinfo2.cc (before): Likewise.
7032
7033 2000-04-06  Mark Mitchell  <mark@codesourcery.com>
7034
7035         * cp-tree.h (lang_decl_flags): Rename saved_inline to deferred.
7036         (DECL_SAVED_INLINE): Rename to ...
7037         (DECL_DEFERRED_FN): ... this.
7038         (in_function_p): Remove declaration.
7039         (mark_inline_for_output): Rename to ...
7040         (defer_fn): ... this.
7041         * decl.c (finish_function): Adjust call to mark_inline_for_output.
7042         (in_function_p): Remove definition.
7043         * decl2.c (saved_inlines): Rename to ...
7044         (deferred_fns): ... this.
7045         (saved_inlines_used): Rename to ...
7046         (deferred_fns_used): ... this.
7047         (mark_inline_for_output): Rename to ...
7048         (defer_fn): ... this.
7049         (finish_file): Adjust accordingly.
7050         (init_decl2): Likewise.
7051         * lex.c (cons_up_default_function): Likewise.
7052         * pt.c (mark_decl_instantiated): Likewise.
7053         (instantiate_decl): Don't set DECL_DEFER_OUTPUT under any
7054         circumstances.
7055         * rtti.c (get_tinfo_decl): Adjust call to mark_inline_for_output.
7056         * semantics.c (expand_body): Defer more functions.
7057
7058 2000-04-06  Nathan Sidwell  <nathan@codesourcery.com>
7059
7060         * vec.cc: New file.
7061         * Make-lang.in (CXX_LIB2FUNCS): Add it.
7062         (vec.o): Build it.
7063         * inc/cxxabi.h (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
7064         __cxa_vec_delete): Declare.
7065
7066 2000-04-06  Nathan Sidwell  <nathan@codesourcery.com>
7067
7068         * rtti.c (dfs_class_hint_mark): New static function.
7069         (dfs_class_hint_unmark): New static function.
7070         (class_hint_flags): Use them.
7071
7072 2000-04-05  Benjamin Kosnik  <bkoz@cygnus.com>
7073
7074         * decl2.c: Make flag_honor_std dependant on ENABLE_STD_NAMESPACE.
7075
7076 2000-04-05  Mark Mitchell  <mark@codesourcery.com>
7077
7078         * cp-tree.h (instantiate_decl): Change prototype.
7079         * decl2.c (mark_used): Adjust call.
7080         * optimize.c (inlinable_function_p): Adjust handling of templates.
7081         * pt.c (do_decl_instantiation): Adjust call to instantiate_decl.
7082         (do_type_instantiation): Likewise.
7083         (instantiate_decl): Defer more templates.
7084         (instantiate_pending_templates): Adjust logic to handle inline
7085         friend functions.
7086
7087         * Makefile.in (GGC_H): New variable.  Use it throughout in place
7088         of ggc.h.
7089
7090         * call.c: Don't include obstack.h.  Include ggc.h.
7091         (obstack_chunk_alloc): Don't define.
7092         (obstack_chunk_free): Likewise.
7093         (add_candidate): Allocate the z_candidate with ggc_alloc_obj.
7094         * decl.c (push_switch): Use xmalloc to allocate the cp_switch.
7095         (pop_switch): Free it.
7096
7097         * decl2.c (grokclassfn): Set TREE_READONLY for PARM_DECLs.
7098
7099         * dump.c (dequeue_and_dump): Don't try to print the bit_position
7100         if we don't have a DECL_FIELD_OFFSET.
7101
7102 Wed Apr  5 15:12:18 MET DST 2000  Jan Hubicka  <jh@suse.cz>
7103
7104         * optimize.c (calls_setjmp_r): Use setjmp_call_p instead of
7105         special_function_p.
7106
7107 2000-04-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7108
7109         * cfns.gperf (hash, libc_name_p): Prototype.
7110
7111         * rtti.c (build_dynamic_cast_1): Constification.
7112
7113         * search.c (dfs_debug_unmarkedp, dfs_debug_mark): Unhide prototypes.
7114
7115         * semantics.c (deferred_type_access_control): Prototype.
7116
7117 2000-04-04  Mark Mitchell  <mark@codesourcery.com>
7118
7119         Correct many new ABI issues regarding vbase and vcall offset
7120         layout.
7121         * cp-tree.h (BINFO_VTABLE): Document.
7122         (struct lang_type): Tweak formatting.
7123         (BINFO_PRIMARY_BINFO): Add to documentation.
7124         (CLASSTYPE_VSIZE): Fix typo in comment.
7125         (CLASSTYPE_VBASECLASSES): Update documentation.
7126         (BINFO_VBASE_MARKED): Remove.
7127         (SET_BINFO_VBASE_MARKED): Likewise.
7128         (CLEAR_BINFO_VBASE_MARKED): Likewise.
7129         (BINFO_FIELDS_MARKED): Remove.
7130         (SET_BINFO_FIELDS_MARKED): Likewise.
7131         (CLEAR_BINFO_FIELDS_MARKED): Likewise.
7132         (enum access_kind): New enumeration.
7133         (num_extra_vtbl_entries): Remove declaration.
7134         (size_extra_vtbl_entries): Likewise.
7135         (get_vtbl_decl_for_binfo): New function.
7136         (dfs_vbase_unmark): Remove declaration.
7137         (mark_primary_bases): Likewise.
7138         * class.c (SAME_FN): Remove.
7139         (struct vcall_offset_data_s): Move definition.
7140         (build_vbase_pointer): Use `build', not `build_binary_op', to
7141         access the vbase pointer under the new ABI.
7142         (build_vtable_entry_ref): Use get_vtbl_decl_for_binfo.
7143         (build_primary_vtable): Likewise.
7144         (dfs_mark_primary_bases): Move here from search.c.
7145         (mark_primary_bases): Likewise.
7146         (determine_primary_bases): Under the new ABI, don't make a base
7147         class a primary base just because we don't yet have any virtual
7148         functions.
7149         (layout_vtable_decl): Use get_vtbl_decl_for_binfo.
7150         (num_vfun_entries): Remove.
7151         (dfs_count_virtuals): Likewise.
7152         (num_extra_vtbl_entries): Likewise.
7153         (size_extra_vtbl_entries): Likewise.
7154         (layout_virtual_bases): Iterate in inheritance graph order under
7155         the new ABI.
7156         (finish_struct_1): Use TYPE_VFIELD, not CLASSTYPE_VSIZE, to
7157         indicate that a vfield is present.
7158         (init_class_processing): Initialize access_public_node, etc., from
7159         ak_public, etc.
7160         (get_vtbl_decl_for_binfo): New function.
7161         (dump_class_hierarchy_r): Likewise.
7162         (dump_class_hierarchy): Use it.
7163         (finish_vtbls): Build the vtbls in inheritance graph order.
7164         (dfs_finish_vtbls): Adjust call to build_vtbl_initializer.
7165         (initialize_vtable): Use get_vtbl_decl_for_binfo.
7166         (accumulate_vtbl_inits): Add comments explaining why a pre-order
7167         walk is required.
7168         (dfs_accumulate_vtbl_inits): Set BINFO_VTABLE to the location
7169         where the vptr points, even for primary vtables.
7170         (build_vtbl_initializer): Adjust handling of vbase and vcall
7171         offsets.
7172         (build_vcall_and_vbase_vtable_entries): New function.
7173         (dfs_build_vbase_offset_vtbl_entries): Remove.
7174         (build_vbase_offset_vtbl_entries): Reimplement.
7175         (dfs_build_vcall_offset_vtbl_entries): Don't include virtuals that
7176         were already handled in a primary base class vtable.
7177         (build_vcall_offset_vtbl_entries): Adjust.
7178         (build_rtti_vtbl_entries): Adjust.
7179         * decl2.c (output_vtable_inherit): Use get_vtbl_decl_for_binfo.
7180         * init.c (expand_virtual_init): Simplify.
7181         * repo.c (repo_get_id): Use get_vtbl_decl_for_binfo.
7182         * rtti.c (create_pseudo_type_info): Adjust calculation of vptr.
7183         * search.c (BINFO_ACCESS): New macro.
7184         (SET_BINFO_ACCESS): Likewise.
7185         (dfs_access_in_type): Manipulate access_kinds, not access nodes.
7186         (access_in_type): Likewise.
7187         (dfs_accessible_p): Likewise.
7188         (protected_accessible_p): Likewise.
7189         (lookup_fnfields_1): Adjust documentation.
7190         (dfs_mark_primary_bases): Move to class.c
7191         (mark_primary_bases): Likewise.
7192         (dfs_vbase_unmark): Remove.
7193         (virtual_context): Use BINFO_FOR_VBASE.
7194         (dfs_get_vbase_types): Simplify.
7195         (dfs_build_inheritance_graph_order): New function.
7196         (get_vbase_types): Use it.
7197         * tree.c (debug_binfo): Use get_vtbl_decl_for_binfo.
7198
7199         * tinfo.cc (get_vbase_offset): New function.
7200         (__vmi_class_type_info::do_find_public_src): Use it.
7201         (__vmi_class_type_info::do_dyncast): Likewise.
7202         (__vmi_class_type_info::do_upcast): Likewise.
7203
7204 2000-04-03  Zack Weinberg  <zack@wolery.cumb.org>
7205
7206         * lang-specs.h: Pass -fno-show-column to the preprocessor.
7207
7208 2000-03-30  Nathan Sidwell  <nathan@codesourcery.com>
7209
7210         * rtti.c (class_hint_flags): Rename flags.
7211         (class_initializer): Remove flags.
7212         (synthesize_tinfo_var): Combine offset and flags. Add flags
7213         for __vmi_class_type_info.
7214         (create_tinfo_types): Remove flags from __class_type_info and
7215         __si_class_type_info. Merge flags and offset from
7216         base_class_type_info.
7217         * inc/cxxabi.h (__base_class_info): Merge offset and vmi_flags.
7218         (__base_class_info::is_virtual_p): Adjust.
7219         (__base_class_info::is_public_p): Adjust.
7220         (__base_class_info::offset): New accessor.
7221         (__class_type_info::details): Remove member.
7222         (__class_type_info::__class_type_info): Lose details.
7223         (__class_type_info::detail_masks): Remove.
7224         (__si_class_type_info::__si_class_type_info): Lose details.
7225         (__vmi_class_type_info::details): New member.
7226         (__vmi_class_type_info::__vmi_class_type_info): Adjust.
7227         (__vmi_class_type_info::detail_masks): New member.
7228         * tinfo.cc (__class_type_info::do_upcast): Initialize result
7229         with unknown_details_mask.
7230         (__vmi_class_type_info::do_find_public_src): Adjust
7231         (__vmi_class_type_info::do_dyncast): Adjust.
7232         (__vmi_class_type_info::do_upcast): Set result details, if
7233         needed. Adjust.
7234         (__dynamic_cast): Temporarily #if out optimization.
7235
7236 2000-03-29  Nathan Sidwell  <nathan@codesourcery.com>
7237
7238         * rtti.c (get_tinfo_decl): Mark used.
7239         (emit_tinfo_decl): Don't optimize polymorphic type_info. Only
7240         mark as dealt with, if we output it.
7241
7242 2000-03-28  Mark Mitchell  <mark@codesourcery.com>
7243
7244         * class.c: Reorganize to put virtual function table initialization
7245         machinery at the end of the file.
7246
7247 2000-03-28  Jason Merrill  <jason@casey.cygnus.com>
7248
7249         * class.c (finish_struct): Use bitsize_zero_node.
7250         * pt.c (instantiate_class_template): Likewise.
7251
7252 2000-03-28  Mark Mitchell  <mark@codesourcery.com>
7253
7254         Put RTTI entries at negative offsets in new ABI.
7255         * class.c (dfs_build_vbase_offset_vtbl_entries): Put the first
7256         vbase offset at index -3, not -1.
7257         (build_vtabe_offset_vtbl_entries): Use unmarked_vtable_pathp, not
7258         dfs_vtable_path_unmarked_real_bases_queue_p to walk bases.
7259         (dfs_build_vcall_offset_vtbl_entries): Don't use skip_rtti_stuff.
7260         (build_rtti_vtbl_entries): New function.
7261         (set_rtti_entry): Remove.
7262         (build_primary_vtable): Don't use it.
7263         (build_secondary_vtable): Likewise.
7264         (start_vtable): Remove.
7265         (first_vfun_index): New function.
7266         (set_vindex): Likewise.
7267         (add_virtual_function): Don't call start_vtable.  Do call
7268         set_vindex.
7269         (set_primary_base): Rename parameter.
7270         (determine_primary_base): Likewise.
7271         (num_vfun_entries): Don't use skip_rtti_stuff.
7272         (num_extra_vtbl_entries): Include RTTI information.
7273         (build_vtbl_initializer): Use build_rtti_vtbl_entries.
7274         (skip_rtti_stuff): Remove.
7275         (dfs_modify_vtables): Don't use it.
7276         (modify_all_vtables): Don't use start_vtable.  Do use set_vindex.
7277         (layout_nonempty_base_or_field): Update size handling.
7278         (create_vtable_ptr): Tweak.
7279         (layout_class_type): Adjust parameter names.
7280         (finish_struct_1): Simplify.
7281         * cp-tree.h (CLASSTYPE_VSIZE): Tweak documentation.
7282         (skip_rtti_stuff): Remove.
7283         (first_vfun_index): New function.
7284         (dfs_vtable_path_unmarked_real_bases_queue_p): Remove.
7285         (dfs_vtable_path_marked_real_bases_queue_p): Remove.
7286         (marked_vtable_pathp): Declare.
7287         (unmarked_vtable_pathp): Likewise.
7288         * error.c (dump_expr): Use first_vfun_index to calculate vtable
7289         offsets.
7290         * rtti.c (build_headof): Look for RTTI at negative offsets.
7291         (get_tinfo_decl_dynamic): Likewise.
7292         (tinfo_base_init): Don't take the address of the TINFO_VTABLE_DECL
7293         here.
7294         (create_pseudo_type_info): Do it here instead.  Adjust so that
7295         vptr points at first virtual function.
7296         * search.c (marked_vtable_pathp): Make it global.
7297         (unmarked_vtable_pathp): Likewise.
7298         (dfs_vtable_path_unmarked_real_bases_queue_p): Remove.
7299         (dfs_vtable_path_marked_real_bases_queue_p): Likewise.
7300         (dfs_get_pure_virtuals): Don't use skip_rtti_stuff.
7301         (get_pure_virtuals): Likewise.
7302         (expand_upcast_fixups): Likewise.
7303         * tree.c (debug_binfo): Likewise.
7304         * tinfo.cc (__dynamic_cast): Look for vtable_prefix at appropriate
7305         negative offset.
7306
7307 Sun Mar 26 20:15:26 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7308
7309         * class.c (check_field_decl): Fix typo.
7310         (build_vtbl_or_vbase_field): Don't clear DECL_SAVED_INSNS.
7311         (check_methods): Likewise.
7312         (check_field_decls): Likewise.
7313         Use DECL_CONTEXT, not DECL_FIELD_CONTEXT.
7314         * cp-tree.h (DECL_SHADOWED_FOR_VAR, DECL_TEMPLATE_RESULT):
7315         Use DECL_RESULT_FLD, not DECL_RESULT.
7316         * decl.c (xref_tag): Use DECL_TEMPLATE_RESULT.
7317         * lex.c (identifier_type): Likewise.
7318         * pt.c (determine_specialization, lookup_template_class): Likewise.
7319         (tsubst_friend_function, tsubst_decl, instantiate_template): Likewise.
7320         (resolve_overloaded_unification, more_specialized): Likewise.
7321         * semantics.c (finish_member_declaration): Likewise.
7322         * typeck.c (build_x_function_call): Likewise.
7323
7324 2000-03-26  Mark Mitchell  <mark@codesourcery.com>
7325
7326         * class.c (layout_empty_base): Handle empty bases with non-byte
7327         alignment.
7328         (build_base_field): Likewise.
7329         (layout_virtual_bases): Likewise.
7330
7331         * class.c (finish_struct_1): Fix typo in this change:
7332
7333         Sat Mar 25 09:12:10 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7334
7335 2000-03-25  Mark Mitchell  <mark@codesourcery.com>
7336
7337         * decl.c (grokdeclarator): Count partial specializations when
7338         keeping track of how many template classes have been seen.
7339
7340         * dump.c (dequeue_and_dump): Dump DECL_TEMPLATE_RESULT.
7341
7342 Sat Mar 25 09:12:10 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7343
7344         * class.c (build_vbase_pointer_fields): layout_field now place_field.
7345         (get_vfield_offset): Use byte_position.
7346         (set_rtti_entry): Set OFFSET to ssizetype zero.
7347         (get_binfo_offset_as_int): Deleted.
7348         (dfs_record_base_offsets): Use tree_low_cst.
7349         (dfs_search_base_offsets): Likewise.
7350         (layout_nonempty_base_or_field): Reflect changes in RLI format
7351         and call byte_position.
7352         (layout_empty_base): Convert offset to ssizetype.
7353         (build_base_field): use rli_size_unit_so_far.
7354         (dfs_propagate_binfo_offsets): Do computation in proper type.
7355         (layout_virtual_bases): Pass ssizetype to propagate_binfo_offsets.
7356         (layout_class_type): Reflect changes in RLI names and fields.
7357         (finish_struct_1): Set DECL_FIELD_OFFSET.
7358         * dump.c (dequeue_and_dump): Call bit_position.
7359         * expr.c (cplus_expand_constant): Use byte_position.
7360         * rtti.c (expand_class_desc): Use bitsize_one_node.
7361         * typeck.c (build_component_addr): Use byte_position and don't
7362         special case for zero offset.
7363
7364 2000-03-24  Nathan Sidwell  <nathan@codesourcery.com>
7365
7366         * decl.c (vtype_decl_p): Use TYPE_POLYMORPHIC_P.
7367
7368         * rtti.c (get_tinfo_decl): Set comdat linkage on new-abi
7369         tinfo object.
7370         (emit_tinfo_decl): Only emit polymorphic tinfo's when emitting
7371         vtable.
7372
7373 2000-03-20 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
7374
7375         * call.c (check_dtor_name, build_new_method_call): Use TYPE_P and
7376         DECL_P macros.
7377         * decl.c (push_class_binding, poplevel, pushtag, lookup_namespace_name,
7378         make_typename_type, check_initializer, cp_finish_decl,
7379         xref_tag): Likewise.
7380         * decl2.c (grokfield, build_expr_from_tree, build_expr_from_tree,
7381         decl_namespace, arg_assoc_template_arg, arg_assoc,
7382         validate_nonmember_using_decl, do_class_using_decl): Likewise.
7383         * error.c (dump_template_argument, dump_expr, cp_file_of, cp_line_of,
7384         args_to_string): Likewise.
7385         * friend.c (is_friend): Likewise.
7386         * lex.c (note_got_semicolon, note_list_got_semicolon,
7387         is_global): Likewise.
7388         * method.c (build_overload_nested_name, build_overload_value,
7389         build_qualified_name, build_qualified_name, hack_identifier): Likewise.
7390         * parse.y (typename_sub, typename_sub1): Likewise.
7391         * pt.c (push_inline_template_parms_recursive, check_template_shadow,
7392         process_partial_specialization, convert_template_argument,
7393         template_args_equal, add_pending_template, lookup_template_class,
7394         for_each_template_parm_r, maybe_fold_nontype_arg,
7395         tsubst, instantiate_template, type_unification_real, unify,
7396         instantiate_pending_templates, set_mangled_name_for_template_decl):
7397         Likewise.
7398         * repo.c (repo_get_id, repo_template_used): Likewise.
7399         * search.c (lookup_field_1): Likewise.
7400         * tree.c (walk_tree, get_type_decl, cp_tree_equal, member_p): Likewise.
7401         * xref.c (classname): Likewise.
7402
7403 2000-03-22  Mark Mitchell  <mark@codesourcery.com>
7404
7405         * cp-tree.h (BINFO_FOR_VBASE): Adjust documentation.
7406         (CANONICAL_BINFO): New macro.
7407         (BINFO_NEW_VTABLE_MARKED): Use it.
7408         (SET_BINFO_NEW_VTABLE_MARKED): Likewise.
7409         (CLEAR_BINFO_NEW_VTABLE_MARKED): Likewise.
7410         * class.c (dfs_build_vbase_offset_vtbl_entries): Use BINFO_TYPE,
7411         not TREE_TYPE.
7412         (build_primary_vtable): Adjust usage of BINFO_NEW_VTABLE_MARKED.
7413         (build_secondary_vtable): Likewise.
7414         (dfs_finish_vtbls): Likewise.
7415         (dfs_accumulate_vtbl_inits): Likewise.
7416         (accumulate_vtbl_inits): New function.
7417         (finish_vtbls): Make sure that virtual bases come after
7418         non-virtual bases in the vtable group.
7419         (record_base_offsets): Don't save and restore TREE_VIA_VIRTUAL.
7420         (finish_struct_1): Adjust usage of BINFO_NEW_VTABLE_MARKED.
7421         * search.c (struct vbase_info): Move definition.
7422         (marked_new_vtable_p): Adjust usage of BINFO_NEW_VTABLE_MARKED.
7423         (unmarked_new_vtable_p): Likewise.
7424         (dfs_mark_vtable_path): Remove.
7425         (dfs_mark_new_vtable): Remove.
7426         (dfs_unmark_new_vtable): Likewise.
7427         (dfs_clear_search_slot): Likewise.
7428         (dfs_find_vbases):  Adjust usage of BINFO_NEW_VTABLE_MARKED.
7429         (dfs_clear_vbase_slots): Likewise.
7430         (init_vbase_pointers): LIkewise.
7431
7432 2000-03-22  Jason Merrill  <jason@casey.cygnus.com>
7433
7434         * typeck.c (type_after_usual_arithmetic_conversions): Prefer a
7435         SIZETYPE to a non-SIZETYPE.
7436
7437 2000-03-21  Mark Mitchell  <mark@codesourcery.com>
7438
7439         * class.c (layout_virtual_bases): Adjust names in conditionally
7440         compiled code.
7441
7442         * class.c (record_base_offsets): New function.
7443         (layout_conflict_p): Likewise.
7444         (layout_nonempty_base_or_field): Use it.
7445         (layout_empty_base): New function.
7446         (build_base_field): Use it.
7447         (build_base_fields): Update comment.
7448         (layout_virtual_bases): Fold in a little code form
7449         layout_basetypes.  Use layout_empty_base.
7450         (layout_basetypes): Remove.
7451         (end_of_class): New function.
7452         (layout_class_type): Use it.  Adjust.
7453
7454         * cp-tree.h (CLASSTYPE_VBASECLASSES): Fix typo in comment.
7455         (fntype_p): Remove.
7456         * search.c (dfs_skip_nonprimary_vbases_unmarkedp): Fix typo in
7457         comment.
7458         (dfs_skip_nonprimary_vbases_markedp): Likewise.
7459         * typeck.c (fntype_p): Remove.
7460
7461         * cp-tree.h (TI_SPEC_INFO): Remove.
7462         (CLASSTYPE_TI_SPEC_INFO): Likewise.
7463         * pt.c (process_partial_specialization): Likewise.
7464
7465         * class.c (build_base_field): Fix thinko in computation of binfo
7466         offsets.
7467
7468         * tree.c (mark_local_for_remap_p): Mark variables declared in
7469         TARGET_EXPRs as well.
7470
7471 2000-03-21  Nathan Sidwell  <nathan@codesourcery.com>
7472
7473         * typeck.c (require_complete_type, complete_type,
7474         complete_type_or_else, c_sizeof, c_sizeof_nowarn,
7475         build_array_ref, convert_arguments, pointer_diff,
7476         build_x_unary_op, build_unary_op, build_c_cast,
7477         build_modify_expr): Use COMPLETE_TYPE_P etc.
7478         * call.c (is_complete, convert_like_real,
7479         build_new_method_call): Likewise.
7480         * class.c (build_vbase_pointer_fields, check_bases,
7481         build_base_field, finish_struct_1, pushclass): Likewise.
7482         * cvt.c (cp_convert_to_pointer, convert_to_void): Likewise.
7483         * decl.c (maybe_process_template_type_declaration, pushtag,
7484         pushdecl, redeclaration_error_message, start_decl, start_decl_1,
7485         layout_var_decl, check_initializer, cp_finish_decl,
7486         grokdeclarator, require_complete_types_for_parms,
7487         grok_op_properties, xref_tag, xref_basetypes,
7488         check_function_type): Likewise.
7489         * decl2.c (check_classfn, reparse_absdcl_as_casts): Likewise.
7490         * friend.c (do_friend): Likewise.
7491         * init.c (build_offset_ref): Likewise.
7492         * parse.y (structsp): Likewise.
7493         * pt.c (maybe_process_partial_specialization,
7494         tsubst_friend_function, instantiate_class_template, tsubst,
7495         do_type_instantiation, instantiate_pending_templates): Likewise.
7496         * repo.c (repo_get_id): Likewise.
7497         * rtti.c (build_typeid, get_typeid, build_dynamic_cast_1,
7498         synthesize_tinfo_var, emit_support_tinfos): Likewise.
7499         * search.c (lookup_fnfields_1, lookup_conversions): Likewise.
7500         * semantics.c (begin_class_definition): Likewise.
7501         * tree.c (build_cplus_method_type): Likewise.
7502         * typeck2.c (digest_init, build_functional_cast,
7503         add_exception_specifier): Likewise.
7504         * parse.h, parse.c: Regenerated.
7505
7506 2000-03-21  Nathan Sidwell  <nathan@codesourcery.com>
7507
7508         * inc/cxxabi.h: New header file. Define new-abi entry points.
7509         (__pointer_type_info::target): Rename member to ...
7510         (__pointer_type_info::type): ... here.
7511         (__base_class_info::type): Rename member to ...
7512         (__base_class_info::base): ... here.
7513         * Make-lang.in (CXX_EXTRA_HEADERS): Add cxxabi.h
7514         * cp-tree.h (CPTI_ABI): New global tree enumeration.
7515         (abi_node): New global tree node.
7516         * decl.c (abi_node): Document.
7517         (init_decl_processing): Initialize abi_node.
7518         * rtti.c (build_dynamic_cast_1): Use abi_node for new-abi.
7519         (get_vmi_pseudo_type_info): Likewise.
7520         (create_tinfo_types): Likewise.
7521         (emit_support_tinfos): Likewise.
7522         * tinfo.h (cxxabi.h): Include for new-abi.
7523         Move rtti class definitions to new header file.
7524         * tinfo.cc (abi): Use the namespace.
7525         (std): Move new abi rtti classes from here ...
7526         (__cxxabiv1): ... to here.
7527         * tinfo2.cc (cxxabi.h): Include for new-abi.
7528         Move rtti class definitions to new header file.
7529         (std): Move new abi rtti classes from here ...
7530         (__cxxabiv1): ... to here.
7531         * inc/typeinfo (__class_type_info): Move into __cxxabiv1
7532         namespace.
7533
7534 2000-03-20  Jed Wing <jedwin@zloty.ugcs.caltech.edu>
7535             Jason Merrill  <jason@casey.cygnus.com>
7536
7537         * method.c (build_overload_int): Use host_integerp.
7538
7539 2000-03-20 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
7540
7541         * init.c (build_offset_ref): Handle the case of a templated member
7542         function.
7543
7544 2000-03-19  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
7545
7546         * except.c (expand_exception_blocks): Clear catch_clauses_last.
7547
7548 2000-03-18  Mark Mitchell  <mark@codesourcery.com>
7549
7550         * cp-tree.h (CLEAR_DECL_C_BIT_FIELD): New macro.
7551         * class.c (check_bitfield_decl): Turn illegal bitfields into
7552         non-bitfields.
7553         (dfs_propagate_binfo_offsets): Adjust for new size_binop
7554         semantics.
7555         (dfs_offset_for_unshared_vbases): Likewise.
7556         * cvt.c (cp_convert_to_pointer): Convert NULL to a
7557         pointer-to-member correctly under the new ABI.
7558         * expr.c (cplus_expand_constant): Don't use cp_convert when
7559         turning an offset into a pointer-to-member.
7560         * init.c (resolve_offset_ref): Don't adjust pointers-to-members
7561         when dereferencing them under the new ABI.
7562         * typeck.c (get_member_function_from_ptrfunc): Tweak calculation
7563         of pointers-to-members under the new ABI.
7564
7565         * class.c (check_bitfield_decl): Remove restriction on really long
7566         bitfields.
7567         (layout_class_type): Implement new ABI handling of bitfields
7568         longer than their types.
7569
7570 2000-03-18  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
7571
7572         * parse.y (extdefs): Call ggc_collect.
7573         * parse.c: Regenerated.
7574
7575 2000-03-18  Nathan Sidwell  <nathan@codesourcery.com>
7576
7577         * class.c (build_base_field): Use TYPE_ALIGN to examine a type.
7578         (note_name_declared_in_class): Use OVL_CURRENT to get at a
7579         potential overload.
7580
7581 Fri Mar 17 08:09:14 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7582
7583         * class.c (build_vbase_path): Use integer_zerop.
7584         (build_vtable_entry): Use tree_low_cst.
7585         (get_vfield_offset): Use bit_position.
7586         (dfs_modify_vtables): New variable vindex_val; `i' is HOST_WIDE_INT.
7587         Use tree_low_cst.
7588         (check_bitfield_decl): Set DECL_SIZE using convert.
7589         (build_base_field): Set DECL_SIZE and DECL_SIZE_UNIT using size_binop.
7590         (layout_virtual_bases): DSIZE is unsigned HOST_WIDE_INT.
7591         Use tree_low_cst.
7592         (finish_struct_1): Use bit_position.
7593         (dump_class_hierarchy): Use tree_low_cst.
7594         * cp-tree.h (min_precision): Add declaration.
7595         * decl.c (xref_tag, xref_basetypes): Use tree_low_cst.
7596         * error.c (dump_type_suffix): Use host_integerp and tree_low_cst.
7597         (dump_expr): Use integer_zerop, host_integerp, and tree_low_cst.
7598         * expr.c (cplus_expand_constant): Use bit_position.
7599         * init.c (build_vec_init): Use host_integerp and tree_low_cst.
7600         * rtti.c (get_base_offset): Use bit_position.
7601         * typeck.c (build_binary_op): Use integer_zerop, compare_tree_int,
7602         host_integerp, and tree_low_cst.
7603         (pointer_int_sum): Use integer_zerop.
7604         (build_component_addr): Use bit_position.
7605
7606 2000-03-17  Nathan Sidwell  <nathan@codesourcery.com>
7607
7608         * typeck.c (require_complete_type): Don't assume size_zero_node.
7609         (complete_type_or_else): Likewise.
7610
7611 2000-03-16  Steven Grady <grady@digitaldeck.com>
7612             Jason Merrill  <jason@casey.cygnus.com>
7613
7614         * rtti.c (build_dynamic_cast_1): Improve diagnostics.
7615
7616 2000-03-16  Nathan Sidwell  <nathan@codesourcery.com>
7617
7618         * decl2.c (grokfield): Bail out if type is error_mark_node.
7619
7620 2000-03-15  Nathan Sidwell  <nathan@codesourcery.com>
7621
7622         * tinfo2.cc (__ptr_to_member_data): Rename to ...
7623         (__pointer_to_member_data): ... here. Adjust.
7624         * rtti.c (create_tinfo_types): Adjust.
7625
7626 2000-03-15  Nathan Sidwell  <nathan@codesourcery.com>
7627
7628         * cp-tree.h (CPTI_REF_DESC_TYPE, ref_desc_type_node): Remove.
7629         * decl.c (ref_desc_type_node): Undocument.
7630         * rtti.c (ptr_ref_initializer): Rename to ...
7631         (ptr_initializer): ... here. Adjust comments.
7632         (ptmd_initializer): Fix comment thinko.
7633         (synthesize_tinfo_var): Remove REFERENCE_TYPE case.
7634         (create_tinfo_types): Remove ref_desc_type_node init.
7635         * tinfo2.cc (__reference_type_info): Remove.
7636
7637 2000-03-15  Nathan Sidwell  <nathan@codesourcery.com>
7638
7639         * decl.c (cp_finish_decl): Remove obsolete comment.
7640
7641         * typeck.c (build_ptrmemfunc1): Kill uninitialized warning.
7642
7643 2000-03-14  Mark Mitchell  <mark@codesourcery.com>
7644
7645         * cp-tree.h: Tweak documentation.
7646         * class.c (build_vbase_pointer_fields): Layout the fields, too.
7647         (avoid_overlap): Remove.
7648         (get_binfo_offset_as_int): New function.
7649         (dfs_serach_base_offsets): Likewise.
7650         (layout_nonempty_base_or_field): Likewise.
7651         (build_base_field): Layout fields here.  Avoid placing two objects
7652         of the same type at the same address, under the new ABI.
7653         (build_base_fields): Adjust accordingly.
7654         (create_vtable_ptr): Return the new field, but don't attach it to
7655         TYPE_FIELDS.
7656         (remove_base_field): Remove.
7657         (remove_base_fields): Remove.
7658         (layout_basetypes): Adjust accordingly.
7659         (layout_class_type): Call layout_field for each field, rather than
7660         just making a wholesale call to layout_type.
7661
7662 2000-03-14  Jeff Sturm  <jsturm@sigma6.com>
7663
7664         * except.c (expand_throw): Fix typo in _Jv_Sjlj_Throw.
7665
7666 2000-03-13  Jason Merrill  <jason@casey.cygnus.com>
7667
7668         * decl.c (grokfndecl): Set TREE_NOTHROW if TYPE_NOTHROW_P.
7669
7670         * except.c (dtor_nothrow): New fn.
7671         (do_pop_exception): Use it.  Take type parm.
7672         (push_eh_cleanup): Take type parm.
7673         (expand_start_catch_block): Pass it.
7674         (build_eh_type_type_ref): Accept null type.
7675
7676 2000-03-12  Mark Mitchell  <mark@codesourcery.com>
7677
7678         * cp-tree.h (revert_static_member_fn): Change prototype.
7679         * decl.c (grokfndecl): Adjust call to revert_static_member_fn.
7680         (grok_op_properties): Likewise.
7681         (start_function): Likewise.
7682         (revert_static_member_fn): Simplify.
7683         * pt.c (check_explicit_specialization): Adjust call to
7684         revert_static_member_fn.
7685
7686 2000-03-11  Mark Mitchell  <mark@codesourcery.com>
7687
7688         * cp-tree.h (scope_kind): New type.
7689         (tmpl_spec_kind): Likewise.
7690         (declare_pseudo_global_level): Remove.
7691         (pseudo_global_level_p): Rename to template_parm_scope_p.
7692         (pushlevel): Remove declaration.
7693         (begin_scope): New function.
7694         (finish_scope): Likewise.
7695         (current_tmpl_spec_kind): Likewise.
7696         * decl.c (struct binding_level): Shorten parm_flag to 2 bits.
7697         Shorten keep to 2 bits.  Rename pseudo_global to template_parms_p.
7698         Add template_spec_p.
7699         (toplevel_bindings_p): Adjust.
7700         (declare_pseudo_global_level): Remove.
7701         (pseudo_global_level_p): Rename to template_parm_scope_p.
7702         (current_tmpl_spec_kind): New function.
7703         (begin_scope): Likewise.
7704         (finish_scope): Likewise.
7705         (maybe_push_to_top_level): Adjust.
7706         (maybe_process_template_type_declaration): Likewise.
7707         (pushtag): Likewise.
7708         (pushdecl_nonclass_level): Likewise.
7709         (lookup_tag): Likewise.
7710         (grokfndecl): Handle member template specializations.  Share
7711         constructor and non-constructor code.
7712         * decl2.c (check_classfn): Handle member template specializations.
7713         * pt.c (begin_template_parm_list): Use begin_scope.
7714         (begin_specialization): Likewise.
7715         (end_specialization): Likewise.
7716         (check_explicit_specialization): Use current_tmpl_spec_kind.
7717         Handle member template specializations.
7718         (end_template_decl): Use finish_scope.  Remove call to
7719         get_pending_sizes.
7720         (push_template_decl_real): Remove bogus error message.
7721         (tsubst_decl): Fix typo in code contained in comment.
7722         (instantiate_template): Handle member template specializations.
7723         (most_general_template): Likewise.
7724
7725 2000-03-11  Gabriel Dos Reis  <gdr@codesourcery.com>
7726
7727         * lex.c (whitespace_cr): Compress consecutive calls to warning().
7728         (do_identifier): Ditto for error().
7729
7730         * pt.c (convert_nontype_argument): Ditto for cp_error().
7731         (convert_template_argument): Ditto for cp_pedwarn().
7732
7733 2000-03-11  Jason Merrill  <jason@casey.cygnus.com>
7734
7735         * exception.cc (__check_null_eh_spec): New fn.
7736         * except.c (expand_end_eh_spec): Call it if the spec is throw().
7737
7738 2000-03-10  Jason Merrill  <jason@casey.cygnus.com>
7739
7740         * decl.c (push_throw_library_fn): Take the FUNCTION_TYPE.
7741         * except.c (expand_end_eh_spec): Add the return type.
7742         * rtti.c (throw_bad_cast): Add the parmtypes.
7743         (throw_bad_typeid): Likewise.
7744
7745         * semantics.c (expand_stmt): Only leave out rtl for unused
7746         artificials, and set DECL_IGNORED_P on them as well.
7747         * decl.c (wrapup_globals_for_namespace): Likewise.
7748
7749 2000-03-09  Nathan Sidwell  <nathan@codesourcery.com>
7750
7751         * decl.c (maybe_commonize_var): Skip all artificial decls.
7752         * pt.c (tsubst_decl): Don't copy TREE_ASM_WRITTEN.
7753
7754 2000-03-10  Jason Merrill  <jason@casey.cygnus.com>
7755
7756         * lang-options.h, decl2.c: Add -fno-enforce-eh-specs.
7757         * cp-tree.h: Declare flag_enforce_eh_specs.
7758         * decl.c (store_parm_decls, finish_function): Check it.
7759
7760         C library functions don't throw.
7761         * Makefile.in (cfns.h): New target.
7762         (except.o): Depend on it.
7763         * Make-lang.in (cc1plus): Depend on cfns.gperf.
7764         * cfns.gperf: New file.
7765         * cfns.h: Generated.
7766         * except.c: Include it.
7767         (nothrow_libfn_p): New fn.
7768         * decl.c (grokfndecl): Use it.
7769         * cp-tree.h: Declare it.
7770
7771         * decl.c (push_overloaded_decl_1, auto_function,
7772         define_function): Lose.
7773         (build_library_fn_1): New static fn.
7774         (builtin_function): Use it.
7775         (get_atexit_node): Use build_library_fn_ptr.
7776         (build_library_fn, build_cp_library_fn, build_library_fn_ptr,
7777         build_cp_library_fn_ptr, push_library_fn, push_cp_library_fn,
7778         push_void_library_fn, push_throw_library_fn): New fns.
7779         * cp-tree.h: Declare them.
7780         (cp_tree_index): Remove CPTI_BAD_CAST, CPTI_BAD_TYPEID.
7781         (throw_bad_cast_node, throw_bad_typeid_node): Lose.
7782         * except.c (init_exception_processing, call_eh_info, do_pop_exception,
7783         (expand_end_eh_spec, alloc_eh_object, expand_throw): Use above fns.
7784         * rtti.c (build_runtime_decl): Lose.
7785         (throw_bad_cast, throw_bad_typeid, get_tinfo_decl,
7786         build_dynamic_cast_1, expand_si_desc, expand_class_desc,
7787         expand_ptr_desc, expand_attr_desc, expand_generic_desc): Use above fns.
7788
7789         * call.c (build_call): Remove result_type parm.
7790         Call mark_used on unused artificial fns.
7791         * init.c, method.c, typeck.c, except.c, rtti.c: Adjust.
7792
7793 2000-03-09  Jason Merrill  <jason@casey.cygnus.com>
7794
7795         * call.c (build_call): Set TREE_NOTHROW on the CALL_EXPR as
7796         appropriate.
7797         * decl.c (define_function): Set TREE_NOTHROW on the FUNCTION_DECL.
7798         * except.c (call_eh_info, alloc_eh_object, expand_throw): Set
7799         TREE_NOTHROW or TREE_THIS_VOLATILE on the function as appropriate.
7800         * rtti.c (build_runtime_decl, get_tinfo_decl, build_dynamic_cast_1,
7801         expand_si_desc, expand_class_desc, expand_ptr_desc, expand_attr_desc,
7802         expand_generic_desc): Likewise.
7803
7804 2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
7805
7806         * exception.cc (__cp_pop_exception): Cleanup the original object.
7807
7808 2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
7809
7810         * decl.c (grok_op_properties): Merge conversion to void warning
7811         with other silly op warnings.
7812
7813 2000-03-08  Jason Merrill  <jason@casey.cygnus.com>
7814
7815         * typeck2.c (process_init_constructor): Set TREE_PURPOSE of
7816         array CONSTRUCTOR elements.  Don't use expr_tree_cons.
7817
7818 2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
7819
7820         * decl.c (cp_make_fname_decl): New function.
7821         (wrapup_globals_for_namespace): Don't emit unused static vars.
7822         (init_decl_processing): Remove comment about use of
7823         array_domain_type. Set make_fname_decl.
7824         (cp_finish_decl): Remove __FUNCTION__ nadgering.
7825         * semantics.c (begin_compound_stmt): Remove
7826         current_function_name_declared flagging.
7827         (expand_stmt): Don't emit unused local statics.
7828         * typeck.c (decay_conversion): Don't treat __FUNCTION__ decls
7829         specially.
7830
7831 2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
7832
7833         * typeck.c (convert_for_assignment): Don't look at array
7834         initializer.
7835         * call.c (convert_like_real): Likewise.
7836
7837 2000-03-07  Jason Merrill  <jason@casey.cygnus.com>
7838
7839         Add initial support for '\uNNNN' specifier.
7840         * lex.c (read_ucs): New fn.
7841         (readescape, skip_white_space): Call it.
7842         (is_extended_char, is_extended_char_1): New fns.
7843         (utf8_extend_token): New fn, #if 0'd out.
7844         (real_yylex): Treat extended chars like letters.
7845
7846         * search.c (note_debug_info_needed): Walk the bases even if we
7847         weren't deferring the type itself.
7848
7849 2000-03-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7850
7851         * decl2.c (finish_objects): Constify a char*.
7852
7853         * method.c (emit_thunk): Likewise.
7854
7855 2000-03-06  Nathan Sidwell  <nathan@codesourcery.com>
7856
7857         * typeck.c (dubious_conversion_warnings): Look through
7858         REFERENCE_TYPE.
7859
7860 Mon Mar  6 08:46:47 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7861
7862         * class.c (dfs_modify_vtables): I is now unsigned.
7863         (check_bitfield_decl): Use tree_int_cst_sgn and compare_tree_int.
7864         (build_base_field): Add casts of TREE_INT_CST_LOW to HOST_WIDE_INT.
7865         * error.c (dump_expr): Cast TREE_INT_CST_HIGH to unsigned.
7866         * init.c (build_vec_init): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
7867         * method.c (build_overload_int): Cast TREE_INT_CST_HIGH to unsigned.
7868         * typeck.c (build_binary_op, case TRUNC_DIV_EXPR):
7869         Call integer_all_onesp.
7870         * typeck2.c (process_init_constructor): Use compare_tree_int.
7871
7872         * lang-specs.h (as): Don't call if -syntax-only.
7873
7874 2000-03-06  Mark Mitchell  <mark@codesourcery.com>
7875
7876         * expr.c (cplus_expand_expr, case STMT_EXPR): Don't set
7877         RTL_EXPR_HAS_NO_SCOPE after all.
7878
7879 2000-03-05  Mark Mitchell  <mark@codesourcery.com>
7880
7881         * expr.c (cplus_expand_expr, case STMT_EXPR): Use
7882         expand_start_stmt_expr and expand_end_stmt_expr directly.  Set
7883         RTL_EXPR_HAS_NO_SCOPE.
7884
7885         * pt.c (instantiate_decl): Clear TI_PENDING_TEMPLATE_FLAG a little
7886         later.
7887
7888         * dump.c (dequeue_and_dump): Dump SCOPE_NO_CLEANUPS_P.
7889
7890 2000-03-05  Nathan Sidwell  <nathan@codesourcery.com>
7891
7892         * call.c (convert_like): Macrofy.
7893         (convert_like_with_context): New macro.
7894         (convert_like_real): Renamed from convert_like.  Add calling
7895         context parameters, for diagnostics. Add recursive flag.  Call
7896         dubious_conversion_warnings for outer conversion.
7897         (build_user_type_conversion): Use convert_like_with_context.
7898         (build_over_call): Likewise. Don't warn about dubious
7899         conversions here. Adjust convert_default_arg calls.
7900         (convert_default_arg): Add context parameters for diagnostics.
7901         Pass throught to convert_like_with_context.
7902         * cp-tree.h (convert_default_arg): Add context parameters.
7903         (dubious_conversion_warnings): Prototype new function.
7904         * typeck.c (convert_arguments): Adjust convert_default_arg call.
7905         (dubious_conversion_warnings): New function, broken
7906         out of convert_for_assignment.
7907         (convert_for_assignment): Adjust.
7908
7909 2000-03-03  Jason Merrill  <jason@casey.cygnus.com>
7910
7911         * decl2.c (key_method): Break out from...
7912         (import_export_vtable, import_export_class): ...here.
7913
7914         * decl.c (finish_function): Don't mess with flag_keep_inline_functions.
7915         * decl2.c (finish_vtable_vardecl): Don't check decl_function_context.
7916
7917         * search.c (note_debug_info_needed, dfs_debug_mark,
7918         dfs_debug_unmarkedp): Uncomment.  Adjust for new scheme.
7919         * decl2.c (finish_vtable_vardecl): Call note_debug_info_needed.
7920
7921 2000-03-03  Nathan Sidwell  <nathan@codesourcery.com>
7922
7923         * decl.c (cp_finish_decl): Remove obsolete obstack comments, fix
7924         typos.
7925
7926 2000-03-02  Mark Mitchell  <mark@codesourcery.com>
7927
7928         * cp-tree.h (TYPE_NEEDS_DESTRUCTOR): Rename to ...
7929         (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): ... this.
7930         (TYPE_HAS_TRIVIAL_DESTRUCTOR): New macro.
7931         (lang_type): Split gets_new into has_new and has_array_new.
7932         (TYPE_VEC_NEW_USES_COOKIE): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
7933         (TYPE_GETS_NEW): Split into ...
7934         (TYPE_HAS_NEW_OPERATOR): ... this, and ...
7935         (TYPE_HAS_ARRAY_NEW_OPERATOR): ... this.
7936         (DECL_ARRAY_DELETE_OPERATOR_P): New macro
7937         (build_op_new_call): Don't declare.
7938         (build_new_1): Likewise.
7939         * call.c (build_op_new_call): Remove.
7940         * class.c (check_bases): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR
7941         instead of TYPE_NEEDS_DESTRUCTOR.
7942         (finish_struct_bits): Likewise.
7943         (add_implicitly_declared_members): Likewise.
7944         (check_field_decl): Likewise.
7945         (check_methods): Set TYPE_VEC_DELETE_TAKES_SIZE here, and set it
7946         correctly under the new ABI.
7947         * decl.c (start_decl_1): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR
7948         instead of TYPE_NEEDS_DESTRUCTOR.
7949         (initialize_local_var): Likewise.
7950         (destroy_local_var): Likewise.
7951         (cp_finish_decl): Likewise.
7952         (register_dtor_fn): Likewise.
7953         (grok_op_properties): Set TYPE_HAS_NEW_OPERATOR and
7954         TYPE_HAS_ARRAY_NEW_OPERATOR, not TYPE_HAS_NEW.  Don't set
7955         TYPE_VEC_DELETE_TAKES_SIZE here.
7956         (xref_basetypes): Set TYPE_HAS_NEW_OPERATOR and
7957         TYPE_HAS_ARRAY_NEW_OPERATOR, not TYPE_HAS_NEW.
7958         (store_parm_decls):  Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
7959         (finish_destructor_body): Likewise.
7960         (maybe_build_cleanup_1): Likewise.
7961         * decl2.c (do_static_destruction): Likewise.
7962         * init.c (build_new_1): Make it static.
7963         (perform_member_init): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
7964         (expand_cleanup_for_base): Likewise.
7965         (get_cookie_size): New function.
7966         (build_new_1): Handle array-new cookies correctly under the new
7967         ABI.
7968         (build_vec_delete_1): Likewise.
7969         (build_vec_init):  Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
7970         (build_delete): Likewise.
7971         (build_vec_delete): Handle array-new cookies correctly under the new
7972         ABI.
7973         * lex.c (do_identifier): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
7974         * pt.c (instantiate_class_template): Set TYPE_HAS_NEW_OPERATOR and
7975         TYPE_HAS_ARRAY_NEW_OPERATOR.
7976         * ptree.c (print_lang_type): Check them.
7977         * search.c (context_for_name_lookup): Fix typo in comment.
7978         (tree_has_any_destructor_p): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
7979         * tree.c (break_out_cleanups): Likewise.
7980         (build_cplus_array_test_1): Likewise.
7981         (cp_build_qualified_type_real): Likewise.
7982         * typeck.c (complete_type): Likewise.
7983
7984         * g++spec.c (lang_specific_driver): Add -fnew-abi at the start of
7985         the command-line, not the end.
7986
7987 2000-03-01  Jason Merrill  <jason@casey.cygnus.com>
7988
7989         * pt.c (instantiate_decl): Clear TI_PENDING_TEMPLATE_FLAG.
7990
7991 2000-03-02  Tom Tromey  <tromey@cygnus.com>
7992
7993         * cp-tree.h (build_java_class_ref): Declare.
7994         * init.c (build_java_class_ref): No longer static.
7995         * except.c (expand_throw): Generate a Java-style `throw' if the
7996         thrown object is a "Java" object.
7997         (initialize_handler_parm): Generate a Java-style lookup of
7998         exception info if the caught object is a "Java" object.
7999         (catch_language, catch_language_init): New globals.
8000         (decl_is_java_type): New function.
8001         (expand_start_catch_block): Don't call push_eh_info() or
8002         push_eh_cleanup() when handling a Java-style "catch".  Pass Java
8003         class reference to build_catch_block.
8004
8005 Thu Mar  2 13:32:01 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
8006
8007         * typeck.c (comptypes): Treat sizetype like its language equivalent.
8008
8009 2000-03-01  Bernd Schmidt  <bernds@cygnus.co.uk>
8010
8011         * typeck.c (maybe_warn_about_returning_address_of_local): Reorganize
8012         to merge reference/pointer code and fix incorrect warnings.
8013
8014 2000-02-29  Jason Merrill  <jason@casey.cygnus.com>
8015
8016         * search.c (protected_accessible_p): Use context_for_name_lookup.
8017
8018         * init.c (construct_virtual_bases): Fix thinko.
8019         * typeck.c (expand_ptrmemfunc_cst): Fix thinko.
8020
8021 2000-03-01  Martin von Loewis  <loewis@informatik.hu-berlin.de>
8022
8023         * decl.c (current_function_decl): Move to toplev.c.
8024
8025 2000-02-29  Nathan Sidwell  <nathan@codesourcery.com>
8026
8027         * pt.c (fn_type_unification): Unify return type, whenever
8028         provided.
8029         (get_bindings_real): Only pass return type when necessary.
8030         Remove explicit return type check.
8031         * class.c (resolve_address_of_overloaded_function): Pass desired
8032         return type to fn_type_unification.
8033
8034 Mon Feb 28 08:15:23 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
8035
8036         * class.c (build_vtbl_or_vbase_field, check_methods): Don't clear
8037         DECL_FIELD_SIZE.
8038         (check_bitfield_decl, check_field_decls): Set DECL_SIZE, not
8039         DECL_FIELD_SIZE.
8040         * rtti.c (expand_class_desc): Likewise.
8041         * cp-tree.h (DECL_INIT_PRIORITY): Use underlying union name.
8042         (THUNK_VCALL_OFFSET): Likewise.
8043         (THUNK_DELTA): Reflect changes in ../tree.h.
8044
8045 2000-02-28  Jason Merrill  <jason@casey.cygnus.com>
8046
8047         * search.c (protected_accessible_p): Also allow the access if
8048         the member is public in DERIVED.  Lose TYPE parm.
8049         (friend_accessible_p): Lose TYPE parm.
8050         (accessible_p): Adjust.
8051
8052 Sun Feb 27 16:40:33 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
8053
8054         * class.c (dfs_build_vtable_offset_vtbl_entries): Don't use size_binop
8055         on things that are not sizes; ssize_binop deleted.
8056         Call size_diffop when appropriate.
8057         (dfs_build_vcall_offset_vtbl_entries): Likewise.
8058         (build_primary_vtable, build_secondary_vtable): Likewise.
8059         (dfs_set_offset_for_unshared_vbases, dfs_modify_vtables): Likewise.
8060         Variable I is HOST_WIDE_INT.
8061         (get_vfield_offset): Pass proper types to size_binop.
8062         (size_extra_vtbl_entries, layout_virtual_bases): Likewise.
8063         (finish_struct_1): Likewise.
8064         (skip_rtti_stuff): Arg N is now pointer to signed.
8065         (layout_class_type): Use size_zero_node.
8066         * cp-tree.h (skip_rtti_stuff): Arg N is pointer to signed.
8067         * cvt.c (cp_convert_to_pointer): Pass proper types to size_binop.
8068         * decl.c (complete_arry_type): Pass proper types to size_binop.
8069         (xref_basetypes): BINFO_OFFSET is sizetype.
8070         * error.c (dump_expr): Don't use size_binop non-sizes.
8071         * expr.c (cplus_expand_constant): Pass proper types to size_binop.
8072         * init.c (construct_virtual_bases): Fix type error.
8073         (build_vec_delete_1): Pass proper type to size_binop and don't
8074         fold result.
8075         * lex.c (cp_make_lang_type): BINFO_OFFSET is sizetype.
8076         * rtti.c (get_base_offset): Pass proper type to size_binop.
8077         * search.c (dfs_find_vbases): Fix type error.
8078         (expand_upcast_fixups): Arg to skip_rtti_stuff is pointer to signed.
8079         (dfs_get_vbase_types): BINFO_OFFSET is sizetype.
8080         * tree.c (debug_binfo): Variable N is signed.
8081         Use HOST_WIDE_INT_PRINT_DEC.
8082         * typeck.c (comptypes): sizetype is same as equivalent integer type.
8083         (c_sizeof, c_sizeof_nowarn, expr_sizeof): Use TYPE_SIZE_UNIT,
8084         size_one_node and size_zero_node.
8085         (c_alignof): Use size_one_node.
8086         (build_component_addr): Pass proper types to size_binop.
8087         (expand_ptrmemfunc_cst): Don't use size_binop on non-sizes.
8088
8089 2000-02-26  Jason Merrill  <jason@casey.cygnus.com>
8090
8091         Implement class scope using-declarations for functions.
8092         * class.c (handle_using_decl): Call add_method for used functions.
8093         Use IDENTIFIER_CLASS_VALUE to check for conflicts.
8094         (add_method): Used functions are hidden by local functions.
8095         (check_bases_and_members): Handle using-decls before finalizing
8096         CLASSTYPE_METHOD_VEC.
8097         * call.c (add_function_candidate): Add ctype parm; if non-zero,
8098         override the type of 'this' accordingly.
8099         (add_template_candidate, add_template_candidate_real): Add ctype parm.
8100         (convert_class_to_reference, build_user_type_conversion_1,
8101         build_new_function_call, build_object_call, build_new_op,
8102         build_new_method_call): Pass ctype parm.
8103
8104         * search.c (lookup_member): Put rval_binfo, not basetype_path, in
8105         the baselink.
8106         * call.c (convert_class_to_reference, build_user_type_conversion_1,
8107         build_new_function_call, build_object_call, build_new_op,
8108         build_new_method_call, build_op_delete_call): Don't get basetype_path
8109         from a baselink.
8110         * typeck.c (build_component_ref): Likewise.
8111         * init.c (build_offset_ref): Likewise.
8112         (resolve_offset_ref): Don't call enforce_access.
8113         Call build_scoped_ref.
8114         * typeck2.c (build_scoped_ref): Simplify.  Do nothing if it
8115         would cause an error or if -pedantic.
8116         * class.c (alter_access): Lose binfo parm.
8117
8118 2000-02-26  Mark Mitchell  <mark@codesourcery.com>
8119
8120         * semantics.c (simplify_aggr_init_exprs_p): Don't walk into
8121         types.
8122
8123 2000-02-25  Alfred Minarik <a8601248@unet.univie.ac.at>
8124
8125         * rtti.c (get_vmi_pseudo_type_info): Move __vmi_class_type_info
8126         pseudo_type_info creation into the std namespace
8127
8128 2000-02-26  Mark Mitchell  <mark@codesourcery.com>
8129
8130         * cp-tree.h (DECL_NEEDED_P): Tweak to correct usage before EOF.
8131         (import_export_class): Remove declaration.
8132         * decl2.c (import_export_class): Make it static.
8133         * dump.c (dequeue_and_dump): Handle PREDECREMENT_EXPR,
8134         PREINCREMENT_EXPR, POSTDECREMENT_EXPR, POSTINCREMENT_EXPR,
8135         EXPR_WITH_FILE_LOCATION.
8136         * lex.c (check_newline): Tweak filename/lineno setting.
8137         * semantics.c (begin_while_stmt): Fix typo in comment.
8138
8139 Sat Feb 26 19:50:23 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
8140
8141         * lang-options.h (-fmessage-length=): Add missing option.
8142
8143         * Make-lang.in (CXX_SRCS): Add .h files and sort list.
8144
8145 2000-02-26  Zack Weinberg  <zack@wolery.cumb.org>
8146
8147         * Make-lang.in: Delete refs to LIBGCC2_DEPS.
8148
8149 Fri Feb 25 14:52:33 2000  Jim Wilson  <wilson@cygnus.com>
8150
8151         * optimize.c (expand_call_inline): Emit the return label before
8152         evaluating the return value.
8153
8154 2000-02-24  Mark Mitchell  <mark@codesourcery.com>
8155
8156         * lex.c (check_newline): Use push_srcloc and pop_srcloc, rather
8157         than duplicating functionality here.
8158         * optimize.c: Include input.h.
8159         (expand_call_inline): Use push_srcloc and pop_srcloc.
8160         * parse.y (maybe_cv_qualifier): Remove calls to emit_line_note.
8161         * parse.c: Regenerated.
8162         * Makefile.in (lex.o): Depend on input.h.
8163         (optimize.o): Likewise.
8164
8165 2000-02-24  Nathan Sidwell  <nathan@codesourcery.com>
8166
8167         * decl.c (grokdeclarator): Diagnose qualifiers on non-member
8168         function type, rather than ICE.
8169
8170 2000-02-23  Jason Merrill  <jason@casey.cygnus.com>
8171
8172         * decl.c (grokdeclarator): Call decl_type_access_control.
8173         * parse.y (parse_end_decl): Don't call decl_type_access_control if
8174         decl is null.
8175
8176 2000-02-23  Nathan Sidwell  <nathan@codesourcery.com>
8177
8178         * decl.c (decls_match): Remove obsolete static member nadgering.
8179
8180 2000-02-21  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
8181
8182         * decl.c (grokdeclarator): Change ANSI to ISO.
8183         * lex.c (consume_string, readescape, do_identifier): Likewise.
8184         (parse_float, real_yylex): Likewise.
8185         * parse.y (paren_expr_or_null, paren_cond_or_null): Likewise.
8186         (unary_expr, new_initializer, cast_expr, primary, primary_no_id,
8187         new_type_id, maybe_label_decls, simple_stmt,
8188         for.init.statement): Likewise.
8189         * pt.c (do_decl_instantiation, do_type_instantiation): Likewise.
8190         * semantics.c (finish_named_return_value): Likewise.
8191         * parse.c: Regenerate.
8192
8193 2000-02-21  Mark Mitchell  <mark@codesourcery.com>
8194
8195         * cp-tree.h (CPTI_VTABLE_INDEX_TYPE): New macro.
8196         (CPTI_CLASS_STAR_TYPE): Remove.
8197         (vtable_index_type): Likewise.
8198         (class_star_type_node): Remove.
8199         (TYPE_PTRMEMFUNC_FN_TYPE): Adjust for the new ABI.
8200         (build_binary_op_nodefault): Remove.
8201         * call.c (build_new_op): Use build_binary_op instead of
8202         build_binary_op_nodefault.
8203         * decl.c (init_decl_processing): Remove class_star_type_node
8204         initialization.  Make delta_type_node ptrdiff_type_node under the
8205         new ABI.  Initialize vtable_index_type.
8206         (build_ptrmemfunc_type): Build different structures for the new
8207         ABI.
8208         (build_enumerator): Use build_binary_op instead of
8209         build_binary_op_nodefault.
8210         * method.c (build_overload_value): Mangle pointers-to-members
8211         appropriately under the new ABI.
8212         * typeck.c (build_array_ref): Use build_binary_op instead of
8213         build_binary_op_nodefault.
8214         (get_member_function_from_ptrfunc): Adjust for the new ABI.
8215         (build_binary_op_nodefault): Rename to ...
8216         (build_binary_op): ... this.  Remove old version.  Adjust for
8217         pointer-to-member comparisons under the new ABI.
8218         (build_ptrmemfunc1): Remove dead code.  Adjust for the new ABI.
8219         (build_ptrmemfunc): Adjust for the new ABI.
8220         (expand_ptrmemfunc_cst): Likewise.
8221         (delta2_from_ptrmemfunc): Assert that we're not using the new ABI.
8222         (pfn_from_ptrmemfunc): Adjust for the new ABI.
8223
8224 2000-02-21  Gabriel Dos Reis  <gdr@codesourcery.com>
8225
8226         * call.c (build_object_call): Compress consecutive calls to
8227         cp_error.
8228         (build_conditional_expr): Say 'ISO C++' not 'ANSI C++'.
8229         (build_op_delete_call): Adjust message formatting.
8230
8231         * class.c (check_bases): Compress consecutive calls to
8232         cp_pedwarn.
8233         (finish_struct_anon): Say 'ISO C++'.
8234
8235         * decl.c (start_decl): Same here.
8236         (grok_reference_init): Likewise.
8237         (grokfndecl): Correct message formatting.
8238         (grokfndecl): Improve diagnostic.
8239         (check_static_variable_definition): Likewise. Say 'ISO C++'
8240         (compute_array_index_type): Say 'ISO C++'
8241         (create_array_type_for_decl): Compress consecutive calls to
8242         cp_error.
8243         (grokdeclarator): Say 'ISO C++'
8244         (grok_op_properties): Likewise.
8245
8246         * decl2.c (delete_sanity): Clairify diagnostic.
8247         (check_member_template): Same here.
8248         (grok_function_init): Use consistent terminology.
8249
8250         * expr.c (do_case): Say 'ISO C++'
8251
8252         * friend.c (do_friend): Compress consecutive calls to warning.
8253
8254 2000-02-20  Mark Mitchell  <mark@codesourcery.com>
8255
8256         * cp-tree.h (merge_primary_and_secondary_vtables_p): New macro.
8257         * class.c (build_secondary_vtable): Reorganize.  Don't create a
8258         new vtable under the new ABI.
8259         (layout_vtable_decl): Don't add num_extra_vtbl_entries when
8260         computing the size.
8261         (build_vtbl_initializer): Don't return a CONSTRUCTOR; just return
8262         the initializing elements.
8263         (initialize_vtable): New function.
8264         (dfs_finish_vtbls): Use it.
8265         (dfs_accumulate_vtbl_inits): New function.
8266         (finish_vtbls): Merge primary and secondary vtables under the new
8267         ABI.
8268         (finish_struct_1): Remove redundant call to layout_vtable_decl.
8269         * init.c (expand_virtual_init): Deal with BINFO_VTABLEs that
8270         aren't VAR_DECLs.
8271
8272         * class.c (build_vtable): New function, split out from ...
8273         (get_vtable_decl): ... here, and ...
8274         (build_secondary_vtable): ... here.
8275
8276         * pt.c (tsubst_decl): Fix formatting.
8277
8278 Sat Feb 19 18:43:13 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
8279
8280         * class.c (build_primary_vtable, layout_vtable_decl): Likewise.
8281         (avoid_overlap, build_base_field): Likewise.
8282         (build_base_field, build_base_fields, is_empty_class):
8283         Test DECL_SIZE with integer_zero.
8284         (layout_class_type): Set CLASSTYPE_SIZE_UNIT.
8285         * cp-tree.h (struct lang_type): New field size_unit.
8286         (CLASSTYPE_SIZE_UNIT): New macro.
8287         * decl.c (init_decl_processing): Set DECL_SIZE_UNIT.
8288         (cp_finish_decl): Delete -Wlarger-than processing.
8289         * optimize.c (remap_decl): Walk DECL_SIZE_UNIT.
8290         * pt.c (tsubst_decl): Set DECL_SIZE_UNIT.
8291         * tree.c (make_binfo): binfo vector is one entry longer.
8292         (walk_tree): Walk DECL_SIZE_UNIT.
8293
8294 2000-02-19  Mark Mitchell  <mark@codesourcery.com>
8295
8296         * class.c (dfs_build_vcall_offset_vtbl_entries): Fix typo in
8297         comment.
8298         (build_vtable_entry): Don't assume all vtable entries are
8299         functions.
8300         (build_vtbl_initializer): Adjust accordingly.
8301         (get_vtable_decl): Fix formatting.
8302
8303 2000-02-18  Jason Merrill  <jason@casey.cygnus.com>
8304
8305         * semantics.c (deferred_type_access_control): Walk the entire
8306         type_lookups list.
8307         (save_type_access_control): Rename from
8308         initial_deferred_type_access_control.  Just remember the value.
8309         (decl_type_access_control): New fn.
8310         (begin_function_definition): Use deferred_type_access_control, after
8311         we've started the function.  Set type_lookups to error_mark_node.
8312         * parse.y (frob_specs, fn.def1): Adjust.
8313         (parse_decl0, parse_field, parse_field0, parse_bitfield): New fns.
8314         (parse_end_decl, parse_bitfield0, parse_method): New fns.
8315         (fn.def2, initdcl, initdcl0_innards, nomods_initdcl0): Use them.
8316         (after_type_component_declarator0): Likewise.
8317         (after_type_component_declarator): Likewise.
8318         (notype_component_declarator): Likewise.
8319         * cp-tree.h: Adjust.
8320
8321         * decl.c (redeclaration_error_message): Allow redeclaration of
8322         namespace-scope decls.
8323
8324 2000-02-18  Martin von Loewis  <loewis@informatik.hu-berlin.de>
8325
8326         * typeck2.c (my_friendly_abort): Use GCCBUGURL.
8327
8328 2000-02-17  Mark Mitchell  <mark@codesourcery.com>
8329
8330         * class.c (add_method): Don't set DECL_VIRTUAL_CONTEXT.
8331         * decl2.c (grokclassfn): Likewise.
8332
8333         * ir.texi: Document DECL_TEMPLATE_INSTANTIATIONS.
8334
8335         * decl2.c (lang_decode_option): Don't set default message length
8336         here.
8337         * lex.c (lang_init_options): Set it here.
8338
8339 2000-02-16  Mark Mitchell  <mark@codesourcery.com>
8340
8341         Make DECL_CONTEXT mean the class in which a member function was
8342         declared, even for a virtual function.
8343         * cp-tree.h (DECL_CLASS_CONTEXT): Adjust.
8344         (DECL_FRIEND_CONTEXT): New macro.
8345         (DECL_REAL_CONTEXT): Remove.
8346         (SET_DECL_FRIEND_CONTEXT): Likewise.
8347         (DECL_VIRTUAL_CONTEXT): Adjust.
8348         (DECL_CLASS_SCOPE_P): Use TYPE_P.
8349         (add_friends): Remove.
8350         (hack_decl_function_context): Likewise.
8351         * call.c (build_new_function_call): Replace DECL_REAL_CONTEXT with
8352         CP_DECL_CONTEXT.
8353         (build_over_call): Fix indentation.  Use DECL_CONTEXT
8354         instead of DECL_CLASS_CONTEXT.
8355         * class.c (dfs_build_vcall_offset_vtbl_entries): Likewise.
8356         (add_method): Set DECL_VIRTUAL_CONTEXT, not DECL_CLASS_CONTEXT.
8357         (strictly_overrides): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
8358         (build_vtbl_or_vbase_field): Don't set DECL_CLASS_CONTEXT.
8359         (build_base_field): Likewise.
8360         (finish_struct_1): Likewise.
8361         (build_self_reference): Likewise.
8362         * decl.c (push_class_binding): Use CP_DECL_CONTEXT, not
8363         DECL_REAL_CONTEXT.
8364         (pushtag): Use decl_function_context, not
8365         hack_decl_function_context.
8366         (decls_match): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT.
8367         (duplicate_decls): Use DECL_VIRTUAL_CONTEXT.
8368         (pushdecl): Remove bogus code.
8369         (start_decl): Use DECL_CONTEXT rather than DECL_CLASS_CONTEXT.
8370         (cp_finish_decl): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT.
8371         (grokfndecl): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
8372         Use decl_function_context, nothack_decl_function_context.
8373         (grokvardecl): Don't set DECL_CLASS_CONTEXT.
8374         (grokdeclarator): Likewise.  Use decl_function_context, not
8375         hack_decl_function_context.
8376         (copy_args_p): Document.  Don't use DECL_CLASS_CONTEXT.
8377         (start_function): Use DECL_FRIEND_CONTEXT, not
8378         DECL_CLASS_CONTEXT.  Use decl_function_context, not
8379         hack_decl_function_context.
8380         (finish_function): Use decl_function_context, not
8381         hack_decl_function_context.
8382         (maybe_retrofit_in_chrg): Use DECL_CONTEXT, not
8383         DECL_CLASS_CONTEXT.
8384         (grokclassfn): Set DECL_VIRTUAL_CONTEXT, not DECL_CONTEXT.
8385         (finish_static_data_member_decl): Don't set DECL_CLASS_CONTEXT.
8386         (grokfield): Likewise.
8387         (finish_builtin_type): Likewise.
8388         (finish_vtable_vardec): Use decl_function_context, not
8389         hack_decl_function_context.
8390         (import_export_decl): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
8391         (start_static_initialization_or_destruction): Likewise.
8392         (finish_static_initialization_or_destruction): Likewise.
8393         (mark_used): Adjust logic for deciding when to synthesize methods.
8394         * dump.c (dequeue_and_dump): Use CP_DECL_CONTEXT, not
8395         DECL_REAL_CONTEXT.
8396         * error.c (dump_function_decl): Use DECL_CONTEXT, not
8397         DECL_CLASS_CONTEXT.
8398         * friend.c (is_friend): Likewise.
8399         (add_friends): Remove.
8400         (do_friend): Use SET_DECL_FRIEND_CONTEXT.
8401         * lex.c (begin_definition_of_inclass_inline): Use
8402         decl_function_context, not hack_decl_function_context.
8403         (process_next_inline): Likewise.
8404         (do_identifier): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT.
8405         * method.c (set_mangled_name_for_decl): Use DECL_CONTEXT, not
8406         DECL_CLASSS_CONTEXT.
8407         (hack_identifier): Likewise.
8408         (synthesize_method):  Use decl_function_context, not
8409         hack_decl_function_context.
8410         * pt.c (template_class_depth_real): Use CP_DECL_CONTEXT, not
8411         DECL_REAL_CONTEXT.
8412         (is_member_template): Use decl_function_context, not
8413         hack_decl_function_context.  Use DECL_CONTEXT, not
8414         DECL_CLASS_CONTEXT.
8415         (build_template_decl): Set DECL_VIRTUAL_CONTEXT, not
8416         DECL_CLASS_CONTEXT.
8417         (check_default_tmpl_args): Use CP_DECL_CONTEXT, not
8418         DECL_REAL_CONTEXT.
8419         (push_template_decl_real): Likewise.
8420         (instantiate_class_template): Don't call add_friends.
8421         (tsubst_default_argument): Use DECL_CONTEXT, not
8422         DECL_REAL_CONTEXT.
8423         (tsubst_decl): Set DECL_VIRTUAL_CONTEXT, not DECL_CLASS_CONTEXT.
8424         Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
8425         (set_meangled_name_for_template_decl): Use DECL_CONTEXT, not
8426         DECL_CLASS_CONTEXT.
8427         * repo.c (repo_inline_used): Likewise.
8428         * search.c (current_scope): Adjust for new _CONTEXT macros.
8429         (context_for_name_lookup): Use CP_DECL_CONTEXT, not
8430         DECL_REAL_CONTEXT.
8431         (friend_accessible_p): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT.
8432         (lookup_fnfields_here):Likewise.
8433         (check_final_overrider): Likewise.
8434         (init_vbase_pointers): Likewise.
8435         (virtual_context): Likewise.
8436         * semantics.c (finish_member_declaration): Just set DECL_CONTEXT.
8437         (expand_body): Use decl_function_context, not
8438         hack_decl_function_context.
8439         * tree.c (hack_decl_function_context): Remove.
8440         * typeck.c (build_x_function_call): Use DECL_CONTEXT, not
8441         DECL_CLASS_CONTEXT.
8442         * typeck2.c (error_not_base_type): Likewise.
8443
8444 2000-02-15  Jason Merrill  <jason@casey.cygnus.com>
8445
8446         * decl.c (xref_tag): Don't SET_IDENTIFIER_NAMESPACE_VALUE.
8447
8448 2000-02-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8449
8450         * Make-lang.in (g++spec.o): Depend on $(GCC_H), not gcc.h.
8451
8452 2000-02-15  Jonathan Larmour  <jlarmour@redhat.co.uk>
8453
8454         * lang-specs.h: Add new __GNUC_PATCHLEVEL__ define to default spec.
8455
8456 2000-01-16  Gabriel Dos Reis  <gdr@codesourcery.com>
8457
8458         * decl2.c (lang_decode_option): Enable automatic line wrapping.
8459
8460 2000-02-13  Jason Merrill  <jason@casey.cygnus.com>
8461
8462         * parse.y (frob_specs): Split out...
8463         (parse_decl): From here.
8464         (fn.def2): Call initial_deferred_type_access_control.
8465         (after_type_component_declarator0): Call frob_specs.
8466         (notype_component_declarator0): Likewise.
8467         * search.c (friend_accessible_p): Nested classes are friends of their
8468         enclosing classes.
8469
8470 2000-02-10  Mark Mitchell  <mark@codesourcery.com>
8471
8472         * ir.texi (ADDR_EXPR): Document the fact that an ADDR_EXPR can be
8473         used to create an implicit temporary.
8474
8475         * class.c (dfs_modify_vtables): Tweak calculation of functions to
8476         override.
8477
8478 2000-02-08  Nathan Sidwell  <nathan@acm.org>
8479
8480         * typeck.c (strip_all_pointer_quals): Use TYPE_MAIN_VARIANT, to
8481         strip array element qualifiers too.
8482
8483 2000-02-07  Mark Mitchell  <mark@codesourcery.com>
8484
8485         * decl.c (store_parm_decls): Don't build cleanups for parameters
8486         while processing_template_decl.
8487
8488 2000-02-07  Jason Merrill  <jason@casey.cygnus.com>
8489
8490         * cp-tree.h (struct saved_scope): Add incomplete field.
8491         (namespace_scope_incomplete): New macro.
8492         * decl.c (pushdecl): Use it.
8493         (hack_incomplete_structures): Use it.  See through artificial
8494         binding levels.
8495         (mark_saved_scope): Mark it.
8496
8497         Implement access control for nested types.
8498         * search.c (type_access_control): New fn.
8499         (accessible_p): Now we do perform access control for types.
8500         * semantics.c (deferred_type_access_control): New fn.
8501         (initial_deferred_type_access_control): New fn.
8502         (begin_function_definition): Call it.  Add lookups parm.
8503         * decl.c (struct binding_level): Add this_class field.
8504         (pushlevel_class): Set it.
8505         (mark_binding_level): Mark it.
8506         (lookup_name_real): Use it.  Call type_access_control.
8507         (mark_saved_scope): Mark lookups field.
8508         * cp-tree.h (flagged_type_tree): Add lookups field.
8509         (struct saved_scope): Add lookups field.
8510         (type_lookups): New macro.
8511         * parse.y (declmods): Now <ftype>.
8512         (parse_decl): Add lookups parm.  Call
8513         initial_deferred_type_access_control.
8514         (lang_extdef): Clear type_lookups.
8515         (typed_declspecs, declmods, typespec): Set lookups field.
8516         (initdcl): Call deferred_type_access_control.
8517         (fn.def1, fn.def2, typed_declspecs1, initdcl0_innards, nomods_initdcl0,
8518         component_decl_1, named_parm): Adjust.
8519         * friend.c (is_friend): Nested classes are friends of their
8520         enclosing classes.
8521
8522         * class.c (currently_open_derived_class): New fn.
8523         * method.c (hack_identifier): Use it.
8524
8525         * lex.c (do_identifier): Remove obsolete code.
8526
8527         * parse.y (typed_typespecs): Propagate new_type_flag properly.
8528
8529 2000-02-05  Zack Weinberg  <zack@wolery.cumb.org>
8530
8531         * tinfo.h: Remove apostrophes from C++ comment (xgettext
8532         thinks this file is plain C).
8533
8534 2000-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8535
8536         * Makefile.in (call.o): Depend on $(EXPR_H).
8537
8538         * call.c: Include "expr.h".
8539
8540         * class.c (dump_class_hierarchy): Add prototype.
8541
8542         * search.c (dfs_get_pure_virtuals): Likewise.
8543
8544 2000-02-1  Ulrich Drepper  <drepper@redhat.com>
8545
8546         * parse.y (simple_stmt): Allow :: token in asm parameter list.
8547         * parse.c: Rebuilt.
8548
8549 Mon Jan 31 15:35:29 2000  Jim Wilson  <wilson@cygnus.com>
8550
8551         * class.c (build_vtbl_or_vbase_field): New parameter fcontext.
8552         Store it in DECL_FCONTEXT.
8553         (build_vbase_pointer_fields, create_vtable_ptr): Fix callers.
8554
8555 2000-01-31  Jason Merrill  <jason@casey.cygnus.com>
8556
8557         * tinfo.h (old abi): #include "tconfig.h".
8558         * tinfo.cc (convert_to_base): Move into old abi section.
8559
8560 2000-01-31  Mark Mitchell  <mark@codesourcery.com>
8561
8562         * cp-tree.h (BINFO_VIRTUALS): Tweak documentation.
8563         (CLASSTYPE_PRIMARY_BINFO): Use BINFO_PRIMARY_BINFO.
8564         (BINFO_PRIMARY_BINFO): New macro.
8565         (BF_DELTA): Rename to ...
8566         (BV_DELTA): ... this.
8567         (BF_VCALL_INDEX): Rename to ...
8568         (BV_VCALL_INDEX): ... this.
8569         (BF_FN): Rename to ...
8570         (BV_FN): ... this.
8571         * class.c (build_vbase_path): Adjust for changes to reverse_path.
8572         (set_rtti_entry): Rename BF_ macros to BV_ variants.
8573         (modify_vtable_entry): Simplify.
8574         (add_virtual_function): Rename BF_ macros to BV_ variants.
8575         (build_vtable_initializer): Likewise.
8576         (get_class_offset_1): Remove.
8577         (dfs_get_class_offset): Likewise.
8578         (get_class_offset): Likewise.
8579         (dfs_find_final_overrider): New function.
8580         (find_final_overrider): Likewise.
8581         (modify_one_vtable): Remove.
8582         (dfs_find_base): New function.
8583         (dfs_modify_vtables): Fold modify_one_vtable in here.  Use
8584         find_final_overrider.
8585         (modify_all_vtables): Adjust.  Set BV_VCALL_INDEX on new
8586         virtuals.
8587         (dfs_fixup_vtable_deltas): Remove.
8588         (override_one_vtable): Remove.
8589         (merge_overrides): Likewise.
8590         (layout_virtual_bases): Make sure BINFO_OFFSET is set right for
8591         unreal chilren of virtual bases.
8592         (finish_struct_1): Don't use merge_overrides.  Don't use
8593         dfs_fixup_vtable_deltas.
8594         * tree.c (reverse_path): Return a TREE_LIST, not a chain of
8595         BINFOs.
8596
8597 2000-01-31  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
8598             Jason Merrill  <jason@yorick.cygnus.com>
8599
8600         * tinfo.h: Rename USItype to myint32, depend on BITS_PER_UNIT.
8601
8602 2000-01-31  Alfred Minarik <a8601248@unet.univie.ac.at>
8603
8604         * exception.cc (__throw_bad_typeid): Add missing std::.
8605
8606 2000-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8607
8608         * cp-tree.h (make_thunk): PROTO -> PARAMS.
8609
8610 2000-01-31  Nathan Sidwell  <sidwell@codesourcery.com>
8611
8612         * cp-tree.h (new_abi_rtti_p): Use flag_new_abi.
8613
8614         Runtime support for new-abi rtti.
8615         * inc/typeinfo (type_info::operator!=): Define in class.
8616         (type_info::before, type_info::name, type_info::operator==,
8617         type_info::operator!=): Define new ABI implementations.
8618         (type_info::is_pointer_p, type_info::is_function_p): Declare
8619         new virtual functions.
8620         (type_info::do_catch, type_info::do_upcast): Likewise.
8621
8622         * tinfo.h (__base_class_info): Define new class.
8623         (__class_type_info): Likewise.
8624         (__si_class_type_info): Likewise.
8625         (__vmi_class_type_info): Likewise.
8626         (__dynamic_cast): Prototype.
8627
8628         * tinfo.cc: Conditionalize old and new rtti mechanisms.
8629         (type_info::is_pointer_p): Define new function.
8630         (type_info::is_function_p): Likewise.
8631         (type_info::do_catch): Likewise.
8632         (type_info::do_upcast): Likewise.
8633         (vtable_prefix): New structure for vtable access.
8634         (adjust_pointer): Define new template function.
8635         (contained_p, public_p, virtual_p, contained_public_p,
8636         contained_nonpublic_p, contained_nonvirtual_p): Define new
8637         functions.
8638         (nonvirtual_base_type): New local variable.
8639         (__class_type_info::~__class_type_info): Define.
8640         (__si_class_type_info::~__si_class_type_info): Likewise.
8641         (__vmi_class_type_info::~__vmi_class_type_info): Likewise.
8642         (__class_type_info::do_catch): Define new function.
8643         (__class_type_info::do_upcast): Likewise.
8644         (__class_type_info::find_public_src): Likewise.
8645         (__class_type_info::do_find_public_src): Likewise.
8646         (__si_class_type_info::do_find_public_src): Likewise.
8647         (__vmi_class_type_info::do_find_public_src): Likewise.
8648         (__class_type_info::do_dyncast): Likewise.
8649         (__si_class_type_info::do_dyncast): Likewise.
8650         (__vmi_class_type_info::do_dyncast): Likewise.
8651         (__class_type_info::do_upcast): Likewise.
8652         (__si_class_type_info::do_upcast): Likewise.
8653         (__vmi_class_type_info::do_upcast): Likewise.
8654         (__dynamic_cast): Likewise.
8655
8656         * tinfo2.cc (__fundamental_type_info): Define new class.
8657         (__pointer_type_info): Likewise.
8658         (__reference_type_info): Likewise.
8659         (__array_type_info): Likewise.
8660         (__function_type_info): Likewise.
8661         (__enum_type_info): Likewise.
8662         (__ptr_to_member_type_info): Likewise.
8663         (__fundamental_type_info::~__fundamental_type_info): Define.
8664         (__pointer_type_info::~__pointer_type_info): Likewise.
8665         (__reference_type_info::~__reference_type_info): Likewise.
8666         (__array_type_info::~__array_type_info): Likewise.
8667         (__function_type_info::~__function_type_info): Likewise.
8668         (__enum_type_info::~__enum_type_info): Likewise.
8669         (__ptr_to_member_type_info::~__ptr_to_member_type_info): Likewise.
8670         (__pointer_type_info::do_catch): Define new function.
8671         (__ptr_to_member_type_info::do_catch): Define new function.
8672
8673         (__throw_type_match_rtti_2): Use new ABI interface, if enabled.
8674         (__is_pointer): Likewise.
8675
8676         * exception.cc (__cplus_type_matcher): Deal with new-abi rtti.
8677
8678 2000-01-30  Mark Mitchell  <mark@codesourcery.com>
8679
8680         * cp/class.c (build_vtable): Rename to build_primary_vtable.
8681         (prepare_fresh_vtable): Rename to build_secondary_vtable.
8682         (make_new_vtable): New function.
8683         (modify_vtable_entry): Handle generation of new vtables correctly.
8684         (modify_one_vtable): Remove unused parameter.
8685         (dfs_fixup_vtable_deltas): Likewise.
8686         (override_one_vtable): Use build_secondary_vtable.
8687         (finish_struct_1): Use build_primary_vtable and
8688         build_secondary_vtable.
8689
8690 2000-01-28  Ulrich Drepper  <drepper@redhat.com>
8691
8692         * cp/decl.c: Adjust variable names, comments, help strings.
8693
8694 2000-01-29  Nathan Sidwell  <nathan@acm.org>
8695
8696         * new2.cc (operator delete[]): Use operator delete, don't assume
8697         implementation.
8698
8699 2000-01-29  Nathan Sidwell  <sidwell@codesourcery.com>
8700
8701         * class.c (build_vtbl_initializer): Add argument to
8702         build_vtable_entry call.
8703
8704 2000-01-27  Mark Mitchell  <mark@codesourcery.com>
8705
8706         * cp-tree.def (THUNK_DECL): Discuss vcall indices.
8707         * cp-tree.h (BINFO_VIRTUALS): Update documentation.
8708         (BF_DELTA): New macro.
8709         (BF_VCALL_INDEX): Likewise.
8710         (BF_FN): Likewise.
8711         (THUNK_VCALL_OFFSET): Likewise.
8712         (make_thunk): Change prototype.
8713         * class.c (build_vtable_entry): Integrate
8714         build_vtable_entry_for_fn.  Handle vcall indices.
8715         (build_vtable_entry_for_fn): Remove.
8716         (set_rtti_entry): Handle vcall indices.  Use BF_DELTA,
8717         BF_VCALL_INDEX, BF_FN.
8718         (modify_vtable_entry): Integrate common code from
8719         modify_one_vtable and dfs_fixup_vtable_deltas.
8720         (add_virtual_function): Set BF_VCALL_INDEX.
8721         (build_vtbl_initializer): Simplify.  Use BF_DELTA, BF_VCALL_INDEX,
8722         and BF_FN.
8723         (modify_one_vtable): Simplify.
8724         (dfs_fixup_vtable_deltas): Likewise.
8725         (override_one_vtable): Use BF_DELTA, BF_VCALL_INDEX, BF_FN.
8726         * method.c (make_thunk): Handle vcall indices.
8727
8728 2000-01-28  Nathan Sidwell  <sidwell@codesourcery.com>
8729
8730         Compiler side new abi rtti (not enabled).
8731         * cp-tree.h (new_abi_rtti_p): New macro.
8732         (emit_support_tinfos): Prototype new function.
8733         (tinfo_decl_p): Likewise.
8734         (emit_tinfo_decl): Likwise.
8735         * rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL): New accessor
8736         macros.
8737         (doing_runtime): New local static.
8738         (init_rtti_processing): Add new-abi initializer.
8739         (get_tinfo_decl): Add new-abi logic.
8740         (tinfo_from_decl): Likewise.
8741         (build_dynamic_cast_1): Likewise.
8742         (qualifier_flags): New static function.
8743         (tinfo_base_init): Likewise.
8744         (generic_initializer): Likewise.
8745         (ptr_ref_initializer): Likewise.
8746         (ptmd_initializer): Likewise.
8747         (class_hint_flags): Likewise.
8748         (class_initializer): Likewise.
8749         (synthesize_tinfo_var): Likewise.
8750         (create_real_tinfo_var): Likewise.
8751         (create_pseudo_type_info): Likewise.
8752         (get_vmi_pseudo_type_info): Likewise.
8753         (create_tinfo_types): Likewise.
8754         (emit_support_tinfos): New global function.
8755         (tinfo_decl_p): New global predicate.
8756         (emit_tinfo_decl): New global function.
8757         * class.c (set_rtti_entry): Generalize for old and new rtti.
8758         (build_vtbl_initializer): Likewise.
8759         * decl2.c (finish_file): Likewise.
8760
8761 Thu Jan 27 20:53:36 2000  Jim Wilson  <wilson@cygnus.com>
8762
8763         * optimize.c (remap_decl): Add walk_tree calls for DECL_SIZE (t)
8764         and TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (t))).
8765
8766 Thu Jan 27 13:54:12 2000  Mike Stump  <mrs@wrs.com>
8767
8768         * decl.c (pushdecl): Fix up shadow warnings with respect to implicit
8769         for scopes.
8770
8771 2000-01-26  Jason Merrill  <jason@casey.cygnus.com>
8772
8773         * pt.c (unify): Use fold, not maybe_fold_nontype_arg.
8774
8775 Wed Jan 26 22:19:14 2000  J"orn Rennecke <amylaar@cygnus.co.uk>
8776
8777         * optimize.c (calls_setjmp_r): Supply new argument
8778         to special_function_p.
8779
8780 2000-01-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8781
8782         * call.c: PROTO -> PARAMS.
8783         * class.c: Likewise.
8784         * cp-tree.h: Likewise.
8785         * cvt.c: Likewise.
8786         * decl.c: Likewise.
8787         * decl.h: Likewise.
8788         * decl2.c: Likewise.
8789         * dump.c: Likewise.
8790         * errfn.c: Likewise.
8791         * error.c: Likewise.
8792         * except.c: Likewise.
8793         * expr.c: Likewise.
8794         * init.c: Likewise.
8795         * input.c: Likewise.
8796         * lex.c: Likewise.
8797         * lex.h: Likewise.
8798         * method.c: Likewise.
8799         * optimize.c: Likewise.
8800         * parse.y: Likewise.
8801         * pt.c: Likewise.
8802         * repo.c: Likewise.
8803         * rtti.c: Likewise.
8804         * search.c: Likewise.
8805         * semantics.c: Likewise.
8806         * spew.c: Likewise.
8807         * tree.c: Likewise.
8808         * typeck.c: Likewise.
8809         * typeck2.c: Likewise.
8810         * xref.c: Likewise.
8811
8812 2000-01-25  Richard Henderson  <rth@cygnus.com>
8813
8814         * typeck.c (build_binary_op_nodefault): Remove UNNE_EXPR.
8815
8816 2000-01-25  Mark Mitchell  <mark@codesourcery.com>
8817
8818         * cp-tree.h (vcall_offset_in_vtable_p): New macro.
8819         * class.c (build_vbase_offset_vtbl_entries): Fix typo in commment.
8820         (struct vcall_offset_data_s): New type.
8821         (dfs_vcall_offset_queue_p): New function.
8822         (dfs_build_vcall_offset_vtbl_entries): Likewise.
8823         (build_vcall_offset_vtbl_entries): Likewise.
8824         (layout_vtable_decl): Likewise.
8825         (num_vfun_entries): Likewise.
8826         (num_extra_vtbl_entries): Add the entries for vcall offsets.
8827         (build_vtbl_initializer): Likewise.
8828         (dfs_finish_vtabls): Use layout_vtable_decl.
8829         (modify_one_vtables): Always duplicate vtables under the new ABI.
8830         (finish_struct_1): Use layout_vtable_decl.
8831
8832 2000-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8833
8834         * decl.c (member_function_or_else): Change third arg from a format
8835         specifier to an `enum overload_flags'.  Callers changed.
8836
8837 2000-01-25  Gabriel Dos Reis  <gdr@codesourcery.com>
8838
8839         * typeck.c (composite_pointer_type, c_sizeof, expr_sizeof,
8840         build_binary_op_nodefault, build_unary_op, build_reinterpret_cast,
8841         build_const_cast, get_delta_difference, check_return_expr): Avoid
8842         ANSI string concatenation usage.
8843
8844 2000-01-24  Mark Mitchell  <mark@codesourcery.com>
8845
8846         * class.c (layout_class_type): Put the fields required to make a
8847         class non-empty at the end, not the beginning, of the TYPE_FIELDs
8848         list.
8849
8850 2000-01-24  Jason Merrill  <jason@casey.cygnus.com>
8851
8852         * pt.c (maybe_fold_nontype_arg): Do nothing if we're not in a
8853         template.
8854
8855         * decl2.c (mark_used): Do instantiate inlines that have been
8856         explicitly instantiated.
8857
8858 2000-01-24  Richard Henderson  <rth@cygnus.com>
8859
8860         * call.c (build_over_call): Use expand_tree_builtin.
8861         * typeck.c (build_function_call_real): Likewise.
8862         (build_binary_op_nodefault): Handle unordered compares.
8863
8864 2000-01-24  Nathan Sidwell  <sidwell@codesourcery.com>
8865
8866         * cp-tree.h (CPTI_BAD_CAST, CPTI_BAD_TYPEID, CPTI_DCAST): New
8867         cp_tree_index values.
8868         (throw_bad_cast_node, throw_bad_typeid_node, dynamic_cast_node):
8869         New global node #defines for them.
8870         * rtti.c (call_void_fn): Replace with ...
8871         (build_runtime_decl): ... new static function.
8872         (throw_bad_cast): Use throw_bad_cast_node and build_runtime_decl.
8873         (throw_bad_typeid): Use throw_bad_typeid_node and build_runtime_decl.
8874         (build_dynamic_cast_1): Always produce correctly typed result.
8875         Explicitly produce type_info addresses. Use dynamic_cast_node.
8876         * exception.cc (__throw_bad_cast): Return `void *'.
8877         (__throw_bad_typeid): Return `const type_info &'.
8878
8879 2000-01-24  Nathan Sidwell  <sidwell@codesourcery.com>
8880
8881         * cp-tree.h (get_vtable_decl): Prototype new function.
8882         * class.c (get_vtable_decl): New function. Broken out from ...
8883         (build_vtable): ... here. Use it.
8884         * decl2.c (finish_vtable_vardecl): Ignore dummy vtables created
8885         by get_vtable_decl.
8886
8887 2000-01-24  Nathan Sidwell  <sidwell@codesourcery.com>
8888
8889         * cp-tree.h (CPTI_TP_DESC_TYPE, CPTI_ACCESS_MODE_TYPE,
8890         CPTI_USER_DESC_TYPE, CPTI_CLASS_DESC_TYPE, CPTI_ATTR_DESC_TYPE,
8891         CPTI_PTMF_DESC_TYPE): Remove cp_tree_index enumerations.
8892         (CPTI_TI_DESC_TYPE, CPTI_REF_DESC_TYPE, CPTI_ARY_DESC_TYPE,
8893         CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE, CPTI_SI_CLASS_DESC_TYPE,
8894         CPTI_VMI_CLASS_DESC_TYPE, CPTI_BASE_DESC_TYPE): New enumerations.
8895         (CPTI_TINFO_FN_ID, CPTI_TINFO_FN_TYPE): Rename to ...
8896         (CPTI_TINFO_DECL_ID, CPTI_TINFO_DECL_TYPE): ... here.
8897         (CPTI_TINFO_VAR_ID): New enumeration.
8898         (__tp_desc_type_node, __access_mode_type_node,
8899         __bltn_desc_type_node, __user_desc_type_node,
8900         __class_desc_type_node, __ptr_desc_type_node,
8901         __attr_desc_type_node, __func_desc_type_node,
8902         __ptmf_desc_type_node, __ptmd_desc_type_node): Remove #defines.
8903         (ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
8904         ref_desc_type_node, ary_desc_type_node, func_desc_type_node,
8905         enum_desc_type_node, class_desc_type_node,
8906         si_class_desc_type_node, vmi_class_desc_type_node,
8907         ptmd_desc_type_node, base_desc_type_node): New #defines.
8908         (tinfo_fn_id, tinfo_fn_type): Rename to ...
8909         (tinfo_decl_id, tinfo_decl_type): ... here. Adjust.
8910         (tinfo_var_id): New enumeration.
8911         (DECL_TINFO_FN_P): Augment comment.
8912         * decl.c (cp_global_trees): Adjust documentation.
8913         * rtti.c (init_rtti_processing): Adjust for tinfo_decl_id,
8914         tinfo_decl_type and tinfo_var_id.
8915         (get_tinfo_decl_dynamic): Adjust for tinfo_decl_type.
8916         (build_typeid): Remove unused variable.
8917         (get_tinfo_var): Use tinfo_var_id.
8918         (tinfo_name): New static function.
8919         (get_tinfo_decl): Adjust for tinfo_decl_id and tinfo_decl_type.
8920         (tinfo_from_decl): Likewise.
8921         (get_base_offset): New static function, broken out of
8922         expand_class_desc.
8923         (expand_si_desc): Use tinfo_name.
8924         (expand_class_desc): Likewise. Lose local static variable.
8925         Use base_desc_type_node. Use get_base_offset.
8926         (expand_ptr_desc): Use tinfo_name.
8927         (expand_attr_desc): Likewise.
8928         (expand_generic_desc): Likewise.
8929
8930         * tinfo.cc (__GXX_ABI_VERSION): Test value and existance.
8931         * tinfo.h (__GXX_ABI_VERSION): Test value and existance.
8932
8933 2000-01-23  Mark Mitchell  <mark@codesourcery.com>
8934
8935         * cp-tree.h (__eprintf): Remove declaration.
8936         * tree.c (__eprintf): Remove definition.
8937
8938 2000-01-23  Zack Weinberg  <zack@rabi.columbia.edu>
8939             Mark Mitchell  <mark@codesourcery.com>
8940
8941         * cp-tree.h (CLASSTYPE_MARKED_N, SET_CLASSTYPE_MARKED_N,
8942         CLEAR_CLASSTYPE_MARKED_N): Avoid signed vs. unsigned warnings.
8943
8944 2000-01-23  Brad Lucier  <lucier@math.purdue.edu>
8945
8946         * class.c (dump_class_hierarchy): Print HOST_WIDE_INT properly.
8947
8948 2000-01-23  Mark Mitchell  <mark@codesourcery.com>
8949
8950         * cp-tree.h (register_dtor_fn): New function.
8951         * decl.c (destroy_local_static): Rename to ...
8952         (register_dtor_fn): ... this.  Give it external linkage.
8953         (expand_static_init): Use it.
8954         * decl2.c (do_static_initialization): Likewise, if using
8955         __cxa_atexit.
8956         (do_static_destruction): Check that __cxa_atexit is not in use.
8957         (finish_file): Don't call do_static_destruction if using
8958         __cxa_atexit.
8959
8960         * typeck.c (convert_arguments): Restore two-message error
8961         reporting.
8962
8963 2000-01-20  Nathan Sidwell  <sidwell@codesourcery.com>
8964
8965         Remap dynamic cast hint values to be consistent across ABIs.
8966         * search.c (dynamic_cast_base_recurse): Remap generated value.
8967         (get_dynamic_cast_base_type): Adjust documentation.
8968         * tinfo.h (__user_type_info::dyncast): Likewise.
8969         (__user_type_info::find_public_subobj): Remap BOFF meaning.
8970         * tinfo.cc (__si_type_info::do_dyncast): Remap BOFF meaning.
8971         (__class_type_info::do_dyncast): Likewise.
8972         (__class_type_info::do_find_public_subobj): Likewise.
8973         * tinfo2.cc (__dynamic_cast): Remap BOFF parameter.
8974
8975 2000-01-19  Gabriel Dos Reis  <gdr@codesourcery.com>
8976
8977         * typeck.c (build_unary_op): Use cp_pedwarn, not pedwarn.
8978
8979         * typeck2.c (incomplete_type_error): Restore previous
8980         cp_error and cp_error_at call sequence.
8981
8982 2000-01-20  Brad Lucier  <lucier@math.purdue.edu>
8983
8984         * class.c (dump_class_hierarchy): Make format agree with argument;
8985         cast pointer to unsigned long and print with %lx.
8986
8987 2000-01-19  Gabriel Dos Reis  <gdr@codesourcery.com>
8988
8989         * decl2.c (lang_decode_option): Set default line-wrap length to 72.
8990
8991         * typeck.c (composite_pointer_type, common_type,
8992         comp_target_parms, c_sizeof, expr_sizeof, build_array_ref,
8993         build_function_call_real, convert_arguments,
8994         build_binary_op_nodefault, pointer_int_sum, pointer_diff,
8995         build_unary_op, mark_addressable, build_compound_expr,
8996         build_static_cast, build_reinterpret_cast, build_const_cast,
8997         build_c_cast, build_modify_expr, get_delta_difference,
8998         build_ptrmemfunc, check_return_expr): Replace 'ANSI C++' with
8999         'ISO C++'.  Fusion consecutive calls to diagnotic message routines
9000         into a single one.
9001         * typeck2.c (readonly_error, abstract_virtuals_error,
9002         process_init_constructor, check_for_new_type): Likewise.
9003
9004 2000-01-19  Mark Mitchell  <mark@codesourcery.com>
9005
9006         * tree.c (bot_manip): Set DECL_CONTEXT for newly created
9007         VAR_DECLs.
9008
9009 2000-01-18  Nathan Sidwell  <sidwell@codesourcery.com>
9010
9011         * cp-tree.h (get_tinfo_fn_dynamic): Remove prototype.
9012         (build_x_typeid): Likewise.
9013         (get_tinfo_fn): Likewise.
9014         (get_tinfo_fn_unused): Rename to ...
9015         (get_tinfo_decl): ... here.
9016         * rtti.c (build_headof): Replace logic error with assertion.
9017         (get_tinfo_fn_dynamic): Rename to ...
9018         (get_tinfo_decl_dynamic): ... here. Make static. Use
9019         complete_type_or_else.
9020         (build_x_typeid): Move into ...
9021         (build_typeid): ... here. Adjust call to
9022         get_tinfo_decl_dynamic. Use tinfo_from_decl. Simplify
9023         throw_bad_typeid expression.
9024         (get_tinfo_fn_unused): Rename to ...
9025         (get_tinfo_decl): ... here. Adjust comment.
9026         (get_tinfo_fn): Delete.
9027         (tinfo_from_decl): New static function.
9028         (get_typeid_1): Call get_tinfo_decl and tinfo_from_decl.
9029         (get_typeid): Use complete_type_or_else.
9030         (build_dynamic_cast_1): Adjust calls to
9031         get_tinfo_decl_dynamic. Simplify throw_bad_cast expression.
9032         * parse.y (primary): Adjust call to build_typeid.
9033         * except.c (build_eh_type_type_ref): Adjust call to
9034         get_tinfo_decl. Mark as used.
9035         * class.c (set_rtti_entry): Adjust call to get_tinfo_decl.
9036         * decl2.c (build_expr_from_tree): Adjust call to build_typeid.
9037         * parse.c: Regenerated.
9038
9039 2000-01-17  Mark Mitchell  <mark@codesourcery.com>
9040
9041         * class.c (fixed_type_or_null): Don't clear NONNULL.  Document
9042         calling convention.
9043         (resolves_to_fixed_type_p): Document calling convention.
9044         * rtti.c (build_x_typeid): Initialize NONNULL.
9045
9046         * cp-tree.h (build_shared_int_cst): New function.
9047         * call.c (build_over_call): Use DECL_VIRTUAL_CONTEXT, for clarity.
9048         * class.c (modify_vtable_entry): Likewise.
9049         (add_virtual_function): Split out code to generated shared
9050         INTEGER_CSTs to build_share_int_cst.
9051         (modify_all_vtables): Handle all the overridden functions here.
9052         Add overridden functions from non-primary virtual bases to the
9053         primary vtable.
9054         (finish_struct_1): Adjust call to modify_all_vtables.  Add
9055         overridden functions from non-primary bases to the vtable.
9056         * tree.c (build_shared_int_cst): New function.
9057
9058         * cp-tree.h (scratchalloc): Remove.
9059         (build_scratch_list): Likewise.
9060         * call.c (convert_class_to_reference): Replace build_scratch_list
9061         and build_expr_list with build_tree_list.
9062         (add_candidate): Replace scratchalloc with expralloc.  Note memory
9063         leak.
9064         (build_user_type_conversion_1):  Replace build_scratch_list
9065         and build_expr_list with build_tree_list.
9066         (build_new_op): Likewise.
9067         (build_op_delete_call): Likewise.
9068         (convert_like): Likewise.
9069         * cvt.c (ocp_convert): Likewise.
9070         * decl.c (start_decl): Likewise.
9071         (start_function): Likewise.
9072         (finish_destructor_body): Likewise.
9073         (maybe_build_cleanup_1): Likewise.
9074         * decl2.c (reparse_decl_as_expr): Likewise.
9075         * init.c (perform_member_init): Likewise.
9076         (expand_cleanup_for_base): Likewise.
9077         (build_builtin_delete_call): Likewise.
9078         (build_new_1): Likewise.
9079         (build_delete): Likewise.
9080         * method.c (do_build_assign_ref): Likewise.
9081         * parse.y (already_scoped_stmt): Likewise.
9082         (nontrivial_exprlist): Likewise.
9083         (net_initializer): Likewise.
9084         (initlist): Likewise.
9085         * parse.c: Regenerated.
9086         * rtti.c (build_x_typeid): Likewise.
9087         (build_dynamic_cast_1): Likewise.
9088         * typeck.c (build_x_compound_expr): Likewise.
9089         (build_static_cast): Likewise.
9090         (build_modify_expr): Likewise.
9091
9092         * cp-tree.h (DECL_VINDEX): Add documentation.
9093         * class.c (build_vtable_entry): Likewise.
9094         (start_vtable): Add comment.
9095         (add_virtual_function): Replace pending_hard_virtuals with
9096         overridden_virtuals and pending_virtuals with new_virtuals.
9097         Replace redundant assignments with assertions.
9098         (check_for_override): Add comment.
9099         (check_bases_and_members): Replace pending_hard_virtuals with
9100         overridden_virtuals and pending_virtuals with new_virtuals.
9101         (create_vtbl_ptr): Likewise.
9102         (layout_class_type): Likewise.
9103         (finish_struct_1): Likewise.  Add comments.
9104
9105 2000-01-16  Mark Mitchell  <mark@codesourcery.com>
9106
9107         * class.c (finish_struct_1): Replace redundant code with
9108         assertions.
9109
9110         * cp-tree.h (flag_new_abi): Move.
9111         (flag_use_cxa_atexit): Likewise.
9112         (flag_honor_std): Likewise.
9113         (flag_rtti): Likewise.
9114         (vbase_offsets_in_vtable_p): Define.
9115         (vptrs_present_everywhere_p): Likewise.
9116         (TYPE_CONTAINS_VPTR_P): Likewise.
9117         (dfs_walk_real): Declare.
9118         * class.c (build_vbase_pointer_fields): Check
9119         vbase_offsets_in_vtable_p.
9120         (dfs_build_vbase_offset_vtbl_entries): Record the vbase indices in
9121         BINFO_VPTR_FIELD.
9122         (build_vbase_offset_vtbl_entries): Simplify.
9123         (build_vbase_offset_vtbl_entries): Adjust.
9124         (build_vbase_pointer): Add ability to look up vbase offsets in
9125         vtable.
9126         (start_vtable): New function.
9127         (add_virtual_function): Use it.
9128         (determine_primary_base): Use TYPE_CONTAINS_VPTR_P.
9129         (num_extra_vtbl_entries): Use vbase_offsets_in_vtable_p.
9130         (build_vtbl_initializer): Take the type of the complete object as
9131         input.  Use it to correctly calculate vbase offsets.
9132         (dfs_finish_vtbls): Pass the complete type to
9133         build_vtbl_initializer.
9134         (check_bases_and_members): Use TYPE_CONTAINS_VPTR_P.
9135         (create_vtable_ptr): Create a vtable even if there are no
9136         new virtual functions, under the new ABI.
9137         (finish_struct_1): Likewise.
9138         (get_vfield_name): Use TYPE_CONTAINS_VPTR_P.
9139         * decl.c (exapnd_static_init): Remove call to
9140         preserve_initializer.
9141         * decl2.c (mark_vtable_entries): Tweak to handle vbase offsets in
9142         vtables.
9143         * init.c (initialize_vtbl_ptrs): Initialize them in pre-order.
9144         (expand_virtual_init): Use vbase_offsets_in_vtable_p.
9145         (construct_virtual_bases): Don't initialize virtual base pointers
9146         under the new ABI.
9147         (build_aggr_init): Clean up comment.
9148         (expand_aggr_init_1): Likewise.
9149         * rtti.c (expand_class_desc): Store the virtual function table
9150         index where the vbase offset lives in the offset field.
9151         * search.c (dfs_walk_real): Make it global.
9152         (dfs_debug_mark): Use TYPE_CONTAINS_VPTR_P.
9153         * tree.c (make_binfo): Don't clear BINFO_VPTR_FIELD.
9154
9155         * tinfo.h (USItype): Make it signed under the new ABI.
9156         * tinfo.cc (convert_to_base): New function.  Encapsulate base
9157         conversion logic here.
9158         (__class_type_info::do_upcast): Use it.
9159         (__class_type_info::do_dyncast): Likewise.
9160         (__class_type_info::do_find_public_subobj): Likewise.
9161
9162         * init.c (construct_virtual_bases): Don't look up the addresses of
9163         virtual bases at run-time.
9164
9165         * class.c (build_vbase_pointer): Relocate.
9166         (build_vbase_pointer_fields): Likewise.
9167         (dfs_build_vbase_offset_vtbl_entries): Likewise.
9168         (build_vbase_offset_vtbl_entries): Likewise.
9169
9170         * decl.c (init_decl_processing): Complain if -fnew-abi
9171         -fno-vtable-thunks is used.
9172
9173         * decl2.c (lang_decode_option): Don't couple flag_honor_std to
9174         flag_new_abi.
9175
9176 2000-01-15  Mark Mitchell  <mark@codesourcery.com>
9177
9178         * cp-tree.h (num_extra_vtbl_entries): New function.
9179         (size_extra_vtbl_entries): Likewise.
9180         (dfs_vtable_path_unmark): Likewise.
9181         (dfs_vtable_path_unmarked_real_bases_queue_p): Likewise.
9182         (dfs_vtable_path_marked_real_bases_queue_p): Likewise.
9183         * class.c (num_extra_vtbl_entries): New function.
9184         (size_extra_vtbl_entries): Likewise.
9185         (dfs_build_vbase_offset_vtbl_entries): New function.
9186         (build_vbase_offset_vtbl_entries): Likewise.
9187         (build_vtbl_initializer): Use it.
9188         (finish_struct_1): Adjust vtable sizes (using
9189         num_extra_vtbl_entries).
9190         * expr.c (cplus_expand_expr): Assert that the DECL_RTL for a
9191         THUNK_DECL is non-NULL before expanding it.
9192         * init.c (expand_virtual_init): Adjust the vtable pointer by
9193         size_extra_vtbl_entries before storing it.
9194         * search.c (get_shared_vase_if_not_primary): Adjust prototype.
9195         Handle TREE_LIST parameters here, not in the dfs_* functions.
9196         (dfs_unmarked_real_bases_queue_p): Adjust.
9197         (dfs_marked_real_bases_queue_p): Likewise.
9198         (dfs_vtable_path_unmarked_real_bases_queue_p): New function.
9199         (dfs_vtable_path_marked_real_bases_queue_p): New function.
9200         (dfs_vtable_path_unmark): Likewise.
9201
9202 2000-01-14  Mark Mitchell  <mark@codesourcery.com>
9203
9204         * optimize.c (copy_body_r): Clear the operand three of a
9205         TARGET_EXPR when copying it.
9206
9207 2000-01-14  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
9208
9209         * method.c (build_decl_overload_real): Check whether we are in ::
9210         before returning __builtin_new/delete.
9211
9212 2000-01-13  Mark Mitchell  <mark@codesourcery.com>
9213
9214         * pt.c (tsubst_friend_function): Improve comment.
9215         (instantiate_decl): Avoid crashing when a "nested" function is
9216         instantiated from the top level.
9217
9218         * dump.c (dqeueue_and_dump): Dump
9219         DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION.
9220
9221 2000-01-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9222
9223         * call.c: If GATHER_STATISTICS, declare `n_build_method_call'.
9224
9225 2000-01-13  Nathan Sidwell  <sidwell@codesourcery.com>
9226
9227         * g++spec.c (lang_specific_driver): Add -fnew-abi if
9228         ENABLE_NEW_GXX_ABI defined.
9229         * Make-lang.in (tinfo.o, tinfo2.o, exception.o, new.o,
9230         opnew.o, opnewnt.o, opvnew.o, opvnewnt.o, opdel.o, opdelnt.o,
9231         opvdel.o, opvdelnt.o): Use GXX_ABI_FLAG switch.
9232
9233 2000-01-12  Mark Mitchell  <mark@codesourcery.com>
9234
9235         * decl.c (start_cleanup_fn): Call pushdecl.
9236
9237         * call.c (convert_class_to_reference): Fix typos.
9238         (build_conditional_expr): Handle errors gracefully.
9239         * class.c (push_nested_class): Likewise.
9240         * cp-tree.h (VAR_FUNCTION_OR_PARM_DECL_CHECK): New macro.
9241         (DECL_THIS_EXTERN): Use it.
9242         (DECL_THIS_STATIC): Likewise.
9243         * cvt.c (convert_to_void): Handle errors gracefully.
9244         (build_expr_type_conversion): Likewise.
9245         * decl.c (maybe_push_decl): Likewise.
9246         (start_decl_1): Likewise.
9247         (require_complete_types_for_parms): Likewise.
9248         * parse.y (structsp): Likewise.
9249         (base_class): Likewise.
9250         * parse.c: Regenerated.
9251         * pt.c (finish_member_template_decl): Likewise.
9252         * typeck.c (decay_conversion): Likewise.
9253
9254         * cp-tree.h (dfs_skip_vbases): New function.
9255         (find_vbase_instance): Likewise.
9256         * class.c (determine_primary_base): Allow a nearly empty base to
9257         serve as a primary base class under the new ABI.
9258         (get_class_offset_1): Rename to ...
9259         (dfs_get_class_offset): ... this.  Simplify.  Don't issue error
9260         messages here.
9261         (get_class_offset): Use it.  Issue error messages here.
9262         (dfs_modify_vtables): Rely on dfs_unmarked_real_bases_queue_p to
9263         find the right copies of virtual bases.
9264         (fixup_vtable_deltas1): Rename to ...
9265         (dfs_fixup_vtable_deltas): ... this.  Adjust to handle virtual
9266         bases as primary bases.
9267         (fixup_vtable_deltas): Remove.
9268         (override_one_vtable): Handle virtual bases as primary bases.
9269         (merge_overrides): Likewise.
9270         (finish_struct_1): Likewise.
9271         (dump_class_hierarchy): Dump primary-ness of bases as well.
9272         * search.c (mark_primary_bases): Use a pre-order traversal to
9273         handle primary virtual bases.
9274         (dfs_skip_vbases): New fiunction.
9275         (expand_upcast_fixups): Adjust to handle primary virtual bases.
9276         (fixup_virtual_upcast_offsets): Likewise.
9277         (fixup_all_virtual_upcast_offsets): Likewise.
9278         (dfs_find_vbase_instances): New function.
9279         (find_vbase_instance): Likewise.
9280
9281 2000-01-11  Mumit Khan  <khan@xraylith.wisc.edu>
9282
9283         * lex.c (DIR_SEPARATOR): Delete macro.
9284
9285 2000-01-12  Gabriel Dos Reis  <gdr@codesourcery.com>
9286
9287        * decl2.c (lang_decode_option): Handle automatic line wrapping
9288        option.
9289
9290 2000-01-11  Mark Mitchell  <mark@codesourcery.com>
9291
9292         * friend.c (do_friend): Don't resolve scopes when processing
9293         template declarations, even if the qualifying scope doesn't
9294         involve template parameters.
9295
9296 2000-01-10  Mark Mitchell  <mitchell@dumbledore.codesourcery.com>
9297
9298         * class.c (dfs_modify_vtables_queue_p): Remove.
9299         (modify_all_vtables): Use dfs_unmarked_real_bases_queue_p
9300         and dfs_marked_real_bases_queue_p instead of
9301         dfs_modify_vtables_queue_p.
9302
9303         * class.c (build_vbase_path): Simplify.
9304         (dfs_propagate_binfo_offsets): New function.
9305         (propagate_binfo_offsets): Use it.
9306         (remove_base_field): Simplify.
9307         (dfs_set_offset_for_vbases): Remove.
9308         (dfs_set_offset_for_shared_vbases): New function.
9309         (dfs_set_offset_for_unshared_vbases): Likewise.
9310         (layout_virtual_bases): Use them.
9311         (layout_basetypes): Don't call propagate_binfo_offsets.
9312         * search.c (dfs_get_vbase_types): Clone completely fresh binfos
9313         for the vbases.
9314
9315         * class.c (build_base_field): New function, split out from ...
9316         (build_base_fields): ... here.  Use it.  Allocate primary bases
9317         first, under the new ABI.
9318         (get_vtable_entry): Remove.
9319         (remove_base_field): New function, split out from ...
9320         (remove_base_fields): ... here.  Adjust since primary bases come
9321         first under the new ABI.
9322
9323         * cp-tree.h (expand_direct_vtbls_init): Remove declaration.
9324         (initialize_vtbl_ptrs): New function.
9325         (expand_indirect_vtbls_init): Change prototype.
9326         (convert_pointer_to_vbase): Declare.
9327         * init.c (expand_direct_vtbls_init): Remove.
9328         (dfs_initialize_vtbl_ptrs): New function.
9329         (initialize_vtbl_ptrs): Likewise.
9330         (emit_base_init): Use initialize_vtbl_ptrs.
9331         * search.c (convert_pointer_to_vbase): Make it global.
9332         (expand_indirect_vtbls_init): Remove vtable initialization code.
9333         * semantics.c (setup_vtbl_ptr): Use initialize_vtbl_ptrs.
9334
9335         * class.c (dfs_finish_vtbls): New function.
9336         (finish_vtbls): Use it.
9337         (dump_class_hierarchy): New function.
9338
9339         * cp-tree.h (BINFO_PRIMARY_MARKED_P): Change definition.
9340         (BINFO_VBASE_PRIMARY_P): New macro.
9341         (BINFO_VIRTUALS): Add to documentation.
9342         (SET_BINFO_PRIMARY_MARKED_P): Remove.
9343         (CLEAR_BINFO_PRIMARY_MARKED_P): Likewise.
9344         (dfs_mark_primary_bases_queue_p): Likewise.
9345         (dfs_unmarked_real_bases_queue_p): New function.
9346         (dfs_marked_real_bases_queue_p): Likewise.
9347         * search.c (dfs_mark_primary_bases): Adjust.
9348         (mark_primary_bases): Likewise.
9349         (get_shared_vbase_if_not_primary): New function.
9350         (dfs_unmarked_real_bases_queue_p): Likewise.
9351         (dfs_marked_real_bases_queue_p): Likewise.
9352         (dfs_get_pure_virtuals): Simplify.
9353         (get_pure_virtuals): Likewise.
9354
9355 2000-01-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9356
9357         * lex.c: Include tm_p.h.
9358
9359 2000-01-07  Nathan Sidwell  <sidwell@codesourcery.com>
9360
9361         * lang-specs.h (__GXX_ABI_VERSION): New preprocessor macro.
9362
9363 2000-01-06  Jason Merrill  <jason@casey.cygnus.com>
9364
9365         * decl2.c (comdat_linkage): Don't set DECL_DEFER_OUTPUT.
9366         * pt.c (instantiate_decl): Defer comdat templates that might not be
9367         needed.
9368
9369         * cp-tree.h (DECL_NEEDED_P): Also true if !DECL_COMDAT.
9370         * decl2.c (finish_vtable_vardecl): Don't check !DECL_COMDAT.
9371         (finish_file): Likewise.
9372
9373         * decl2.c (import_export_class): Undo 12/14 change.
9374
9375         * error.c (dump_decl): operator new, not operatornew.
9376
9377         * class.c (field_decl_cmp): A nontype is "greater" than a type.
9378         * search.c (lookup_field_1): Look for the last field with the
9379         desired name.
9380
9381 2000-01-05  Nathan Sidwell  <nathan@acm.org>
9382
9383         * decl2.c (lookup_arg_dependent): Deal with FNS not being a
9384         FUNCTION_DECL.
9385
9386 2000-01-05  Nathan Sidwell  <nathan@acm.org>
9387
9388         * typeck.c (build_static_cast): Don't strip target qualifiers
9389         when casting from a class.
9390
9391 2000-01-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9392
9393         * class.c (warn_hidden): Initialize variable `fndecl'.
9394
9395 2000-01-03  Ulrich Drepper  <drepper@cygnus.com>
9396
9397         * decl.c (flag_isoc9x): New variable to be able to use code in
9398         c-common.c.  For now always zero.
9399
9400 2000-01-03  Mark Mitchell  <mark@codesourcery.com>
9401
9402         * cp-tree.h (CLASSTYPE_VBASECLASSES): Improve documentation.
9403         * class.c (layout_basetypes): Don't set BINFO_INHERITANCE_CHAIN
9404         or unshare_base_binfos for virtual bases here.
9405         * search.c (dfs_get_vbase_types): Do it here.
9406         (get_vbase_types): Adjust.
9407
9408 2000-01-02  Mark Mitchell  <mark@codesourcery.com>
9409
9410         * cp-tree.h (CLASSTYPE_VFIELDS): Move definition.
9411         (BINFO_PRIMARY_MARKED_P): Use flag 5.
9412         (SET_BINFO_PRIMARY_MARKED_P): Likewise.
9413         (CLEAR_BINFO_PRIMARY_MARKED_P): Likewise.
9414         (unmark_primary_bases): Remove declaration.
9415         (unmarkedp): Declare.
9416         (dfs_vbase_unmark): Likewise.
9417         * class.c (determine_primary_base): Return immediately if there
9418         are no base classes.  Call mark_primary_bases here.
9419         (modify_all_direct_vtables): Remove.
9420         (modify_all_indirect_vtables): Remove.
9421         (dfs_modify_vtables_queue_p): New function.
9422         (dfs_modify_vtables): New function.
9423         (modify_all_vtables): Use them.
9424         (build_base_fields): Build FIELD_DECLs for primary virtual base
9425         classes.
9426         (create_vtable_ptr): Don't call determine_primary_base here.
9427         (dfs_mark_primary_bases_and_set_vbase_offsets): Rename to ...
9428         (dfs_set_offset_for_vbases): ... this.
9429         (layout_virtual_bases): Use it.
9430         (layout_class_type): Call determine_primary_base here.
9431         * search.c (unmarkedp): Make it global.
9432         (shared_marked_p): Simplify.
9433         (shared_unmarked_p): Likewise.
9434         (dfs_primary_bases_queue_p): Remove.
9435         (dfs_unmark_primary_bases): Likewise.
9436         (unmark_primary_bases): Likewise.
9437         (mark_primary_bases): Simplify.
9438         (get_pure_virtuals): Don't call mark_primary_bases here.
9439         (dfs_vbase_unmark): New function.
9440         (get_vbase_types): Simplify.
9441
9442         * class.c (struct base_info): Remove.
9443         (determine_primary_base): Take has_virtual_p rather than a
9444         base_info as input.  Don't calculate max_has_virtual.
9445         (finish_struct_bits): Remove max_has_virtual argument.
9446         (create_vtable_ptr): Remove max_has_virtual_p argument.
9447         (layout_virtual_bases): Remove max argument.
9448         (layout_basetypes): Likewise.
9449         (layout_class_type): Remove max_has_virtual_p argument.
9450         (finish_struct_1): Remove max_has_virtual.
9451
9452         * cp-tree.h (dfs_mark_primary_bases_queue_p): New function.
9453         (layout_basetypes): Remove.
9454         * class.c (propagate_binfo_offsets): Moved here from tree.c.
9455         Update to handle primary virtual bases.
9456         (remove_base_fields): New function, split out from
9457         layout_basetypes.
9458         (dfs_mark_primary_bases_and_set_vbase_offsets): New function.
9459         (layout_virtual_bases): New function, split out from
9460         layout_basetypes.  Update to handle primary virtual bases.
9461         (layout_basetypes): Moved here from tree.c.  Use
9462         remove_base_fields and layout_virtual_bases.
9463         * search.c (dfs_mark_primary_bases_queue_p): New function.
9464         (mark_primary_bases): Use it.
9465         * tree.c (CEIL): Remove.
9466         (propagate_binfo_offsets): Remove.
9467         (layout_basetypes): Remove.
9468
9469 2000-01-01  Mark Mitchell  <mark@codesourcery.com>
9470
9471         * cp-tree.h (CLASSTYPE_N_BASECLASSES): Use BINFO_N_BASETYPES.
9472         (BINFO_PRIMARY_MARKED_P): New macro.
9473         (SET_BINFO_PRIMARY_MARKED_P): Likewise.
9474         (CLEAR_BINFO_PRIMARY_MARKED_P): Likewise.
9475         (mark_primary_bases): New function.
9476         (unmark_primary_bases): Likewise.
9477         * search.c (get_abstract_virtuals_1): Remove.
9478         (dfs_mark_primary_bases): New function.
9479         (mark_primary_bases): Likewise.
9480         (dfs_unmark_primary_bases): Likewise.
9481         (unmark_primary_bases): Likewise.
9482         (dfs_get_pure_virtuals): Likewise.
9483
9484 2000-01-01  Mark Mitchell  <mark@codesourcery.com>
9485
9486         * cp-tree.h (skip_rtti_stuff): Adjust prototype.
9487         * class.c (skip_rtti_stuff): Reorganize parameters and return value.
9488         (modify_one_vtable): Adjust.
9489         (fixup_vtable_deltas1): Likewise.
9490         (override_one_vtable): Likewise.
9491         * search.c (get_abstract_virtuals_1): Likewise.
9492         (get_pure_virtuals): Likewise.
9493         (expand_upcast_fixups): Likewise.
9494         * tree.c (debug_binfo): Likewise.
9495
9496         * class.c (build_vtable): Don't return a value.  Don't rebuild
9497         vtables for bases that have already been handled.
9498         (prepare_fresh_vtable): Don't rebuild vtables for bases that have
9499         already been handled.
9500         (modify_one_vtable): Adjust accordingly.
9501         (fixup_vtable_deltas1): Likewise.
9502         (finish_struct_1): Likewise.
9503
9504 2000-01-01  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
9505
9506         * call.c (build_new_method_call): Also check destructors.